[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);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- branch master updated: * tp/Texinfo/XS/parsetexi/api.c (build_target_elements_list): rename build_label_list as build_target_elements_list.,
Patrice Dumas <=