texinfo-commits
[Top][All Lists]
Advanced

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

branch master updated: * tp/Texinfo/XS/parsetexi/api.c (build_target_ele


From: Patrice Dumas
Subject: branch master updated: * tp/Texinfo/XS/parsetexi/api.c (build_target_elements_list): rename build_label_list as build_target_elements_list.
Date: Sat, 25 Feb 2023 05:40:40 -0500

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 6351c2ca94 * tp/Texinfo/XS/parsetexi/api.c 
(build_target_elements_list): rename build_label_list as 
build_target_elements_list.
6351c2ca94 is described below

commit 6351c2ca9446ab873c23f25a1950a254e90ee5c9
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Sat Feb 25 11:40:32 2023 +0100

    * tp/Texinfo/XS/parsetexi/api.c (build_target_elements_list):
    rename build_label_list as build_target_elements_list.
    
    * tp/Texinfo/XS/parsetexi/labels.c (register_label),
    tp/Texinfo/XS/parsetexi/labels.h, tp/Texinfo/XS/parsetexi/api.c
    (build_target_elements_list): rename labels_list as
    target_elements_list and make it a list of element.  Remove the LABEL
    type.  More explicit comments and variable names.
    
    * tp/Texinfo/XS/parsetexi/labels.h: remove external definition of
    internal_xref_space.
    
    * tp/Texinfo/ParserNonXS.pm: remove _register_label, call directly
    Texinfo::Common::register_label.
    
    * tp/Texinfo/Common.pm (register_label): more explicit comments and
    variable names.
---
 ChangeLog                            | 20 ++++++++++++++++++++
 tp/Texinfo/Common.pm                 | 24 ++++++++++++++----------
 tp/Texinfo/ParserNonXS.pm            | 21 ++++++---------------
 tp/Texinfo/XS/parsetexi/Parsetexi.pm |  2 +-
 tp/Texinfo/XS/parsetexi/Parsetexi.xs |  2 +-
 tp/Texinfo/XS/parsetexi/api.c        |  4 ++--
 tp/Texinfo/XS/parsetexi/api.h        |  2 +-
 tp/Texinfo/XS/parsetexi/labels.c     | 25 +++++++++++++------------
 tp/Texinfo/XS/parsetexi/labels.h     | 12 +-----------
 9 files changed, 59 insertions(+), 53 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 79e0d15e93..7b148d462f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,23 @@
+2023-02-25  Patrice Dumas  <pertusus@free.fr>
+
+       * tp/Texinfo/XS/parsetexi/api.c (build_target_elements_list):
+       rename build_label_list as build_target_elements_list.
+
+       * tp/Texinfo/XS/parsetexi/labels.c (register_label),
+       tp/Texinfo/XS/parsetexi/labels.h, tp/Texinfo/XS/parsetexi/api.c
+       (build_target_elements_list): rename labels_list as
+       target_elements_list and make it a list of element.  Remove the LABEL
+       type.  More explicit comments and variable names.
+
+       * tp/Texinfo/XS/parsetexi/labels.h: remove external definition of
+       internal_xref_space.
+
+       * tp/Texinfo/ParserNonXS.pm: remove _register_label, call directly
+       Texinfo::Common::register_label.
+
+       * tp/Texinfo/Common.pm (register_label): more explicit comments and
+       variable names.
+
 2023-02-24  Patrice Dumas  <pertusus@free.fr>
 
        * tp/Texinfo/ParserNonXS.pm (_end_line_starting_block),
diff --git a/tp/Texinfo/Common.pm b/tp/Texinfo/Common.pm
index 0083839044..a4f7382d8a 100644
--- a/tp/Texinfo/Common.pm
+++ b/tp/Texinfo/Common.pm
@@ -2273,21 +2273,25 @@ sub relate_index_entries_to_table_items_in_tree($)
 
 # Common to different module, but not meant to be used in user-defined
 # codes.
+
+# Register a target element associated to a label that may be the target of
+# a reference and must be unique in the document.  Corresponds to @node,
+# @anchor, and @float (float label corresponds to the second argument).
 #
-# register a label, that is something that may be the target of a reference
-# and must be unique in the document.  Corresponds to @node, @anchor and
-# @float second arg.
+# $TARGET_ELEMENTS_LIST array reference for elements associated to a label
+# $TARGET_ELEMENT is the tree element associated to the label.
+# $LABEL is a hash reference with 'node_content' key and an array of
+#    Texinfo content in it, corresponding to the target label.
 sub register_label($$$)
 {
-  my ($targets_list, $current, $label) = @_;
+  my ($target_elements_list, $target_element, $label) = @_;
 
-  #if (ref($targets_list) ne 'ARRAY') {
-  #  cluck("BUG: register_label \$targets_list not an ARRAY reference\n");
-  #}
-  push @{$targets_list}, $current;
+  # register the element in the list.
+  push @{$target_elements_list}, $target_element;
   if ($label and $label->{'node_content'}) {
-    #$current->{'extra'} = {} if (!$current->{'extra'});
-    $current->{'extra'}->{'node_content'} = $label->{'node_content'};
+    # register the label in the element
+    #$target_element->{'extra'} = {} if (!$current->{'extra'});
+    $target_element->{'extra'}->{'node_content'} = $label->{'node_content'};
   }
 }
 
diff --git a/tp/Texinfo/ParserNonXS.pm b/tp/Texinfo/ParserNonXS.pm
index 1a67057d01..b29669deae 100644
--- a/tp/Texinfo/ParserNonXS.pm
+++ b/tp/Texinfo/ParserNonXS.pm
@@ -3210,16 +3210,6 @@ sub _parse_def($$$$)
   return [@result, @args_results];
 }
 
-# register a label, that is something that may be the target of a reference
-# and must be unique in the document.  Corresponds to @node, @anchor and
-# @float second arg.
-sub _register_label($$$)
-{
-  my ($targets_list, $current, $label) = @_;
-
-  Texinfo::Common::register_label($targets_list, $current, $label);
-}
-
 # store an index entry.
 # $COMMAND_CONTAINER is the name of the @-command the index entry
 #  is associated with, for instance 'cindex', 'defivar' or 'vtable'.
@@ -3493,8 +3483,8 @@ sub _end_line_misc_line($$$)
     }
     _check_internal_node($self, $current->{'extra'}->{'nodes_manuals'}->[0],
                          $source_info);
-    _register_label($self->{'targets'}, $current,
-                 $current->{'extra'}->{'nodes_manuals'}->[0]);
+    Texinfo::Common::register_label($self->{'targets'}, $current,
+                                    
$current->{'extra'}->{'nodes_manuals'}->[0]);
     if ($self->{'current_part'}) {
       my $part = $self->{'current_part'};
       if (not $part->{'extra'}
@@ -3867,7 +3857,7 @@ sub _end_line_starting_block($$$)
     # good to do in Parser/XS
     #my $float_type = _parse_float_type($current);
     #push @{$self->{'floats'}->{$float_type}}, $current;
-    _register_label($self->{'targets'}, $current, $float_label);
+    Texinfo::Common::register_label($self->{'targets'}, $current, 
$float_label);
     if (defined($self->{'current_section'})) {
       $current->{'extra'} = {} if (!defined($current->{'extra'}));
       $current->{'extra'}->{'float_section'} = $self->{'current_section'};
@@ -6282,8 +6272,9 @@ sub _process_remaining_on_line($$$$)
           my $parsed_anchor = _parse_node_manual($current);
           if (_check_node_label($self, $parsed_anchor,
                             $current->{'parent'}->{'cmdname'}, $source_info)) {
-            _register_label($self->{'targets'}, $current->{'parent'},
-                            $parsed_anchor);
+            Texinfo::Common::register_label($self->{'targets'},
+                                            $current->{'parent'},
+                                            $parsed_anchor);
              # the @anchor element_region information is not used in converters
              if ($self->{'nesting_context'}
                  and $self->{'nesting_context'}->{'regions_stack'}
diff --git a/tp/Texinfo/XS/parsetexi/Parsetexi.pm 
b/tp/Texinfo/XS/parsetexi/Parsetexi.pm
index 73f27a221a..92c9d2ecc4 100644
--- a/tp/Texinfo/XS/parsetexi/Parsetexi.pm
+++ b/tp/Texinfo/XS/parsetexi/Parsetexi.pm
@@ -209,7 +209,7 @@ sub _set_errors_node_lists_labels_indices($)
 {
   my $self = shift;
 
-  my $TARGETS = build_label_list ();
+  my $TARGETS = build_target_elements_list ();
   $self->{'targets'} = $TARGETS;
 
   _get_errors ($self);
diff --git a/tp/Texinfo/XS/parsetexi/Parsetexi.xs 
b/tp/Texinfo/XS/parsetexi/Parsetexi.xs
index 74ef870d14..176f162e21 100644
--- a/tp/Texinfo/XS/parsetexi/Parsetexi.xs
+++ b/tp/Texinfo/XS/parsetexi/Parsetexi.xs
@@ -70,7 +70,7 @@ HV *
 build_texinfo_tree ()
 
 AV *
-build_label_list ()
+build_target_elements_list ()
 
 AV *
 build_internal_xref_list ()
diff --git a/tp/Texinfo/XS/parsetexi/api.c b/tp/Texinfo/XS/parsetexi/api.c
index 3892087575..83040a09ef 100644
--- a/tp/Texinfo/XS/parsetexi/api.c
+++ b/tp/Texinfo/XS/parsetexi/api.c
@@ -706,7 +706,7 @@ build_texinfo_tree (void)
 /* Return array of target elements.  build_texinfo_tree must
    be called first. */
 AV *
-build_label_list (void)
+build_target_elements_list (void)
 {
   AV *target_array;
   SV *sv;
@@ -718,7 +718,7 @@ build_label_list (void)
 
   for (i = 0; i < labels_number; i++)
     {
-      sv = newRV_inc (labels_list[i].target->hv);
+      sv = newRV_inc (target_elements_list[i]->hv);
       av_push (target_array, sv);
     }
 
diff --git a/tp/Texinfo/XS/parsetexi/api.h b/tp/Texinfo/XS/parsetexi/api.h
index 626c3b4c7d..f0b2fc03bf 100644
--- a/tp/Texinfo/XS/parsetexi/api.h
+++ b/tp/Texinfo/XS/parsetexi/api.h
@@ -21,7 +21,7 @@ void conf_set_locale_encoding (char *value);
 void conf_set_documentlanguage_override (char *value);
 
 HV *build_texinfo_tree (void);
-AV *build_label_list (void);
+AV *build_target_elements_list (void);
 AV *build_internal_xref_list (void);
 HV *build_float_list (void);
 HV *build_index_data (void);
diff --git a/tp/Texinfo/XS/parsetexi/labels.c b/tp/Texinfo/XS/parsetexi/labels.c
index 8d3090f1a6..57f1885205 100644
--- a/tp/Texinfo/XS/parsetexi/labels.c
+++ b/tp/Texinfo/XS/parsetexi/labels.c
@@ -18,31 +18,32 @@
 #include "convert.h"
 #include "labels.h"
 
-/* Array of recorded labels. */
-/* If looking through this array turns out to be slow, we might have to replace
-   it with some kind of hash table implementation. */
-LABEL *labels_list = 0;
+/* Array of recorded elements with labels. */
+ELEMENT **target_elements_list = 0;
 size_t labels_number = 0;
 size_t labels_space = 0;
 
-/* Register a label, that is something that may be the target of a reference
-   and must be unique in the document.  Corresponds to @node, @anchor, and 
-   second arg of @float. */
+/* Register a target element associated to a label that may be the target of
+   a reference and must be unique in the document.  Corresponds to @node,
+   @anchor, and @float (float label corresponds to the second argument). */
 void
-register_label (ELEMENT *current, ELEMENT *label)
+register_label (ELEMENT *target_element, ELEMENT *label)
 {
+  /* register the element in the list. */
   if (labels_number == labels_space)
     {
       labels_space += 1;
       labels_space *= 1.5;
-      labels_list = realloc (labels_list, labels_space * sizeof (LABEL));
-      if (!labels_list)
+      target_elements_list = realloc (target_elements_list,
+                                      labels_space * sizeof (ELEMENT *));
+      if (!target_elements_list)
         fatal ("realloc failed");
     }
-  labels_list[labels_number++].target = current;
+  target_elements_list[labels_number++] = target_element;
 
+  /* register the label in the element */
   if (label)
-    add_extra_contents (current, "node_content", label);
+    add_extra_contents (target_element, "node_content", label);
 }
 
 void
diff --git a/tp/Texinfo/XS/parsetexi/labels.h b/tp/Texinfo/XS/parsetexi/labels.h
index 66624c56b0..5bff2e7956 100644
--- a/tp/Texinfo/XS/parsetexi/labels.h
+++ b/tp/Texinfo/XS/parsetexi/labels.h
@@ -18,16 +18,7 @@
 
 #include "tree_types.h"
 
-/* Information about a possible target of a cross-reference, often a node. */
-typedef struct {
-    /* Pointer to the element for the command defining this label, usually a
-       node element.  FIXME: I'm not sure if we actualy need to get to the
-       target - much of the use of the labels_information is to check that 
-       references are to real places. */
-    ELEMENT *target;
-} LABEL;
-
-extern LABEL *labels_list;
+extern ELEMENT **target_elements_list;
 extern size_t labels_number;
 void register_label (ELEMENT *current, ELEMENT *label);
 void reset_labels (void);
@@ -35,7 +26,6 @@ void reset_labels (void);
 
 extern ELEMENT **internal_xref_list;
 extern size_t internal_xref_number;
-extern size_t internal_xref_space;
 
 void remember_internal_xref (ELEMENT *element);
 void reset_internal_xrefs (void);



reply via email to

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