%D \module
%D   [       file=mult-fst,
%D        version=2006.08.16,
%D          title=\CONTEXT\ Multilingual Macros,
%D       subtitle=Speed Up,
%D         author=Hans Hagen,
%D           date=\currentdate,
%D      copyright={PRAGMA / Hans Hagen \& Ton Otten}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.

% And so, after a few years of keeping this potentially dangerous
% speedup in cont-exp, we now move it to the kernel: the next
% patch is 30\% faster on main interface (seconds) (9->7 sec on
% 1 million calls). Another speed up is still under testing.

\unprotect

\startinterface english

    \def\dosetvalue   #1#2{\@EA\def \csname#1#2\endcsname}
    \def\dosetevalue  #1#2{\@EA\edef\csname#1#2\endcsname}
    \def\dosetgvalue  #1#2{\@EA\gdef\csname#1#2\endcsname}
    \def\dosetxvalue  #1#2{\@EA\gdef\csname#1#2\endcsname}
    \def\docopyvalue#1#2#3{\@EA\def \csname#1#3\@EA\endcsname\@EA{\csname#2#3\endcsname}}

    \ifx\ctxlua\undefined

        \def\setinterfaceconstant#1#2%
          {\setvalue{\c!prefix!#1}{#1}}

        \def\setinterfacevariable#1#2%
          {\setvalue{\v!prefix!#1}{#2}}

    \else

        \def\setinterfaceconstant#1#2%
          {\ctxlua{interfaces.setconstant("#1","#2")}%
           \setvalue{\c!prefix!#1}{#1}}

        \def\setinterfacevariable#1#2%
          {\ctxlua{interfaces.setvariable("#1","#2")}%
           \setvalue{\v!prefix!#1}{#2}}

    \fi

    \def\interfaced#1{#1}

\stopinterface

\protect \endinput
