texinfo-commits
[Top][All Lists]
Advanced

[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);




reply via email to

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