summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/l3kernel/l3seq.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/l3kernel/l3seq.sty')
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3seq.sty90
1 files changed, 33 insertions, 57 deletions
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3seq.sty b/Master/texmf-dist/tex/latex/l3kernel/l3seq.sty
index 2df60faf409..758407cb40f 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3seq.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3seq.sty
@@ -46,7 +46,7 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3bootstrap}
-\GetIdInfo$Id: l3seq.dtx 4581 2013-07-28 08:38:50Z joseph $
+\GetIdInfo$Id: l3seq.dtx 4623 2013-12-14 13:53:40Z bruno $
{L3 Sequences and stacks}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
@@ -58,7 +58,8 @@
}
\tl_new:N \l__seq_internal_a_tl
\tl_new:N \l__seq_internal_b_tl
-\tl_const:Nn \c_empty_seq { \s__seq \s_obj_end }
+\cs_new_eq:NN \__seq_tmp:w ?
+\tl_const:Nn \c_empty_seq { \s__seq }
\cs_new_protected:Npn \seq_new:N #1
{
\__chk_if_free_cs:N #1
@@ -110,7 +111,7 @@
}
\tl_set:Nx \l__seq_internal_a_tl { \l__seq_internal_a_tl }
}
- #1 #2 { \s__seq \l__seq_internal_a_tl \s_obj_end }
+ #1 #2 { \s__seq \l__seq_internal_a_tl }
}
\cs_new:Npn \__seq_set_split_auxi:w #1 \__seq_set_split_end:
{
@@ -123,11 +124,9 @@
\cs_generate_variant:Nn \seq_set_split:Nnn { NnV }
\cs_generate_variant:Nn \seq_gset_split:Nnn { NnV }
\cs_new_protected:Npn \seq_concat:NNN #1#2#3
- { \tl_set:Nf #1 { \exp_last_unbraced:NNo \__seq_concat:NN #2 #3 } }
+ { \tl_set:Nf #1 { \exp_after:wN \use_i:nn \exp_after:wN #2 #3 } }
\cs_new_protected:Npn \seq_gconcat:NNN #1#2#3
- { \tl_gset:Nf #1 { \exp_last_unbraced:NNo \__seq_concat:NN #2 #3 } }
-\cs_new:Npn \__seq_concat:NN #1#2 { \exp_after:wN \__seq_concat:w #1 }
-\cs_new:Npn \__seq_concat:w #1 \s_obj_end {#1}
+ { \tl_gset:Nf #1 { \exp_after:wN \use_i:nn \exp_after:wN #2 #3 } }
\cs_generate_variant:Nn \seq_concat:NNN { ccc }
\cs_generate_variant:Nn \seq_gconcat:NNN { ccc }
\prg_new_eq_conditional:NNn \seq_if_exist:N \cs_if_exist:N { TF , T , F , p }
@@ -154,22 +153,9 @@
\cs_generate_variant:Nn \seq_gput_left:Nn { NV , Nv , No , Nx }
\cs_generate_variant:Nn \seq_gput_left:Nn { c , cV , cv , co , cx }
\cs_new_protected:Npn \seq_put_right:Nn #1#2
- {
- \tl_set:Nx #1
- {
- \exp_after:wN \__seq_put_right_aux:w #1
- \exp_not:n { \__seq_item:n {#2} \s_obj_end }
- }
- }
+ { \tl_put_right:Nn #1 { \__seq_item:n {#2} } }
\cs_new_protected:Npn \seq_gput_right:Nn #1#2
- {
- \tl_gset:Nx #1
- {
- \exp_after:wN \__seq_put_right_aux:w #1
- \exp_not:n { \__seq_item:n {#2} \s_obj_end }
- }
- }
-\cs_new:Npn \__seq_put_right_aux:w #1 \s_obj_end { \exp_not:n {#1} }
+ { \tl_gput_right:Nn #1 { \__seq_item:n {#2} } }
\cs_generate_variant:Nn \seq_gput_right:Nn { NV , Nv , No , Nx }
\cs_generate_variant:Nn \seq_gput_right:Nn { c , cV , cv , co , cx }
\cs_generate_variant:Nn \seq_put_right:Nn { NV , Nv , No , Nx }
@@ -299,17 +285,13 @@
\cs_generate_variant:Nn \seq_pop_left:NN { c }
\cs_generate_variant:Nn \seq_gpop_left:NN { c }
\cs_new_protected:Npn \seq_get_right:NN #1#2
- { \exp_after:wN \__seq_get_right_setup:wN #1 #2 }
-\cs_new_protected:Npn \__seq_get_right_setup:wN \s__seq #1 \s_obj_end #2
{
- \__seq_get_right_loop:nn
- \q_no_value
+ \exp_after:wN \use_i_ii:nnn
+ \exp_after:wN \__seq_get_right_loop:nn
+ \exp_after:wN \q_no_value
#1
- {
- ??
- \tex_afterassignment:D \use_none:n
- \tl_set:Nn #2
- }
+ { ?? \tl_set:Nn #2 }
+ { } { }
}
\cs_new_protected:Npn \__seq_get_right_loop:nn #1#2
{
@@ -318,26 +300,25 @@
}
\cs_generate_variant:Nn \seq_get_right:NN { c }
\cs_new_protected_nopar:Npn \seq_pop_right:NN
- { \__seq_pop:NNNN \__seq_pop_right_aux:NNN \tl_set:Nx }
+ { \__seq_pop:NNNN \__seq_pop_right:NNN \tl_set:Nx }
\cs_new_protected_nopar:Npn \seq_gpop_right:NN
- { \__seq_pop:NNNN \__seq_pop_right_aux:NNN \tl_gset:Nx }
-\cs_new_protected:Npn \__seq_pop_right_aux:NNN #1#2#3
+ { \__seq_pop:NNNN \__seq_pop_right:NNN \tl_gset:Nx }
+\cs_new_protected:Npn \__seq_pop_right:NNN #1#2#3
{
- \cs_set_eq:NN \seq_tmp:w \__seq_item:n
+ \cs_set_eq:NN \__seq_tmp:w \__seq_item:n
\cs_set_eq:NN \__seq_item:n \scan_stop:
#1 #2
{ \if_false: } \fi: \s__seq
- \exp_after:wN \__seq_pop_right_setup:w
+ \exp_after:wN \use_i:nnn
+ \exp_after:wN \__seq_pop_right_loop:nn
#2
{
- \s_obj_end \if_false: { \fi: }
- \tex_afterassignment:D \use_none:n
+ \if_false: { \fi: }
\tl_set:Nx #3
}
- \cs_set_eq:NN \__seq_item:n \seq_tmp:w
+ { } \use_none:nn
+ \cs_set_eq:NN \__seq_item:n \__seq_tmp:w
}
-\cs_new:Npn \__seq_pop_right_setup:w \s__seq #1 \s_obj_end
- { \exp_after:wN \__seq_pop_right_loop:nn \use_none:n #1 }
\cs_new:Npn \__seq_pop_right_loop:nn #1#2
{
#2 { \exp_not:n {#1} }
@@ -360,9 +341,9 @@
\prg_new_protected_conditional:Npnn \seq_gpop_left:NN #1#2 { T , F , TF }
{ \__seq_pop_TF:NNNN \__seq_pop_left:NNN \tl_gset:Nn #1 #2 }
\prg_new_protected_conditional:Npnn \seq_pop_right:NN #1#2 { T , F , TF }
- { \__seq_pop_TF:NNNN \__seq_pop_right_aux:NNN \tl_set:Nx #1 #2 }
+ { \__seq_pop_TF:NNNN \__seq_pop_right:NNN \tl_set:Nx #1 #2 }
\prg_new_protected_conditional:Npnn \seq_gpop_right:NN #1#2 { T , F , TF }
- { \__seq_pop_TF:NNNN \__seq_pop_right_aux:NNN \tl_gset:Nx #1 #2 }
+ { \__seq_pop_TF:NNNN \__seq_pop_right:NNN \tl_gset:Nx #1 #2 }
\cs_generate_variant:Nn \seq_pop_left:NNT { c }
\cs_generate_variant:Nn \seq_pop_left:NNF { c }
\cs_generate_variant:Nn \seq_pop_left:NNTF { c }
@@ -380,10 +361,12 @@
\cs_new_nopar:Npn \seq_map_break:n
{ \__prg_map_break:Nn \seq_map_break: }
\cs_new:Npn \seq_map_function:NN #1#2
- { \exp_after:wN \__seq_map_function:wN #1 #2 }
-\cs_new:Npn \__seq_map_function:wN \s__seq #1 \s_obj_end #2
{
- \__seq_map_function:NNn #2 #1 { ? \seq_map_break: } { }
+ \exp_after:wN \use_i_ii:nnn
+ \exp_after:wN \__seq_map_function:NNn
+ \exp_after:wN #2
+ #1
+ { ? \seq_map_break: } { }
\__prg_break_point:Nn \seq_map_break: { }
}
\cs_new:Npn \__seq_map_function:NNn #1#2#3
@@ -451,12 +434,8 @@
\int_case:nnF { \seq_count:N #1 }
{
{ 0 } { }
- { 1 }
- {
- \exp_after:wN \__seq_use:wnwnn #1
- \__seq_item:n { } \s_obj_end { }
- }
- { 2 } { \exp_after:wN \__seq_use:wnwnn #1 {#2} }
+ { 1 } { \exp_after:wN \__seq_use:NNnNnn #1 ? { } { } }
+ { 2 } { \exp_after:wN \__seq_use:NNnNnn #1 {#2} }
}
{
\exp_after:wN \__seq_use_setup:w #1 \__seq_item:n
@@ -468,11 +447,8 @@
{ \__msg_kernel_expandable_error:nnn { kernel } { bad-variable } {#1} }
}
\cs_generate_variant:Nn \seq_use:Nnnn { c }
-\cs_new:Npn \__seq_use:wnwnn
- #1 \__seq_item:n #2#3 \__seq_item:n #4#5 \s_obj_end #6
- { \exp_not:n { #2 #6 #4 } }
-\cs_new:Npn \__seq_use_setup:w \s__seq #1 \s_obj_end
- { \__seq_use:nwwwwnwn { } #1 }
+\cs_new:Npn \__seq_use:NNnNnn #1#2#3#4#5#6 { \exp_not:n { #3 #6 #5 } }
+\cs_new:Npn \__seq_use_setup:w \s__seq { \__seq_use:nwwwwnwn { } }
\cs_new:Npn \__seq_use:nwwwwnwn
#1 \__seq_item:n #2 \__seq_item:n #3 \__seq_item:n #4#5
\q_mark #6#7 \q_stop #8