texinfo-commits
[Top][All Lists]
Advanced

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

branch master updated: * tp/Texinfo/XS/main/tree_types.h (ELEMENT): add


From: Patrice Dumas
Subject: branch master updated: * tp/Texinfo/XS/main/tree_types.h (ELEMENT): add a counter in element.
Date: Sun, 29 Sep 2024 04:34:05 -0400

This is an automated email from the git hooks/post-receive script.

pertusus pushed a commit to branch master
in repository texinfo.

The following commit(s) were added to refs/heads/master by this push:
     new 4d2476cb9e * tp/Texinfo/XS/main/tree_types.h (ELEMENT): add a counter 
in element.
4d2476cb9e is described below

commit 4d2476cb9e36ffafa59a88d827ec5bfbc57cfd5d
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Sat Jun 8 23:48:58 2024 +0200

    * tp/Texinfo/XS/main/tree_types.h (ELEMENT): add a counter in element.
    
    * tp/Texinfo/XS/main/manipulate_tree.c (copy_tree_internal)
    (get_copy_ref, associate_info_references): use element counter instead
    of "_counter" extra information.
    
    * tp/Texinfo/XS/parsetexi/macro.c (expand_linemacro_arguments): use
    the element counter to count the top level matching braces.  Remove
    set_toplevel_braces_nr and count_toplevel_braces.
---
 ChangeLog                            | 12 ++++++++
 tp/Texinfo/XS/main/manipulate_tree.c | 20 +++----------
 tp/Texinfo/XS/main/tree_types.h      |  1 +
 tp/Texinfo/XS/parsetexi/macro.c      | 55 ++++++++++--------------------------
 4 files changed, 32 insertions(+), 56 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index b10a5a188a..51be5e3f3d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,6 +4,18 @@
        tp/Texinfo/XS/structuring_transfo/structuring.c (new_node_menu_entry):
        use the union e name.
 
+2024-06-08  Patrice Dumas  <pertusus@free.fr>
+
+       * tp/Texinfo/XS/main/tree_types.h (ELEMENT): add a counter in element.
+
+       * tp/Texinfo/XS/main/manipulate_tree.c (copy_tree_internal)
+       (get_copy_ref, associate_info_references): use element counter instead
+       of "_counter" extra information.
+
+       * tp/Texinfo/XS/parsetexi/macro.c (expand_linemacro_arguments): use
+       the element counter to count the top level matching braces.  Remove
+       set_toplevel_braces_nr and count_toplevel_braces.
+
 2024-06-08  Patrice Dumas  <pertusus@free.fr>
 
        * tp/Texinfo/XS/main/build_perl_info.c (setup_info_hv)
diff --git a/tp/Texinfo/XS/main/manipulate_tree.c 
b/tp/Texinfo/XS/main/manipulate_tree.c
index f4559cdf32..b5a74eae6b 100644
--- a/tp/Texinfo/XS/main/manipulate_tree.c
+++ b/tp/Texinfo/XS/main/manipulate_tree.c
@@ -42,15 +42,7 @@ copy_tree_internal (ELEMENT* current, ELEMENT *parent);
 void
 increase_ref_counter (ELEMENT *element)
 {
-  KEY_PAIR *k_counter;
-  int *counter_ptr;
-
-  k_counter = lookup_extra_by_index (element, "_counter", -1);
-  if (!k_counter)
-    add_extra_integer (element, "_counter", 0);
-  k_counter = lookup_extra_by_index (element, "_counter", -1);
-  counter_ptr = &k_counter->k.integer;
-  (*counter_ptr) ++;
+  element->counter++;
 }
 
 ELEMENT *
@@ -244,13 +236,11 @@ get_copy_ref (ELEMENT *element)
   k_copy = lookup_extra_by_index (element, "_copy", -1);
   result = k_copy->k.element;
 
-  k_counter = lookup_extra_by_index (element, "_counter", -2);
-  counter_ptr = &k_counter->k.integer;
-  (*counter_ptr) --;
+  element->counter--;
 
-  if (*counter_ptr == 0)
+  if (element->counter == 0)
     {
-      element->extra_info.info_number -= 2;
+      element->extra_info.info_number -= 1;
     }
 
   return result;
@@ -353,8 +343,6 @@ associate_info_references (ASSOCIATED_INFO *info, 
ASSOCIATED_INFO *new_info)
             break;
           }
         case extra_integer:
-          if (!strcmp (key, "_counter"))
-            break;
           { /* A simple integer. */
             KEY_PAIR *k = get_associated_info_key (new_info, key, k_ref->type);
             k->k.integer = k_ref->k.integer;
diff --git a/tp/Texinfo/XS/main/tree_types.h b/tp/Texinfo/XS/main/tree_types.h
index 45c0cb095e..d115fc0d11 100644
--- a/tp/Texinfo/XS/main/tree_types.h
+++ b/tp/Texinfo/XS/main/tree_types.h
@@ -249,6 +249,7 @@ typedef struct ELEMENT {
     struct ELEMENT **elt_info;
     SOURCE_MARK_LIST source_mark_list;
 
+    int counter; /* used temporarily for copy or other use and reset to 0 */
     ASSOCIATED_INFO extra_info;
 
     enum command_id cmd;
diff --git a/tp/Texinfo/XS/parsetexi/macro.c b/tp/Texinfo/XS/parsetexi/macro.c
index 7dae5b81a6..ff32b1d261 100644
--- a/tp/Texinfo/XS/parsetexi/macro.c
+++ b/tp/Texinfo/XS/parsetexi/macro.c
@@ -41,8 +41,6 @@
 #include "parser.h"
 #include "macro.h"
 
-COUNTER count_toplevel_braces;
-
 static MACRO *macro_list;
 static size_t macro_number;
 static size_t macro_space;
@@ -443,15 +441,6 @@ funexit:
   *line_inout = line;
 }
 
-static void
-set_toplevel_braces_nr (COUNTER *counter, ELEMENT *element)
-{
-  int toplevel_braces_nr = counter_value (counter, element);
-  if (toplevel_braces_nr)
-    add_extra_integer (element, "toplevel_braces_nr", toplevel_braces_nr);
-  counter_pop (counter);
-}
-
 static void
 expand_linemacro_arguments (const ELEMENT *macro, const char **line_inout,
                             enum command_id cmd, ELEMENT *current)
@@ -465,8 +454,6 @@ expand_linemacro_arguments (const ELEMENT *macro, const 
char **line_inout,
   int i;
   ELEMENT *argument = new_element (ET_line_arg);
   ELEMENT *argument_content = new_text_element (ET_other_text);
-  counter_reset (&count_toplevel_braces, 0);
-  counter_push (&count_toplevel_braces, argument_content, 0);
 
   add_to_element_args (current, argument);
   add_to_element_contents (argument, argument_content);
@@ -580,7 +567,7 @@ expand_linemacro_arguments (const ELEMENT *macro, const 
char **line_inout,
           text_append_n (arg, sep, 1);
           pline = sep + 1;
           if (braces_level == 0)
-            counter_inc (&count_toplevel_braces);
+            argument_content->counter++;
           break;
         /* spaces */
         default:
@@ -596,12 +583,8 @@ expand_linemacro_arguments (const ELEMENT *macro, const 
char **line_inout,
             {
               ELEMENT *spaces_element = new_text_element (ET_other_text);
 
-              set_toplevel_braces_nr (&count_toplevel_braces,
-                                      argument_content);
-
               argument = new_element (ET_line_arg);
               argument_content = new_text_element (ET_other_text);
-              counter_push (&count_toplevel_braces, argument_content, 0);
 
               add_to_element_args (current, argument);
               add_to_element_contents (argument, argument_content);
@@ -618,35 +601,27 @@ expand_linemacro_arguments (const ELEMENT *macro, const 
char **line_inout,
     }
 
  funexit:
-  set_toplevel_braces_nr (&count_toplevel_braces, argument_content);
   for (i = 0; i < current->e.c->args.number; i++)
     {
       ELEMENT *argument_content = 
current->e.c->args.list[i]->e.c->contents.list[0];
-      KEY_PAIR *k_toplevel_braces_nr
-                   = lookup_extra (argument_content, "toplevel_braces_nr");
-      if (k_toplevel_braces_nr)
+      if (argument_content->counter == 1)
         {
-          if (k_toplevel_braces_nr->k.integer == 1)
+          int text_len = strlen (argument_content->e.text->text);
+          if (argument_content->e.text->text[0] == '{'
+              && argument_content->e.text->text[text_len -1] == '}')
             {
-              int text_len = strlen (argument_content->e.text->text);
-              if (argument_content->e.text->text[0] == '{'
-                  && argument_content->e.text->text[text_len -1] == '}')
-                {
-                  char *braced_text = strdup (argument_content->e.text->text);
-                  debug_nonl ("TURN to bracketed %d ", i);
-                  debug_parser_print_element (argument_content, 0); debug ("");
-
-                  text_reset (argument_content->e.text);
-                  text_append_n (argument_content->e.text,
-                                 braced_text+1, text_len -2);
-                  free (braced_text);
-                  argument_content->type = ET_bracketed_linemacro_arg;
-                }
+              char *braced_text = strdup (argument_content->e.text->text);
+              debug_nonl ("TURN to bracketed %d ", i);
+              debug_parser_print_element (argument_content, 0); debug ("");
+
+              text_reset (argument_content->e.text);
+              text_append_n (argument_content->e.text,
+                             braced_text+1, text_len -2);
+              free (braced_text);
+              argument_content->type = ET_bracketed_linemacro_arg;
             }
-
-          k_toplevel_braces_nr->key = "";
-          k_toplevel_braces_nr->type = extra_deleted;
         }
+      argument_content->counter = 0;
     }
   debug ("END LINEMACRO ARGS EXPANSION");
 



reply via email to

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