[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,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [8108] parsetexi free out-of-tree elements,
gavinsmith0123 <=