[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[8189] parsetexi update
From: |
gavinsmith0123 |
Subject: |
[8189] parsetexi update |
Date: |
Fri, 21 Sep 2018 13:59:06 -0400 (EDT) |
Revision: 8189
http://svn.sv.gnu.org/viewvc/?view=rev&root=texinfo&revision=8189
Author: gavin
Date: 2018-09-21 13:59:06 -0400 (Fri, 21 Sep 2018)
Log Message:
-----------
parsetexi update
Modified Paths:
--------------
trunk/tp/Texinfo/XS/parsetexi/api.c
trunk/tp/Texinfo/XS/parsetexi/end_line.c
trunk/tp/Texinfo/XS/parsetexi/tree.c
trunk/tp/Texinfo/XS/parsetexi/tree.h
Modified: trunk/tp/Texinfo/XS/parsetexi/api.c
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/api.c 2018-09-21 17:19:52 UTC (rev 8188)
+++ trunk/tp/Texinfo/XS/parsetexi/api.c 2018-09-21 17:59:06 UTC (rev 8189)
@@ -247,6 +247,7 @@
|| e->type == ET_menu_entry_name
|| e->type == ET_brace_command_arg
|| e->type == ET_brace_command_context
+ || e->type == ET_block_line_arg
|| e->type == ET_before_item
|| e->type == ET_inter_item
|| e->cmd == CM_TeX
@@ -335,7 +336,6 @@
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)
@@ -352,6 +352,11 @@
}
STORE(newRV_inc ((SV *)f->hv));
break;
+ case extra_element_oot:
+ if (!f->hv)
+ element_to_perl_hash (f);
+ STORE(newRV_inc ((SV *)f->hv));
+ break;
case extra_element_contents:
{
int j;
Modified: trunk/tp/Texinfo/XS/parsetexi/end_line.c
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/end_line.c 2018-09-21 17:19:52 UTC (rev
8188)
+++ trunk/tp/Texinfo/XS/parsetexi/end_line.c 2018-09-21 17:59:06 UTC (rev
8189)
@@ -1305,21 +1305,14 @@
@itemize, and @asis for @table. */
if (current->cmd == CM_itemize
&& (current->args.number == 0
- || current->args.list[0]->args.number == 0))
+ || current->args.list[0]->contents.number == 0))
{
ELEMENT *e, *contents, *contents2;
e = new_element (ET_command_as_argument_inserted);
e->cmd = CM_bullet;
- e->parent_type = route_not_in_tree;
- e->parent = current;
- add_extra_element_oot (current, "command_as_argument", e);
-
- contents = new_element (ET_NONE);
- contents2 = new_element (ET_NONE);
- contents2->parent_type = route_not_in_tree;
- add_to_contents_as_array (contents2, e);
- add_to_element_contents (contents, contents2);
+ insert_into_args (current, e, 0);
+ add_extra_element (current, "command_as_argument", e);
}
else if (item_line_command (current->cmd)
&& !lookup_extra (current, "command_as_argument"))
@@ -1326,18 +1319,10 @@
{ // 3064
ELEMENT *e, *contents, *contents2;
- e = new_element (ET_command_as_argument);
+ e = new_element (ET_command_as_argument_inserted);
e->cmd = CM_asis;
- e->parent_type = route_not_in_tree;
- e->parent = current;
- add_extra_element_oot (current, "command_as_argument", e);
-
- contents = new_element (ET_NONE);
- contents2 = new_element (ET_NONE);
- contents2->parent_type = route_not_in_tree;
- add_to_contents_as_array (contents2, e);
- add_to_element_contents (contents, contents2);
- // FIXME: code duplication
+ insert_into_args (current, e, 0);
+ add_extra_element (current, "command_as_argument", e);
}
{
Modified: trunk/tp/Texinfo/XS/parsetexi/tree.c
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/tree.c 2018-09-21 17:19:52 UTC (rev
8188)
+++ trunk/tp/Texinfo/XS/parsetexi/tree.c 2018-09-21 17:59:06 UTC (rev
8189)
@@ -222,6 +222,26 @@
list->number++;
}
+/* Add the element E into the arguments of PARENT at index WHERE. */
+void
+insert_into_args (ELEMENT *parent, ELEMENT *e, int where)
+{
+ ELEMENT_LIST *list = &parent->args;
+ reallocate_list (list);
+
+ if (where < 0)
+ where = list->number + where;
+
+ if (where < 0 || where > list->number)
+ abort ();
+
+ memmove (&list->list[where + 1], &list->list[where],
+ (list->number - where) * sizeof (ELEMENT *));
+ list->list[where] = e;
+ e->parent = parent;
+ list->number++;
+}
+
ELEMENT *
remove_from_contents (ELEMENT *parent, int where)
{
Modified: trunk/tp/Texinfo/XS/parsetexi/tree.h
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/tree.h 2018-09-21 17:19:52 UTC (rev
8188)
+++ trunk/tp/Texinfo/XS/parsetexi/tree.h 2018-09-21 17:59:06 UTC (rev
8189)
@@ -19,6 +19,7 @@
void add_to_contents_as_array (ELEMENT *parent, ELEMENT *e);
void add_to_element_args (ELEMENT *parent, ELEMENT *e);
void insert_into_contents (ELEMENT *parent, ELEMENT *e, int where);
+void insert_into_args (ELEMENT *parent, ELEMENT *e, int where);
ELEMENT *remove_from_contents (ELEMENT *parent, int where);
ELEMENT *last_args_child (ELEMENT *current);
ELEMENT *last_contents_child (ELEMENT *current);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [8189] parsetexi update,
gavinsmith0123 <=