summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2021-11-22 21:19:01 +0000
committerKarl Berry <karl@freefriends.org>2021-11-22 21:19:01 +0000
commit886a160757f8fa328e5a5e95c6796d72780e831b (patch)
treeab78ccf9dc685cb071866b651e0bcd055cac3e56 /Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
parent3738e5a3a99ac058b02c64cf3f63fe1fea77a065 (diff)
l3kernel (22nov21)
git-svn-id: svn://tug.org/texlive/trunk@61121 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex')
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex463
1 files changed, 276 insertions, 187 deletions
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
index acd7546557c..9bbbaa1dc45 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
@@ -24,7 +24,7 @@
%% l3file.dtx (with options: `package')
%% l3skip.dtx (with options: `package')
%% l3keys.dtx (with options: `package')
-%% l3intarray.dtx (with options: `package')
+%% l3intarray.dtx (with options: `package,tex')
%% l3fp.dtx (with options: `package')
%% l3fp-aux.dtx (with options: `package')
%% l3fp-traps.dtx (with options: `package')
@@ -70,7 +70,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2021-11-12}%
+\def\ExplFileDate{2021-11-22}%
\begingroup
\def\next{\endgroup}%
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -158,10 +158,7 @@
\expandafter\ifx\csname newcatcodetable\endcsname\relax
\input{ltluatex}%
\fi
- \begingroup\edef\ignored{%
- \expandafter\noexpand\csname prg_return_true:\endcsname
- \expandafter\noexpand\csname prg_return_false:\endcsname
- }\endgroup
+ \ifdefined\newluabytecode\newluabytecode\@expl@luadata@bytecode\fi
\directlua{require("expl3")}%
\ifnum 0%
\directlua{
@@ -13091,29 +13088,19 @@
\cs_new:Npn \__keys_define_code:w #1 \c_colon_str #2 \s__keys_stop
{ \tl_if_empty:nTF {#2} }
\cs_new_protected:Npn \__keys_bool_set:Nn #1#2
- {
- \bool_if_exist:NF #1 { \bool_new:N #1 }
- \__keys_choice_make:
- \__keys_cmd_set:nx { \l_keys_path_str / true }
- { \exp_not:c { bool_ #2 set_true:N } \exp_not:N #1 }
- \__keys_cmd_set:nx { \l_keys_path_str / false }
- { \exp_not:c { bool_ #2 set_false:N } \exp_not:N #1 }
- \__keys_cmd_set:nn { \l_keys_path_str / unknown }
- {
- \msg_error:nnx { keys } { boolean-values-only }
- \l_keys_key_str
- }
- \__keys_default_set:n { true }
- }
+ { \__keys_bool_set:Nnnn #1 {#2} { true } { false } }
\cs_generate_variant:Nn \__keys_bool_set:Nn { c }
\cs_new_protected:Npn \__keys_bool_set_inverse:Nn #1#2
+ { \__keys_bool_set:Nnnn #1 {#2} { false } { true } }
+\cs_generate_variant:Nn \__keys_bool_set_inverse:Nn { c }
+\cs_new_protected:Npn \__keys_bool_set:Nnnn #1#2#3#4
{
\bool_if_exist:NF #1 { \bool_new:N #1 }
\__keys_choice_make:
\__keys_cmd_set:nx { \l_keys_path_str / true }
- { \exp_not:c { bool_ #2 set_false:N } \exp_not:N #1 }
+ { \exp_not:c { bool_ #2 set_ #3 :N } \exp_not:N #1 }
\__keys_cmd_set:nx { \l_keys_path_str / false }
- { \exp_not:c { bool_ #2 set_true:N } \exp_not:N #1 }
+ { \exp_not:c { bool_ #2 set_ #4 :N } \exp_not:N #1 }
\__keys_cmd_set:nn { \l_keys_path_str / unknown }
{
\msg_error:nnx { keys } { boolean-values-only }
@@ -13121,7 +13108,7 @@
}
\__keys_default_set:n { true }
}
-\cs_generate_variant:Nn \__keys_bool_set_inverse:Nn { c }
+\cs_generate_variant:Nn \__keys_bool_set:Nn { c }
\cs_new_protected:Npn \__keys_choice_make:
{ \__keys_choice_make:N \__keys_choice_find:n }
\cs_new_protected:Npn \__keys_multichoice_make:
@@ -13228,6 +13215,24 @@
{ \__keys_execute:nn \l_keys_path_str {#1} }
}
}
+\cs_new_protected:Npn \__keys_legacy_if_set:nn #1#2
+ { \__keys_legacy_if_set:nnnn {#1} {#2} { true } { false } }
+\cs_new_protected:Npn \__keys_legacy_if_set_inverse:nn #1#2
+ { \__keys_legacy_if_set:nnnn {#1} {#2} { false } { true } }
+\cs_new_protected:Npn \__keys_legacy_if_set:nnnn #1#2#3#4
+ {
+ \__keys_choice_make:
+ \__keys_cmd_set:nx { \l_keys_path_str / true }
+ { \exp_not:c { legacy_if_#2 set_ #3 :n } { \exp_not:n {#1} } }
+ \__keys_cmd_set:nx { \l_keys_path_str / false }
+ { \exp_not:c { legacy_if_#2 set_ #4 :n } { \exp_not:n {#1} } }
+ \__keys_cmd_set:nn { \l_keys_path_str / unknown }
+ {
+ \msg_error:nnx { keys } { boolean-values-only }
+ \l_keys_key_str
+ }
+ \__keys_default_set:n { true }
+ }
\cs_new_protected:Npn \__keys_meta_make:n #1
{
\__keys_cmd_set:Vo \l_keys_path_str
@@ -13420,6 +13425,14 @@
{ \__keys_variable_set_required:NnnN #1 { int } { g } n }
\cs_new_protected:cpn { \c__keys_props_root_str .int_gset:c } #1
{ \__keys_variable_set_required:cnnN {#1} { int } { g } n }
+\cs_new_protected:cpn { \c__keys_props_root_str .legacy_if_set:n } #1
+ { \__keys_legacy_if_set:nn {#1} { } }
+\cs_new_protected:cpn { \c__keys_props_root_str .legacy_if_gset:n } #1
+ { \__keys_legacy_if_set:nn {#1} { g } }
+\cs_new_protected:cpn { \c__keys_props_root_str .legacy_if_set_inverse:n } #1
+ { \__keys_legacy_if_set_inverse:nn {#1} { } }
+\cs_new_protected:cpn { \c__keys_props_root_str .legacy_if_gset_inverse:n } #1
+ { \__keys_legacy_if_set_inverse:nn {#1} { g } }
\cs_new_protected:cpn { \c__keys_props_root_str .meta:n } #1
{ \__keys_meta_make:n {#1} }
\cs_new_protected:cpn { \c__keys_props_root_str .meta:nn } #1
@@ -14032,193 +14045,269 @@
\prop_gput:Nnn \g_msg_module_name_prop { keys } { LaTeX3 }
\prop_gput:Nnn \g_msg_module_type_prop { keys } { }
%% File: l3intarray.dtx
-\cs_new_eq:NN \__intarray_entry:w \tex_fontdimen:D
-\cs_new_eq:NN \__intarray_count:w \tex_hyphenchar:D
-\int_new:N \l__intarray_loop_int
-\dim_const:Nn \c__intarray_sp_dim { 1 sp }
-\int_new:N \g__intarray_font_int
\msg_new:nnn { kernel } { negative-array-size }
{ Size~of~array~may~not~be~negative:~#1 }
-\cs_new_protected:Npn \__intarray_new:N #1
- {
- \__kernel_chk_if_free_cs:N #1
- \int_gincr:N \g__intarray_font_int
- \tex_global:D \tex_font:D #1
- = cmr10~at~ \g__intarray_font_int \c__intarray_sp_dim \scan_stop:
- \int_step_inline:nn { 8 }
- { \__kernel_intarray_gset:Nnn #1 {##1} \c_zero_int }
- }
-\cs_new_protected:Npn \intarray_new:Nn #1#2
+\int_new:N \l__intarray_loop_int
+\cs_if_exist:NTF \__intarray_gset_count:Nw
{
- \__intarray_new:N #1
- \__intarray_count:w #1 = \int_eval:n {#2} \scan_stop:
- \int_compare:nNnT { \intarray_count:N #1 } < 0
+ \int_new:N \g__intarray_table_int
+ \int_new:N \l__intarray_bad_index_int
+ \cs_new_protected:Npn \__intarray_new:N #1
{
- \msg_error:nnx { kernel } { negative-array-size }
- { \intarray_count:N #1 }
+ \__kernel_chk_if_free_cs:N #1
+ \int_gincr:N \g__intarray_table_int
+ \cs_gset_nopar:Npx #1 { \__intarray:w \int_use:N \g__intarray_table_int \c_space_tl }
}
- \int_compare:nNnT { \intarray_count:N #1 } > 0
- { \__kernel_intarray_gset:Nnn #1 { \intarray_count:N #1 } { 0 } }
- }
-\cs_generate_variant:Nn \intarray_new:Nn { c }
-\cs_new:Npn \intarray_count:N #1 { \int_value:w \__intarray_count:w #1 }
-\cs_generate_variant:Nn \intarray_count:N { c }
-\cs_new:Npn \__intarray_signed_max_dim:n #1
- { \int_value:w \int_compare:nNnT {#1} < 0 { - } \c_max_dim }
-\cs_new:Npn \__intarray_bounds:NNnTF #1#2#3
- {
- \if_int_compare:w 1 > #3 \exp_stop_f:
- \__intarray_bounds_error:NNnw #1 #2 {#3}
- \else:
- \if_int_compare:w #3 > \intarray_count:N #2 \exp_stop_f:
- \__intarray_bounds_error:NNnw #1 #2 {#3}
- \fi:
- \fi:
- \use_i:nn
- }
-\cs_new:Npn \__intarray_bounds_error:NNnw #1#2#3#4 \use_i:nn #5#6
- {
- #4
- #1 { kernel } { out-of-bounds }
- { \token_to_str:N #2 } {#3} { \intarray_count:N #2 }
- #6
- }
-\cs_new_protected:Npn \__kernel_intarray_gset:Nnn #1#2#3
- { \__intarray_entry:w #2 #1 #3 \c__intarray_sp_dim }
-\cs_new_protected:Npn \intarray_gset:Nnn #1#2#3
- {
- \exp_after:wN \__intarray_gset:Nww
- \exp_after:wN #1
- \int_value:w \int_eval:n {#2} \exp_after:wN ;
- \int_value:w \int_eval:n {#3} ;
- }
-\cs_generate_variant:Nn \intarray_gset:Nnn { c }
-\cs_new_protected:Npn \__intarray_gset:Nww #1#2 ; #3 ;
- {
- \__intarray_bounds:NNnTF \msg_error:nnxxx #1 {#2}
+ \cs_new_protected:Npn \intarray_new:Nn #1#2
{
- \__intarray_gset_overflow_test:nw {#3}
- \__kernel_intarray_gset:Nnn #1 {#2} {#3}
+ \__intarray_new:N #1
+ \__intarray_gset_count:Nw #1 \int_eval:n {#2} \scan_stop:
+ \int_compare:nNnT { \intarray_count:N #1 } < 0
+ {
+ \msg_error:nnx { kernel } { negative-array-size }
+ { \intarray_count:N #1 }
+ }
}
- { }
- }
-\cs_if_exist:NTF \tex_ifabsnum:D
- {
- \cs_new_protected:Npn \__intarray_gset_overflow_test:nw #1
+ \cs_generate_variant:Nn \intarray_new:Nn { c }
+ \cs_generate_variant:Nn \intarray_count:N { c }
+ \cs_new_protected:Npn \__kernel_intarray_gset:Nnn #1#2#3
+ { \__intarray_gset:w #2 #1 #3 \scan_stop: }
+ \cs_new_protected:Npn \intarray_gset:Nnn #1#2#3
{
- \tex_ifabsnum:D #1 > \c_max_dim
- \exp_after:wN \__intarray_gset_overflow:NNnn
- \fi:
+ \__intarray_gset:wF \int_eval:n {#2} #1 \int_eval:n{#3}
+ {
+ \msg_error:nnxxx { kernel } { out-of-bounds }
+ { \token_to_str:N #1 } { \int_use:N \l__intarray_bad_index_int } { \intarray_count:N #1 }
+ }
+ }
+ \cs_generate_variant:Nn \intarray_gset:Nnn { c }
+ \cs_generate_variant:Nn \intarray_gzero:N { c }
+ \cs_new:Npn \__kernel_intarray_item:Nn #1#2
+ { \__intarray_item:w #2 #1 }
+ \cs_new:Npn \intarray_item:Nn #1#2
+ {
+ \__intarray_item:wF \int_eval:n {#2} #1
+ {
+ \msg_expandable_error:nnfff { kernel } { out-of-bounds }
+ { \token_to_str:N #1 } { \int_use:N \l__intarray_bad_index_int } { \intarray_count:N #1 }
+ 0
+ }
+ }
+ \cs_generate_variant:Nn \intarray_item:Nn { c }
+ \cs_new:Npn \intarray_rand_item:N #1
+ { \intarray_item:Nn #1 { \int_rand:n { \intarray_count:N #1 } } }
+ \cs_generate_variant:Nn \intarray_rand_item:N { c }
+ \cs_new_protected:Npn \intarray_const_from_clist:Nn #1#2
+ {
+ \__intarray_new:N #1
+ \int_zero:N \l__intarray_loop_int
+ \clist_map_inline:nn {#2}
+ {
+ \int_incr:N \l__intarray_loop_int
+ \__kernel_intarray_gset:Nnn #1 \l__intarray_loop_int { \int_eval:n {##1} } }
}
+ \cs_generate_variant:Nn \intarray_const_from_clist:Nn { c }
+ \cs_new:Npn \intarray_to_clist:N #1 { \__intarray_to_clist:Nn #1 { , } }
+ \cs_generate_variant:Nn \intarray_to_clist:N { c }
+ \cs_new:Npn \__kernel_intarray_range_to_clist:Nnn #1#2#3
+ {
+ \__intarray_range_to_clist:w #1
+ \int_eval:n {#2} ~ \int_eval:n {#3} ~
+ }
+ \cs_new_protected:Npn \__kernel_intarray_gset_range_from_clist:Nnn #1#2#3
+ {
+ \__intarray_gset_range:w \int_eval:w #2 #1 #3 , , \scan_stop:
+ }
+ \cs_new_protected:Npn \__intarray_gset_overflow_test:nw #1
+ {
+ }
}
{
- \cs_new_protected:Npn \__intarray_gset_overflow_test:nw #1
+ \cs_new_eq:NN \__intarray_entry:w \tex_fontdimen:D
+ \cs_new_eq:NN \__intarray_count:w \tex_hyphenchar:D
+ \dim_const:Nn \c__intarray_sp_dim { 1 sp }
+ \int_new:N \g__intarray_font_int
+ \cs_new_protected:Npn \__intarray_new:N #1
{
- \if_int_compare:w \int_abs:n {#1} > \c_max_dim
- \exp_after:wN \__intarray_gset_overflow:NNnn
+ \__kernel_chk_if_free_cs:N #1
+ \int_gincr:N \g__intarray_font_int
+ \tex_global:D \tex_font:D #1
+ = cmr10~at~ \g__intarray_font_int \c__intarray_sp_dim \scan_stop:
+ \int_step_inline:nn { 8 }
+ { \__kernel_intarray_gset:Nnn #1 {##1} \c_zero_int }
+ }
+ \cs_new_protected:Npn \intarray_new:Nn #1#2
+ {
+ \__intarray_new:N #1
+ \__intarray_count:w #1 = \int_eval:n {#2} \scan_stop:
+ \int_compare:nNnT { \intarray_count:N #1 } < 0
+ {
+ \msg_error:nnx { kernel } { negative-array-size }
+ { \intarray_count:N #1 }
+ }
+ \int_compare:nNnT { \intarray_count:N #1 } > 0
+ { \__kernel_intarray_gset:Nnn #1 { \intarray_count:N #1 } { 0 } }
+ }
+ \cs_generate_variant:Nn \intarray_new:Nn { c }
+ \cs_new:Npn \intarray_count:N #1 { \int_value:w \__intarray_count:w #1 }
+ \cs_generate_variant:Nn \intarray_count:N { c }
+ \cs_new:Npn \__intarray_signed_max_dim:n #1
+ { \int_value:w \int_compare:nNnT {#1} < 0 { - } \c_max_dim }
+ \cs_new:Npn \__intarray_bounds:NNnTF #1#2#3
+ {
+ \if_int_compare:w 1 > #3 \exp_stop_f:
+ \__intarray_bounds_error:NNnw #1 #2 {#3}
+ \else:
+ \if_int_compare:w #3 > \intarray_count:N #2 \exp_stop_f:
+ \__intarray_bounds_error:NNnw #1 #2 {#3}
+ \fi:
\fi:
+ \use_i:nn
}
- }
-\cs_new_protected:Npn \__intarray_gset_overflow:NNnn #1#2#3#4
- {
- \msg_error:nnxxxx { kernel } { overflow }
- { \token_to_str:N #2 } {#3} {#4} { \__intarray_signed_max_dim:n {#4} }
- #1 #2 {#3} { \__intarray_signed_max_dim:n {#4} }
- }
-\cs_new_protected:Npn \intarray_gzero:N #1
- {
- \int_zero:N \l__intarray_loop_int
- \prg_replicate:nn { \intarray_count:N #1 }
+ \cs_new:Npn \__intarray_bounds_error:NNnw #1#2#3#4 \use_i:nn #5#6
+ {
+ #4
+ #1 { kernel } { out-of-bounds }
+ { \token_to_str:N #2 } {#3} { \intarray_count:N #2 }
+ #6
+ }
+ \cs_new_protected:Npn \__kernel_intarray_gset:Nnn #1#2#3
+ { \__intarray_entry:w #2 #1 #3 \c__intarray_sp_dim }
+ \cs_new_protected:Npn \intarray_gset:Nnn #1#2#3
+ {
+ \exp_after:wN \__intarray_gset:Nww
+ \exp_after:wN #1
+ \int_value:w \int_eval:n {#2} \exp_after:wN ;
+ \int_value:w \int_eval:n {#3} ;
+ }
+ \cs_generate_variant:Nn \intarray_gset:Nnn { c }
+ \cs_new_protected:Npn \__intarray_gset:Nww #1#2 ; #3 ;
+ {
+ \__intarray_bounds:NNnTF \msg_error:nnxxx #1 {#2}
+ {
+ \__intarray_gset_overflow_test:nw {#3}
+ \__kernel_intarray_gset:Nnn #1 {#2} {#3}
+ }
+ { }
+ }
+ \cs_if_exist:NTF \tex_ifabsnum:D
+ {
+ \cs_new_protected:Npn \__intarray_gset_overflow_test:nw #1
+ {
+ \tex_ifabsnum:D #1 > \c_max_dim
+ \exp_after:wN \__intarray_gset_overflow:NNnn
+ \fi:
+ }
+ }
+ {
+ \cs_new_protected:Npn \__intarray_gset_overflow_test:nw #1
+ {
+ \if_int_compare:w \int_abs:n {#1} > \c_max_dim
+ \exp_after:wN \__intarray_gset_overflow:NNnn
+ \fi:
+ }
+ }
+ \cs_new_protected:Npn \__intarray_gset_overflow:NNnn #1#2#3#4
+ {
+ \msg_error:nnxxxx { kernel } { overflow }
+ { \token_to_str:N #2 } {#3} {#4} { \__intarray_signed_max_dim:n {#4} }
+ #1 #2 {#3} { \__intarray_signed_max_dim:n {#4} }
+ }
+ \cs_new_protected:Npn \intarray_gzero:N #1
+ {
+ \int_zero:N \l__intarray_loop_int
+ \prg_replicate:nn { \intarray_count:N #1 }
+ {
+ \int_incr:N \l__intarray_loop_int
+ \__intarray_entry:w \l__intarray_loop_int #1 \c_zero_dim
+ }
+ }
+ \cs_generate_variant:Nn \intarray_gzero:N { c }
+ \cs_new:Npn \__kernel_intarray_item:Nn #1#2
+ { \int_value:w \__intarray_entry:w #2 #1 }
+ \cs_new:Npn \intarray_item:Nn #1#2
+ {
+ \exp_after:wN \__intarray_item:Nw
+ \exp_after:wN #1
+ \int_value:w \int_eval:n {#2} ;
+ }
+ \cs_generate_variant:Nn \intarray_item:Nn { c }
+ \cs_new:Npn \__intarray_item:Nw #1#2 ;
+ {
+ \__intarray_bounds:NNnTF \msg_expandable_error:nnfff #1 {#2}
+ { \__kernel_intarray_item:Nn #1 {#2} }
+ { 0 }
+ }
+ \cs_new:Npn \intarray_rand_item:N #1
+ { \intarray_item:Nn #1 { \int_rand:n { \intarray_count:N #1 } } }
+ \cs_generate_variant:Nn \intarray_rand_item:N { c }
+ \cs_new_protected:Npn \intarray_const_from_clist:Nn #1#2
+ {
+ \__intarray_new:N #1
+ \int_zero:N \l__intarray_loop_int
+ \clist_map_inline:nn {#2}
+ { \exp_args:Nf \__intarray_const_from_clist:nN { \int_eval:n {##1} } #1 }
+ \__intarray_count:w #1 \l__intarray_loop_int
+ }
+ \cs_generate_variant:Nn \intarray_const_from_clist:Nn { c }
+ \cs_new_protected:Npn \__intarray_const_from_clist:nN #1#2
{
\int_incr:N \l__intarray_loop_int
- \__intarray_entry:w \l__intarray_loop_int #1 \c_zero_dim
+ \__intarray_gset_overflow_test:nw {#1}
+ \__kernel_intarray_gset:Nnn #2 \l__intarray_loop_int {#1}
}
- }
-\cs_generate_variant:Nn \intarray_gzero:N { c }
-\cs_new:Npn \__kernel_intarray_item:Nn #1#2
- { \int_value:w \__intarray_entry:w #2 #1 }
-\cs_new:Npn \intarray_item:Nn #1#2
- {
- \exp_after:wN \__intarray_item:Nw
- \exp_after:wN #1
- \int_value:w \int_eval:n {#2} ;
- }
-\cs_generate_variant:Nn \intarray_item:Nn { c }
-\cs_new:Npn \__intarray_item:Nw #1#2 ;
- {
- \__intarray_bounds:NNnTF \msg_expandable_error:nnfff #1 {#2}
- { \__kernel_intarray_item:Nn #1 {#2} }
- { 0 }
- }
-\cs_new:Npn \intarray_rand_item:N #1
- { \intarray_item:Nn #1 { \int_rand:n { \intarray_count:N #1 } } }
-\cs_generate_variant:Nn \intarray_rand_item:N { c }
-\cs_new_protected:Npn \intarray_const_from_clist:Nn #1#2
- {
- \__intarray_new:N #1
- \int_zero:N \l__intarray_loop_int
- \clist_map_inline:nn {#2}
- { \exp_args:Nf \__intarray_const_from_clist:nN { \int_eval:n {##1} } #1 }
- \__intarray_count:w #1 \l__intarray_loop_int
- }
-\cs_generate_variant:Nn \intarray_const_from_clist:Nn { c }
-\cs_new_protected:Npn \__intarray_const_from_clist:nN #1#2
- {
- \int_incr:N \l__intarray_loop_int
- \__intarray_gset_overflow_test:nw {#1}
- \__kernel_intarray_gset:Nnn #2 \l__intarray_loop_int {#1}
- }
-\cs_new:Npn \intarray_to_clist:N #1 { \__intarray_to_clist:Nn #1 { , } }
-\cs_generate_variant:Nn \intarray_to_clist:N { c }
-\cs_new:Npn \__intarray_to_clist:Nn #1#2
- {
- \int_compare:nNnF { \intarray_count:N #1 } = \c_zero_int
+ \cs_new:Npn \intarray_to_clist:N #1 { \__intarray_to_clist:Nn #1 { , } }
+ \cs_generate_variant:Nn \intarray_to_clist:N { c }
+ \cs_new:Npn \__intarray_to_clist:Nn #1#2
+ {
+ \int_compare:nNnF { \intarray_count:N #1 } = \c_zero_int
+ {
+ \exp_last_unbraced:Nf \use_none:n
+ { \__intarray_to_clist:w 1 ; #1 {#2} \prg_break_point: }
+ }
+ }
+ \cs_new:Npn \__intarray_to_clist:w #1 ; #2#3
+ {
+ \if_int_compare:w #1 > \__intarray_count:w #2
+ \prg_break:n
+ \fi:
+ #3 \__kernel_intarray_item:Nn #2 {#1}
+ \exp_after:wN \__intarray_to_clist:w
+ \int_value:w \int_eval:w #1 + \c_one_int ; #2 {#3}
+ }
+ \cs_new:Npn \__kernel_intarray_range_to_clist:Nnn #1#2#3
{
\exp_last_unbraced:Nf \use_none:n
- { \__intarray_to_clist:w 1 ; #1 {#2} \prg_break_point: }
+ {
+ \exp_after:wN \__intarray_range_to_clist:ww
+ \int_value:w \int_eval:w #2 \exp_after:wN ;
+ \int_value:w \int_eval:w #3 ;
+ #1 \prg_break_point:
+ }
}
- }
-\cs_new:Npn \__intarray_to_clist:w #1 ; #2#3
- {
- \if_int_compare:w #1 > \__intarray_count:w #2
- \prg_break:n
- \fi:
- #3 \__kernel_intarray_item:Nn #2 {#1}
- \exp_after:wN \__intarray_to_clist:w
- \int_value:w \int_eval:w #1 + \c_one_int ; #2 {#3}
- }
-\cs_new:Npn \__kernel_intarray_range_to_clist:Nnn #1#2#3
- {
- \exp_last_unbraced:Nf \use_none:n
+ \cs_new:Npn \__intarray_range_to_clist:ww #1 ; #2 ; #3
{
+ \if_int_compare:w #1 > #2 \exp_stop_f:
+ \prg_break:n
+ \fi:
+ , \__kernel_intarray_item:Nn #3 {#1}
\exp_after:wN \__intarray_range_to_clist:ww
- \int_value:w \int_eval:w #2 \exp_after:wN ;
- \int_value:w \int_eval:w #3 ;
- #1 \prg_break_point:
+ \int_value:w \int_eval:w #1 + \c_one_int ; #2 ; #3
+ }
+ \cs_new_protected:Npn \__kernel_intarray_gset_range_from_clist:Nnn #1#2#3
+ {
+ \int_set:Nn \l__intarray_loop_int {#2}
+ \__intarray_gset_range:Nw #1 #3 , , \prg_break_point:
+ }
+ \cs_new_protected:Npn \__intarray_gset_range:Nw #1 #2 ,
+ {
+ \if_catcode:w \scan_stop: \tl_to_str:n {#2} \scan_stop:
+ \prg_break:n
+ \fi:
+ \__kernel_intarray_gset:Nnn #1 \l__intarray_loop_int {#2}
+ \int_incr:N \l__intarray_loop_int
+ \__intarray_gset_range:Nw #1
}
- }
-\cs_new:Npn \__intarray_range_to_clist:ww #1 ; #2 ; #3
- {
- \if_int_compare:w #1 > #2 \exp_stop_f:
- \prg_break:n
- \fi:
- , \__kernel_intarray_item:Nn #3 {#1}
- \exp_after:wN \__intarray_range_to_clist:ww
- \int_value:w \int_eval:w #1 + \c_one_int ; #2 ; #3
- }
-\cs_new_protected:Npn \__kernel_intarray_gset_range_from_clist:Nnn #1#2#3
- {
- \int_set:Nn \l__intarray_loop_int {#2}
- \__intarray_gset_range:Nw #1 #3 , , \prg_break_point:
- }
-\cs_new_protected:Npn \__intarray_gset_range:Nw #1 #2 ,
- {
- \if_catcode:w \scan_stop: \tl_to_str:n {#2} \scan_stop:
- \prg_break:n
- \fi:
- \__kernel_intarray_gset:Nnn #1 \l__intarray_loop_int {#2}
- \int_incr:N \l__intarray_loop_int
- \__intarray_gset_range:Nw #1
}
\cs_new_protected:Npn \intarray_show:N { \__intarray_show:NN \msg_show:nnxxxx }
\cs_generate_variant:Nn \intarray_show:N { c }