summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfmathparse.opt.code.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfmathparse.opt.code.tex')
-rw-r--r--Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfmathparse.opt.code.tex122
1 files changed, 122 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfmathparse.opt.code.tex b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfmathparse.opt.code.tex
new file mode 100644
index 00000000000..e74d47c814e
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfmathparse.opt.code.tex
@@ -0,0 +1,122 @@
+% A small optimization package which provides
+%
+% \beginpgfmathparsecheckfornumber
+% ...
+% \endpgfmathparsecheckfornumber
+%
+% in order to optimize \pgfmathparse. It works as follows: inside of
+% the environment (which doesn't use scopes), \pgfmathparse is
+% *replaced* by a different method which uses an extremely fast check
+% to decide whether the input is a number number. Is so, it returns
+% the number. Otherwise, it invokes the standard math parser.
+% It is about 400% faster than \pgfmathparse if the argument *is* a
+% number.
+%
+% The \endpgfmathparsecheckfornumber is optional (no groups are
+% introduced)
+%
+% Copyright 2010 by Christian Feuersänger.
+%
+% Replaces \pgfmathparse by the fast number checker.
+\def\beginpgfmathparsecheckfornumber{%
+ \let\pgfmathparse=\pgfmathparsehashedcheck
+}%
+\def\endpgfmathparsecheckfornumber{%
+ \let\pgfmathparse=\pgfmathparsehashedcheck@orig
+}%
+
+\def\pgfmp@EOI{\pgfmp@EOI}%
+\def\pgfmathparsehashedcheck@isnumber@gobble#1\pgfmp@EOI{}
+
+\newdimen\r@pgfmathparse@hashedcheck@
+\newcount\c@pgfmathparse@hashedcheck@
+\let\pgfmathparsehashedcheck@orig=\pgfmathparse
+
+\def\pgfmathparsehashedcheck#1{%
+ \edef\pgfmathparse@temp{#1}%
+ \expandafter\pgfmathparsehashedcheck@isnumber@loop\pgfmathparse@temp\pgfmp@EOI
+ \pgfmathparsehashedcheck@finalize{#1}%
+}%
+\def\pgfmathparsehashedcheck@finalize@isnonumber#1{%
+ \pgfmathparsehashedcheck@orig{#1}%
+ \let\pgfmathparsehashedcheck@finalize\pgfmathparsehashedcheck@finalize@isnumber
+}%
+\def\pgfmathparsehashedcheck@finalize@isnumber#1{%
+ \r@pgfmathparse@hashedcheck@=#1pt
+ \expandafter\pgfmathparsehashed@assign\the\r@pgfmathparse@hashedcheck@
+ %--------------------------------------------------
+ % %
+ % \let\KKK=\pgfmathresult
+ % \pgfmathparsehashedcheck@orig{#1}%
+ % \ifx\KKK\pgfmathresult
+ % \else
+ % \pgfplots@error{FAILED FOR #1: expected `\pgfmathresult'; got `\KKK' (temp = \pgf@temp)}%
+ % \fi
+ %--------------------------------------------------
+}%
+{\catcode`\p=12\catcode`\t=12\gdef\PGF@TEMP{pt}}
+\expandafter\def\expandafter\pgfmathparsehashed@assign\expandafter#\expandafter1\expandafter.\expandafter#\expandafter2\PGF@TEMP{%
+ \def\pgf@temp{#2}%
+ \ifx\pgf@temp0%
+ \def\pgfmathresult{#1}%
+ \else
+ \def\pgfmathresult{#1.#2}%
+ \fi
+}%
+\let\pgfmathparsehashedcheck@finalize\pgfmathparsehashedcheck@finalize@isnumber
+
+\expandafter\def\csname pgf@pp+\endcsname{1}
+\expandafter\def\csname pgf@pp-\endcsname{1}
+\expandafter\def\csname pgf@p0\endcsname{1}
+\expandafter\def\csname pgf@p1\endcsname{1}
+\expandafter\def\csname pgf@p2\endcsname{1}
+\expandafter\def\csname pgf@p3\endcsname{1}
+\expandafter\def\csname pgf@p4\endcsname{1}
+\expandafter\def\csname pgf@p5\endcsname{1}
+\expandafter\def\csname pgf@p6\endcsname{1}
+\expandafter\def\csname pgf@p7\endcsname{1}
+\expandafter\def\csname pgf@p8\endcsname{1}
+\expandafter\def\csname pgf@p9\endcsname{1}
+\expandafter\def\csname pgf@p.\endcsname{1}
+
+\pgfutil@ifundefined{ifcsname}{%
+ \def\pgfmathparsehashedcheck@isnumber@loop#1{%
+ \expandafter\ifx\csname pgf@pp\string#1\endcsname\relax
+ \expandafter\pgfmathparsehashedcheck@isnumber@loop
+ \else
+ \expandafter\pgfmathparsehashedcheck@isnumber@loop@\expandafter#1%
+ \fi
+ }%
+ \def\pgfmathparsehashedcheck@isnumber@loop@#1{%
+ \expandafter\ifx\csname pgf@p\string#1\endcsname\relax
+ \expandafter\pgfmathparsehashedcheck@isnumber@loop@
+ \else
+ \expandafter\pgfmathparsehashedcheck@isnumber@endfalse\expandafter#1%
+ \fi
+ }%
+}{%
+ \def\pgfmathparsehashedcheck@isnumber@loop#1{%
+ \ifcsname pgf@pp\string#1\endcsname
+ \expandafter\pgfmathparsehashedcheck@isnumber@loop
+ \else
+ \expandafter\pgfmathparsehashedcheck@isnumber@loop@\expandafter#1%
+ \fi
+ }%
+ \def\pgfmathparsehashedcheck@isnumber@loop@#1{%
+ \ifcsname pgf@p\string#1\endcsname
+ \expandafter\pgfmathparsehashedcheck@isnumber@loop@
+ \else
+ \expandafter\pgfmathparsehashedcheck@isnumber@endfalse\expandafter#1%
+ \fi
+ }%
+}%
+\def\pgfmathparsehashedcheck@isnumber@endfalse#1{%
+ \ifx#1\pgfmp@EOI
+ \else
+ \let\pgfmathparsehashedcheck@finalize=\pgfmathparsehashedcheck@finalize@isnonumber
+ \expandafter\pgfmathparsehashedcheck@isnumber@gobble
+ \fi
+}%
+
+
+\endinput