diff options
Diffstat (limited to 'tex/context/base/mult-aux.mkiv')
-rw-r--r-- | tex/context/base/mult-aux.mkiv | 44 |
1 files changed, 31 insertions, 13 deletions
diff --git a/tex/context/base/mult-aux.mkiv b/tex/context/base/mult-aux.mkiv index b69d7f370..693edc90e 100644 --- a/tex/context/base/mult-aux.mkiv +++ b/tex/context/base/mult-aux.mkiv @@ -29,6 +29,8 @@ \unprotect +\edef\??empty{\Uchar25} \letvalue{\Uchar25}\empty % cancel: dec:24 hex:18 + %D \starttyping %D \unprotect %D \def\????aa{@@@@aa} @@ -215,13 +217,15 @@ %\def#3##1{\csname#4{#1#2}{##1}\endcsname}% \def#3##1{\csname\ifcsname#1#2:##1\endcsname#1#2:##1\else\expandafter#5\csname#1#2:\s!parent\endcsname{##1}\fi\endcsname}% \def#4##1##2{\ifcsname##1:##2\endcsname##1:##2\else\expandafter#5\csname##1:\s!parent\endcsname{##2}\fi}% - \def#5##1##2{\ifx##1\relax\s!empty\else#4{##1}{##2}\fi}% is {} needed around ##1 ? + %\def#5##1##2{\ifx##1\relax\s!empty\else#4{##1}{##2}\fi}% is {} needed around ##1 ? + \def#5##1##2{\ifx##1\relax\??empty\else#4{##1}{##2}\fi}% is {} needed around ##1 ? \def#6##1##2{\csname\ifcsname#1##1:##2\endcsname#1##1:##2\else\expandafter#5\csname#1##1:\s!parent\endcsname{##2}\fi\endcsname}% \def#7##1{\detokenize\expandafter\expandafter\expandafter{\csname#1#2:##1\endcsname}}% always root, no backtrack % \def#7##1{\mult_interfaces_detokenize{\csname#4{#1#2}{##1}\endcsname}}% compact version % \def#7##1{\mult_interfaces_detokenize{\csname\ifcsname#1#2:##1\endcsname#1#2:##1\else\expandafter#5\csname#1#2:\s!parent\endcsname{##1}\fi\endcsname}}% - \def#8##1{\csname\ifcsname#1#2:##1\endcsname#1#2:##1\else\s!empty\fi\endcsname}% - \def#9##1{\csname#1#2:##1\endcsname}} +%% \def#8##1{\csname\ifcsname#1#2:##1\endcsname#1#2:##1\else\s!empty\fi\endcsname}% + \def#8##1{\begincsname#1#2:##1\endcsname}% + \def#9##1{\csname#1#2:##1\endcsname}} % can go when we use \begincsname % pre-expansion can be a bit faster but handly any effect on a normal run so let's go for % saving some memory @@ -254,7 +258,9 @@ \unexpanded\def\mult_interfaces_install_root_parameter_handler#1#2#3% {\def#2##1{\detokenize\expandafter\expandafter\expandafter{\csname#1:##1\endcsname}}% always root - \def#3##1{\csname\ifcsname#1:##1\endcsname#1:##1\else\s!empty\fi\endcsname}} + %\def#3##1{\csname\ifcsname#1:##1\endcsname#1:##1\else\s!empty\fi\endcsname}} + %\def#3##1{\csname\ifcsname#1:##1\endcsname#1:##1\else\??empty\fi\endcsname}} + \def#3##1{\begincsname#1:##1\endcsname}} \unexpanded\def\installrootparameterhandler#1#2% {\normalexpanded @@ -355,10 +361,13 @@ \expandafter\edef\csname#1#4:\s!parent\endcsname{#2}% \fi \fi} -\def\mult_interfaces_chain#1#2{\ifcsname#1#2:\s!chain\endcsname\csname#1#2:\s!chain\endcsname\space\fi} -\def\getparentchain #1#2{\ifcsname#1#2:\s!chain\endcsname\csname#1#2:\s!chain\endcsname\fi} -\def\getcurrentparentchain#1#2{\csname#1#2:\s!chain\endcsname} % for the moment test: -\def\getcurrentparentchain#1#2{\ifcsname#1#2:\s!chain\endcsname\csname#1#2:\s!chain\endcsname\fi} +%def\mult_interfaces_chain#1#2{\ifcsname#1#2:\s!chain\endcsname\csname#1#2:\s!chain\endcsname\space\fi} +%def\getparentchain #1#2{\ifcsname#1#2:\s!chain\endcsname\csname#1#2:\s!chain\endcsname\fi} +%def\getcurrentparentchain#1#2{\ifcsname#1#2:\s!chain\endcsname\csname#1#2:\s!chain\endcsname\fi} + +\def\mult_interfaces_chain#1#2{\ifcsname#1#2:\s!chain\endcsname\lastnamedcs\space\fi} +\def\getparentchain #1#2{\begincsname#1#2:\s!chain\endcsname} +\def\getcurrentparentchain#1#2{\begincsname#1#2:\s!chain\endcsname} \unexpanded\def\mult_interfaces_install_define_handler#1#2#3#4#5#6#7#8#9% why is \expanded still needed in clones {\ifx#4\relax\let#4\empty\fi % see \defineregister @@ -610,7 +619,8 @@ %D We don't need colons for such simple cases. \unexpanded\def\mult_interfaces_install_direct_parameter_handler#1#2#3#4#5% - {\def#3##1{\csname\ifcsname#1##1\endcsname#1##1\else\s!empty\fi\endcsname}% +%%{\def#3##1{\csname\ifcsname#1##1\endcsname#1##1\else\s!empty\fi\endcsname}% + {\def#3##1{\begincsname#1##1\endcsname}% \def#4##1{\detokenize\expandafter\expandafter\expandafter{\csname#1##1\endcsname}}% % \def#4##1{\mult_interfaces_detokenize{\csname\ifcsname#1#2:##1\endcsname#1#2:##1\else\expandafter#5\csname#1#2:\s!parent\endcsname{##1}\fi\endcsname}}% \def#5##1{\csname#1##1\endcsname}} @@ -802,7 +812,8 @@ \letvalue\??dummy\empty - \def\dummyparameter #1{\csname\??dummy\ifcsname\??dummy#1\endcsname#1\fi\endcsname} +%% \def\dummyparameter #1{\csname\??dummy\ifcsname\??dummy#1\endcsname#1\fi\endcsname} + \def\dummyparameter #1{\begincsname\??dummy#1\endcsname} \def\directdummyparameter#1{\csname\??dummy#1\endcsname} \unexpanded\def\setdummyparameter #1{\expandafter\def\csname\??dummy#1\endcsname} \unexpanded\def\letdummyparameter #1{\expandafter\let\csname\??dummy#1\endcsname} @@ -883,10 +894,17 @@ \unexpanded\def\showparentchain#1#2% {\writestatus\m!system{chain: [ \mult_interfaces_show_parent_chain{#1#2}]}} +% \def\mult_interfaces_show_parent_chain#1% +% {#1 => % +% \ifcsname#1:\s!parent\endcsname +% \expandafter\mult_interfaces_show_parent_chain\csname#1:\s!parent\endcsname +% \fi} + \def\mult_interfaces_show_parent_chain#1% {#1 => % \ifcsname#1:\s!parent\endcsname - \expandafter\mult_interfaces_show_parent_chain\csname#1:\s!parent\endcsname + %\expandafter\mult_interfaces_show_parent_chain\csname#1:\s!parent\endcsname + \expandafter\mult_interfaces_show_parent_chain\lastnamedcs \fi} %D Another helper (needs to be applied): @@ -991,7 +1009,7 @@ \unexpanded\def#5{\mult_interfaces_get_parameters{#1#3:}}% no every ! don't change it \newtoks#4% \newtoks#7% - \edef\m_mult_interface_setup{\strippedcsname#2_}% + \edef\m_mult_interface_setup{\csstring#2_}% \unexpanded\edef#2{\syst_helpers_double_empty \csname\m_mult_interface_setup\s!simple\endcsname \csname\m_mult_interface_setup\s!single\endcsname @@ -1081,7 +1099,7 @@ {\ifx#3\relax\let#3\empty\fi \unexpanded\def#5{\mult_interfaces_get_parameters{#1#3:}}% \newtoks#4% - \edef\m_mult_interface_setup{\strippedcsname#2_}% + \edef\m_mult_interface_setup{\csstring#2_}% \unexpanded\edef#2{\syst_helpers_triple_empty \csname\m_mult_interface_setup\s!simple\endcsname \csname\m_mult_interface_setup\s!single\endcsname |