diff --git a/l3kernel/l3intarray.dtx b/l3kernel/l3intarray.dtx index 1f5b12f12c..80fd8221c4 100644 --- a/l3kernel/l3intarray.dtx +++ b/l3kernel/l3intarray.dtx @@ -30,7 +30,7 @@ % % % \title{^^A -% The \textsf{l3intarray} package: Low-level arrays of small integers^^A +% The \textsf{l3intarray} package: fast global integer arrays^^A % } % % \author{^^A @@ -50,66 +50,79 @@ % % \section{\pkg{l3intarray} documentation} % -% This module provides no user function: at present it is meant for -% kernel use only. -% -% It is a wrapper around the \tn{fontdimen} primitive, used to store -% arrays of integers (with a restricted range: absolute value at most -% $2^{30}-1$). In contrast to \pkg{l3seq} sequences the access to -% individual entries is done in constant time rather than linear time, -% but only integers can be stored. More precisely, the primitive -% \tn{fontdimen} stores dimensions but the \pkg{l3intarray} package -% transparently converts these from/to integers. Assignments are always -% global. -% -% While \LuaTeX{}'s memory is extensible, other engines can -% \enquote{only} deal with a bit less than $4\times 10^6$ entries in all -% \tn{fontdimen} arrays combined (with default \TeX{}Live settings). -% -% \subsection{Internal functions} -% -% \begin{function}{\__intarray_new:Nn} +% For applications requiring heavy use of integers, this module provides +% arrays which can be accessed in constant time (contrast \pkg{l3seq}, +% where access time is linear). These arrays have several important +% features +% \begin{itemize} +% \item The size of the array is fixed and must be given at +% point of initialisation +% \item The absolute value of each entry has maximum $2^{30}-1$ +% (\emph{i.e.}~one power lower than the usual \cs{c_max_int} +% ceiling of $2^{31}-1$) +% \item The total number of entries in all \texttt{intarray} storage +% must be less than $4\times 10^6$ +% \end{itemize} +% The use of \texttt{intarray} data is therefore recommended for cases where +% the need for fast access is of paramount importance. +% +% \begin{function}{\intarray_new:Nn} % \begin{syntax} -% \cs{__intarray_new:Nn} \meta{intarray~var} \Arg{size} +% \cs{intarray_new:Nn} \meta{intarray~var} \Arg{size} % \end{syntax} % Evaluates the integer expression \meta{size} and allocates an % \meta{integer array variable} with that number of (zero) entries. % \end{function} % -% \begin{function}[EXP]{\__intarray_count:N} +% \begin{function}[EXP]{\intarray_count:N} % \begin{syntax} -% \cs{__intarray_count:N} \meta{intarray~var} +% \cs{intarray_count:N} \meta{intarray~var} % \end{syntax} % Expands to the number of entries in the \meta{integer array variable}. % Contrarily to \cs{seq_count:N} this is performed in constant time. % \end{function} % -% \begin{function}{\__intarray_gset:Nnn, \__intarray_gset_fast:Nnn} +% \begin{function}{\intarray_gset:Nnn, \intarray_gset_fast:Nnn} % \begin{syntax} -% \cs{__intarray_gset:Nnn} \meta{intarray~var} \Arg{position} \Arg{value} -% \cs{__intarray_gset_fast:Nnn} \meta{intarray~var} \Arg{position} \Arg{value} +% \cs{intarray_gset:Nnn} \meta{intarray~var} \Arg{position} \Arg{value} +% \cs{intarray_gset_fast:Nnn} \meta{intarray~var} \Arg{position} \Arg{value} % \end{syntax} % Stores the result of evaluating the integer expression \meta{value} % into the \meta{integer array variable} at the (integer expression) -% \meta{position}. While \cs{__intarray_gset:Nnn} checks that the -% \meta{position} is between $1$ and the \cs{__intarray_count:N} and that +% \meta{position}. While \cs{intarray_gset:Nnn} checks that the +% \meta{position} is between $1$ and the \cs{intarray_count:N} and that % the \meta{value}'s absolute value is at most $2^{30}-1$, the % \enquote{fast} function performs no such bound check. % Assignments are always global. % \end{function} % -% \begin{function}[EXP]{\__intarray_item:Nn, \__intarray_item_fast:Nn} +% \begin{function}[EXP]{\intarray_item:Nn, \intarray_item_fast:Nn} % \begin{syntax} -% \cs{__intarray_item:Nn} \meta{intarray~var} \Arg{position} -% \cs{__intarray_item_fast:Nn} \meta{intarray~var} \Arg{position} +% \cs{intarray_item:Nn} \meta{intarray~var} \Arg{position} +% \cs{intarray_item_fast:Nn} \meta{intarray~var} \Arg{position} % \end{syntax} % Expands to the integer entry stored at the (integer expression) % \meta{position} in the \meta{integer array variable}. While -% \cs{__intarray_item:Nn} checks that the \meta{position} is between $1$ -% and the \cs{__intarray_count:N}, the \enquote{fast} function performs +% \cs{intarray_item:Nn} checks that the \meta{position} is between $1$ +% and the \cs{intarray_count:N}, the \enquote{fast} function performs % no such bound check. % \end{function} % +% \subsection{Implementation notes} +% +% It is a wrapper around the \tn{fontdimen} primitive, used to store +% arrays of integers (with a restricted range: absolute value at most +% $2^{30}-1$). In contrast to \pkg{l3seq} sequences the access to +% individual entries is done in constant time rather than linear time, +% but only integers can be stored. More precisely, the primitive +% \tn{fontdimen} stores dimensions but the \pkg{l3intarray} package +% transparently converts these from/to integers. Assignments are always +% global. +% +% While \LuaTeX{}'s memory is extensible, other engines can +% \enquote{only} deal with a bit less than $4\times 10^6$ entries in all +% \tn{fontdimen} arrays combined (with default \TeX{}Live settings). +% % \end{documentation} % % \begin{implementation} @@ -133,7 +146,7 @@ % \end{macrocode} % \end{variable} % -% \begin{macro}{\@@_new:Nn} +% \begin{macro}{\intarray_new:Nn} % Declare |#1| to be a font (arbitrarily |cmr10| at a never-used % size). Store the array's size as the \tn{hyphenchar} of that font % and make sure enough \tn{fontdimen} are allocated, by setting the @@ -142,7 +155,7 @@ % number $8$ compared to other engines (for a math font we would % replace $8$ by $22$ or some such). % \begin{macrocode} -\cs_new_protected:Npn \@@_new:Nn #1#2 +\cs_new_protected:Npn \intarray_new:Nn #1#2 { \__chk_if_free_cs:N #1 \int_gincr:N \g_@@_font_int @@ -156,65 +169,65 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[EXP]{\@@_count:N} +% \begin{macro}[EXP]{\intarray_count:N} % Size of an array. % \begin{macrocode} -\cs_new:Npn \@@_count:N #1 { \tex_the:D \tex_hyphenchar:D #1 } +\cs_new:Npn \intarray_count:N #1 { \tex_the:D \tex_hyphenchar:D #1 } % \end{macrocode} % \end{macro} % % \subsection{Array items} % -% \begin{macro}{\@@_gset:Nnn, \@@_gset_fast:Nnn} -% \begin{macro}{\@@_gset_aux:Nnn} +% \begin{macro}{\intarray_gset:Nnn, \intarray_gset_fast:Nnn} +% \begin{macro}{\@@_gset:Nnn} % Set the appropriate \tn{fontdimen}. The slow version checks the % position and value are within bounds. % \begin{macrocode} -\cs_new_protected:Npn \@@_gset_fast:Nnn #1#2#3 +\cs_new_protected:Npn \intarray_gset_fast:Nnn #1#2#3 { \tex_fontdimen:D \int_eval:n {#2} #1 = \int_eval:n {#3} sp \scan_stop: } -\cs_new_protected:Npn \@@_gset:Nnn #1#2#3 +\cs_new_protected:Npn \intarray_gset:Nnn #1#2#3 { - \exp_args:Nff \@@_gset_aux:Nnn #1 + \exp_args:Nff \@@_gset:Nnn #1 { \int_eval:n {#2} } { \int_eval:n {#3} } } -\cs_new_protected:Npn \@@_gset_aux:Nnn #1#2#3 +\cs_new_protected:Npn \@@_gset:Nnn #1#2#3 { - \int_compare:nTF { 1 <= #2 <= \@@_count:N #1 } + \int_compare:nTF { 1 <= #2 <= \intarray_count:N #1 } { \int_compare:nTF { - \c_max_dim <= \int_abs:n {#3} <= \c_max_dim } - { \@@_gset_fast:Nnn #1 {#2} {#3} } + { \intarray_gset_fast:Nnn #1 {#2} {#3} } { \__kernel_msg_error:nnxxxx { kernel } { overflow } { \token_to_str:N #1 } {#2} {#3} { \int_compare:nNnT {#3} < 0 { - } \int_value:w \c_max_dim } - \@@_gset_fast:Nnn #1 {#2} + \intarray_gset_fast:Nnn #1 {#2} { \int_compare:nNnT {#3} < 0 { - } \c_max_dim } } } { \__kernel_msg_error:nnxxx { kernel } { out-of-bounds } - { \token_to_str:N #1 } {#2} { \@@_count:N #1 } + { \token_to_str:N #1 } {#2} { \intarray_count:N #1 } } } % \end{macrocode} % \end{macro} % \end{macro} % -% \begin{macro}[EXP]{\@@_item:Nn, \@@_item_fast:Nn} -% \begin{macro}{\@@_item_aux:Nn} +% \begin{macro}[EXP]{\intarray_item:Nn, \intarray_item_fast:Nn} +% \begin{macro}{\@@_item:Nn} % Get the appropriate \tn{fontdimen} and perform bound checks if requested. % \begin{macrocode} -\cs_new:Npn \@@_item_fast:Nn #1#2 +\cs_new:Npn \intarray_item_fast:Nn #1#2 { \int_eval:n { \tex_fontdimen:D \int_eval:n {#2} #1 } } +\cs_new:Npn \intarray_item:Nn #1#2 + { \exp_args:Nf \@@_item:Nn #1 { \int_eval:n {#2} } } \cs_new:Npn \@@_item:Nn #1#2 - { \exp_args:Nf \@@_item_aux:Nn #1 { \int_eval:n {#2} } } -\cs_new:Npn \@@_item_aux:Nn #1#2 { - \int_compare:nTF { 1 <= #2 <= \@@_count:N #1 } - { \@@_item_fast:Nn #1 {#2} } + \int_compare:nTF { 1 <= #2 <= \intarray_count:N #1 } + { \intarray_item_fast:Nn #1 {#2} } { \__kernel_msg_expandable_error:nnnnn { kernel } { out-of-bounds } - { \token_to_str:N #1 } {#2} { \@@_count:N #1 } + { \token_to_str:N #1 } {#2} { \intarray_count:N #1 } 0 } } diff --git a/l3kernel/l3regex.dtx b/l3kernel/l3regex.dtx index d8960def28..6faf998244 100644 --- a/l3kernel/l3regex.dtx +++ b/l3kernel/l3regex.dtx @@ -1059,9 +1059,9 @@ % registers. We also store the balance of begin-group/end-group % characters into \cs{g_@@_balance_intarray}. % \begin{macrocode} -\__intarray_new:Nn \g_@@_charcode_intarray { 65536 } -\__intarray_new:Nn \g_@@_catcode_intarray { 65536 } -\__intarray_new:Nn \g_@@_balance_intarray { 65536 } +\intarray_new:Nn \g_@@_charcode_intarray { 65536 } +\intarray_new:Nn \g_@@_catcode_intarray { 65536 } +\intarray_new:Nn \g_@@_balance_intarray { 65536 } % \end{macrocode} % \end{variable} % @@ -4468,8 +4468,8 @@ % threads to be considered in the next step, more precisely the % states in which these threads are. % \begin{macrocode} -\__intarray_new:Nn \g_@@_state_active_intarray { 65536 } -\__intarray_new:Nn \g_@@_thread_state_intarray { 65536 } +\intarray_new:Nn \g_@@_state_active_intarray { 65536 } +\intarray_new:Nn \g_@@_thread_state_intarray { 65536 } % \end{macrocode} % \end{variable} % @@ -4569,7 +4569,7 @@ \bool_gset_false:N \g_@@_success_bool \int_step_inline:nnnn \l_@@_min_state_int { 1 } { \l_@@_max_state_int - 1 } - { \__intarray_gset_fast:Nnn \g_@@_state_active_intarray {##1} { 1 } } + { \intarray_gset_fast:Nnn \g_@@_state_active_intarray {##1} { 1 } } \int_set_eq:NN \l_@@_min_active_int \l_@@_max_state_int \int_zero:N \l_@@_step_int \int_set_eq:NN \l_@@_success_pos_int \l_@@_min_pos_int @@ -4684,7 +4684,7 @@ \cs_new:Npn \@@_match_one_active:n #1 { \@@_use_state_and_submatches:nn - { \__intarray_item_fast:Nn \g_@@_thread_state_intarray {#1} } + { \intarray_item_fast:Nn \g_@@_thread_state_intarray {#1} } { \@@_toks_use:w #1 } } % \end{macrocode} @@ -4700,11 +4700,11 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_query_set:nnn #1#2#3 { - \__intarray_gset_fast:Nnn \g_@@_charcode_intarray + \intarray_gset_fast:Nnn \g_@@_charcode_intarray { \l_@@_curr_pos_int } {#3} - \__intarray_gset_fast:Nnn \g_@@_catcode_intarray + \intarray_gset_fast:Nnn \g_@@_catcode_intarray { \l_@@_curr_pos_int } {#2} - \__intarray_gset_fast:Nnn \g_@@_balance_intarray + \intarray_gset_fast:Nnn \g_@@_balance_intarray { \l_@@_curr_pos_int } { \l_@@_balance_int } \@@_toks_set:Nn \l_@@_curr_pos_int {#1} \int_incr:N \l_@@_curr_pos_int @@ -4723,10 +4723,10 @@ \cs_new_protected:Npn \@@_query_get: { \l_@@_curr_char_int - = \__intarray_item_fast:Nn \g_@@_charcode_intarray + = \intarray_item_fast:Nn \g_@@_charcode_intarray { \l_@@_curr_pos_int } \scan_stop: \l_@@_curr_catcode_int - = \__intarray_item_fast:Nn \g_@@_catcode_intarray + = \intarray_item_fast:Nn \g_@@_catcode_intarray { \l_@@_curr_pos_int } \scan_stop: } % \end{macrocode} @@ -4747,10 +4747,10 @@ { } \cs_new_protected:Npn \@@_use_state: { - \__intarray_gset_fast:Nnn \g_@@_state_active_intarray + \intarray_gset_fast:Nnn \g_@@_state_active_intarray { \l_@@_curr_state_int } { \l_@@_step_int } \@@_toks_use:w \l_@@_curr_state_int - \__intarray_gset_fast:Nnn \g_@@_state_active_intarray + \intarray_gset_fast:Nnn \g_@@_state_active_intarray { \l_@@_curr_state_int } { \l_@@_step_int + 1 } } % \end{macrocode} @@ -4766,7 +4766,7 @@ { \int_set:Nn \l_@@_curr_state_int {#1} \if_int_compare:w - \__intarray_item_fast:Nn \g_@@_state_active_intarray + \intarray_item_fast:Nn \g_@@_state_active_intarray { \l_@@_curr_state_int } < \l_@@_step_int \tl_set:Nn \l_@@_curr_submatches_prop {#2} @@ -4823,7 +4823,7 @@ \exp_not:n { \if_int_compare:w - \__intarray_item_fast:Nn \g_@@_state_active_intarray + \intarray_item_fast:Nn \g_@@_state_active_intarray { \l_@@_curr_state_int } #1 \exp_after:wN \@@_use_state: @@ -4862,7 +4862,7 @@ \cs_new_protected:Npn \@@_store_state:n #1 { \@@_store_submatches: - \__intarray_gset_fast:Nnn \g_@@_thread_state_intarray + \intarray_gset_fast:Nnn \g_@@_thread_state_intarray { \l_@@_max_active_int } {#1} \int_incr:N \l_@@_max_active_int } @@ -4992,8 +4992,8 @@ \cs_new:Npn \@@_replacement_do_one_match:n #1 { \@@_query_range:nn - { \__intarray_item_fast:Nn \g_@@_submatch_prev_intarray {#1} } - { \__intarray_item_fast:Nn \g_@@_submatch_begin_intarray {#1} } + { \intarray_item_fast:Nn \g_@@_submatch_prev_intarray {#1} } + { \intarray_item_fast:Nn \g_@@_submatch_begin_intarray {#1} } } % \end{macrocode} % \end{macro} @@ -5053,8 +5053,8 @@ \cs_new:Npn \@@_query_submatch:n #1 { \@@_query_range:nn - { \__intarray_item_fast:Nn \g_@@_submatch_begin_intarray {#1} } - { \__intarray_item_fast:Nn \g_@@_submatch_end_intarray {#1} } + { \intarray_item_fast:Nn \g_@@_submatch_begin_intarray {#1} } + { \intarray_item_fast:Nn \g_@@_submatch_end_intarray {#1} } } % \end{macrocode} % \end{macro} @@ -5073,19 +5073,19 @@ \int_eval:n { \int_compare:nNnTF - { \__intarray_item_fast:Nn \g_@@_submatch_end_intarray {#1} } = 0 + { \intarray_item_fast:Nn \g_@@_submatch_end_intarray {#1} } = 0 { 0 } { - \__intarray_item_fast:Nn \g_@@_balance_intarray - { \__intarray_item_fast:Nn \g_@@_submatch_end_intarray {#1} } + \intarray_item_fast:Nn \g_@@_balance_intarray + { \intarray_item_fast:Nn \g_@@_submatch_end_intarray {#1} } } - \int_compare:nNnTF - { \__intarray_item_fast:Nn \g_@@_submatch_begin_intarray {#1} } = 0 + { \intarray_item_fast:Nn \g_@@_submatch_begin_intarray {#1} } = 0 { 0 } { - \__intarray_item_fast:Nn \g_@@_balance_intarray - { \__intarray_item_fast:Nn \g_@@_submatch_begin_intarray {#1} } + \intarray_item_fast:Nn \g_@@_balance_intarray + { \intarray_item_fast:Nn \g_@@_submatch_begin_intarray {#1} } } } } @@ -5154,8 +5154,8 @@ \cs_set:Npn \@@_replacement_do_one_match:n ##1 { \@@_query_range:nn - { \__intarray_item_fast:Nn \g_@@_submatch_prev_intarray {##1} } - { \__intarray_item_fast:Nn \g_@@_submatch_begin_intarray {##1} } + { \intarray_item_fast:Nn \g_@@_submatch_prev_intarray {##1} } + { \intarray_item_fast:Nn \g_@@_submatch_begin_intarray {##1} } #1 } } @@ -5789,9 +5789,9 @@ % \begin{variable}{\g_@@_submatch_prev_intarray, \g_@@_submatch_begin_intarray, \g_@@_submatch_end_intarray} % Hold the place where the match attempt begun and the end-points of each submatch. % \begin{macrocode} -\__intarray_new:Nn \g_@@_submatch_prev_intarray { 65536 } -\__intarray_new:Nn \g_@@_submatch_begin_intarray { 65536 } -\__intarray_new:Nn \g_@@_submatch_end_intarray { 65536 } +\intarray_new:Nn \g_@@_submatch_prev_intarray { 65536 } +\intarray_new:Nn \g_@@_submatch_begin_intarray { 65536 } +\intarray_new:Nn \g_@@_submatch_end_intarray { 65536 } % \end{macrocode} % \end{variable} % @@ -5897,15 +5897,15 @@ { \if_int_compare:w \l_@@_start_pos_int < \l_@@_success_pos_int \@@_extract: - \__intarray_gset_fast:Nnn \g_@@_submatch_prev_intarray + \intarray_gset_fast:Nnn \g_@@_submatch_prev_intarray { \l_@@_zeroth_submatch_int } { 0 } - \__intarray_gset_fast:Nnn \g_@@_submatch_end_intarray + \intarray_gset_fast:Nnn \g_@@_submatch_end_intarray { \l_@@_zeroth_submatch_int } { - \__intarray_item_fast:Nn \g_@@_submatch_begin_intarray + \intarray_item_fast:Nn \g_@@_submatch_begin_intarray { \l_@@_zeroth_submatch_int } } - \__intarray_gset_fast:Nnn \g_@@_submatch_begin_intarray + \intarray_gset_fast:Nnn \g_@@_submatch_begin_intarray { \l_@@_zeroth_submatch_int } { \l_@@_start_pos_int } \fi: @@ -5913,12 +5913,12 @@ #1 \@@_match:n {#2} %\assert_int:n { \l_@@_curr_pos_int = \l_@@_max_pos_int } - \__intarray_gset_fast:Nnn \g_@@_submatch_prev_intarray + \intarray_gset_fast:Nnn \g_@@_submatch_prev_intarray { \l_@@_submatch_int } { 0 } - \__intarray_gset_fast:Nnn \g_@@_submatch_end_intarray + \intarray_gset_fast:Nnn \g_@@_submatch_end_intarray { \l_@@_submatch_int } { \l_@@_max_pos_int } - \__intarray_gset_fast:Nnn \g_@@_submatch_begin_intarray + \intarray_gset_fast:Nnn \g_@@_submatch_begin_intarray { \l_@@_submatch_int } { \l_@@_start_pos_int } \int_incr:N \l_@@_submatch_int @@ -6022,11 +6022,11 @@ \int_set_eq:NN \l_@@_zeroth_submatch_int \l_@@_submatch_int \prg_replicate:nn \l_@@_capturing_group_int { - \__intarray_gset_fast:Nnn \g_@@_submatch_begin_intarray + \intarray_gset_fast:Nnn \g_@@_submatch_begin_intarray { \l_@@_submatch_int } { 0 } - \__intarray_gset_fast:Nnn \g_@@_submatch_end_intarray + \intarray_gset_fast:Nnn \g_@@_submatch_end_intarray { \l_@@_submatch_int } { 0 } - \__intarray_gset_fast:Nnn \g_@@_submatch_prev_intarray + \intarray_gset_fast:Nnn \g_@@_submatch_prev_intarray { \l_@@_submatch_int } { 0 } \int_incr:N \l_@@_submatch_int } @@ -6039,14 +6039,14 @@ \fi: \@@_int_eval:w \l_@@_zeroth_submatch_int + ##1 {##2} } - \__intarray_gset_fast:Nnn \g_@@_submatch_prev_intarray + \intarray_gset_fast:Nnn \g_@@_submatch_prev_intarray { \l_@@_zeroth_submatch_int } { \l_@@_start_pos_int } \fi: } \cs_new_protected:Npn \@@_extract_b:wn #1 < #2 - { \__intarray_gset_fast:Nnn \g_@@_submatch_begin_intarray {#1} {#2} } + { \intarray_gset_fast:Nnn \g_@@_submatch_begin_intarray {#1} {#2} } \cs_new_protected:Npn \@@_extract_e:wn #1 > #2 - { \__intarray_gset_fast:Nnn \g_@@_submatch_end_intarray {#1} {#2} } + { \intarray_gset_fast:Nnn \g_@@_submatch_end_intarray {#1} {#2} } % \end{macrocode} % \end{macro} % @@ -6087,7 +6087,7 @@ \@@_replacement_do_one_match:n { \l_@@_zeroth_submatch_int } \@@_query_range:nn { - \__intarray_item_fast:Nn \g_@@_submatch_end_intarray + \intarray_item_fast:Nn \g_@@_submatch_end_intarray { \l_@@_zeroth_submatch_int } } { \l_@@_max_pos_int } diff --git a/l3kernel/testfiles/m3expl001.luatex.tlg b/l3kernel/testfiles/m3expl001.luatex.tlg index 28f2b26574..9019b9b65d 100644 --- a/l3kernel/testfiles/m3expl001.luatex.tlg +++ b/l3kernel/testfiles/m3expl001.luatex.tlg @@ -1858,14 +1858,14 @@ Defining \c_minus_one on line ... Defining \__int_value:w on line ... Defining \g__intarray_font_int on line ... \g__intarray_font_int=\count... -Defining \__intarray_new:Nn on line ... -Defining \__intarray_count:N on line ... -Defining \__intarray_gset_fast:Nnn on line ... +Defining \intarray_new:Nn on line ... +Defining \intarray_count:N on line ... +Defining \intarray_gset_fast:Nnn on line ... +Defining \intarray_gset:Nnn on line ... Defining \__intarray_gset:Nnn on line ... -Defining \__intarray_gset_aux:Nnn on line ... -Defining \__intarray_item_fast:Nn on line ... +Defining \intarray_item_fast:Nn on line ... +Defining \intarray_item:Nn on line ... Defining \__intarray_item:Nn on line ... -Defining \__intarray_item_aux:Nn on line ... Defining \flag_new:n on line ... Defining \flag_clear:n on line ... Defining \__flag_clear:wn on line ... diff --git a/l3kernel/testfiles/m3expl001.ptex.tlg b/l3kernel/testfiles/m3expl001.ptex.tlg index 415b6869e0..19851f6af7 100644 --- a/l3kernel/testfiles/m3expl001.ptex.tlg +++ b/l3kernel/testfiles/m3expl001.ptex.tlg @@ -1539,14 +1539,14 @@ Defining \c_minus_one on line ... Defining \__int_value:w on line ... Defining \g__intarray_font_int on line ... \g__intarray_font_int=\count... -Defining \__intarray_new:Nn on line ... -Defining \__intarray_count:N on line ... -Defining \__intarray_gset_fast:Nnn on line ... +Defining \intarray_new:Nn on line ... +Defining \intarray_count:N on line ... +Defining \intarray_gset_fast:Nnn on line ... +Defining \intarray_gset:Nnn on line ... Defining \__intarray_gset:Nnn on line ... -Defining \__intarray_gset_aux:Nnn on line ... -Defining \__intarray_item_fast:Nn on line ... +Defining \intarray_item_fast:Nn on line ... +Defining \intarray_item:Nn on line ... Defining \__intarray_item:Nn on line ... -Defining \__intarray_item_aux:Nn on line ... Defining \flag_new:n on line ... Defining \flag_clear:n on line ... Defining \__flag_clear:wn on line ... diff --git a/l3kernel/testfiles/m3expl001.tlg b/l3kernel/testfiles/m3expl001.tlg index b99bd8433f..17a7ff6569 100644 --- a/l3kernel/testfiles/m3expl001.tlg +++ b/l3kernel/testfiles/m3expl001.tlg @@ -1539,14 +1539,14 @@ Defining \c_minus_one on line ... Defining \__int_value:w on line ... Defining \g__intarray_font_int on line ... \g__intarray_font_int=\count... -Defining \__intarray_new:Nn on line ... -Defining \__intarray_count:N on line ... -Defining \__intarray_gset_fast:Nnn on line ... +Defining \intarray_new:Nn on line ... +Defining \intarray_count:N on line ... +Defining \intarray_gset_fast:Nnn on line ... +Defining \intarray_gset:Nnn on line ... Defining \__intarray_gset:Nnn on line ... -Defining \__intarray_gset_aux:Nnn on line ... -Defining \__intarray_item_fast:Nn on line ... +Defining \intarray_item_fast:Nn on line ... +Defining \intarray_item:Nn on line ... Defining \__intarray_item:Nn on line ... -Defining \__intarray_item_aux:Nn on line ... Defining \flag_new:n on line ... Defining \flag_clear:n on line ... Defining \__flag_clear:wn on line ... diff --git a/l3kernel/testfiles/m3expl001.uptex.tlg b/l3kernel/testfiles/m3expl001.uptex.tlg index 23fb8a9594..36cd996993 100644 --- a/l3kernel/testfiles/m3expl001.uptex.tlg +++ b/l3kernel/testfiles/m3expl001.uptex.tlg @@ -1539,14 +1539,14 @@ Defining \c_minus_one on line ... Defining \__int_value:w on line ... Defining \g__intarray_font_int on line ... \g__intarray_font_int=\count... -Defining \__intarray_new:Nn on line ... -Defining \__intarray_count:N on line ... -Defining \__intarray_gset_fast:Nnn on line ... +Defining \intarray_new:Nn on line ... +Defining \intarray_count:N on line ... +Defining \intarray_gset_fast:Nnn on line ... +Defining \intarray_gset:Nnn on line ... Defining \__intarray_gset:Nnn on line ... -Defining \__intarray_gset_aux:Nnn on line ... -Defining \__intarray_item_fast:Nn on line ... +Defining \intarray_item_fast:Nn on line ... +Defining \intarray_item:Nn on line ... Defining \__intarray_item:Nn on line ... -Defining \__intarray_item_aux:Nn on line ... Defining \flag_new:n on line ... Defining \flag_clear:n on line ... Defining \__flag_clear:wn on line ... diff --git a/l3kernel/testfiles/m3expl001.xetex.tlg b/l3kernel/testfiles/m3expl001.xetex.tlg index cd1b87fc1b..75eb46c657 100644 --- a/l3kernel/testfiles/m3expl001.xetex.tlg +++ b/l3kernel/testfiles/m3expl001.xetex.tlg @@ -1856,14 +1856,14 @@ Defining \c_minus_one on line ... Defining \__int_value:w on line ... Defining \g__intarray_font_int on line ... \g__intarray_font_int=\count... -Defining \__intarray_new:Nn on line ... -Defining \__intarray_count:N on line ... -Defining \__intarray_gset_fast:Nnn on line ... +Defining \intarray_new:Nn on line ... +Defining \intarray_count:N on line ... +Defining \intarray_gset_fast:Nnn on line ... +Defining \intarray_gset:Nnn on line ... Defining \__intarray_gset:Nnn on line ... -Defining \__intarray_gset_aux:Nnn on line ... -Defining \__intarray_item_fast:Nn on line ... +Defining \intarray_item_fast:Nn on line ... +Defining \intarray_item:Nn on line ... Defining \__intarray_item:Nn on line ... -Defining \__intarray_item_aux:Nn on line ... Defining \flag_new:n on line ... Defining \flag_clear:n on line ... Defining \__flag_clear:wn on line ... diff --git a/l3kernel/testfiles/m3expl003.luatex.tlg b/l3kernel/testfiles/m3expl003.luatex.tlg index 28f2b26574..9019b9b65d 100644 --- a/l3kernel/testfiles/m3expl003.luatex.tlg +++ b/l3kernel/testfiles/m3expl003.luatex.tlg @@ -1858,14 +1858,14 @@ Defining \c_minus_one on line ... Defining \__int_value:w on line ... Defining \g__intarray_font_int on line ... \g__intarray_font_int=\count... -Defining \__intarray_new:Nn on line ... -Defining \__intarray_count:N on line ... -Defining \__intarray_gset_fast:Nnn on line ... +Defining \intarray_new:Nn on line ... +Defining \intarray_count:N on line ... +Defining \intarray_gset_fast:Nnn on line ... +Defining \intarray_gset:Nnn on line ... Defining \__intarray_gset:Nnn on line ... -Defining \__intarray_gset_aux:Nnn on line ... -Defining \__intarray_item_fast:Nn on line ... +Defining \intarray_item_fast:Nn on line ... +Defining \intarray_item:Nn on line ... Defining \__intarray_item:Nn on line ... -Defining \__intarray_item_aux:Nn on line ... Defining \flag_new:n on line ... Defining \flag_clear:n on line ... Defining \__flag_clear:wn on line ... diff --git a/l3kernel/testfiles/m3expl003.ptex.tlg b/l3kernel/testfiles/m3expl003.ptex.tlg index 415b6869e0..19851f6af7 100644 --- a/l3kernel/testfiles/m3expl003.ptex.tlg +++ b/l3kernel/testfiles/m3expl003.ptex.tlg @@ -1539,14 +1539,14 @@ Defining \c_minus_one on line ... Defining \__int_value:w on line ... Defining \g__intarray_font_int on line ... \g__intarray_font_int=\count... -Defining \__intarray_new:Nn on line ... -Defining \__intarray_count:N on line ... -Defining \__intarray_gset_fast:Nnn on line ... +Defining \intarray_new:Nn on line ... +Defining \intarray_count:N on line ... +Defining \intarray_gset_fast:Nnn on line ... +Defining \intarray_gset:Nnn on line ... Defining \__intarray_gset:Nnn on line ... -Defining \__intarray_gset_aux:Nnn on line ... -Defining \__intarray_item_fast:Nn on line ... +Defining \intarray_item_fast:Nn on line ... +Defining \intarray_item:Nn on line ... Defining \__intarray_item:Nn on line ... -Defining \__intarray_item_aux:Nn on line ... Defining \flag_new:n on line ... Defining \flag_clear:n on line ... Defining \__flag_clear:wn on line ... diff --git a/l3kernel/testfiles/m3expl003.tlg b/l3kernel/testfiles/m3expl003.tlg index b99bd8433f..17a7ff6569 100644 --- a/l3kernel/testfiles/m3expl003.tlg +++ b/l3kernel/testfiles/m3expl003.tlg @@ -1539,14 +1539,14 @@ Defining \c_minus_one on line ... Defining \__int_value:w on line ... Defining \g__intarray_font_int on line ... \g__intarray_font_int=\count... -Defining \__intarray_new:Nn on line ... -Defining \__intarray_count:N on line ... -Defining \__intarray_gset_fast:Nnn on line ... +Defining \intarray_new:Nn on line ... +Defining \intarray_count:N on line ... +Defining \intarray_gset_fast:Nnn on line ... +Defining \intarray_gset:Nnn on line ... Defining \__intarray_gset:Nnn on line ... -Defining \__intarray_gset_aux:Nnn on line ... -Defining \__intarray_item_fast:Nn on line ... +Defining \intarray_item_fast:Nn on line ... +Defining \intarray_item:Nn on line ... Defining \__intarray_item:Nn on line ... -Defining \__intarray_item_aux:Nn on line ... Defining \flag_new:n on line ... Defining \flag_clear:n on line ... Defining \__flag_clear:wn on line ... diff --git a/l3kernel/testfiles/m3expl003.uptex.tlg b/l3kernel/testfiles/m3expl003.uptex.tlg index 23fb8a9594..36cd996993 100644 --- a/l3kernel/testfiles/m3expl003.uptex.tlg +++ b/l3kernel/testfiles/m3expl003.uptex.tlg @@ -1539,14 +1539,14 @@ Defining \c_minus_one on line ... Defining \__int_value:w on line ... Defining \g__intarray_font_int on line ... \g__intarray_font_int=\count... -Defining \__intarray_new:Nn on line ... -Defining \__intarray_count:N on line ... -Defining \__intarray_gset_fast:Nnn on line ... +Defining \intarray_new:Nn on line ... +Defining \intarray_count:N on line ... +Defining \intarray_gset_fast:Nnn on line ... +Defining \intarray_gset:Nnn on line ... Defining \__intarray_gset:Nnn on line ... -Defining \__intarray_gset_aux:Nnn on line ... -Defining \__intarray_item_fast:Nn on line ... +Defining \intarray_item_fast:Nn on line ... +Defining \intarray_item:Nn on line ... Defining \__intarray_item:Nn on line ... -Defining \__intarray_item_aux:Nn on line ... Defining \flag_new:n on line ... Defining \flag_clear:n on line ... Defining \__flag_clear:wn on line ... diff --git a/l3kernel/testfiles/m3expl003.xetex.tlg b/l3kernel/testfiles/m3expl003.xetex.tlg index cd1b87fc1b..75eb46c657 100644 --- a/l3kernel/testfiles/m3expl003.xetex.tlg +++ b/l3kernel/testfiles/m3expl003.xetex.tlg @@ -1856,14 +1856,14 @@ Defining \c_minus_one on line ... Defining \__int_value:w on line ... Defining \g__intarray_font_int on line ... \g__intarray_font_int=\count... -Defining \__intarray_new:Nn on line ... -Defining \__intarray_count:N on line ... -Defining \__intarray_gset_fast:Nnn on line ... +Defining \intarray_new:Nn on line ... +Defining \intarray_count:N on line ... +Defining \intarray_gset_fast:Nnn on line ... +Defining \intarray_gset:Nnn on line ... Defining \__intarray_gset:Nnn on line ... -Defining \__intarray_gset_aux:Nnn on line ... -Defining \__intarray_item_fast:Nn on line ... +Defining \intarray_item_fast:Nn on line ... +Defining \intarray_item:Nn on line ... Defining \__intarray_item:Nn on line ... -Defining \__intarray_item_aux:Nn on line ... Defining \flag_new:n on line ... Defining \flag_clear:n on line ... Defining \__flag_clear:wn on line ... diff --git a/l3kernel/testfiles/m3intarray001.lvt b/l3kernel/testfiles/m3intarray001.lvt index 9bff972b5c..9746c4a75f 100644 --- a/l3kernel/testfiles/m3intarray001.lvt +++ b/l3kernel/testfiles/m3intarray001.lvt @@ -15,63 +15,63 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \TEST { Safe~array~operations } { - \__intarray_new:Nn \l_tmpa_intarray { 123 } + \intarray_new:Nn \l_tmpa_intarray { 123 } \group_begin: - \__intarray_gset:Nnn \l_tmpa_intarray { 1 } { 100 } - \__intarray_gset:Nnn \l_tmpa_intarray { 2 } { -200 } - \__intarray_gset:Nnn \l_tmpa_intarray { 1 } { -10 } - \__intarray_gset:Nnn \l_tmpa_intarray { 123 } { 12345 } + \intarray_gset:Nnn \l_tmpa_intarray { 1 } { 100 } + \intarray_gset:Nnn \l_tmpa_intarray { 2 } { -200 } + \intarray_gset:Nnn \l_tmpa_intarray { 1 } { -10 } + \intarray_gset:Nnn \l_tmpa_intarray { 123 } { 12345 } \group_end: - \TYPE { \__intarray_count:N \l_tmpa_intarray } - \TYPE { \__intarray_item:Nn \l_tmpa_intarray { 1 } } - \TYPE { \__intarray_item:Nn \l_tmpa_intarray { 2 } } - \TYPE { \__intarray_item:Nn \l_tmpa_intarray { 53 } } - \TYPE { \__intarray_item:Nn \l_tmpa_intarray { 123 } } + \TYPE { \intarray_count:N \l_tmpa_intarray } + \TYPE { \intarray_item:Nn \l_tmpa_intarray { 1 } } + \TYPE { \intarray_item:Nn \l_tmpa_intarray { 2 } } + \TYPE { \intarray_item:Nn \l_tmpa_intarray { 53 } } + \TYPE { \intarray_item:Nn \l_tmpa_intarray { 123 } } } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \TEST { Safe~array~operations~with~errors } { - \__intarray_new:Nn \l_tmpa_intarray { 12 } + \intarray_new:Nn \l_tmpa_intarray { 12 } \group_begin: - \__intarray_gset:Nnn \l_tmpa_intarray { 0 } { 2000000000 } - \__intarray_gset:Nnn \l_tmpa_intarray { 1 } { -2000000000 } - \__intarray_gset:Nnn \l_tmpa_intarray { 13 } { -2000000000 } + \intarray_gset:Nnn \l_tmpa_intarray { 0 } { 2000000000 } + \intarray_gset:Nnn \l_tmpa_intarray { 1 } { -2000000000 } + \intarray_gset:Nnn \l_tmpa_intarray { 13 } { -2000000000 } \group_end: - \TYPE { \__intarray_item:Nn \l_tmpa_intarray { 0 } } - \TYPE { \__intarray_item:Nn \l_tmpa_intarray { 1 } } - \TYPE { \__intarray_item:Nn \l_tmpa_intarray { 12 } } - \TYPE { \__intarray_item:Nn \l_tmpa_intarray { 13 } } + \TYPE { \intarray_item:Nn \l_tmpa_intarray { 0 } } + \TYPE { \intarray_item:Nn \l_tmpa_intarray { 1 } } + \TYPE { \intarray_item:Nn \l_tmpa_intarray { 12 } } + \TYPE { \intarray_item:Nn \l_tmpa_intarray { 13 } } } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \TEST { Unsafe~array~operations~with~errors } { - \__intarray_new:Nn \l_tmpb_intarray { 15 } + \intarray_new:Nn \l_tmpb_intarray { 15 } \group_begin: - \__intarray_gset_fast:Nnn \l_tmpb_intarray { 0 } { 2000000000 } - \__intarray_gset_fast:Nnn \l_tmpb_intarray { 1 } { -2000000000 } - \__intarray_gset_fast:Nnn \l_tmpb_intarray { 16 } { 123456 } + \intarray_gset_fast:Nnn \l_tmpb_intarray { 0 } { 2000000000 } + \intarray_gset_fast:Nnn \l_tmpb_intarray { 1 } { -2000000000 } + \intarray_gset_fast:Nnn \l_tmpb_intarray { 16 } { 123456 } \group_end: - \TYPE { \__intarray_item_fast:Nn \l_tmpb_intarray { 0 } } - \TYPE { \__intarray_item_fast:Nn \l_tmpb_intarray { 1 } } - \TYPE { \__intarray_item_fast:Nn \l_tmpb_intarray { 15 } } - \TYPE { \__intarray_item_fast:Nn \l_tmpb_intarray { 16 } } - \TYPE { \__intarray_item_fast:Nn \l_tmpb_intarray { 17 } } - \__intarray_gset_fast:Nnn \l_tmpb_intarray { 17 } { 1234567 } - \TYPE { \__intarray_item_fast:Nn \l_tmpb_intarray { 17 } } - \__intarray_new:Nn \l_tmpc_intarray { -1 } - \__intarray_gset_fast:Nnn \l_tmpb_intarray { 18 } { 12345678 } - \TYPE { \__intarray_item_fast:Nn \l_tmpb_intarray { 18 } } + \TYPE { \intarray_item_fast:Nn \l_tmpb_intarray { 0 } } + \TYPE { \intarray_item_fast:Nn \l_tmpb_intarray { 1 } } + \TYPE { \intarray_item_fast:Nn \l_tmpb_intarray { 15 } } + \TYPE { \intarray_item_fast:Nn \l_tmpb_intarray { 16 } } + \TYPE { \intarray_item_fast:Nn \l_tmpb_intarray { 17 } } + \intarray_gset_fast:Nnn \l_tmpb_intarray { 17 } { 1234567 } + \TYPE { \intarray_item_fast:Nn \l_tmpb_intarray { 17 } } + \intarray_new:Nn \l_tmpc_intarray { -1 } + \intarray_gset_fast:Nnn \l_tmpb_intarray { 18 } { 12345678 } + \TYPE { \intarray_item_fast:Nn \l_tmpb_intarray { 18 } } } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \int_gadd:Nn \g__intarray_font_int { 100000 } % to make sure nothing is suppressed accidentally by scaling the font. \TEST { Any~stray~non-zero? } { - \__intarray_new:Nn \l_tmpd_intarray { 25 } - \int_step_inline:nnnn { 1 } { 1 } { \__intarray_count:N \l_tmpd_intarray } - { \int_compare:nNnF { \__intarray_item:Nn \l_tmpd_intarray {#1} } = 0 { \TYPE {#1} } } + \intarray_new:Nn \l_tmpd_intarray { 25 } + \int_step_inline:nnnn { 1 } { 1 } { \intarray_count:N \l_tmpd_intarray } + { \int_compare:nNnF { \intarray_item:Nn \l_tmpd_intarray {#1} } = 0 { \TYPE {#1} } } } \END