diff options
author | Hans Hagen <pragma@wxs.nl> | 2012-01-05 19:27:52 +0100 |
---|---|---|
committer | Hans Hagen <pragma@wxs.nl> | 2012-01-05 19:27:52 +0100 |
commit | f55d2b463bb22fc74c5da3a3e0a699901540f727 (patch) | |
tree | 00e94005a7c7957d2514f3aeb532af43183df58b /tex/context/base/mult-aux.mkiv | |
parent | f3256685ca27aab5a2a4b448686af4265e1f326b (diff) | |
download | context-f55d2b463bb22fc74c5da3a3e0a699901540f727.tar.gz |
beta 2011.12.23 09:52
Diffstat (limited to 'tex/context/base/mult-aux.mkiv')
-rw-r--r-- | tex/context/base/mult-aux.mkiv | 115 |
1 files changed, 59 insertions, 56 deletions
diff --git a/tex/context/base/mult-aux.mkiv b/tex/context/base/mult-aux.mkiv index 4cef621fd..902f88f45 100644 --- a/tex/context/base/mult-aux.mkiv +++ b/tex/context/base/mult-aux.mkiv @@ -75,45 +75,45 @@ % and normally don't do testing of them making sense. % % \testfeatureonce{100000}{\getparameters[bla][a=111,b=222,c=333]}% 1.669s -% \testfeatureonce{100000}{\get_parameters{bla} [a=111,b=222,c=333]}% 1.529s -% \testfeatureonce{100000}{\def\current_parameter_namespace{bla}\get_parameters_indeed[a=111,b=222,c=333]}% 1.466s +% \testfeatureonce{100000}{\interfaces_get_parameters{bla} [a=111,b=222,c=333]}% 1.529s +% \testfeatureonce{100000}{\def\current_parameter_namespace{bla}\interfaces_get_parameters_indeed[a=111,b=222,c=333]}% 1.466s % % \get_parameter {...} [...] % \def\current_parameter_namespace{...} \get_parameter_indeed[...] -\def\get_parameters#1[#2% +\def\interfaces_get_parameters#1[#2% {\if\noexpand#2]% \expandafter\gobbleoneargument \else \def\current_parameter_namespace{#1}% - \expandafter\get_parameters_indeed + \expandafter\interfaces_get_parameters_indeed \fi#2} -% \def\get_parameters#1% we can assume that the test already happened +% \def\interfaces_get_parameters#1% we can assume that the test already happened % {\def\current_parameter_namespace{#1}% -% \get_parameters_indeed} +% \interfaces_get_parameters_indeed} -\def\get_parameters_indeed#1]% namespace already set - {\get_parameters_item#1,],\@relax@} +\def\interfaces_get_parameters_indeed#1]% namespace already set + {\interfaces_get_parameters_item#1,],\@relax@} -\def\get_parameters_item#1,#2% #2 takes space before , +\def\interfaces_get_parameters_item#1,#2% #2 takes space before , {\if,#1,% dirty trick for testing #1=empty - \expandafter\get_parameters_item + \expandafter\interfaces_get_parameters_item \else\if]#1% \doubleexpandafter\gobbleoneargument \else - \get_parameters_assign#1==\empty\@relax@ - \doubleexpandafter\get_parameters_item + \interfaces_get_parameters_assign#1==\empty\@relax@ + \doubleexpandafter\interfaces_get_parameters_item \fi\fi#2} -\def\get_parameters_error#1#2#3% +\def\interfaces_get_parameters_error#1#2#3% {\showassignerror{#2}{\the\inputlineno\space(#1)}} -\def\get_parameters_assign#1=#2=#3#4\@relax@ +\def\interfaces_get_parameters_assign#1=#2=#3#4\@relax@ {\ifx\empty#1\empty - \expandafter\get_parameters_error + \expandafter\interfaces_get_parameters_error \else\ifx#3\empty - \doubleexpandafter\get_parameters_error + \doubleexpandafter\interfaces_get_parameters_error \else \doubleexpandafter\dosetvalue \fi\fi @@ -121,7 +121,7 @@ % End of experimental code. -\unexpanded\def\doinstallparameterhandler#1#2#3#4#5#6#7#8#9% inlining \csname*\endcsname is more efficient (#3 and #6 only) +\unexpanded\def\interfaces_install_parameter_handler#1#2#3#4#5#6#7#8#9% inlining \csname*\endcsname is more efficient (#3 and #6 only) {\ifx#2\relax\let#2\empty\fi % it is hardly faster but produces less expansion tracing %\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}% @@ -135,7 +135,7 @@ \unexpanded\def\installparameterhandler#1#2% {\normalexpanded - {\doinstallparameterhandler + {\interfaces_install_parameter_handler {\noexpand#1}% \??aa \expandafter\noexpand\csname current#2\endcsname \expandafter\noexpand\csname #2parameter\endcsname @@ -146,18 +146,18 @@ \expandafter\noexpand\csname strict#2parameter\endcsname % checked \expandafter\noexpand\csname direct#2parameter\endcsname}} % unchecked -\unexpanded\def\doinstallrootparameterhandler#1#2#3% +\unexpanded\def\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}} \unexpanded\def\installrootparameterhandler#1#2% {\normalexpanded - {\doinstallrootparameterhandler + {\interfaces_install_root_parameter_handler {\noexpand#1}% \??aa \expandafter\noexpand\csname detokenizedroot#2parameter\endcsname \expandafter\noexpand\csname root#2parameter\endcsname}} -\unexpanded\def\doinstallparameterhashhandler#1#2#3#4#5#6#7#8#9% +\unexpanded\def\interfaces_install_parameter_hash_handler#1#2#3#4#5#6#7#8#9% {\ifx#2\relax\let#2\empty\fi \def#3##1{#4{#1#2}{##1}:}% \def#4##1##2{\ifcsname##1:##2\endcsname##1\else\expandafter#5\csname##1:\s!parent\endcsname{##2}\fi}% @@ -169,7 +169,7 @@ \unexpanded\def\installparameterhashhandler#1#2% {\normalexpanded - {\doinstallparameterhashhandler + {\interfaces_install_parameter_hash_handler {\noexpand#1}% \??aa \expandafter\noexpand\csname current#2\endcsname \expandafter\noexpand\csname #2parameterhash\endcsname @@ -180,7 +180,10 @@ \expandafter\noexpand\csname check#2parent\endcsname \expandafter\noexpand\csname chaintocurrent#2\endcsname}} -\unexpanded\def\doinstallparametersethandler#1#2#3#4#5% we can speed this up for english +% In \MKIV\ we can probably use the english variant for all other +% languages too. + +\unexpanded\def\interfaces_install_parameter_set_handler#1#2#3#4#5% we can speed this up for english {\ifx#2\relax\let#2\empty\fi \unexpanded\def#3{\dosetvalue{#1#2:}}% ##1 {##2} (braces are mandate) \unexpanded\def#4{\doletvalue{#1#2:}}% ##1 ##2 @@ -188,7 +191,7 @@ \startinterface english - \unexpanded\def\doinstallparametersethandler#1#2#3#4#5% + \unexpanded\def\interfaces_install_parameter_set_handler#1#2#3#4#5% {\ifx#2\relax\let#2\empty\fi \unexpanded\def#3##1{\expandafter\def\csname#1#2:##1\endcsname}% ##1 {##2} (braces are mandate) \unexpanded\def#4##1{\expandafter\let\csname#1#2:##1\endcsname}% ##1 ##2 @@ -198,7 +201,7 @@ \unexpanded\def\installparametersethandler#1#2% {\normalexpanded - {\doinstallparametersethandler + {\interfaces_install_parameter_set_handler {\noexpand#1}% \??aa \expandafter\noexpand\csname current#2\endcsname \expandafter\noexpand\csname set#2parameter\endcsname @@ -211,7 +214,7 @@ \let\currentstyleparameter\empty \let\currentcolorparameter\empty -\unexpanded\def\doinstallstyleandcolorhandler#1#2#3#4% +\unexpanded\def\interfaces_install_style_and_color_handler#1#2#3#4% {\unexpanded\def#2##1##2% style color {\edef\currentstyleparameter{#1{##1}}% this name is public \edef\currentcolorparameter{#1{##2}}% this name is public @@ -226,7 +229,7 @@ \unexpanded\def\installstyleandcolorhandler#1#2% {\normalexpanded - {\doinstallstyleandcolorhandler + {\interfaces_install_style_and_color_handler \expandafter\noexpand\csname #2parameter\endcsname \expandafter\noexpand\csname use#2styleandcolor\endcsname % maybe an alias use#2styleandcolorparameters \expandafter\noexpand\csname use#2styleparameter\endcsname @@ -234,7 +237,7 @@ \let\definehandlerparent\empty -\unexpanded\def\doinstalldefinehandler#1#2#3#4#5#6#7#8% +\unexpanded\def\interfaces_install_define_handler#1#2#3#4#5#6#7#8% {\ifx#4\relax\let#4\empty\fi \unexpanded\def#2{\dotripleempty#5}% \newtoks#6% @@ -246,26 +249,26 @@ \ifthirdargument \edef#8{##2}% % \getparameters[#1#4:][\s!parent=#1##2,##3]% - \get_parameters{#1#4:}[\s!parent=#1##2,##3]% + \interfaces_get_parameters{#1#4:}[\s!parent=#1##2,##3]% \else\ifsecondargument \doifassignmentelse{##2} {\let#8\empty % \getparameters[#1#4:][\s!parent=#3,##2]} - \get_parameters{#1#4:}[\s!parent=#3,##2]} + \interfaces_get_parameters{#1#4:}[\s!parent=#3,##2]} {\edef#8{##2}% % \getparameters[#1#4:][\s!parent=#1##2]}% - \get_parameters{#1#4:}[\s!parent=#1##2]}% + \interfaces_get_parameters{#1#4:}[\s!parent=#1##2]}% \else \let#8\empty % \getparameters[#1#4:][\s!parent=#3]% - \get_parameters{#1#4:}[\s!parent=#3]% + \interfaces_get_parameters{#1#4:}[\s!parent=#3]% \fi\fi \the#7% \let#4\saveddefinewhatever}} \unexpanded\def\installdefinehandler#1#2#3% {\normalexpanded - {\doinstalldefinehandler + {\interfaces_install_define_handler {\noexpand#1}% \??aa \expandafter\noexpand\csname define#2\endcsname {\noexpand#3}% root @@ -275,11 +278,11 @@ \expandafter\noexpand\csname everydefine#2\endcsname \expandafter\noexpand\csname current#2parent\endcsname}} -\unexpanded\def\doinstallsetuphandler#1#2#3#4#5#6% +\unexpanded\def\interfaces_install_setup_handler#1#2#3#4#5#6% {\ifx#3\relax\let#3\empty\fi \unexpanded\def#2{\dodoubleempty#4}% % \unexpanded\def#6{\getparameters[#1#3:]}% no every ! don't change it - \unexpanded\def#6{\get_parameters{#1#3:}}% no every ! don't change it + \unexpanded\def#6{\interfaces_get_parameters{#1#3:}}% no every ! don't change it \newtoks#5% \def#4[##1][##2]% maybe helper {\let\savedsetupwhatever#3% @@ -287,20 +290,20 @@ \def\docommand####1% we will have a simple one as well {\edef#3{####1}% % \getparameters[#1#3:][##2]% - \get_parameters{#1#3:}[##2]% + \interfaces_get_parameters{#1#3:}[##2]% \the#5}% \processcommalist[##1]\docommand \else \let#3\empty % \getparameters[#1:][##1]% - \get_parameters{#1:}[##1]% + \interfaces_get_parameters{#1:}[##1]% \the#5% \fi \let#3\savedsetupwhatever}} \unexpanded\def\installsetuphandler#1#2% {\normalexpanded - {\doinstallsetuphandler + {\interfaces_install_setup_handler {\noexpand#1}% \??aa \expandafter\noexpand\csname setup#2\endcsname \expandafter\noexpand\csname current#2\endcsname @@ -308,18 +311,18 @@ \expandafter\noexpand\csname everysetup#2\endcsname \expandafter\noexpand\csname setupcurrent#2\endcsname}} -\unexpanded\def\doinstallswitchsetuphandler#1#2#3#4#5#6% +\unexpanded\def\interfaces_install_switch_setup_handler#1#2#3#4#5#6% {\ifx#3\relax\let#3\empty\fi \unexpanded\def#2{\dodoubleempty#4}% % \unexpanded\def#6{\getparameters[#1#3:]}% - \unexpanded\def#6{\get_parameters{#1#3:}}% + \unexpanded\def#6{\interfaces_get_parameters{#1#3:}}% \newtoks#5% \def#4[##1][##2]% maybe helper {\ifsecondargument % no commalist here \let\savedsetupwhatever#3% \edef#3{##1}% % \getparameters[#1#3:][##2]% - \get_parameters{#1#3:}[##2]% + \interfaces_get_parameters{#1#3:}[##2]% \the#5% \let#3\savedsetupwhatever \else\iffirstargument @@ -327,7 +330,7 @@ {\let\savedsetupwhatever#3% \let#3\empty % \getparameters[#1:][##1]% - \get_parameters{#1:}[##1]% + \interfaces_get_parameters{#1:}[##1]% \the#5% \let#3\savedsetupwhatever} {\edef#3{##1}% this will catch reset @@ -339,7 +342,7 @@ \unexpanded\def\installswitchsetuphandler#1#2% {\normalexpanded - {\doinstallswitchsetuphandler + {\interfaces_install_switch_setup_handler {\noexpand#1}% \??aa \expandafter\noexpand\csname setup#2\endcsname \expandafter\noexpand\csname current#2\endcsname @@ -347,11 +350,11 @@ \expandafter\noexpand\csname everysetup#2\endcsname \expandafter\noexpand\csname setupcurrent#2\endcsname}} -\unexpanded\def\doinstallautosetuphandler#1#2#3#4#5#6#7% +\unexpanded\def\interfaces_install_auto_setup_handler#1#2#3#4#5#6#7% {\ifx#3\relax\let#3\empty\fi \unexpanded\def#2{\dotripleempty#4}% % \unexpanded\def#6{\getparameters[#1#3:]}% - \unexpanded\def#6{\get_parameters{#1#3:}}% + \unexpanded\def#6{\interfaces_get_parameters{#1#3:}}% \newtoks#5% \def#4[##1][##2][##3]% {\let\savedsetupwhatever#3% @@ -359,7 +362,7 @@ \def\docommand####1% {\edef#3{####1}% % \getparameters[#1#3:][\s!parent=#1##2,##3]% - \get_parameters{#1#3:}[\s!parent=#1##2,##3]% always sets parent + \interfaces_get_parameters{#1#3:}[\s!parent=#1##2,##3]% always sets parent \the#5}% \processcommalist[##1]\docommand \else\ifsecondargument @@ -367,20 +370,20 @@ {\edef#3{####1}% #7% checks parent and sets if needed % \getparameters[#1#3:][##2]% - \get_parameters{#1#3:}[##2]% + \interfaces_get_parameters{#1#3:}[##2]% \the#5}% \processcommalist[##1]\docommand \else \let#3\empty % \getparameters[#1:][##1]% - \get_parameters{#1:}[##1]% + \interfaces_get_parameters{#1:}[##1]% \the#5% \fi\fi \let#3\savedsetupwhatever}} \unexpanded\def\installautosetuphandler#1#2% {\normalexpanded - {\doinstallautosetuphandler + {\interfaces_install_auto_setup_handler {\noexpand#1}% \??aa \expandafter\noexpand\csname setup#2\endcsname \expandafter\noexpand\csname current#2\endcsname @@ -462,9 +465,9 @@ % \stoptext \unexpanded\def\definenamespace - {\dodoubleargument\dodefinenamespace} + {\dodoubleargument\interfaces_define_name_space} -\def\dodefinenamespace[#1][#2]% namespace settings +\def\interfaces_define_name_space[#1][#2]% namespace settings {\ctxlua{interfaces.namespaces.define(\!!bs#1\!!es,\!!bs#2\!!es)}} \def\listnamespaces @@ -476,15 +479,15 @@ %D \showparentchain{@@am}{left} %D \stoptyping -\def\doshowparentchain#1% +\def\showparentchain#1#2% + {\writestatus\m!system{chain: [ \interfaces_show_parent_chain{#1#2}]}} + +\def\interfaces_show_parent_chain#1% {#1 => % \ifcsname#1:\s!parent\endcsname - \expandafter\doshowparentchain\csname#1:\s!parent\endcsname + \expandafter\interfaces_show_parent_chain\csname#1:\s!parent\endcsname \fi} -\def\showparentchain#1#2% - {\writestatus\m!system{chain: [ \doshowparentchain{#1#2}]}} - %D Conventions: %D %D \starttyping |