texinfo-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[no subject]


From: Patrice Dumas
Date: Sat, 28 Sep 2024 18:20:05 -0400 (EDT)

branch: master
commit 629d2ebce9625711d89bfae3a17adea0e957920b
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Mon Jun 3 00:03:17 2024 +0200

    * tp/Texinfo/XS/convert/convert_html.c (convert_to_html_internal): do
    not call element_command_name for text elements.
    
    * tp/Texinfo/XS/main/manipulate_tree.c (copy_extra_info),
    tp/Texinfo/XS/main/tree.c (destroy_element),
    tp/Texinfo/XS/main/tree_types.h (CONTAINER, ELEMENT): move info_info
    to CONTAINER, as it is not used in text elements anymore.
    
    * tp/Texinfo/XS/main/build_perl_info.c, tp/Texinfo/XS/main/debug.c,
    tp/Texinfo/XS/main/extra.c, tp/Texinfo/XS/parsetexi/close.c: update to
    use info_info in CONTAINER and not directly in ELEMENT.
---
 ChangeLog                            | 14 ++++++++++++++
 tp/TODO                              |  9 ++-------
 tp/Texinfo/XS/convert/convert_html.c | 10 +++++++---
 tp/Texinfo/XS/main/build_perl_info.c |  3 ++-
 tp/Texinfo/XS/main/debug.c           |  4 ++--
 tp/Texinfo/XS/main/extra.c           | 16 ++++++++--------
 tp/Texinfo/XS/main/manipulate_tree.c |  5 +++--
 tp/Texinfo/XS/main/tree.c            |  2 +-
 tp/Texinfo/XS/main/tree_types.h      |  2 +-
 tp/Texinfo/XS/parsetexi/close.c      |  2 +-
 10 files changed, 41 insertions(+), 26 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 98e297fccd..06e3e69c61 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,20 @@
 
        Update test result
 
+2024-06-01  Patrice Dumas  <pertusus@free.fr>
+
+       * tp/Texinfo/XS/convert/convert_html.c (convert_to_html_internal): do
+       not call element_command_name for text elements.
+
+       * tp/Texinfo/XS/main/manipulate_tree.c (copy_extra_info),
+       tp/Texinfo/XS/main/tree.c (destroy_element),
+       tp/Texinfo/XS/main/tree_types.h (CONTAINER, ELEMENT): move info_info
+       to CONTAINER, as it is not used in text elements anymore.
+
+       * tp/Texinfo/XS/main/build_perl_info.c, tp/Texinfo/XS/main/debug.c,
+       tp/Texinfo/XS/main/extra.c, tp/Texinfo/XS/parsetexi/close.c: update to
+       use info_info in CONTAINER and not directly in ELEMENT.
+
 2024-06-01  Patrice Dumas  <pertusus@free.fr>
 
        * tp/Texinfo/XS/main/build_perl_info.c (store_additional_info)
diff --git a/tp/TODO b/tp/TODO
index 471a361939..f3c14bd943 100644
--- a/tp/TODO
+++ b/tp/TODO
@@ -78,12 +78,8 @@ char *alias_of
 char *command_info_string (for arg_line or command_name or @verb delimiter)
 ELEMENT *elements[3]
  spaces_after_cmd_before_arg (brace commands) or comment_at_end (line/block 
commands)
- spaces_before_argument
- spaces_after_argument
- int inserted (could also be flags if more information is added).
-
- spaces_before_argument and spaces_after_argument are with brace_command_arg
- for non command_context brace commands, otherwise with the @-command.
+for type brace_command_container, line and block commands, BRACE_context 
commands
+ spaces_before_argument, spaces_after_argument
 
 3) make building "source marks" optional.
   With 8 byte pointers and integers, the 24 byte section of ELEMENT relating
@@ -94,7 +90,6 @@ ELEMENT *elements[3]
 4) separate the structure of text elements and other elements, as text elements
    never have contents/args/info/extra, have cmd != 0.
     EXCEPTION: needed transient _copy and _counter in copy_tree_internal in 
extra
-    EXCEPTION: info inserted for spaces in @def* for definition aliases
   
 
 valgrinf massif useful-heap approximate distribution in 2024
diff --git a/tp/Texinfo/XS/convert/convert_html.c 
b/tp/Texinfo/XS/convert/convert_html.c
index 0fa8f8a6c2..4465ef8aea 100644
--- a/tp/Texinfo/XS/convert/convert_html.c
+++ b/tp/Texinfo/XS/convert/convert_html.c
@@ -18386,12 +18386,16 @@ convert_to_html_internal (CONVERTER *self, const 
ELEMENT *element,
   /* for debugging, for explanations */
   TEXT command_type;
   char *debug_str;
-  const char *command_name = element_command_name (element);
+  const char *command_name = 0;
   enum command_id cmd = element_builtin_cmd (element);
 
   text_init (&command_type);
-  if (command_name)
-    text_printf (&command_type, "@%s ", command_name);
+  if (! type_data[element->type].flags & TF_text)
+    {
+      command_name = element_command_name (element);
+      if (command_name)
+        text_printf (&command_type, "@%s ", command_name);
+    }
 
   if (element->type)
     text_append (&command_type, type_data[element->type].name);
diff --git a/tp/Texinfo/XS/main/build_perl_info.c 
b/tp/Texinfo/XS/main/build_perl_info.c
index e6788783bc..ca536b791c 100644
--- a/tp/Texinfo/XS/main/build_perl_info.c
+++ b/tp/Texinfo/XS/main/build_perl_info.c
@@ -646,7 +646,8 @@ element_to_perl_hash (ELEMENT *e, int avoid_recursion)
 
   /* non-text elements */
 
-  store_additional_info (e, &e->info_info, "info", &nr_info, avoid_recursion);
+  store_additional_info (e, &e->c->info_info, "info", &nr_info,
+                         avoid_recursion);
 
   if (e->cmd)
     {
diff --git a/tp/Texinfo/XS/main/debug.c b/tp/Texinfo/XS/main/debug.c
index e0cda8172b..bd3f8aa8c2 100644
--- a/tp/Texinfo/XS/main/debug.c
+++ b/tp/Texinfo/XS/main/debug.c
@@ -232,11 +232,11 @@ print_element_debug_details (const ELEMENT *e, int 
print_parent)
       free (associated_info_str);
     }
 
-  if (e->info_info.info_number > 0)
+  if (e->c->info_info.info_number > 0)
     {
       char *associated_info_str;
       text_append (&text, " INFO\n");
-      associated_info_str = print_associate_info_debug (&e->info_info);
+      associated_info_str = print_associate_info_debug (&e->c->info_info);
       text_append (&text, associated_info_str);
       free (associated_info_str);
     }
diff --git a/tp/Texinfo/XS/main/extra.c b/tp/Texinfo/XS/main/extra.c
index 9ab8770f47..77573ae592 100644
--- a/tp/Texinfo/XS/main/extra.c
+++ b/tp/Texinfo/XS/main/extra.c
@@ -95,7 +95,7 @@ add_extra_container (ELEMENT *e, char *key, ELEMENT *value)
 void
 add_info_element_oot (ELEMENT *e, char *key, ELEMENT *value)
 {
-  KEY_PAIR *k = get_associated_info_key (&e->info_info, key,
+  KEY_PAIR *k = get_associated_info_key (&e->c->info_info, key,
                                          extra_element_oot);
   k->k.element = value;
 }
@@ -166,7 +166,7 @@ add_extra_string (ELEMENT *e, const char *key, char *value)
 void
 add_info_string (ELEMENT *e, char *key, char *value)
 {
-  KEY_PAIR *k = get_associated_info_key (&e->info_info, key, extra_string);
+  KEY_PAIR *k = get_associated_info_key (&e->c->info_info, key, extra_string);
   k->k.string = value;
 }
 
@@ -180,7 +180,7 @@ add_extra_string_dup (ELEMENT *e, const char *key, const 
char *value)
 void
 add_info_string_dup (ELEMENT *e, const char *key, const char *value)
 {
-  KEY_PAIR *k = get_associated_info_key (&e->info_info, key, extra_string);
+  KEY_PAIR *k = get_associated_info_key (&e->c->info_info, key, extra_string);
   k->k.string = strdup (value);
 }
 
@@ -209,7 +209,7 @@ add_extra_integer (ELEMENT *e, char *key, long value)
 void
 add_info_integer (ELEMENT *e, char *key, long value)
 {
-  KEY_PAIR *k = get_associated_info_key (&e->info_info, key, extra_integer);
+  KEY_PAIR *k = get_associated_info_key (&e->c->info_info, key, extra_integer);
   k->k.integer = value;
 }
 
@@ -311,7 +311,7 @@ int
 lookup_info_integer (const ELEMENT *e, const char *key, int *ret)
 {
   const KEY_PAIR *k;
-  k = lookup_associated_info (&e->info_info, key);
+  k = lookup_associated_info (&e->c->info_info, key);
   return lookup_key_pair_integer (k, key, ret);
 }
 
@@ -370,7 +370,7 @@ ELEMENT *
 lookup_info_element (const ELEMENT *e, const char *key)
 {
   const KEY_PAIR *k;
-  k = lookup_associated_info (&e->info_info, key);
+  k = lookup_associated_info (&e->c->info_info, key);
   if (!k)
     return 0;
   return k->k.element;
@@ -380,14 +380,14 @@ lookup_info_element (const ELEMENT *e, const char *key)
 KEY_PAIR *
 lookup_info (const ELEMENT *e, const char *key)
 {
-  return lookup_associated_info (&e->info_info, key);
+  return lookup_associated_info (&e->c->info_info, key);
 }
 
 char *
 lookup_info_string (const ELEMENT *e, const char *key)
 {
   const KEY_PAIR *k;
-  k = lookup_associated_info (&e->info_info, key);
+  k = lookup_associated_info (&e->c->info_info, key);
   if (!k || !k->k.string)
     return 0;
   return k->k.string;
diff --git a/tp/Texinfo/XS/main/manipulate_tree.c 
b/tp/Texinfo/XS/main/manipulate_tree.c
index 9cd95217e2..16660c9cc6 100644
--- a/tp/Texinfo/XS/main/manipulate_tree.c
+++ b/tp/Texinfo/XS/main/manipulate_tree.c
@@ -192,7 +192,7 @@ copy_tree_internal (ELEMENT* current, ELEMENT *parent)
   for (i = 0; i < current->c->contents.number; i++)
     add_to_element_contents (new,
                 copy_tree_internal (current->c->contents.list[i], new));
-  copy_associated_info (&current->info_info, &new->info_info);
+  copy_associated_info (&current->c->info_info, &new->c->info_info);
   copy_associated_info (&current->extra_info, &new->extra_info);
   return new;
 }
@@ -378,11 +378,12 @@ copy_extra_info (ELEMENT *current, ELEMENT *new)
       for (i = 0; i < current->c->contents.number; i++)
         copy_extra_info (current->c->contents.list[i], 
new->c->contents.list[i]);
 
+      associate_info_references (&current->c->info_info, &new->c->info_info);
+
       /* text element have _copy and _counter only in extra, not to be copied 
*/
       associate_info_references (&current->extra_info, &new->extra_info);
     }
 
-  associate_info_references (&current->info_info, &new->info_info);
 }
 
 ELEMENT *
diff --git a/tp/Texinfo/XS/main/tree.c b/tp/Texinfo/XS/main/tree.c
index 13aa03b5cb..ee8e2cebac 100644
--- a/tp/Texinfo/XS/main/tree.c
+++ b/tp/Texinfo/XS/main/tree.c
@@ -220,7 +220,6 @@ destroy_element (ELEMENT *e)
 
   destroy_source_mark_list (&e->source_mark_list);
 
-  destroy_associated_info (&e->info_info);
   destroy_associated_info (&e->extra_info);
 
   if (type_data[e->type].flags & TF_text)
@@ -230,6 +229,7 @@ destroy_element (ELEMENT *e)
     }
   else
     {
+      destroy_associated_info (&e->c->info_info);
   /* Note the pointers in these lists are not themselves freed. */
       free (e->c->contents.list);
       free (e->c->args.list);
diff --git a/tp/Texinfo/XS/main/tree_types.h b/tp/Texinfo/XS/main/tree_types.h
index 773a592ace..ea9fb61b3a 100644
--- a/tp/Texinfo/XS/main/tree_types.h
+++ b/tp/Texinfo/XS/main/tree_types.h
@@ -213,6 +213,7 @@ typedef struct CONTAINER {
     ELEMENT_LIST contents;
     SOURCE_INFO source_info;
 
+    ASSOCIATED_INFO info_info;
     OUTPUT_UNIT *associated_unit;
 } CONTAINER;
 
@@ -226,7 +227,6 @@ typedef struct ELEMENT {
     struct ELEMENT *parent;
     SOURCE_MARK_LIST source_mark_list;
 
-    ASSOCIATED_INFO info_info;
     ASSOCIATED_INFO extra_info;
 
     enum command_id cmd;
diff --git a/tp/Texinfo/XS/parsetexi/close.c b/tp/Texinfo/XS/parsetexi/close.c
index bed5134459..f61b9ff086 100644
--- a/tp/Texinfo/XS/parsetexi/close.c
+++ b/tp/Texinfo/XS/parsetexi/close.c
@@ -135,7 +135,7 @@ is_container_empty (ELEMENT *current)
   else if (current->c->contents.number == 0
            && current->c->args.number == 0
            /* FIXME this is certainly wrong */
-           && current->info_info.info_number == 0)
+           && current->c->info_info.info_number == 0)
     return 1;
 
   return 0;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]