texinfo-commits
[Top][All Lists]
Advanced

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

[8108] parsetexi free out-of-tree elements


From: gavinsmith0123
Subject: [8108] parsetexi free out-of-tree elements
Date: Sat, 18 Aug 2018 13:02:46 -0400 (EDT)

Revision: 8108
          http://svn.sv.gnu.org/viewvc/?view=rev&root=texinfo&revision=8108
Author:   gavin
Date:     2018-08-18 13:02:46 -0400 (Sat, 18 Aug 2018)
Log Message:
-----------
parsetexi free out-of-tree elements

Modified Paths:
--------------
    trunk/tp/Texinfo/XS/parsetexi/api.c
    trunk/tp/Texinfo/XS/parsetexi/end_line.c
    trunk/tp/Texinfo/XS/parsetexi/extra.c
    trunk/tp/Texinfo/XS/parsetexi/parser.h
    trunk/tp/Texinfo/XS/parsetexi/tree.c
    trunk/tp/Texinfo/XS/parsetexi/tree_types.h

Modified: trunk/tp/Texinfo/XS/parsetexi/api.c
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/api.c 2018-08-18 16:40:37 UTC (rev 8107)
+++ trunk/tp/Texinfo/XS/parsetexi/api.c 2018-08-18 17:02:46 UTC (rev 8108)
@@ -345,6 +345,7 @@
           switch (e->extra[i].type)
             {
             case extra_element:
+            case extra_element_oot:
               /* For references to other parts of the tree, create the hash so 
                  we can point to it.  */
               if (!f->hv)
@@ -351,10 +352,9 @@
                 {
                   if (f->parent_type != route_not_in_tree)
                     {
-                      /* TODO: Are there any extra values which are
-                         extra_element that are route_not_in_tree?  Consider
-                         eliminating use of 'parent_type' to differentiate 
types
-                         of extra value. */
+                      /* TODO: Set all out-of-tree elements with
+                         add_extra_element_oot and then eliminate
+                         use of 'parent_type' to differentiate. */
                       f->hv = newHV ();
                     }
                   else

Modified: trunk/tp/Texinfo/XS/parsetexi/end_line.c
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/end_line.c    2018-08-18 16:40:37 UTC (rev 
8107)
+++ trunk/tp/Texinfo/XS/parsetexi/end_line.c    2018-08-18 17:02:46 UTC (rev 
8108)
@@ -1327,7 +1327,7 @@
           e->cmd = CM_bullet;
           e->parent_type = route_not_in_tree;
           e->parent = current;
-          add_extra_element (current, "command_as_argument", e);
+          add_extra_element_oot (current, "command_as_argument", e);
 
           contents = new_element (ET_NONE);
           contents2 = new_element (ET_NONE);
@@ -1346,7 +1346,7 @@
           e->cmd = CM_asis;
           e->parent_type = route_not_in_tree;
           e->parent = current;
-          add_extra_element (current, "command_as_argument", e);
+          add_extra_element_oot (current, "command_as_argument", e);
 
           contents = new_element (ET_NONE);
           contents2 = new_element (ET_NONE);

Modified: trunk/tp/Texinfo/XS/parsetexi/extra.c
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/extra.c       2018-08-18 16:40:37 UTC (rev 
8107)
+++ trunk/tp/Texinfo/XS/parsetexi/extra.c       2018-08-18 17:02:46 UTC (rev 
8108)
@@ -53,6 +53,14 @@
   add_extra_key (e, key, value, extra_element);
 }
 
+/* Add an extra key that is a reference to another element that is
+   out-of-tree, i.e., not referenced anywhere in the tree. */
+void
+add_extra_element_oot (ELEMENT *e, char *key, ELEMENT *value)
+{
+  add_extra_key (e, key, value, extra_element_oot);
+}
+
 /* Add an extra key that is a reference to the contents array of another
    element (for example, 'node_content' on a node command element). */
 void

Modified: trunk/tp/Texinfo/XS/parsetexi/parser.h
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/parser.h      2018-08-18 16:40:37 UTC (rev 
8107)
+++ trunk/tp/Texinfo/XS/parsetexi/parser.h      2018-08-18 17:02:46 UTC (rev 
8108)
@@ -102,6 +102,7 @@
 
 /* In extra.c */
 void add_extra_element (ELEMENT *e, char *key, ELEMENT *value);
+void add_extra_element_oot (ELEMENT *e, char *key, ELEMENT *value);
 void add_extra_contents (ELEMENT *e, char *key, ELEMENT *value);
 void add_extra_contents_array (ELEMENT *e, char *key, ELEMENT *value);
 void add_extra_text (ELEMENT *e, char *key, ELEMENT *value);

Modified: trunk/tp/Texinfo/XS/parsetexi/tree.c
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/tree.c        2018-08-18 16:40:37 UTC (rev 
8107)
+++ trunk/tp/Texinfo/XS/parsetexi/tree.c        2018-08-18 17:02:46 UTC (rev 
8108)
@@ -80,6 +80,9 @@
         case extra_index_entry:
           free (e->extra[i].value);
           break;
+        case extra_element_oot:
+          destroy_element_and_children (e->extra[i].value);
+          break;
         case extra_element_contents:
           if (e->extra[i].value)
             destroy_element ((ELEMENT *) e->extra[i].value);

Modified: trunk/tp/Texinfo/XS/parsetexi/tree_types.h
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/tree_types.h  2018-08-18 16:40:37 UTC (rev 
8107)
+++ trunk/tp/Texinfo/XS/parsetexi/tree_types.h  2018-08-18 17:02:46 UTC (rev 
8108)
@@ -27,6 +27,7 @@
 
 enum extra_type {
     extra_element,
+    extra_element_oot,
     extra_element_contents,
     extra_element_contents_array,
     extra_element_text,




reply via email to

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