[cig-commits] commit: Remove muParser and use muparserx instead

Mercurial hg at geodynamics.org
Wed Nov 9 00:48:03 PST 2011


changeset:   393:5f10b39a3810
user:        Walter Landry <wlandry at caltech.edu>
date:        Tue Nov 08 15:09:47 2011 -0800
files:       SConstruct muParser/Changes.txt muParser/Credits.txt muParser/Install.txt muParser/License.txt muParser/Makefile.in muParser/SConscript muParser/configure muParser/docs/Doxyfile muParser/docs/html/images/Crystal_Clear_app_utilities.png muParser/docs/html/images/api.png muParser/docs/html/images/api_dark.png muParser/docs/html/images/bench2.jpg muParser/docs/html/images/blocks.png muParser/docs/html/images/build.png muParser/docs/html/images/bytecode.png muParser/docs/html/images/caption.png muParser/docs/html/images/diff.png muParser/docs/html/images/download.gif muParser/docs/html/images/download.png muParser/docs/html/images/download_dark.png muParser/docs/html/images/download_muparser.png muParser/docs/html/images/download_muparser_.png muParser/docs/html/images/grad1.jpg muParser/docs/html/images/grad2.jpg muParser/docs/html/images/grad2.xcf muParser/docs/html/images/grad3.jpg muParser/docs/html/images/help.gif muParser/docs/html/images/help.png muParser/docs/html/images/home.png muParser/docs/html/images/home_dark.png muParser/docs/html/images/info.png muParser/docs/html/images/list.png muParser/docs/html/images/logo.xcf muParser/docs/html/images/mathparser.jpg muParser/docs/html/images/mathparser_logo.gif muParser/docs/html/images/mathparser_small.jpg muParser/docs/html/images/muParser.png muParser/docs/html/images/muParserNET.png muParser/docs/html/images/muParserNET.xcf muParser/docs/html/images/muParserNET_.png muParser/docs/html/images/muParserX.png muParser/docs/html/images/muParserX.xcf muParser/docs/html/images/muParserX_.png muParser/docs/html/images/osi.jpg muParser/docs/html/images/question.png muParser/docs/html/images/related.png muParser/docs/html/images/run.png muParser/docs/html/images/sflogo.png muParser/docs/html/images/thumb_geodes.jpg muParser/docs/html/images/thumb_kst.jpg muParser/docs/html/images/thumb_matrix.jpg muParser/docs/html/images/thumb_meshlab.jpg muParser/docs/html/images/thumb_pasimodo.jpg muParser/docs/html/images/thumb_qtiplot.jpg muParser/docs/html/images/thumb_tm2.jpg muParser/docs/html/images/thumb_trini.jpg muParser/docs/html/images/warning.gif muParser/docs/html/images/xxx .png muParser/docs/html/images/xxx.xcf muParser/docs/html/index.html muParser/docs/html/misc/Main.txt muParser/docs/html/misc/calc.cpp muParser/docs/html/misc/example.txt muParser/docs/html/misc/footer.html muParser/docs/html/misc/header.html muParser/docs/html/misc/list_expr_var.cpp muParser/docs/html/misc/listvar.cpp muParser/docs/html/mup_features.html muParser/docs/html/mup_interface.html muParser/docs/html/mup_intro.html muParser/docs/html/mup_licence.html muParser/docs/html/mup_links.html muParser/docs/html/mup_locale.html muParser/docs/html/mup_usage.html muParser/docs/html/mup_version.html muParser/docs/html/script/functions.js muParser/docs/html/sources/build_page.sh muParser/docs/html/sources/mup_features.html muParser/docs/html/sources/mup_features_meta.html muParser/docs/html/sources/mup_interface.html muParser/docs/html/sources/mup_interface_meta.html muParser/docs/html/sources/mup_intro.html muParser/docs/html/sources/mup_intro_meta.html muParser/docs/html/sources/mup_licence.html muParser/docs/html/sources/mup_licence_meta.html muParser/docs/html/sources/mup_links.html muParser/docs/html/sources/mup_links_meta.html muParser/docs/html/sources/mup_locale.html muParser/docs/html/sources/mup_locale_meta.html muParser/docs/html/sources/mup_usage.html muParser/docs/html/sources/mup_usage_meta.html muParser/docs/html/sources/mup_version.html muParser/docs/html/sources/mup_version_meta.html muParser/docs/html/sources/navigation.html muParser/docs/html/style/formate.css muParser/docs/muParser.tdl muParser/include/muParser.h muParser/include/muParserBase.h muParser/include/muParserBytecode.h muParser/include/muParserCallback.h muParser/include/muParserComplex.h muParser/include/muParserDLL.h muParser/include/muParserDef.h muParser/include/muParserError.h muParser/include/muParserFixes.h muParser/include/muParserInt.h muParser/include/muParserStack.h muParser/include/muParserTest.h muParser/include/muParserToken.h muParser/include/muParserTokenReader.h muParser/lib/Readme.txt muParser/samples/example1/Example1.cpp muParser/samples/example2/Readme.txt muParser/samples/example2/example2.c muParser/src/muParser.cpp muParser/src/muParserBase.cpp muParser/src/muParserBytecode.cpp muParser/src/muParserCallback.cpp muParser/src/muParserComplex.cpp muParser/src/muParserDLL.cpp muParser/src/muParserError.cpp muParser/src/muParserInt.cpp muParser/src/muParserTest.cpp muParser/src/muParserTokenReader.cpp
description:
Remove muParser and use muparserx instead


diff -r ee79b2711e13 -r 5f10b39a3810 SConstruct
--- a/SConstruct	Tue Nov 08 15:08:51 2011 -0800
+++ b/SConstruct	Tue Nov 08 15:09:47 2011 -0800
@@ -90,11 +90,11 @@ env.Prepend(LIBS=['json_parser'])
 env.Prepend(LIBS=['json_parser'])
 env.Prepend(CPPPATH=[env['build_dir'] + '/include/json_parser'])
 
-SConscript('muParser/SConscript',
-           variant_dir=env['build_dir'] + '/muParser',
+SConscript('muparserx/SConscript',
+           variant_dir=env['build_dir'] + '/muparserx',
            duplicate=0)
-env.Prepend(LIBS=['muparser'])
-env.Prepend(CPPPATH=[env['build_dir'] + '/include/muParser'])
+env.Prepend(LIBS=['muparserx'])
+env.Prepend(CPPPATH=[env['build_dir'] + '/include/muparserx'])
 
 SConscript('StGermain/SConscript',
            variant_dir=env['build_dir'] + '/StGermain',
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/Changes.txt
--- a/muParser/Changes.txt	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,396 +0,0 @@
-
-                 __________
-    _____   __ __\______   \_____  _______  ______  ____ _______
-   /     \ |  |  \|     ___/\__  \ \_  __ \/  ___/_/ __ \\_  __ \
-  |  Y Y  \|  |  /|    |     / __ \_|  | \/\___ \ \  ___/ |  | \/
-  |__|_|  /|____/ |____|    (____  /|__|  /____  > \___  >|__|
-        \/                       \/            \/      \/
-
-  Copyright (C) 2010
-  Ingo Berg
-
-History:
---------
-
-Rev 1.00 : July 21 2004
------------------------
-
-    * Initial release
-
-
-Rev 1.01 : July 23 2004
------------------------
-
-    * Support for user defined functions has been added; new functions: AddFun(), ClearFun(),
-      InitFunctions().
-    * Built in constants have been removed; the parser contained undocumented built in
-      constants pi, e.
-      There was the possibility of name conflicts with user defined variables.
-    * Setting multiple variables with SetVar can now be done with a map of names and pointers as the only
-      argument. For this reason, a new type Parser::varmap_type was added. The old version that took 3
-      arguments (array of names, array of pointers, and array length) is now marked as deprecated.
-    * The names of logarithm functions have changed. The new names are: log2 for base 2, log10 or log for
-      base 10, and ln for base e.
-
-
-Rev 1.02 : July 30 2004
------------------------
-
-    * Support for user defined constants added; new functions: InitConst(), AddConst(), SetConst(),
-      ClearConst().
-    * Single variables can now be added using AddVar(); you have now the choice of adding them either
-      one by one or all at the same time using SetVar(const varmap_type &a_vVar).
-    * Internal handling of variables changed, is now similar to function handling.
-    * Virtual destructor added; InitFun(), InitConst() are now virtual too thus making it possible to
-      derive new parsers with a modified set of default functions and constants.
-    * Support for user defined functions with 2 or 3 parameters added; bytecode format changed to hold
-      function parameter count.
-
-
-Rev 1.03 : August 10 2004
--------------------------
-
-    * Support for user-defined unary post value operators added; new functions: AddPostOp(), InitPostOp(),
-      ClearPostOp().
-    * Minor changes to the bytecode parsing routine.
-    * User defined functions can now have up to four parameters.
-    * Performance optimized: simple formula optimization added; (precalculation of constant parts of the
-      expression).
-    * Bug fixes: Multi-arg function parameters, constant name lookup, unary minus did not work correctly.
-
-
-Rev 1.04 : August 16 2004
--------------------------
-
-    * Support for functions with variable number of arguments added.
-    * Internal structure changed; new: ParserBase.h, ParserBase.cpp; removed: ParserException.h;
-      changed: Parser.h, Parser.cpp.
-    * Bug in the bytecode calculation function fixed (affected the unary minus operator).
-    * Optimizer can be deactivated; new function: EnableOptimizer(bool bStat).
-
-
-Rev 1.05 : August 20 2004
--------------------------
-
-    * Variable/constant names will now be checked for invalid characters.
-    * Querying the names of all variables used in an expression is now possible; new function: GetUsedVar().
-    * Disabling bytecode parsing is now possible; new function: EnableByteCode(bool bStat).
-    * Predefined functions with variable number of arguments added: sum, avg, min, max.
-    * Unary prefix operators added; new functions: AddPrefixOp(...), ClearPrefixOp().
-    * Postfix operator interface names changed; new function names: AddPostfixOp(...), ClearPostfixOp().
-    * Hardcoded sign operators removed in favor of prefix operators; bytecode format changed accordingly.
-    * Internal changes: static array removed in Command code calculation routine; misc. changes.
-
-
-Rev 1.06 : August 20 2004
--------------------------
-
-    * Volatile functions added; All overloaded AddFun(...) functions can now take a third parameter
-      indicating that the function can not be optimized.
-    * Internal changes: muParserStack.h simplified; refactorings
-    * Parser is now distributed under the MIT License; all comments changed accordingly.
-
-
-Rev 1.07 : September 4 2004
----------------------------
-
-    * Improved portability; Changes to make life for MSVC 6 user easier, there are probably still some
-      issues left.
-    * Improved portability; Changes in order to allow compiling on BCB.
-    * New function; value_type Diff(value_type *a_Var, value_type a_fPos) 4th order Differentiation with
-      respect to a certain variable; added in muParser.h.
-
-
-Rev 1.08 : November, 2004
--------------------------
-
-    * unpublished; experimental template version with respect to data type and underlying string
-      type (string <-> widestring).
-
-
-Rev 1.09 : November 20, 2004
-----------------------------
-
-    * New member function:  RemoveVar(...) can be used for removing a single variable from the internal 
-                            storage.
-    * Internal structure changed; changing base datatype at compile time is now possible.
-    * Bug fix: Postfix operator parsing could fail in certain cases; This has been fixed now.
-    * Internal change:  Removed most dependancies from the C-string libraries.
-    * Internal change:  Bytecode is now stored in a seperate class: ParserByteCode.h.
-    * Internal change:  GetUsedVar() does no longer require that variables are defined at time of call.
-    * Internal change:  Error treatment changed. ParserException is no longer derived from 
-                        std::runtime_error; Internal treatment of Error messages changed.
-    * New functions in Parser interface; ValidNameChars(), ValidOprtChars() and ValidPrefixOprtChars()
-      they are used for defining the charset allowed for variable-, operator- and function names.
-
-
-Rev 1.10 : December 30, 2004
-----------------------------
-
-Release Notes:
-This version does not contain major new feature compared to V1.07 but its internal structure has
-changed significantly. The String parsing routine is slower than the one of V1.07 but bytecode
-parsing is equally fast. On the other hand the error messages of V1.09 are more flexible and you
-can change its value datatype. It should work on 64-bit systems. For this reason I supply both
-versions for download. If you use V1.07 and are happy with it there is no need for updating
-your version.
-
-    * New example program: Archive now contains two demo programs: One for standard C++ and one for
-                           managed C++.
-    * New member function: RemoveVar(...) can be used for removing a single variable from the internal 
-                           storage.
-    * New member function: GetVar() can be used for querying the variable names and pointers of all
-                           variables defined in the parser.
-    * New member function: GetConst() can be used for querying all defined constants and their values.
-    * New member function: GetFunDef() can be used for querying all defined functions and the number of
-                           arguments they expect.
-    * Internal structure changed; hanging base datatype at compile time is now possible.
-    * Bugfix: Postfix operator parsing could fail in certain cases; This has been fixed now.
-    * Bugfix: Variable names must will now be tested if they conflict with constant or function names.
-    * Internal change:  Removed most dependencies from the C-string libraries.
-    * Internal change:  Bytecode is now stored in a separate class: ParserByteCode.h
-    * Internal change:  GetUsedVar() does no longer require that variables are defined at time of call.
-    * Internal change:  Error treatment changed. ParserException is no longer derived from
-                        std::runtime_error; Internal treatment of Error messages changed.
-    * New functions in Parser interface: ValidNameChars(), ValidOprtChars() and ValidPrefixOprtChars()
-                        they are used for defining the charset allowed for variable-, operator- and
-                        function names.
-
-
-Rev 1.2 / 1.21: April, 2005
----------------------------
-
-Release Notes:
-First of all the interface has changed so this version is not backwards compatible.
-After receiving a couple of questions about it, this version features support for
-user defined binary operators. Consequently the built in operators can now be 
-turned off, thus you can deactivate them and write complete customized parser
-subclasses that only contain the functionality you want. Another new feature is 
-the introduction of callback functions taking string arguments, implicit 
-generation of variables and the Assignement operator.
-
-  Functionality
-    * New built in operator: xor; Logical xor.
-    * New built in operator: Assignement operator; Defining variables in terms of 
-                             other variables/constants
-    * New feature: Strings as arguments for callback functions
-    * New feature: User defined binary operators
-    * New feature: ParserInt a class with a sample implementation for
-                     integer numbers.
-    * New feature: Callbacks to value regognition functions.
-
-    * Removed:  all predefined postfix operators have been removed.
-    * New project file:  Now comes with a ready to use windows DLL.
-    * New project file:  Makefile for cygwin now included.
-    * New example:  Example3 shows usage of the DLL.
-
-  Interface changes
-    * New member function: DefineOprt For adding user defined binary operators.
-    * New member function: EnableBuiltInOprt(bool) Enables/Disables built in 
-                           binary operators.
-    * New member function: AddValIdent(...) to add callbacks for custom value 
-                           recognition functions.
-    * Removed: SetVar(), SetConst().
-    * Renamed: Most interface functions have been renamed
-    * Changed: The type for multiargument callbacks multfun_type has changed. 
-               It no longer takes a std::vector as input.
-
-  Internal changes
-    * new class muParserTokenReader.h encapsulates the token identification 
-      and token assignement.
-    * Internal handling of function callbacks unified as a result the performance 
-      of the bytecode evaluation increased.
-
-
-Rev 1.22: October, 2005
------------------------
-
-Release notes:
-
-All features of Version 1.22 are similar to Version 1.21. Version 1.22 fixes a compilation issue with
-gcc 4.0. In order to fix this issue I rewrote part of the library to remove some unnecessary templates. 
-This should make the code cleaner. The Borland Project files have been removed. If you want to use it 
-with Borland either use the dll version or create your own project files. I can't do it since I don't 
-have this compiler at hand.
-
-Changes:
-
-  Project Changes:
-    * Borland project files removed
-      (The code should still compile with BCB but I cant provide you with project files)
-
-  Internal Changes:
-    * unnecessary template files have been removed:
-        - new files: muParserError.cpp, muParserTokenReader.cpp, muParserCallback.cpp
-        - removed Files: muIParserTypes.h
-
-
-Rev 1.23: 19. October, 2005
----------------------------
-
-Changes:
-
-  Bugfixes:
-    * Variable factory examples in Example1.cpp and Example3.cpp contained a subtle bug.
-
-  New features:
-    * Added a MSVC6 project file and introduced muParserFixes.h in order to make it compile with MSVC6
-
-
-Rev 1.24: 29. October, 2005
----------------------------
-
-Changes:
-
-  Compatibility improvements:
-    * parser now works on 64 bit compilers
-    * (bytecode base datatype can now be changed freely)
-
-
-Rev 1.25: 5. February, 2006
----------------------------
-
-  Build system: (special thanks to Francesco Montorsi for implementing it!)
-    * created a bakefile-based build system which adds support for the following win32 compilers:
-      -> MS visual C++ (6 and .NET)
-      -> BorlandC++ (5 or greater)
-      -> Mingw32 (tested with gcc 3.2)
-      -> Watcom (not tested)
-      and for GCC on Unix (using a standard autoconf's configure script).
-
-  Compatibility improvements:
-    * fixed some small warnings when using -Wall with GCC on Unix
-    * added inclusion guards for win32-specific portions of code
-    * added fixes that remove compiler warnings on Intel C++ and the Solaris C++ compiler.
-
-
-Rev 1.26: (unofficial release)
----------------------------
-
-  New Features:
-   * Unary operator precedence can now be changed by the user.
-
-
-Rev 1.27:
----------------------------
-
-  Build system:
-   * Modified build\ directory layout introducing some subfolders 
-     for the various IDE supported
-   * Project files for BCB and MSVC7 added
-   * Switched to use bakefile 0.2.1 which now correctly creates the 
-     "make uninstall" target for autoconf's Makefile.in
-   * Now the library debug builds are named "muparserd" instead of "muparser"
-     to allow multiple mixed release/debug builds to coexist; so e.g. on Windows
-     when building with DEBUG=1, you'll get "muparserd.lib" instead of "muparser.lib"
-
-  New Features:
-   * Factory functions can now take a user defined pointer
-   * String functions can now be used with up to two additional 
-     double parameters
-   * Support for UNICODE character types added
-   * Infix operator priority can now be changed by the user
-
-  Bugfixes:
-   * An internal error was raised when evaluating an empty 
-     expressions
-   * The error message raised in case of name collisions between 
-     implicitely defined variables and postfix operators did contain
-     misleading data.
-
-
-Rev 1.28: 02. July, 2007
----------------------------
- 
-  Library changes:
-  * Interface for the dynamic library changed and extended to create an interface 
-    using pure C functions only. 
-  * mupInit() removed
-
-  Build system:
-   * MSVC7 Project files removed in favor of MSVC8
-
-  Bugfixes:
-   * The dynamic library did not build on other systems than linux due to a misplaced 
-     preprocessor definition. This is fixed now.
-
-Rev 1.29: Januar 2008
----------------------
-
-  Unrelease Version available only via SVN.
-
-
-Rev 1.30: 09.06.2008
---------------------
-
-  Changes:
-   * Epsilon of the numerical differentiation algorithm changed to allow greater accuracy.
-
-  New features:
-   * Setting thousands separator and decimal separator is now possible
-
-  Bugfixes:
-   * The dll interface did not provide a callback for functions without any arguments.	 
-	
-Rev 1.31cp: 15.01.2010  (Maintainance release for CodeProject)
-----------------------
-
-  Changes:
-   * Archive structure changed
-   * C# wrapper added
-   * Fixed issued that prevented compiling with VS2010 Beta2
-    
-Rev 1.32: 29.01.2010 
---------------------
-
-  Changes:
-   * "example3" renamed to "example2"
-   * Project/Makefiles files are now provided for:
-           - msvc2003 
-           - msvc2005 
-           - msvc2008
-           - watcom   (makefile)
-           - mingw    (makefile)
-           - bcc      (makefile)
-   * Project files for borland cpp builder were removed
-
-
-  New features:
-   
-   * Added function returning muparsers version number
-   
-   * Added function for resetting the locale
-
-
-  Bugfixes:	
-   * Changes example1 in order to fix issues with irritating memory leak reports. 
-     Added conditional code for memory leak detection with MSVC in example1.
-     (see: http://www.codeproject.com/KB/recipes/FastMathParser.aspx?msg=3286367#xx3286367xx)
-   * Fixed some warnings for gcc
-
-
-Rev 1.34: 04.09.2010
---------------------
-  Changes:
-   * The prefix needed for parsing hex values is now "0x" and no longer "$". 
-   * AddValIdent reintroduced into the DLL interface
-
-  New features:
-   * The associativity of binary operators can now be changed. The pow operator is now right associative. 
-     (This is what mathematica is using) 
-   * Seperator can now be used outside of functions. This allows compund expressions like:
-     "a=10,b=20,c=a*b" The last "argument" will be taken as the return value
-
-  Bugfixes:	
-   * The copy constructor did not copy binary operator definitions. Those were lost in the copied parser 
-     instance.
-   * Mixing special characters and alphabetic characters in binary operator names 
-     led to inconsistent parsing behaviour when parsing expressions like
-     "a ++ b" and "a++b" when "++" is defined as a binary operator. Binary operators must now consist 
-     entirely of special characters or of alphabetic ones.
-     (original bug report: https://sourceforge.net/projects/muparser/forums/forum/462843/topic/3696881/index/page/1)
-   * User defined operators were not exactly handled like built in operators. This led to inconsistencies 
-     in expression evaluation when using them. The results differed due to slightly different precedence rules.
-   * Using empty string arguments ("") would cause a crash of muParser
-
-
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/Credits.txt
--- a/muParser/Credits.txt	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-######################################################################
-#                                                                    #
-#                 __________                                         # 
-#    _____   __ __\______   \_____  _______  ______  ____ _______    #
-#   /     \ |  |  \|     ___/\__  \ \_  __ \/  ___/_/ __ \\_  __ \   # 
-#  |  Y Y  \|  |  /|    |     / __ \_|  | \/\___ \ \  ___/ |  | \/   # 
-#  |__|_|  /|____/ |____|    (____  /|__|  /____  > \___  >|__|      #
-#        \/                       \/            \/      \/           #
-#                                                                    #
-#  Copyright (C) 2010                                                #
-#  Ingo Berg                                                         # 
-#                                                                    #
-######################################################################
-
-Credits:
---------
-
-I'd like to thank all the people contacting me with suggestions and 
-bug reports. Your feedback is always welcome and helps to improve this 
-project. 
-
-Especially I'd like to thank:
------------------------------
-
-Francesco Montorsi for setting up the new parser build system as well 
-as the SVN server at sourceforge. Ion Vasilief for Feedback, 
-suggestions and help with the MSVC6 adaptation, Giampaolo Belini for 
-his help in fixing bugs.
\ No newline at end of file
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/Install.txt
--- a/muParser/Install.txt	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,126 +0,0 @@
-
-                __________                                      
-   _____   __ __\______   \_____  _______  ______  ____ _______ 
-  /     \ |  |  \|     ___/\__  \ \_  __ \/  ___/_/ __ \\_  __ \
- |  Y Y  \|  |  /|    |     / __ \_|  | \/\___ \ \  ___/ |  | \/
- |__|_|  /|____/ |____|    (____  /|__|  /____  > \___  >|__|   
-       \/                       \/            \/      \/        
-
- Mathematical expressions parser library 
- Copyright (C) 2010 Ingo Berg (muparser{at}gmx.de)
-
-
-
- Contents
- ========
-
- 1. Installation on win32
- 2. Installation on unix
-    2.1 Other miscellaneous info Unix-specific
- 3. Where to ask for help
-
-
-
- 1. Installation on win32
- ========================
-
- muParser supports various win32 command-line compilers:
- -> mingw
- -> borland
- -> watcom
- -> microsoft CL
- and provides also the project files for MSVC6 IDE.
-
- In order to compile muParser from makefiles, open an MSDOS
- prompt and then move to the muParser/build directory and
- type:
-   
-   mingw32-make -fmakefile.mingw    for mingw
-   nmake -fmakefile.vc              for msvc
-   make -fmakefile.bcc              for borland
-   wmake -fmakefile.wat             for watcom
-
- All makefiles supports the following options:
-
-        # Set to 1 to build debug version [0,1]
-        #   0 - Release
-        #   1 - Debug
-        DEBUG = 0
-
-        # Set to 1 to build shared (DLL) version [0,1]
-        #   0 - Static
-        #   1 - DLL
-        SHARED = 0
-
-        # Set to 1 to compile samples [0,1]
-        SAMPLES = 1
-
- The muParser library is created in the 'lib' folder and the sample
- binaries are created in samples\example1 or samples\example2.
-
- NOTE: samples\example1 can be compiled *only* when building
-       muParser as a STATIC library (SHARED=0).
-       samples\example2 can be compiled *only* when building
-       muParser as a SHARED library (SHARED=1).
-
-
-
- 2. Installation on Unix/Linux
- =============================
-
- muParser can be installed just extracting the sources somewhere
- and then, from a terminal, typing:
-
-   cd [path to muParser]
-   ./configure [--enable-shared=yes/no] [--enable-samples=yes/no]
-               [--enable-debug=yes/no]
-   make
-   [sudo*] make install
-   [sudo*] ldconfig
-   cd samples/example1
-   ./example1
-
- * = this command must be executed with root permissions and thus
-     you have to use 'sudo' or just 'su' to gain root access.
-     Note that installation and ldconfig are not strictly required unless
-     you built in shared mode.
-
- The "make" step will create the muParser library in 'lib' and the
- sample binary in samples/example1.
- The samples/example2 is win32-specific and thus won't be built.
-
-
-
- 2.1 Other miscellaneous info Unix-specific
- ==========================================
-
- If you don't like to have your muParser folder filled by temporary
- files created by GCC, then you can do the following:
-
-    mkdir mybuild && cd mybuild && ../configure && make
-
- to put all object files in the "mybuild" directory.
-
- If you want to use muParser library in your programs, you can use
- the pkg-config program (this works only if muParser was installed
- with 'make install' !). The commands:
-
-   pkg-config muparser --cflags
-   pkg-config muparser --libs
-
- will return all useful info you need to build your programs against
- muParser !
-
-
-
- 3. Where to ask for help
- ========================
-
- If you find problems with either compilation, installation or usage
- of muParser, then you can ask in the muParser forum at:
-
-  https://sourceforge.net/forum/forum.php?forum_id=462843
-
- For more info about muParser, visit:
-  http://sourceforge.net/projects/muparser/
-  http://muparser.sourceforge.net
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/License.txt
--- a/muParser/License.txt	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-
-                 __________                                      
-    _____   __ __\______   \_____  _______  ______  ____ _______ 
-   /     \ |  |  \|     ___/\__  \ \_  __ \/  ___/_/ __ \\_  __ \
-  |  Y Y  \|  |  /|    |     / __ \_|  | \/\___ \ \  ___/ |  | \/
-  |__|_|  /|____/ |____|    (____  /|__|  /____  > \___  >|__|   
-        \/                       \/            \/      \/        
-
-						  Version 1.27
-				
-  Copyright (C) 2004-2006 Ingo Berg (ingo_berg{at}gmx.de)
-
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy of this 
-  software and associated documentation files (the "Software"), to deal in the Software
-  without restriction, including without limitation the rights to use, copy, modify, 
-  merge, publish, distribute, sublicense, and/or sell copies of the Software, and to 
-  permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in all copies or 
-  substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
-  NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 
-  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
-  OR OTHER DEALINGS IN THE SOFTWARE.
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/Makefile.in
--- a/muParser/Makefile.in	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,376 +0,0 @@
-# =========================================================================
-#     This makefile was generated by
-#     Bakefile 0.2.8 (http://www.bakefile.org)
-#     Do not modify, all changes will be overwritten!
-# =========================================================================
-
-
- at MAKE_SET@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-datarootdir = @datarootdir@
-INSTALL = @INSTALL@
-SHARED_LD_CXX = @SHARED_LD_CXX@
-LIBEXT = @LIBEXT@
-LIBPREFIX = @LIBPREFIX@
-SO_SUFFIX = @SO_SUFFIX@
-DLLIMP_SUFFIX = @DLLIMP_SUFFIX@
-EXEEXT = @EXEEXT@
-LN_S = @LN_S@
-SETFILE = @SETFILE@
-PIC_FLAG = @PIC_FLAG@
-SONAME_FLAG = @SONAME_FLAG@
-STRIP = @STRIP@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_DIR = @INSTALL_DIR@
-BK_DEPS = @BK_DEPS@
-srcdir = @srcdir@
-top_builddir = @top_builddir@
-libdir = @libdir@
-DLLPREFIX = @DLLPREFIX@
-LIBS = @LIBS@
-AR = @AR@
-AROPTIONS = @AROPTIONS@
-RANLIB = @RANLIB@
-CXX = @CXX@
-CXXFLAGS = @CXXFLAGS@
-CPPFLAGS = @CPPFLAGS@
-LDFLAGS = @LDFLAGS@
-
-### Variables: ###
-
-DESTDIR = 
-MUPARSER_LIB_CXXFLAGS = $(____DEBUG) $(____SHARED) $(____SHARED_0) \
-	-I$(srcdir)/include $(CPPFLAGS) $(CXXFLAGS)
-MUPARSER_LIB_OBJECTS =  \
-	muParser_lib_muParser.o \
-	muParser_lib_muParserBase.o \
-	muParser_lib_muParserBytecode.o \
-	muParser_lib_muParserCallback.o \
-	muParser_lib_muParserComplex.o \
-	muParser_lib_muParserDLL.o \
-	muParser_lib_muParserError.o \
-	muParser_lib_muParserInt.o \
-	muParser_lib_muParserTest.o \
-	muParser_lib_muParserTokenReader.o
-MUPARSER_LIB_HEADERS =  \
-	include/muParser.h \
-	include/muParserBase.h \
-	include/muParserBytecode.h \
-	include/muParserCallback.h \
-	include/muParserComplex.h \
-	include/muParserDLL.h \
-	include/muParserDef.h \
-	include/muParserError.h \
-	include/muParserFixes.h \
-	include/muParserInt.h \
-	include/muParserStack.h \
-	include/muParserTest.h \
-	include/muParserToken.h \
-	include/muParserTokenReader.h
-MUPARSER_DLL_CXXFLAGS = $(____DEBUG) $(____SHARED) $(____SHARED_0) \
-	-I$(srcdir)/include $(PIC_FLAG) $(CPPFLAGS) $(CXXFLAGS)
-MUPARSER_DLL_OBJECTS =  \
-	muParser_dll_muParser.o \
-	muParser_dll_muParserBase.o \
-	muParser_dll_muParserBytecode.o \
-	muParser_dll_muParserCallback.o \
-	muParser_dll_muParserComplex.o \
-	muParser_dll_muParserDLL.o \
-	muParser_dll_muParserError.o \
-	muParser_dll_muParserInt.o \
-	muParser_dll_muParserTest.o \
-	muParser_dll_muParserTokenReader.o
-MUPARSER_DLL_HEADERS =  \
-	include/muParser.h \
-	include/muParserBase.h \
-	include/muParserBytecode.h \
-	include/muParserCallback.h \
-	include/muParserComplex.h \
-	include/muParserDLL.h \
-	include/muParserDef.h \
-	include/muParserError.h \
-	include/muParserFixes.h \
-	include/muParserInt.h \
-	include/muParserStack.h \
-	include/muParserTest.h \
-	include/muParserToken.h \
-	include/muParserTokenReader.h
-EXAMPLE1_CXXFLAGS = $(____DEBUG) -I$(srcdir)/include $(CPPFLAGS) $(CXXFLAGS)
-EXAMPLE1_OBJECTS =  \
-	example1_Example1.o
-
-### Conditionally set variables: ###
-
- at COND_DEPS_TRACKING_0@CXXC = $(CXX)
- at COND_DEPS_TRACKING_1@CXXC = $(BK_DEPS) $(CXX)
- at COND_DEBUG_0@DEBUG_BUILD_POSTFIX = 
- at COND_DEBUG_1@DEBUG_BUILD_POSTFIX = d
- at COND_SHARED_0@__muParser_lib___depname = \
- at COND_SHARED_0@	$(top_builddir)/lib/$(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(LIBEXT)
- at COND_SHARED_0@__install_muParser_lib___depname = install_muParser_lib
- at COND_SHARED_0@__uninstall_muParser_lib___depname = uninstall_muParser_lib
- at COND_SHARED_0@__install_muParser_lib_headers___depname = \
- at COND_SHARED_0@	install_muParser_lib_headers
- at COND_SHARED_0@__uninstall_muParser_lib_headers___depname = \
- at COND_SHARED_0@	uninstall_muParser_lib_headers
-COND_SHARED_1___muParser_dll___depname = \
-	$(top_builddir)/lib/$(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf3)
- at COND_SHARED_1@__muParser_dll___depname = $(COND_SHARED_1___muParser_dll___depname)
- at COND_SHARED_1@__install_muParser_dll___depname = install_muParser_dll
- at COND_SHARED_1@__uninstall_muParser_dll___depname = uninstall_muParser_dll
-COND_PLATFORM_MACOSX_1___muParser_dll___macinstnamecmd = -install_name \
-	$(libdir)/$(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf2)
- at COND_PLATFORM_MACOSX_1@__muParser_dll___macinstnamecmd = $(COND_PLATFORM_MACOSX_1___muParser_dll___macinstnamecmd)
- at COND_SHARED_1@__install_muParser_dll_headers___depname = \
- at COND_SHARED_1@	install_muParser_dll_headers
- at COND_SHARED_1@__uninstall_muParser_dll_headers___depname = \
- at COND_SHARED_1@	uninstall_muParser_dll_headers
-COND_PLATFORM_OS2_1___muParser_dll___importlib = -import \
-	$(top_builddir)/lib/$(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX).$(DLLIMP_SUFFIX)
- at COND_PLATFORM_OS2_1@__muParser_dll___importlib = $(COND_PLATFORM_OS2_1___muParser_dll___importlib)
-COND_WINDOWS_IMPLIB_1___muParser_dll___importlib = \
-	-Wl,--out-implib=$(top_builddir)/lib/$(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX).$(DLLIMP_SUFFIX)
- at COND_WINDOWS_IMPLIB_1@__muParser_dll___importlib = $(COND_WINDOWS_IMPLIB_1___muParser_dll___importlib)
- at COND_PLATFORM_MACOSX_0_USE_SOVERSION_1@__muParser_dll___targetsuf2 \
- at COND_PLATFORM_MACOSX_0_USE_SOVERSION_1@	= .$(SO_SUFFIX).0
- at COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@__muParser_dll___targetsuf2 \
- at COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@	= .0.$(SO_SUFFIX)
- at COND_USE_SOVERSION_0@__muParser_dll___targetsuf2 = .$(SO_SUFFIX)
- at COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1@__muParser_dll___targetsuf3 \
- at COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1@	= \
- at COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1@	.$(SO_SUFFIX).0.0.0
- at COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@__muParser_dll___targetsuf3 \
- at COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@	= .0.0.0.$(SO_SUFFIX)
- at COND_USE_SOVERSION_1_USE_SOVERSOLARIS_1@__muParser_dll___targetsuf3 \
- at COND_USE_SOVERSION_1_USE_SOVERSOLARIS_1@	= .$(SO_SUFFIX).0
- at COND_USE_SOVERCYGWIN_1_USE_SOVERSION_1@__muParser_dll___targetsuf3 \
- at COND_USE_SOVERCYGWIN_1_USE_SOVERSION_1@	= -0.$(SO_SUFFIX)
- at COND_USE_SOVERSION_0@__muParser_dll___targetsuf3 = .$(SO_SUFFIX)
-COND_USE_SOVERLINUX_1___muParser_dll___soname_flags = \
-	$(SONAME_FLAG)$(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf2)
- at COND_USE_SOVERLINUX_1@__muParser_dll___soname_flags = $(COND_USE_SOVERLINUX_1___muParser_dll___soname_flags)
-COND_USE_SOVERSOLARIS_1___muParser_dll___soname_flags = \
-	$(SONAME_FLAG)$(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf3)
- at COND_USE_SOVERSOLARIS_1@__muParser_dll___soname_flags = $(COND_USE_SOVERSOLARIS_1___muParser_dll___soname_flags)
-COND_USE_SOTWOSYMLINKS_1___muParser_dll___so_symlinks_cmd = (cd \
-	$(top_builddir)/lib/; rm -f \
-	$(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX).$(DLLIMP_SUFFIX) \
-	$(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf2); \
-	$(LN_S) \
-	$(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf3) \
-	$(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf2); \
-	$(LN_S) \
-	$(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf2) \
-	$(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX).$(DLLIMP_SUFFIX))
- at COND_USE_SOTWOSYMLINKS_1@__muParser_dll___so_symlinks_cmd = $(COND_USE_SOTWOSYMLINKS_1___muParser_dll___so_symlinks_cmd)
-COND_USE_SOVERSOLARIS_1___muParser_dll___so_symlinks_cmd = (cd \
-	$(top_builddir)/lib/; rm -f \
-	$(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX).$(DLLIMP_SUFFIX); $(LN_S) \
-	$(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf3) \
-	$(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX).$(DLLIMP_SUFFIX))
- at COND_USE_SOVERSOLARIS_1@__muParser_dll___so_symlinks_cmd = $(COND_USE_SOVERSOLARIS_1___muParser_dll___so_symlinks_cmd)
-COND_USE_SOTWOSYMLINKS_1___muParser_dll___so_symlinks_inst_cmd = rm -f \
-	$(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX).$(DLLIMP_SUFFIX) \
-	$(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf2); \
-	$(LN_S) \
-	$(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf3) \
-	$(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf2); \
-	$(LN_S) \
-	$(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf2) \
-	$(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX).$(DLLIMP_SUFFIX)
- at COND_USE_SOTWOSYMLINKS_1@__muParser_dll___so_symlinks_inst_cmd = $(COND_USE_SOTWOSYMLINKS_1___muParser_dll___so_symlinks_inst_cmd)
-COND_USE_SOVERSOLARIS_1___muParser_dll___so_symlinks_inst_cmd = rm -f \
-	$(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX).$(DLLIMP_SUFFIX); $(LN_S) \
-	$(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf3) \
-	$(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX).$(DLLIMP_SUFFIX);
- at COND_USE_SOVERSOLARIS_1@__muParser_dll___so_symlinks_inst_cmd = $(COND_USE_SOVERSOLARIS_1___muParser_dll___so_symlinks_inst_cmd)
-COND_USE_SOTWOSYMLINKS_1___muParser_dll___so_symlinks_uninst_cmd = rm -f \
-	$(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf2) \
-	$(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX).$(DLLIMP_SUFFIX)
- at COND_USE_SOTWOSYMLINKS_1@__muParser_dll___so_symlinks_uninst_cmd = $(COND_USE_SOTWOSYMLINKS_1___muParser_dll___so_symlinks_uninst_cmd)
- at COND_USE_SOVERSOLARIS_1@__muParser_dll___so_symlinks_uninst_cmd \
- at COND_USE_SOVERSOLARIS_1@	= rm -f \
- at COND_USE_SOVERSOLARIS_1@	$(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX).$(DLLIMP_SUFFIX)
- at COND_PLATFORM_MACOSX_1@__muParser_dll___macver = \
- at COND_PLATFORM_MACOSX_1@	-compatibility_version 1 -current_version 1
- at COND_SAMPLES_1@__example1___depname = \
- at COND_SAMPLES_1@	$(top_builddir)/samples/example1/example1$(EXEEXT)
- at COND_PLATFORM_MAC_0@__example1___mac_setfilecmd = @true
- at COND_PLATFORM_MAC_1@__example1___mac_setfilecmd = \
- at COND_PLATFORM_MAC_1@	$(SETFILE) -t APPL \
- at COND_PLATFORM_MAC_1@	$(top_builddir)/samples/example1/example1$(EXEEXT)
- at COND_SHARED_0@____SHARED = 
- at COND_SHARED_1@____SHARED = -DMUPARSER_DLL
- at COND_SHARED_0@____SHARED_0 = 
- at COND_SHARED_1@____SHARED_0 = -DMUPARSERLIB_EXPORTS
- at COND_DEBUG_0@____DEBUG = -DNDEBUG
- at COND_DEBUG_1@____DEBUG = 
-
-### Targets: ###
-
-all: $(__muParser_lib___depname) $(__muParser_dll___depname) $(__example1___depname)
-
-install: $(__install_muParser_lib___depname) $(__install_muParser_lib_headers___depname) $(__install_muParser_dll___depname) $(__install_muParser_dll_headers___depname)
-	$(INSTALL_DIR) $(DESTDIR)$(libdir)/pkgconfig
-	$(INSTALL_DATA) build/autoconf/muparser.pc $(DESTDIR)$(libdir)/pkgconfig
-
-uninstall: $(__uninstall_muParser_lib___depname) $(__uninstall_muParser_lib_headers___depname) $(__uninstall_muParser_dll___depname) $(__uninstall_muParser_dll_headers___depname)
-
-install-strip: install
-	$(STRIP) $(DESTDIR)$(libdir)/$(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf3)
-
-clean: 
-	rm -rf ./.deps ./.pch
-	rm -f ./*.o
-	rm -f $(top_builddir)/lib/$(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(LIBEXT)
-	rm -f $(top_builddir)/lib/$(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf3)
-	rm -f $(top_builddir)/lib/$(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX).$(DLLIMP_SUFFIX)
-	rm -f $(top_builddir)/lib/$(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX).$(DLLIMP_SUFFIX) $(top_builddir)/lib/$(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf2)
-	rm -f $(top_builddir)/samples/example1/example1$(EXEEXT)
-
-distclean: clean
-	rm -f config.cache config.log config.status bk-deps bk-make-pch shared-ld-sh Makefile
-	rm -f build/autoconf/muparser.pc
-
- at COND_SHARED_0@$(top_builddir)/lib/$(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(LIBEXT): $(MUPARSER_LIB_OBJECTS)
- at COND_SHARED_0@	rm -f $@
- at COND_SHARED_0@	$(AR) $(AROPTIONS) $@ $(MUPARSER_LIB_OBJECTS)
- at COND_SHARED_0@	$(RANLIB) $@
-
- at COND_SHARED_0@install_muParser_lib: $(__muParser_lib___depname)
- at COND_SHARED_0@	$(INSTALL_DIR) $(DESTDIR)$(libdir)
- at COND_SHARED_0@	$(INSTALL_DATA) $(top_builddir)/lib/$(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(LIBEXT) $(DESTDIR)$(libdir)
-
- at COND_SHARED_0@uninstall_muParser_lib: 
- at COND_SHARED_0@	rm -f $(DESTDIR)$(libdir)/$(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(LIBEXT)
-
- at COND_SHARED_0@install_muParser_lib_headers: 
- at COND_SHARED_0@	$(INSTALL_DIR) $(DESTDIR)$(prefix)
- at COND_SHARED_0@	for f in $(MUPARSER_LIB_HEADERS); do \
- at COND_SHARED_0@	if test ! -d $(DESTDIR)$(prefix)/`dirname $$f` ; then \
- at COND_SHARED_0@	$(INSTALL_DIR) $(DESTDIR)$(prefix)/`dirname $$f`; \
- at COND_SHARED_0@	fi; \
- at COND_SHARED_0@	$(INSTALL_DATA) $(srcdir)/$$f $(DESTDIR)$(prefix)/$$f; \
- at COND_SHARED_0@	done
-
- at COND_SHARED_0@uninstall_muParser_lib_headers: 
- at COND_SHARED_0@	for f in $(MUPARSER_LIB_HEADERS); do \
- at COND_SHARED_0@	rm -f $(DESTDIR)$(prefix)/$$f; \
- at COND_SHARED_0@	done
-
- at COND_SHARED_1@$(top_builddir)/lib/$(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf3): $(MUPARSER_DLL_OBJECTS)
- at COND_SHARED_1@	$(SHARED_LD_CXX) $@ $(MUPARSER_DLL_OBJECTS)   $(__muParser_dll___macinstnamecmd) $(__muParser_dll___importlib) $(__muParser_dll___soname_flags) $(__muParser_dll___macver) $(LDFLAGS)  $(LIBS)
- at COND_SHARED_1@	
- at COND_SHARED_1@	$(__muParser_dll___so_symlinks_cmd)
-
- at COND_SHARED_1@install_muParser_dll: $(__muParser_dll___depname)
- at COND_SHARED_1@	$(INSTALL_DIR) $(DESTDIR)$(libdir)
- at COND_SHARED_1@	$(INSTALL_DATA) $(top_builddir)/lib/$(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX).$(DLLIMP_SUFFIX) $(DESTDIR)$(libdir)
- at COND_SHARED_1@	$(INSTALL_PROGRAM) $(top_builddir)/lib/$(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf3) $(DESTDIR)$(libdir)
- at COND_SHARED_1@	(cd $(DESTDIR)$(libdir) ; $(__muParser_dll___so_symlinks_inst_cmd))
-
- at COND_SHARED_1@uninstall_muParser_dll: 
- at COND_SHARED_1@	rm -f $(DESTDIR)$(libdir)/$(LIBPREFIX)muparser$(DEBUG_BUILD_POSTFIX).$(DLLIMP_SUFFIX)
- at COND_SHARED_1@	rm -f $(DESTDIR)$(libdir)/$(DLLPREFIX)muparser$(DEBUG_BUILD_POSTFIX)$(__muParser_dll___targetsuf3)
- at COND_SHARED_1@	(cd $(DESTDIR)$(libdir) ; $(__muParser_dll___so_symlinks_uninst_cmd))
-
- at COND_SHARED_1@install_muParser_dll_headers: 
- at COND_SHARED_1@	$(INSTALL_DIR) $(DESTDIR)$(prefix)
- at COND_SHARED_1@	for f in $(MUPARSER_DLL_HEADERS); do \
- at COND_SHARED_1@	if test ! -d $(DESTDIR)$(prefix)/`dirname $$f` ; then \
- at COND_SHARED_1@	$(INSTALL_DIR) $(DESTDIR)$(prefix)/`dirname $$f`; \
- at COND_SHARED_1@	fi; \
- at COND_SHARED_1@	$(INSTALL_DATA) $(srcdir)/$$f $(DESTDIR)$(prefix)/$$f; \
- at COND_SHARED_1@	done
-
- at COND_SHARED_1@uninstall_muParser_dll_headers: 
- at COND_SHARED_1@	for f in $(MUPARSER_DLL_HEADERS); do \
- at COND_SHARED_1@	rm -f $(DESTDIR)$(prefix)/$$f; \
- at COND_SHARED_1@	done
-
- at COND_SAMPLES_1@$(top_builddir)/samples/example1/example1$(EXEEXT): $(EXAMPLE1_OBJECTS) $(__muParser_lib___depname)
- at COND_SAMPLES_1@	$(CXX) -o $@ $(EXAMPLE1_OBJECTS) -L$(top_builddir)/lib   -L$(srcdir)/lib $(LDFLAGS)  -lmuparser$(DEBUG_BUILD_POSTFIX) $(LIBS)
- at COND_SAMPLES_1@	
- at COND_SAMPLES_1@	$(__example1___mac_setfilecmd)
-
-lib: $(__muParser_lib___depname) $(__muParser_dll___depname)
-
-samples: $(__example1___depname)
-
-documentation: 
-	( cd $(srcdir)/docs && doxygen )
-
-muParser_lib_muParser.o: $(srcdir)/src/muParser.cpp
-	$(CXXC) -c -o $@ $(MUPARSER_LIB_CXXFLAGS) $(srcdir)/src/muParser.cpp
-
-muParser_lib_muParserBase.o: $(srcdir)/src/muParserBase.cpp
-	$(CXXC) -c -o $@ $(MUPARSER_LIB_CXXFLAGS) $(srcdir)/src/muParserBase.cpp
-
-muParser_lib_muParserBytecode.o: $(srcdir)/src/muParserBytecode.cpp
-	$(CXXC) -c -o $@ $(MUPARSER_LIB_CXXFLAGS) $(srcdir)/src/muParserBytecode.cpp
-
-muParser_lib_muParserCallback.o: $(srcdir)/src/muParserCallback.cpp
-	$(CXXC) -c -o $@ $(MUPARSER_LIB_CXXFLAGS) $(srcdir)/src/muParserCallback.cpp
-
-muParser_lib_muParserComplex.o: $(srcdir)/src/muParserComplex.cpp
-	$(CXXC) -c -o $@ $(MUPARSER_LIB_CXXFLAGS) $(srcdir)/src/muParserComplex.cpp
-
-muParser_lib_muParserDLL.o: $(srcdir)/src/muParserDLL.cpp
-	$(CXXC) -c -o $@ $(MUPARSER_LIB_CXXFLAGS) $(srcdir)/src/muParserDLL.cpp
-
-muParser_lib_muParserError.o: $(srcdir)/src/muParserError.cpp
-	$(CXXC) -c -o $@ $(MUPARSER_LIB_CXXFLAGS) $(srcdir)/src/muParserError.cpp
-
-muParser_lib_muParserInt.o: $(srcdir)/src/muParserInt.cpp
-	$(CXXC) -c -o $@ $(MUPARSER_LIB_CXXFLAGS) $(srcdir)/src/muParserInt.cpp
-
-muParser_lib_muParserTest.o: $(srcdir)/src/muParserTest.cpp
-	$(CXXC) -c -o $@ $(MUPARSER_LIB_CXXFLAGS) $(srcdir)/src/muParserTest.cpp
-
-muParser_lib_muParserTokenReader.o: $(srcdir)/src/muParserTokenReader.cpp
-	$(CXXC) -c -o $@ $(MUPARSER_LIB_CXXFLAGS) $(srcdir)/src/muParserTokenReader.cpp
-
-muParser_dll_muParser.o: $(srcdir)/src/muParser.cpp
-	$(CXXC) -c -o $@ $(MUPARSER_DLL_CXXFLAGS) $(srcdir)/src/muParser.cpp
-
-muParser_dll_muParserBase.o: $(srcdir)/src/muParserBase.cpp
-	$(CXXC) -c -o $@ $(MUPARSER_DLL_CXXFLAGS) $(srcdir)/src/muParserBase.cpp
-
-muParser_dll_muParserBytecode.o: $(srcdir)/src/muParserBytecode.cpp
-	$(CXXC) -c -o $@ $(MUPARSER_DLL_CXXFLAGS) $(srcdir)/src/muParserBytecode.cpp
-
-muParser_dll_muParserCallback.o: $(srcdir)/src/muParserCallback.cpp
-	$(CXXC) -c -o $@ $(MUPARSER_DLL_CXXFLAGS) $(srcdir)/src/muParserCallback.cpp
-
-muParser_dll_muParserComplex.o: $(srcdir)/src/muParserComplex.cpp
-	$(CXXC) -c -o $@ $(MUPARSER_DLL_CXXFLAGS) $(srcdir)/src/muParserComplex.cpp
-
-muParser_dll_muParserDLL.o: $(srcdir)/src/muParserDLL.cpp
-	$(CXXC) -c -o $@ $(MUPARSER_DLL_CXXFLAGS) $(srcdir)/src/muParserDLL.cpp
-
-muParser_dll_muParserError.o: $(srcdir)/src/muParserError.cpp
-	$(CXXC) -c -o $@ $(MUPARSER_DLL_CXXFLAGS) $(srcdir)/src/muParserError.cpp
-
-muParser_dll_muParserInt.o: $(srcdir)/src/muParserInt.cpp
-	$(CXXC) -c -o $@ $(MUPARSER_DLL_CXXFLAGS) $(srcdir)/src/muParserInt.cpp
-
-muParser_dll_muParserTest.o: $(srcdir)/src/muParserTest.cpp
-	$(CXXC) -c -o $@ $(MUPARSER_DLL_CXXFLAGS) $(srcdir)/src/muParserTest.cpp
-
-muParser_dll_muParserTokenReader.o: $(srcdir)/src/muParserTokenReader.cpp
-	$(CXXC) -c -o $@ $(MUPARSER_DLL_CXXFLAGS) $(srcdir)/src/muParserTokenReader.cpp
-
-example1_Example1.o: $(srcdir)/samples/example1/Example1.cpp
-	$(CXXC) -c -o $@ $(EXAMPLE1_CXXFLAGS) $(srcdir)/samples/example1/Example1.cpp
-
-
-# Include dependency info, if present:
- at IF_GNU_MAKE@-include ./.deps/*.d
-
-.PHONY: all install uninstall clean distclean install_muParser_lib \
-	uninstall_muParser_lib install_muParser_lib_headers \
-	uninstall_muParser_lib_headers install_muParser_dll uninstall_muParser_dll \
-	install_muParser_dll_headers uninstall_muParser_dll_headers lib samples
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/SConscript
--- a/muParser/SConscript	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-import os
-Import('env')
-
-#
-# Need to make a copy because SCons uses the environment.
-# at it's final state, so StGermain ends up depending on
-# StgDomain, etc.
-#
-
-env = env.Clone()
-
-#
-# Inside each project we will be accessing headers without the
-# project name as a build_dir, so we need to let SCons know how to
-# find those headers.
-#
-
-env.Append(CPPPATH=env['build_dir'] + '/include/muParser')
-
-hdrs = env.Install('include/muParser/', Glob('include' + '/*.h'))
-
-srcs = Glob('src' + '/*.cpp')
-objs = env.SharedObject(srcs)
-
-l=env.StaticLibrary(env['build_dir'] + '/lib/muparser', objs)
-env.Install(env['prefix'] + '/lib', l)
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/configure
--- a/muParser/configure	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9059 +0,0 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.64 for muParser 1.34.
-#
-# Report bugs to <frm at users.sourceforge.net>.
-#
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software
-# Foundation, Inc.
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-	expr "X$arg" : "X\\(.*\\)$as_nl";
-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""	$as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-case $0 in #((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-if test "x$CONFIG_SHELL" = x; then
-  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '\${1+\"\$@\"}'='\"\$@\"'
-  setopt NO_GLOB_SUBST
-else
-  case \`(set -o) 2>/dev/null\` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-"
-  as_required="as_fn_return () { (exit \$1); }
-as_fn_success () { as_fn_return 0; }
-as_fn_failure () { as_fn_return 1; }
-as_fn_ret_success () { return 0; }
-as_fn_ret_failure () { return 1; }
-
-exitcode=0
-as_fn_success || { exitcode=1; echo as_fn_success failed.; }
-as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
-as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
-as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
-
-else
-  exitcode=1; echo positional parameters were not saved.
-fi
-test x\$exitcode = x0 || exit 1"
-  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
-  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
-  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
-  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1"
-  if (eval "$as_required") 2>/dev/null; then :
-  as_have_required=yes
-else
-  as_have_required=no
-fi
-  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
-
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-as_found=false
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  as_found=:
-  case $as_dir in #(
-	 /*)
-	   for as_base in sh bash ksh sh5; do
-	     # Try only shells that exist, to save several forks.
-	     as_shell=$as_dir/$as_base
-	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
-		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
-  CONFIG_SHELL=$as_shell as_have_required=yes
-		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
-  break 2
-fi
-fi
-	   done;;
-       esac
-  as_found=false
-done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
-	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
-  CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
-IFS=$as_save_IFS
-
-
-      if test "x$CONFIG_SHELL" != x; then :
-  # We cannot yet assume a decent shell, so we have to provide a
-	# neutralization value for shells without unset; and this also
-	# works around shells that cannot unset nonexistent variables.
-	BASH_ENV=/dev/null
-	ENV=/dev/null
-	(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-	export CONFIG_SHELL
-	exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
-fi
-
-    if test x$as_have_required = xno; then :
-  $as_echo "$0: This script requires a shell more modern than all"
-  $as_echo "$0: the shells that I found on your system."
-  if test x${ZSH_VERSION+set} = xset ; then
-    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
-    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
-  else
-    $as_echo "$0: Please tell bug-autoconf at gnu.org and
-$0: frm at users.sourceforge.net about your system, including
-$0: any error possibly output before this message. Then
-$0: install a modern shell, or manually run the script
-$0: under such a shell if you do have one."
-  fi
-  exit 1
-fi
-fi
-fi
-SHELL=${CONFIG_SHELL-/bin/sh}
-export SHELL
-# Unset more variables known to interfere with behavior of common tools.
-CLICOLOR_FORCE= GREP_OPTIONS=
-unset CLICOLOR_FORCE GREP_OPTIONS
-
-## --------------------- ##
-## M4sh Shell Functions. ##
-## --------------------- ##
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} # as_fn_exit
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-# as_fn_error ERROR [LINENO LOG_FD]
-# ---------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with status $?, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$?; test $as_status -eq 0 && as_status=1
-  if test "$3"; then
-    as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
-  fi
-  $as_echo "$as_me: error: $1" >&2
-  as_fn_exit $as_status
-} # as_fn_error
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-
-  as_lineno_1=$LINENO as_lineno_1a=$LINENO
-  as_lineno_2=$LINENO as_lineno_2a=$LINENO
-  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
-  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
-  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
-  sed -n '
-    p
-    /[$]LINENO/=
-  ' <$as_myself |
-    sed '
-      s/[$]LINENO.*/&-/
-      t lineno
-      b
-      :lineno
-      N
-      :loop
-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
-      t loop
-      s/-\n.*//
-    ' >$as_me.lineno &&
-  chmod +x "$as_me.lineno" ||
-    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
-
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensitive to this).
-  . "./$as_me.lineno"
-  # Exit status is that of the last command.
-  exit
-}
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='	';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -p'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -p'
-  fi
-else
-  as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-	test -d "$1/.";
-      else
-	case $1 in #(
-	-*)set "./$1";;
-	esac;
-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
-	???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-exec 7<&0 </dev/null 6>&1
-
-# Name of the host.
-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-ac_clean_files=
-ac_config_libobj_dir=.
-LIBOBJS=
-cross_compiling=no
-subdirs=
-MFLAGS=
-MAKEFLAGS=
-
-# Identity of this package.
-PACKAGE_NAME='muParser'
-PACKAGE_TARNAME='muparser'
-PACKAGE_VERSION='1.34'
-PACKAGE_STRING='muParser 1.34'
-PACKAGE_BUGREPORT='frm at users.sourceforge.net'
-PACKAGE_URL=''
-
-ac_subst_vars='LTLIBOBJS
-LIBOBJS
-COND_WINDOWS_IMPLIB_1
-COND_USE_SOVERSOLARIS_1
-COND_USE_SOVERSION_1_USE_SOVERSOLARIS_1
-COND_USE_SOVERSION_0
-COND_USE_SOVERLINUX_1
-COND_USE_SOVERCYGWIN_1_USE_SOVERSION_1
-COND_USE_SOTWOSYMLINKS_1
-COND_SHARED_1
-COND_SHARED_0
-COND_SAMPLES_1
-COND_PLATFORM_OS2_1
-COND_PLATFORM_MAC_1
-COND_PLATFORM_MAC_0
-COND_PLATFORM_MACOSX_1_USE_SOVERSION_1
-COND_PLATFORM_MACOSX_1
-COND_PLATFORM_MACOSX_0_USE_SOVERSION_1
-COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1
-COND_DEPS_TRACKING_1
-COND_DEPS_TRACKING_0
-COND_DEBUG_1
-COND_DEBUG_0
-OBJCXXFLAGS
-SETFILE
-REZ
-WINDRES
-BK_DEPS
-DEPS_TRACKING
-SONAME_FLAG
-USE_SOTWOSYMLINKS
-USE_MACVERSION
-USE_SOVERCYGWIN
-USE_SOVERSOLARIS
-USE_SOVERLINUX
-USE_SOVERSION
-WINDOWS_IMPLIB
-PIC_FLAG
-SHARED_LD_MODULE_CXX
-SHARED_LD_MODULE_CC
-SHARED_LD_CXX
-SHARED_LD_CC
-AIX_CXX_LD
-dlldir
-DLLPREFIX_MODULE
-DLLPREFIX
-LIBEXT
-LIBPREFIX
-DLLIMP_SUFFIX
-SO_SUFFIX_MODULE
-SO_SUFFIX
-PLATFORM_BEOS
-PLATFORM_OS2
-PLATFORM_MACOSX
-PLATFORM_MACOS
-PLATFORM_MAC
-PLATFORM_MSDOS
-PLATFORM_WIN32
-PLATFORM_UNIX
-IF_GNU_MAKE
-LDFLAGS_GUI
-INSTALL_DIR
-NM
-STRIP
-AROPTIONS
-AR
-MAKE_SET
-SET_MAKE
-CXXCPP
-ac_ct_CXX
-CXXFLAGS
-CXX
-OBJEXT
-EXEEXT
-ac_ct_CC
-CPPFLAGS
-LDFLAGS
-CFLAGS
-CC
-RANLIB
-LN_S
-INSTALL_DATA
-INSTALL_SCRIPT
-INSTALL_PROGRAM
-AWK
-target_os
-target_vendor
-target_cpu
-target
-host_os
-host_vendor
-host_cpu
-host
-build_os
-build_vendor
-build_cpu
-build
-target_alias
-host_alias
-build_alias
-LIBS
-ECHO_T
-ECHO_N
-ECHO_C
-DEFS
-mandir
-localedir
-libdir
-psdir
-pdfdir
-dvidir
-htmldir
-infodir
-docdir
-oldincludedir
-includedir
-localstatedir
-sharedstatedir
-sysconfdir
-datadir
-datarootdir
-libexecdir
-sbindir
-bindir
-program_transform_name
-prefix
-exec_prefix
-PACKAGE_URL
-PACKAGE_BUGREPORT
-PACKAGE_STRING
-PACKAGE_VERSION
-PACKAGE_TARNAME
-PACKAGE_NAME
-PATH_SEPARATOR
-SHELL'
-ac_subst_files=''
-ac_user_opts='
-enable_option_checking
-enable_debug
-enable_shared
-enable_samples
-enable_omf
-enable_dependency_tracking
-'
-      ac_precious_vars='build_alias
-host_alias
-target_alias
-CC
-CFLAGS
-LDFLAGS
-LIBS
-CPPFLAGS
-CXX
-CXXFLAGS
-CCC
-CXXCPP'
-
-
-# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
-ac_unrecognized_opts=
-ac_unrecognized_sep=
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-cache_file=/dev/null
-exec_prefix=NONE
-no_create=
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Installation directory options.
-# These are left unexpanded so users can "make install exec_prefix=/foo"
-# and all the variables that are supposed to be based on exec_prefix
-# by default will actually change.
-# Use braces instead of parens because sh, perl, etc. also accept them.
-# (The list follows the same order as the GNU Coding Standards.)
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datarootdir='${prefix}/share'
-datadir='${datarootdir}'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
-infodir='${datarootdir}/info'
-htmldir='${docdir}'
-dvidir='${docdir}'
-pdfdir='${docdir}'
-psdir='${docdir}'
-libdir='${exec_prefix}/lib'
-localedir='${datarootdir}/locale'
-mandir='${datarootdir}/man'
-
-ac_prev=
-ac_dashdash=
-for ac_option
-do
-  # If the previous option needs an argument, assign it.
-  if test -n "$ac_prev"; then
-    eval $ac_prev=\$ac_option
-    ac_prev=
-    continue
-  fi
-
-  case $ac_option in
-  *=*)	ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
-  *)	ac_optarg=yes ;;
-  esac
-
-  # Accept the important Cygnus configure options, so we can diagnose typos.
-
-  case $ac_dashdash$ac_option in
-  --)
-    ac_dashdash=yes ;;
-
-  -bindir | --bindir | --bindi | --bind | --bin | --bi)
-    ac_prev=bindir ;;
-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-    bindir=$ac_optarg ;;
-
-  -build | --build | --buil | --bui | --bu)
-    ac_prev=build_alias ;;
-  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-    build_alias=$ac_optarg ;;
-
-  -cache-file | --cache-file | --cache-fil | --cache-fi \
-  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-    ac_prev=cache_file ;;
-  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-    cache_file=$ac_optarg ;;
-
-  --config-cache | -C)
-    cache_file=config.cache ;;
-
-  -datadir | --datadir | --datadi | --datad)
-    ac_prev=datadir ;;
-  -datadir=* | --datadir=* | --datadi=* | --datad=*)
-    datadir=$ac_optarg ;;
-
-  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
-  | --dataroo | --dataro | --datar)
-    ac_prev=datarootdir ;;
-  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
-  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
-    datarootdir=$ac_optarg ;;
-
-  -disable-* | --disable-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error "invalid feature name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"enable_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval enable_$ac_useropt=no ;;
-
-  -docdir | --docdir | --docdi | --doc | --do)
-    ac_prev=docdir ;;
-  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
-    docdir=$ac_optarg ;;
-
-  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
-    ac_prev=dvidir ;;
-  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
-    dvidir=$ac_optarg ;;
-
-  -enable-* | --enable-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error "invalid feature name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"enable_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval enable_$ac_useropt=\$ac_optarg ;;
-
-  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-  | --exec | --exe | --ex)
-    ac_prev=exec_prefix ;;
-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-  | --exec=* | --exe=* | --ex=*)
-    exec_prefix=$ac_optarg ;;
-
-  -gas | --gas | --ga | --g)
-    # Obsolete; use --with-gas.
-    with_gas=yes ;;
-
-  -help | --help | --hel | --he | -h)
-    ac_init_help=long ;;
-  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
-    ac_init_help=recursive ;;
-  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
-    ac_init_help=short ;;
-
-  -host | --host | --hos | --ho)
-    ac_prev=host_alias ;;
-  -host=* | --host=* | --hos=* | --ho=*)
-    host_alias=$ac_optarg ;;
-
-  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
-    ac_prev=htmldir ;;
-  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
-  | --ht=*)
-    htmldir=$ac_optarg ;;
-
-  -includedir | --includedir | --includedi | --included | --include \
-  | --includ | --inclu | --incl | --inc)
-    ac_prev=includedir ;;
-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-  | --includ=* | --inclu=* | --incl=* | --inc=*)
-    includedir=$ac_optarg ;;
-
-  -infodir | --infodir | --infodi | --infod | --info | --inf)
-    ac_prev=infodir ;;
-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-    infodir=$ac_optarg ;;
-
-  -libdir | --libdir | --libdi | --libd)
-    ac_prev=libdir ;;
-  -libdir=* | --libdir=* | --libdi=* | --libd=*)
-    libdir=$ac_optarg ;;
-
-  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-  | --libexe | --libex | --libe)
-    ac_prev=libexecdir ;;
-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-  | --libexe=* | --libex=* | --libe=*)
-    libexecdir=$ac_optarg ;;
-
-  -localedir | --localedir | --localedi | --localed | --locale)
-    ac_prev=localedir ;;
-  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
-    localedir=$ac_optarg ;;
-
-  -localstatedir | --localstatedir | --localstatedi | --localstated \
-  | --localstate | --localstat | --localsta | --localst | --locals)
-    ac_prev=localstatedir ;;
-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
-    localstatedir=$ac_optarg ;;
-
-  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-    ac_prev=mandir ;;
-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-    mandir=$ac_optarg ;;
-
-  -nfp | --nfp | --nf)
-    # Obsolete; use --without-fp.
-    with_fp=no ;;
-
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c | -n)
-    no_create=yes ;;
-
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-    no_recursion=yes ;;
-
-  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
-  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
-  | --oldin | --oldi | --old | --ol | --o)
-    ac_prev=oldincludedir ;;
-  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
-  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
-  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-    oldincludedir=$ac_optarg ;;
-
-  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-    ac_prev=prefix ;;
-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-    prefix=$ac_optarg ;;
-
-  -program-prefix | --program-prefix | --program-prefi | --program-pref \
-  | --program-pre | --program-pr | --program-p)
-    ac_prev=program_prefix ;;
-  -program-prefix=* | --program-prefix=* | --program-prefi=* \
-  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-    program_prefix=$ac_optarg ;;
-
-  -program-suffix | --program-suffix | --program-suffi | --program-suff \
-  | --program-suf | --program-su | --program-s)
-    ac_prev=program_suffix ;;
-  -program-suffix=* | --program-suffix=* | --program-suffi=* \
-  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-    program_suffix=$ac_optarg ;;
-
-  -program-transform-name | --program-transform-name \
-  | --program-transform-nam | --program-transform-na \
-  | --program-transform-n | --program-transform- \
-  | --program-transform | --program-transfor \
-  | --program-transfo | --program-transf \
-  | --program-trans | --program-tran \
-  | --progr-tra | --program-tr | --program-t)
-    ac_prev=program_transform_name ;;
-  -program-transform-name=* | --program-transform-name=* \
-  | --program-transform-nam=* | --program-transform-na=* \
-  | --program-transform-n=* | --program-transform-=* \
-  | --program-transform=* | --program-transfor=* \
-  | --program-transfo=* | --program-transf=* \
-  | --program-trans=* | --program-tran=* \
-  | --progr-tra=* | --program-tr=* | --program-t=*)
-    program_transform_name=$ac_optarg ;;
-
-  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
-    ac_prev=pdfdir ;;
-  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
-    pdfdir=$ac_optarg ;;
-
-  -psdir | --psdir | --psdi | --psd | --ps)
-    ac_prev=psdir ;;
-  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
-    psdir=$ac_optarg ;;
-
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil)
-    silent=yes ;;
-
-  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-    ac_prev=sbindir ;;
-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-  | --sbi=* | --sb=*)
-    sbindir=$ac_optarg ;;
-
-  -sharedstatedir | --sharedstatedir | --sharedstatedi \
-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-  | --sharedst | --shareds | --shared | --share | --shar \
-  | --sha | --sh)
-    ac_prev=sharedstatedir ;;
-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-  | --sha=* | --sh=*)
-    sharedstatedir=$ac_optarg ;;
-
-  -site | --site | --sit)
-    ac_prev=site ;;
-  -site=* | --site=* | --sit=*)
-    site=$ac_optarg ;;
-
-  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-    ac_prev=srcdir ;;
-  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-    srcdir=$ac_optarg ;;
-
-  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-  | --syscon | --sysco | --sysc | --sys | --sy)
-    ac_prev=sysconfdir ;;
-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-    sysconfdir=$ac_optarg ;;
-
-  -target | --target | --targe | --targ | --tar | --ta | --t)
-    ac_prev=target_alias ;;
-  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-    target_alias=$ac_optarg ;;
-
-  -v | -verbose | --verbose | --verbos | --verbo | --verb)
-    verbose=yes ;;
-
-  -version | --version | --versio | --versi | --vers | -V)
-    ac_init_version=: ;;
-
-  -with-* | --with-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error "invalid package name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"with_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval with_$ac_useropt=\$ac_optarg ;;
-
-  -without-* | --without-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error "invalid package name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"with_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval with_$ac_useropt=no ;;
-
-  --x)
-    # Obsolete; use --with-x.
-    with_x=yes ;;
-
-  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
-  | --x-incl | --x-inc | --x-in | --x-i)
-    ac_prev=x_includes ;;
-  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
-  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-    x_includes=$ac_optarg ;;
-
-  -x-libraries | --x-libraries | --x-librarie | --x-librari \
-  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
-    ac_prev=x_libraries ;;
-  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
-  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-    x_libraries=$ac_optarg ;;
-
-  -*) as_fn_error "unrecognized option: \`$ac_option'
-Try \`$0 --help' for more information."
-    ;;
-
-  *=*)
-    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
-    # Reject names that are not valid shell variable names.
-    case $ac_envvar in #(
-      '' | [0-9]* | *[!_$as_cr_alnum]* )
-      as_fn_error "invalid variable name: \`$ac_envvar'" ;;
-    esac
-    eval $ac_envvar=\$ac_optarg
-    export $ac_envvar ;;
-
-  *)
-    # FIXME: should be removed in autoconf 3.0.
-    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
-    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
-    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
-    ;;
-
-  esac
-done
-
-if test -n "$ac_prev"; then
-  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-  as_fn_error "missing argument to $ac_option"
-fi
-
-if test -n "$ac_unrecognized_opts"; then
-  case $enable_option_checking in
-    no) ;;
-    fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;;
-    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
-  esac
-fi
-
-# Check all directory arguments for consistency.
-for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
-		datadir sysconfdir sharedstatedir localstatedir includedir \
-		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir
-do
-  eval ac_val=\$$ac_var
-  # Remove trailing slashes.
-  case $ac_val in
-    */ )
-      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
-      eval $ac_var=\$ac_val;;
-  esac
-  # Be sure to have absolute directory names.
-  case $ac_val in
-    [\\/$]* | ?:[\\/]* )  continue;;
-    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
-  esac
-  as_fn_error "expected an absolute directory name for --$ac_var: $ac_val"
-done
-
-# There might be people who depend on the old broken behavior: `$host'
-# used to hold the argument of --host etc.
-# FIXME: To remove some day.
-build=$build_alias
-host=$host_alias
-target=$target_alias
-
-# FIXME: To remove some day.
-if test "x$host_alias" != x; then
-  if test "x$build_alias" = x; then
-    cross_compiling=maybe
-    $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
-    If a cross compiler is detected then cross compile mode will be used." >&2
-  elif test "x$build_alias" != "x$host_alias"; then
-    cross_compiling=yes
-  fi
-fi
-
-ac_tool_prefix=
-test -n "$host_alias" && ac_tool_prefix=$host_alias-
-
-test "$silent" = yes && exec 6>/dev/null
-
-
-ac_pwd=`pwd` && test -n "$ac_pwd" &&
-ac_ls_di=`ls -di .` &&
-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
-  as_fn_error "working directory cannot be determined"
-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
-  as_fn_error "pwd does not report name of working directory"
-
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
-  ac_srcdir_defaulted=yes
-  # Try the directory containing this script, then the parent directory.
-  ac_confdir=`$as_dirname -- "$as_myself" ||
-$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_myself" : 'X\(//\)[^/]' \| \
-	 X"$as_myself" : 'X\(//\)$' \| \
-	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-  srcdir=$ac_confdir
-  if test ! -r "$srcdir/$ac_unique_file"; then
-    srcdir=..
-  fi
-else
-  ac_srcdir_defaulted=no
-fi
-if test ! -r "$srcdir/$ac_unique_file"; then
-  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
-  as_fn_error "cannot find sources ($ac_unique_file) in $srcdir"
-fi
-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
-ac_abs_confdir=`(
-	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg"
-	pwd)`
-# When building in place, set srcdir=.
-if test "$ac_abs_confdir" = "$ac_pwd"; then
-  srcdir=.
-fi
-# Remove unnecessary trailing slashes from srcdir.
-# Double slashes in file names in object file debugging info
-# mess up M-x gdb in Emacs.
-case $srcdir in
-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
-esac
-for ac_var in $ac_precious_vars; do
-  eval ac_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_env_${ac_var}_value=\$${ac_var}
-  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_cv_env_${ac_var}_value=\$${ac_var}
-done
-
-#
-# Report the --help message.
-#
-if test "$ac_init_help" = "long"; then
-  # Omit some internal or obsolete options to make the list less imposing.
-  # This message is too long to be a string in the A/UX 3.1 sh.
-  cat <<_ACEOF
-\`configure' configures muParser 1.34 to adapt to many kinds of systems.
-
-Usage: $0 [OPTION]... [VAR=VALUE]...
-
-To assign environment variables (e.g., CC, CFLAGS...), specify them as
-VAR=VALUE.  See below for descriptions of some of the useful variables.
-
-Defaults for the options are specified in brackets.
-
-Configuration:
-  -h, --help              display this help and exit
-      --help=short        display options specific to this package
-      --help=recursive    display the short help of all the included packages
-  -V, --version           display version information and exit
-  -q, --quiet, --silent   do not print \`checking...' messages
-      --cache-file=FILE   cache test results in FILE [disabled]
-  -C, --config-cache      alias for \`--cache-file=config.cache'
-  -n, --no-create         do not create output files
-      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
-
-Installation directories:
-  --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [$ac_default_prefix]
-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          [PREFIX]
-
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
-  --bindir=DIR            user executables [EPREFIX/bin]
-  --sbindir=DIR           system admin executables [EPREFIX/sbin]
-  --libexecdir=DIR        program executables [EPREFIX/libexec]
-  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
-  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
-  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
-  --libdir=DIR            object code libraries [EPREFIX/lib]
-  --includedir=DIR        C header files [PREFIX/include]
-  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
-  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
-  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
-  --infodir=DIR           info documentation [DATAROOTDIR/info]
-  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
-  --mandir=DIR            man documentation [DATAROOTDIR/man]
-  --docdir=DIR            documentation root [DATAROOTDIR/doc/muparser]
-  --htmldir=DIR           html documentation [DOCDIR]
-  --dvidir=DIR            dvi documentation [DOCDIR]
-  --pdfdir=DIR            pdf documentation [DOCDIR]
-  --psdir=DIR             ps documentation [DOCDIR]
-_ACEOF
-
-  cat <<\_ACEOF
-
-System types:
-  --build=BUILD     configure for building on BUILD [guessed]
-  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
-  --target=TARGET   configure for building compilers for TARGET [HOST]
-_ACEOF
-fi
-
-if test -n "$ac_init_help"; then
-  case $ac_init_help in
-     short | recursive ) echo "Configuration of muParser 1.34:";;
-   esac
-  cat <<\_ACEOF
-
-Optional Features:
-  --disable-option-checking  ignore unrecognized --enable/--with options
-  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
-  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-debug          Builds in debug mode
-  --enable-shared         Builds in shared mode
-  --enable-samples        Builds the library samples, too
-  --enable-omf            use OMF object format (OS/2)
-  --disable-dependency-tracking
-                          don't use dependency tracking even if the compiler
-                          can
-
-Some influential environment variables:
-  CC          C compiler command
-  CFLAGS      C compiler flags
-  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
-              nonstandard directory <lib dir>
-  LIBS        libraries to pass to the linker, e.g. -l<library>
-  CPPFLAGS    C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
-              you have headers in a nonstandard directory <include dir>
-  CXX         C++ compiler command
-  CXXFLAGS    C++ compiler flags
-  CXXCPP      C++ preprocessor
-
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-
-Report bugs to <frm at users.sourceforge.net>.
-_ACEOF
-ac_status=$?
-fi
-
-if test "$ac_init_help" = "recursive"; then
-  # If there are subdirs, report their specific --help.
-  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
-    test -d "$ac_dir" ||
-      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
-      continue
-    ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-    cd "$ac_dir" || { ac_status=$?; continue; }
-    # Check for guested configure.
-    if test -f "$ac_srcdir/configure.gnu"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
-    elif test -f "$ac_srcdir/configure"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure" --help=recursive
-    else
-      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
-    fi || ac_status=$?
-    cd "$ac_pwd" || { ac_status=$?; break; }
-  done
-fi
-
-test -n "$ac_init_help" && exit $ac_status
-if $ac_init_version; then
-  cat <<\_ACEOF
-muParser configure 1.34
-generated by GNU Autoconf 2.64
-
-Copyright (C) 2009 Free Software Foundation, Inc.
-This configure script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it.
-_ACEOF
-  exit
-fi
-
-## ------------------------ ##
-## Autoconf initialization. ##
-## ------------------------ ##
-
-# ac_fn_c_try_compile LINENO
-# --------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
-  if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-  return $ac_retval
-
-} # ac_fn_c_try_compile
-
-# ac_fn_cxx_try_compile LINENO
-# ----------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
-ac_fn_cxx_try_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
-  if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-  return $ac_retval
-
-} # ac_fn_cxx_try_compile
-
-# ac_fn_cxx_try_cpp LINENO
-# ------------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
-ac_fn_cxx_try_cpp ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } >/dev/null && {
-	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-    ac_retval=1
-fi
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-  return $ac_retval
-
-} # ac_fn_cxx_try_cpp
-cat >config.log <<_ACEOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by muParser $as_me 1.34, which was
-generated by GNU Autoconf 2.64.  Invocation command line was
-
-  $ $0 $@
-
-_ACEOF
-exec 5>>config.log
-{
-cat <<_ASUNAME
-## --------- ##
-## Platform. ##
-## --------- ##
-
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
-
-/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
-/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
-/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
-
-_ASUNAME
-
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    $as_echo "PATH: $as_dir"
-  done
-IFS=$as_save_IFS
-
-} >&5
-
-cat >&5 <<_ACEOF
-
-
-## ----------- ##
-## Core tests. ##
-## ----------- ##
-
-_ACEOF
-
-
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Strip out --silent because we don't want to record it for future runs.
-# Also quote any args containing shell meta-characters.
-# Make two passes to allow for proper duplicate-argument suppression.
-ac_configure_args=
-ac_configure_args0=
-ac_configure_args1=
-ac_must_keep_next=false
-for ac_pass in 1 2
-do
-  for ac_arg
-  do
-    case $ac_arg in
-    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
-    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-    | -silent | --silent | --silen | --sile | --sil)
-      continue ;;
-    *\'*)
-      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    case $ac_pass in
-    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
-    2)
-      as_fn_append ac_configure_args1 " '$ac_arg'"
-      if test $ac_must_keep_next = true; then
-	ac_must_keep_next=false # Got value, back to normal.
-      else
-	case $ac_arg in
-	  *=* | --config-cache | -C | -disable-* | --disable-* \
-	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
-	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
-	  | -with-* | --with-* | -without-* | --without-* | --x)
-	    case "$ac_configure_args0 " in
-	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
-	    esac
-	    ;;
-	  -* ) ac_must_keep_next=true ;;
-	esac
-      fi
-      as_fn_append ac_configure_args " '$ac_arg'"
-      ;;
-    esac
-  done
-done
-{ ac_configure_args0=; unset ac_configure_args0;}
-{ ac_configure_args1=; unset ac_configure_args1;}
-
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log.  We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-# WARNING: Use '\'' to represent an apostrophe within the trap.
-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
-trap 'exit_status=$?
-  # Save into config.log some information that might help in debugging.
-  {
-    echo
-
-    cat <<\_ASBOX
-## ---------------- ##
-## Cache variables. ##
-## ---------------- ##
-_ASBOX
-    echo
-    # The following way of writing the cache mishandles newlines in values,
-(
-  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) { eval $ac_var=; unset $ac_var;} ;;
-      esac ;;
-    esac
-  done
-  (set) 2>&1 |
-    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      sed -n \
-	"s/'\''/'\''\\\\'\'''\''/g;
-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
-      ;; #(
-    *)
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-)
-    echo
-
-    cat <<\_ASBOX
-## ----------------- ##
-## Output variables. ##
-## ----------------- ##
-_ASBOX
-    echo
-    for ac_var in $ac_subst_vars
-    do
-      eval ac_val=\$$ac_var
-      case $ac_val in
-      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-      esac
-      $as_echo "$ac_var='\''$ac_val'\''"
-    done | sort
-    echo
-
-    if test -n "$ac_subst_files"; then
-      cat <<\_ASBOX
-## ------------------- ##
-## File substitutions. ##
-## ------------------- ##
-_ASBOX
-      echo
-      for ac_var in $ac_subst_files
-      do
-	eval ac_val=\$$ac_var
-	case $ac_val in
-	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-	esac
-	$as_echo "$ac_var='\''$ac_val'\''"
-      done | sort
-      echo
-    fi
-
-    if test -s confdefs.h; then
-      cat <<\_ASBOX
-## ----------- ##
-## confdefs.h. ##
-## ----------- ##
-_ASBOX
-      echo
-      cat confdefs.h
-      echo
-    fi
-    test "$ac_signal" != 0 &&
-      $as_echo "$as_me: caught signal $ac_signal"
-    $as_echo "$as_me: exit $exit_status"
-  } >&5
-  rm -f core *.core core.conftest.* &&
-    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
-    exit $exit_status
-' 0
-for ac_signal in 1 2 13 15; do
-  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
-done
-ac_signal=0
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -f -r conftest* confdefs.h
-
-$as_echo "/* confdefs.h */" > confdefs.h
-
-# Predefined preprocessor variables.
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
-_ACEOF
-
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
-if test -n "$CONFIG_SITE"; then
-  ac_site_file1=$CONFIG_SITE
-elif test "x$prefix" != xNONE; then
-  ac_site_file1=$prefix/share/config.site
-  ac_site_file2=$prefix/etc/config.site
-else
-  ac_site_file1=$ac_default_prefix/share/config.site
-  ac_site_file2=$ac_default_prefix/etc/config.site
-fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
-do
-  test "x$ac_site_file" = xNONE && continue
-  if test -r "$ac_site_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
-    sed 's/^/| /' "$ac_site_file" >&5
-    . "$ac_site_file"
-  fi
-done
-
-if test -r "$cache_file"; then
-  # Some versions of bash will fail to source /dev/null (special
-  # files actually), so we avoid doing that.
-  if test -f "$cache_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
-    case $cache_file in
-      [\\/]* | ?:[\\/]* ) . "$cache_file";;
-      *)                      . "./$cache_file";;
-    esac
-  fi
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
-  >$cache_file
-fi
-
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in $ac_precious_vars; do
-  eval ac_old_set=\$ac_cv_env_${ac_var}_set
-  eval ac_new_set=\$ac_env_${ac_var}_set
-  eval ac_old_val=\$ac_cv_env_${ac_var}_value
-  eval ac_new_val=\$ac_env_${ac_var}_value
-  case $ac_old_set,$ac_new_set in
-    set,)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,set)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,);;
-    *)
-      if test "x$ac_old_val" != "x$ac_new_val"; then
-	# differences in whitespace do not lead to failure.
-	ac_old_val_w=`echo x $ac_old_val`
-	ac_new_val_w=`echo x $ac_new_val`
-	if test "$ac_old_val_w" != "$ac_new_val_w"; then
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-	  ac_cache_corrupted=:
-	else
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
-	  eval $ac_var=\$ac_old_val
-	fi
-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
-$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
-$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
-      fi;;
-  esac
-  # Pass precious variables to config.status.
-  if test "$ac_new_set" = set; then
-    case $ac_new_val in
-    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
-    *) ac_arg=$ac_var=$ac_new_val ;;
-    esac
-    case " $ac_configure_args " in
-      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
-      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
-    esac
-  fi
-done
-if $ac_cache_corrupted; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
-fi
-## -------------------- ##
-## Main body of script. ##
-## -------------------- ##
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-
-ac_aux_dir=
-for ac_dir in build/autoconf "$srcdir"/build/autoconf; do
-  for ac_t in install-sh install.sh shtool; do
-    if test -f "$ac_dir/$ac_t"; then
-      ac_aux_dir=$ac_dir
-      ac_install_sh="$ac_aux_dir/$ac_t -c"
-      break 2
-    fi
-  done
-done
-if test -z "$ac_aux_dir"; then
-  as_fn_error "cannot find install-sh, install.sh, or shtool in build/autoconf \"$srcdir\"/build/autoconf" "$LINENO" 5
-fi
-
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
-
-
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-# some helpers
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-## CONFIGURE CHECKS
-#####################################################################
-
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
-  as_fn_error "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if test "${ac_cv_build+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_build_alias=$build_alias
-test "x$ac_build_alias" = x &&
-  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
-test "x$ac_build_alias" = x &&
-  as_fn_error "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
-  as_fn_error "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
-case $ac_cv_build in
-*-*-*) ;;
-*) as_fn_error "invalid value of canonical build" "$LINENO" 5;;
-esac
-build=$ac_cv_build
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_build
-shift
-build_cpu=$1
-build_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-build_os=$*
-IFS=$ac_save_IFS
-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if test "${ac_cv_host+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$host_alias" = x; then
-  ac_cv_host=$ac_cv_build
-else
-  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
-    as_fn_error "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
-case $ac_cv_host in
-*-*-*) ;;
-*) as_fn_error "invalid value of canonical host" "$LINENO" 5;;
-esac
-host=$ac_cv_host
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_host
-shift
-host_cpu=$1
-host_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-host_os=$*
-IFS=$ac_save_IFS
-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5
-$as_echo_n "checking target system type... " >&6; }
-if test "${ac_cv_target+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$target_alias" = x; then
-  ac_cv_target=$ac_cv_host
-else
-  ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
-    as_fn_error "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
-$as_echo "$ac_cv_target" >&6; }
-case $ac_cv_target in
-*-*-*) ;;
-*) as_fn_error "invalid value of canonical target" "$LINENO" 5;;
-esac
-target=$ac_cv_target
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_target
-shift
-target_cpu=$1
-target_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-target_os=$*
-IFS=$ac_save_IFS
-case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
-
-
-# The aliases save the names the user supplied, while $host etc.
-# will get canonicalized.
-test -n "$target_alias" &&
-  test "$program_prefix$program_suffix$program_transform_name" = \
-    NONENONEs,x,x, &&
-  program_prefix=${target_alias}-
-
-
-CFLAGS=
-CXXFLAGS=
-CPPFLAGS=
-
-for ac_prog in gawk mawk nawk awk
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_AWK+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AWK"; then
-  ac_cv_prog_AWK="$AWK" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_AWK="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AWK=$ac_cv_prog_AWK
-if test -n "$AWK"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
-$as_echo "$AWK" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$AWK" && break
-done
-
-# Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in #((
-  ./ | .// | /[cC]/* | \
-  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
-  /usr/ucb/* ) ;;
-  *)
-    # OSF1 and SCO ODT 3.0 have their own names for install.
-    # Don't use installbsd from OSF since it installs stuff as root
-    # by default.
-    for ac_prog in ginstall scoinst install; do
-      for ac_exec_ext in '' $ac_executable_extensions; do
-	if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
-	  if test $ac_prog = install &&
-	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-	    # AIX install.  It has an incompatible calling convention.
-	    :
-	  elif test $ac_prog = install &&
-	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-	    # program-specific install script used by HP pwplus--don't use.
-	    :
-	  else
-	    rm -rf conftest.one conftest.two conftest.dir
-	    echo one > conftest.one
-	    echo two > conftest.two
-	    mkdir conftest.dir
-	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
-	      test -s conftest.one && test -s conftest.two &&
-	      test -s conftest.dir/conftest.one &&
-	      test -s conftest.dir/conftest.two
-	    then
-	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-	      break 3
-	    fi
-	  fi
-	fi
-      done
-    done
-    ;;
-esac
-
-  done
-IFS=$as_save_IFS
-
-rm -rf conftest.one conftest.two conftest.dir
-
-fi
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL=$ac_cv_path_install
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    INSTALL=$ac_install_sh
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
-$as_echo_n "checking whether ln -s works... " >&6; }
-LN_S=$as_ln_s
-if test "$LN_S" = "ln -s"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
-$as_echo "no, using $LN_S" >&6; }
-fi
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_RANLIB+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
-  ac_ct_RANLIB=$RANLIB
-  # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_RANLIB"; then
-  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_RANLIB="ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_RANLIB" = x; then
-    RANLIB=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    RANLIB=$ac_ct_RANLIB
-  fi
-else
-  RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
-  ac_ct_CC=$CC
-  # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CC="gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-else
-  CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
-          if test -n "$ac_tool_prefix"; then
-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="${ac_tool_prefix}cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  fi
-fi
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-       ac_prog_rejected=yes
-       continue
-     fi
-    ac_cv_prog_CC="cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# != 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
-  fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
-  if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl.exe
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CC" && break
-  done
-fi
-if test -z "$CC"; then
-  ac_ct_CC=$CC
-  for ac_prog in cl.exe
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CC" && break
-done
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-fi
-
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "no acceptable C compiler found in \$PATH
-See \`config.log' for more details." "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    rm -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdio.h>
-int
-main ()
-{
-FILE *f = fopen ("conftest.out", "w");
- return ferror (f) || fclose (f) != 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out conftest.out"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-
-# The possible output files:
-ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
-
-ac_rmfiles=
-for ac_file in $ac_files
-do
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
-  esac
-done
-rm -f $ac_rmfiles
-
-if { { ac_try="$ac_link_default"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link_default") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
-# in a Makefile.  We should not override ac_cv_exeext if it was cached,
-# so that the user can short-circuit this test for compilers unknown to
-# Autoconf.
-for ac_file in $ac_files ''
-do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
-	;;
-    [ab].out )
-	# We found the default executable, but exeext='' is most
-	# certainly right.
-	break;;
-    *.* )
-	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
-	then :; else
-	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-	fi
-	# We set ac_cv_exeext here because the later test for it is not
-	# safe: cross compilers may not add the suffix if given an `-o'
-	# argument, so we may need to know it at that point already.
-	# Even if this section looks crufty: it has the advantage of
-	# actually working.
-	break;;
-    * )
-	break;;
-  esac
-done
-test "$ac_cv_exeext" = no && ac_cv_exeext=
-
-else
-  ac_file=''
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
-if test -z "$ac_file"; then :
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ as_fn_set_status 77
-as_fn_error "C compiler cannot create executables
-See \`config.log' for more details." "$LINENO" 5; }; }
-fi
-ac_exeext=$ac_cv_exeext
-
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-# If not cross compiling, check that we can run a simple program.
-if test "$cross_compiling" != yes; then
-  if { ac_try='./$ac_file'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then
-    cross_compiling=no
-  else
-    if test "$cross_compiling" = maybe; then
-	cross_compiling=yes
-    else
-	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." "$LINENO" 5; }
-    fi
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out conftest.out
-ac_clean_files=$ac_clean_files_save
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
-if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in conftest.exe conftest conftest.*; do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-	  break;;
-    * ) break;;
-  esac
-done
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." "$LINENO" 5; }
-fi
-rm -f conftest$ac_cv_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
-
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if test "${ac_cv_objext+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  for ac_file in conftest.o conftest.obj conftest.*; do
-  test -f "$ac_file" || continue;
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
-    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
-       break;;
-  esac
-done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." "$LINENO" 5; }
-fi
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if test "${ac_cv_c_compiler_gnu+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GCC=yes
-else
-  GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if test "${ac_cv_prog_cc_g+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_prog_cc_g=no
-   CFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-else
-  CFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
-  ac_c_werror_flag=$ac_save_c_werror_flag
-	 CFLAGS="-g"
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if test "${ac_cv_prog_cc_c89+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-
-fi
-
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-if test -z "$CXX"; then
-  if test -n "$CCC"; then
-    CXX=$CCC
-  else
-    if test -n "$ac_tool_prefix"; then
-  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CXX+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CXX"; then
-  ac_cv_prog_CXX="$CXX" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CXX=$ac_cv_prog_CXX
-if test -n "$CXX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
-$as_echo "$CXX" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CXX" && break
-  done
-fi
-if test -z "$CXX"; then
-  ac_ct_CXX=$CXX
-  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CXX"; then
-  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CXX="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
-if test -n "$ac_ct_CXX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
-$as_echo "$ac_ct_CXX" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CXX" && break
-done
-
-  if test "x$ac_ct_CXX" = x; then
-    CXX="g++"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CXX=$ac_ct_CXX
-  fi
-fi
-
-  fi
-fi
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    rm -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
-$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
-if test "${ac_cv_cxx_compiler_gnu+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
-$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GXX=yes
-else
-  GXX=
-fi
-ac_test_CXXFLAGS=${CXXFLAGS+set}
-ac_save_CXXFLAGS=$CXXFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
-$as_echo_n "checking whether $CXX accepts -g... " >&6; }
-if test "${ac_cv_prog_cxx_g+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
-   ac_cxx_werror_flag=yes
-   ac_cv_prog_cxx_g=no
-   CXXFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_cv_prog_cxx_g=yes
-else
-  CXXFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-
-else
-  ac_cxx_werror_flag=$ac_save_cxx_werror_flag
-	 CXXFLAGS="-g"
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_cv_prog_cxx_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
-$as_echo "$ac_cv_prog_cxx_g" >&6; }
-if test "$ac_test_CXXFLAGS" = set; then
-  CXXFLAGS=$ac_save_CXXFLAGS
-elif test $ac_cv_prog_cxx_g = yes; then
-  if test "$GXX" = yes; then
-    CXXFLAGS="-g -O2"
-  else
-    CXXFLAGS="-g"
-  fi
-else
-  if test "$GXX" = yes; then
-    CXXFLAGS="-O2"
-  else
-    CXXFLAGS=
-  fi
-fi
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5
-$as_echo_n "checking how to run the C++ preprocessor... " >&6; }
-if test -z "$CXXCPP"; then
-  if test "${ac_cv_prog_CXXCPP+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CXXCPP needs to be expanded
-    for CXXCPP in "$CXX -E" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_cxx_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-		     Syntax error
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  break
-fi
-
-    done
-    ac_cv_prog_CXXCPP=$CXXCPP
-
-fi
-  CXXCPP=$ac_cv_prog_CXXCPP
-else
-  ac_cv_prog_CXXCPP=$CXXCPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5
-$as_echo "$CXXCPP" >&6; }
-ac_preproc_ok=false
-for ac_cxx_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-		     Syntax error
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "C++ preprocessor \"$CXXCPP\" fails sanity check
-See \`config.log' for more details." "$LINENO" 5; }
-fi
-
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-
-
-    default="no"
-    if [ -z "$default" ]; then
-        default="no"
-    fi
-
-    # Check whether --enable-debug was given.
-if test "${enable_debug+set}" = set; then :
-  enableval=$enable_debug;
-else
-  enableval="$default"
-fi
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the --enable-debug option" >&5
-$as_echo_n "checking for the --enable-debug option... " >&6; }
-    if [ "x$enableval" = "xyes" ]; then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-        DEBUG=1
-    else
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-        DEBUG=0
-    fi
-
-
-        if [ "x$DEBUG" = "x1" ]; then
-
-                                                CXXFLAGS="$CXXFLAGS -g -O0 -Wall -Wundef -Wno-ctor-dtor-privacy"
-        CFLAGS="$CFLAGS -g -O0 -Wall -Wundef"
-    else
-        CXXFLAGS="$CXXFLAGS -O2"
-        CFLAGS="$CFLAGS -O2"
-    fi
-
-
-    default="yes"
-    if [ -z "$default" ]; then
-        default="no"
-    fi
-
-    # Check whether --enable-shared was given.
-if test "${enable_shared+set}" = set; then :
-  enableval=$enable_shared;
-else
-  enableval="$default"
-fi
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the --enable-shared option" >&5
-$as_echo_n "checking for the --enable-shared option... " >&6; }
-    if [ "x$enableval" = "xyes" ]; then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-        SHARED=1
-    else
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-        SHARED=0
-    fi
-
-
-
-# Check whether --enable-samples was given.
-if test "${enable_samples+set}" = set; then :
-  enableval=$enable_samples;
-else
-  enableval="yes"
-fi
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the --enable-samples option" >&5
-$as_echo_n "checking for the --enable-samples option... " >&6; }
-    if [ "x$enableval" = "xyes" ]; then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-        SAMPLES=1
-    else
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-        SAMPLES=0
-    fi
-
-
-as_dir=lib; as_fn_mkdir_p
-as_dir=samples/example1; as_fn_mkdir_p
-
-
-
-
-    ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
-  ac_ct_CC=$CC
-  # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CC="gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-else
-  CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
-          if test -n "$ac_tool_prefix"; then
-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="${ac_tool_prefix}cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  fi
-fi
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-       ac_prog_rejected=yes
-       continue
-     fi
-    ac_cv_prog_CC="cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# != 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
-  fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
-  if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl.exe
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CC" && break
-  done
-fi
-if test -z "$CC"; then
-  ac_ct_CC=$CC
-  for ac_prog in cl.exe
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CC" && break
-done
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-fi
-
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "no acceptable C compiler found in \$PATH
-See \`config.log' for more details." "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    rm -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if test "${ac_cv_c_compiler_gnu+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GCC=yes
-else
-  GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if test "${ac_cv_prog_cc_g+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_prog_cc_g=no
-   CFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-else
-  CFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
-  ac_c_werror_flag=$ac_save_c_werror_flag
-	 CFLAGS="-g"
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if test "${ac_cv_prog_cc_c89+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-
-fi
-
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-
-
-    ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the Intel C compiler" >&5
-$as_echo_n "checking whether we are using the Intel C compiler... " >&6; }
-if test "${bakefile_cv_c_compiler___INTEL_COMPILER+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-             #ifndef __INTEL_COMPILER
-                choke me
-             #endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  bakefile_cv_c_compiler___INTEL_COMPILER=yes
-else
-  bakefile_cv_c_compiler___INTEL_COMPILER=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_c_compiler___INTEL_COMPILER" >&5
-$as_echo "$bakefile_cv_c_compiler___INTEL_COMPILER" >&6; }
-    if test "x$bakefile_cv_c_compiler___INTEL_COMPILER" = "xyes"; then
-        :; INTELCC=yes
-    else
-        :;
-    fi
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-
-
-        if test "$INTELCC" = "yes"; then
-
-
-    ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using Intel C compiler v8 or later" >&5
-$as_echo_n "checking whether we are using Intel C compiler v8 or later... " >&6; }
-if test "${bakefile_cv_c_compiler___INTEL_COMPILER_lt_800+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-             #ifndef __INTEL_COMPILER || __INTEL_COMPILER < 800
-                choke me
-             #endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  bakefile_cv_c_compiler___INTEL_COMPILER_lt_800=yes
-else
-  bakefile_cv_c_compiler___INTEL_COMPILER_lt_800=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_c_compiler___INTEL_COMPILER_lt_800" >&5
-$as_echo "$bakefile_cv_c_compiler___INTEL_COMPILER_lt_800" >&6; }
-    if test "x$bakefile_cv_c_compiler___INTEL_COMPILER_lt_800" = "xyes"; then
-        :; INTELCC8=yes
-    else
-        :;
-    fi
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-
-
-
-    ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using Intel C compiler v10 or later" >&5
-$as_echo_n "checking whether we are using Intel C compiler v10 or later... " >&6; }
-if test "${bakefile_cv_c_compiler___INTEL_COMPILER_lt_1000+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-             #ifndef __INTEL_COMPILER || __INTEL_COMPILER < 1000
-                choke me
-             #endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  bakefile_cv_c_compiler___INTEL_COMPILER_lt_1000=yes
-else
-  bakefile_cv_c_compiler___INTEL_COMPILER_lt_1000=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_c_compiler___INTEL_COMPILER_lt_1000" >&5
-$as_echo "$bakefile_cv_c_compiler___INTEL_COMPILER_lt_1000" >&6; }
-    if test "x$bakefile_cv_c_compiler___INTEL_COMPILER_lt_1000" = "xyes"; then
-        :; INTELCC10=yes
-    else
-        :;
-    fi
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-
-    fi
-
-        if test "x$GCC" != "xyes"; then
-        if test "xCC" = "xC"; then
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the C++ compiler requires -ext o" >&5
-$as_echo_n "checking if the C++ compiler requires -ext o... " >&6; }
-if test "${bakefile_cv_cxx_exto+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest.$ac_ext.o
-if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  for ac_file in `(ls conftest.* 2>/dev/null)`; do
-    case $ac_file in
-        conftest.$ac_ext.o)
-            bakefile_cv_cxx_exto="-ext o"
-            ;;
-        *)
-            ;;
-    esac
-done
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "cannot figure out if compiler needs -ext o: cannot compile
-See \`config.log' for more details." "$LINENO" 5; }
-
-fi
-rm -f conftest.$ac_ext.o conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_cxx_exto" >&5
-$as_echo "$bakefile_cv_cxx_exto" >&6; }
-if test "x$bakefile_cv_cxx_exto" '!=' "x"; then
-    if test "cxx" = "c"; then
-        CFLAGS="$bakefile_cv_cxx_exto $CFLAGS"
-    fi
-    if test "cxx" = "cxx"; then
-        CXXFLAGS="$bakefile_cv_cxx_exto $CXXFLAGS"
-    fi
-fi
-
-            if test "x$bakefile_cv_c_exto" '!=' "x"; then
-                unset ac_cv_prog_cc_g
-                ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if test "${ac_cv_prog_cc_g+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_prog_cc_g=no
-   CFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-else
-  CFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-
-else
-  ac_c_werror_flag=$ac_save_c_werror_flag
-	 CFLAGS="-g"
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-            fi
-        fi
-
-                        case `uname -s` in
-            AIX*)
-
-
-    ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the IBM xlC C compiler" >&5
-$as_echo_n "checking whether we are using the IBM xlC C compiler... " >&6; }
-if test "${bakefile_cv_c_compiler___xlC__+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-             #ifndef __xlC__
-                choke me
-             #endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  bakefile_cv_c_compiler___xlC__=yes
-else
-  bakefile_cv_c_compiler___xlC__=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_c_compiler___xlC__" >&5
-$as_echo "$bakefile_cv_c_compiler___xlC__" >&6; }
-    if test "x$bakefile_cv_c_compiler___xlC__" = "xyes"; then
-        :; XLCC=yes
-    else
-        :;
-    fi
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-
-                ;;
-
-            Darwin)
-
-
-    ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the Metrowerks C compiler" >&5
-$as_echo_n "checking whether we are using the Metrowerks C compiler... " >&6; }
-if test "${bakefile_cv_c_compiler___MWERKS__+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-             #ifndef __MWERKS__
-                choke me
-             #endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  bakefile_cv_c_compiler___MWERKS__=yes
-else
-  bakefile_cv_c_compiler___MWERKS__=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_c_compiler___MWERKS__" >&5
-$as_echo "$bakefile_cv_c_compiler___MWERKS__" >&6; }
-    if test "x$bakefile_cv_c_compiler___MWERKS__" = "xyes"; then
-        :; MWCC=yes
-    else
-        :;
-    fi
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-
-                if test "$MWCC" != "yes"; then
-
-
-    ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the IBM xlC C compiler" >&5
-$as_echo_n "checking whether we are using the IBM xlC C compiler... " >&6; }
-if test "${bakefile_cv_c_compiler___xlC__+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-             #ifndef __xlC__
-                choke me
-             #endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  bakefile_cv_c_compiler___xlC__=yes
-else
-  bakefile_cv_c_compiler___xlC__=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_c_compiler___xlC__" >&5
-$as_echo "$bakefile_cv_c_compiler___xlC__" >&6; }
-    if test "x$bakefile_cv_c_compiler___xlC__" = "xyes"; then
-        :; XLCC=yes
-    else
-        :;
-    fi
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-
-                fi
-                ;;
-
-            IRIX*)
-
-
-    ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the SGI C compiler" >&5
-$as_echo_n "checking whether we are using the SGI C compiler... " >&6; }
-if test "${bakefile_cv_c_compiler__SGI_COMPILER_VERSION+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-             #ifndef _SGI_COMPILER_VERSION
-                choke me
-             #endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  bakefile_cv_c_compiler__SGI_COMPILER_VERSION=yes
-else
-  bakefile_cv_c_compiler__SGI_COMPILER_VERSION=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_c_compiler__SGI_COMPILER_VERSION" >&5
-$as_echo "$bakefile_cv_c_compiler__SGI_COMPILER_VERSION" >&6; }
-    if test "x$bakefile_cv_c_compiler__SGI_COMPILER_VERSION" = "xyes"; then
-        :; SGICC=yes
-    else
-        :;
-    fi
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-
-                ;;
-
-            Linux*)
-                                                if test "$INTELCC" != "yes"; then
-
-
-    ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the Sun C compiler" >&5
-$as_echo_n "checking whether we are using the Sun C compiler... " >&6; }
-if test "${bakefile_cv_c_compiler___SUNPRO_C+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-             #ifndef __SUNPRO_C
-                choke me
-             #endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  bakefile_cv_c_compiler___SUNPRO_C=yes
-else
-  bakefile_cv_c_compiler___SUNPRO_C=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_c_compiler___SUNPRO_C" >&5
-$as_echo "$bakefile_cv_c_compiler___SUNPRO_C" >&6; }
-    if test "x$bakefile_cv_c_compiler___SUNPRO_C" = "xyes"; then
-        :; SUNCC=yes
-    else
-        :;
-    fi
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-
-                fi
-                ;;
-
-            HP-UX*)
-
-
-    ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the HP C compiler" >&5
-$as_echo_n "checking whether we are using the HP C compiler... " >&6; }
-if test "${bakefile_cv_c_compiler___HP_cc+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-             #ifndef __HP_cc
-                choke me
-             #endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  bakefile_cv_c_compiler___HP_cc=yes
-else
-  bakefile_cv_c_compiler___HP_cc=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_c_compiler___HP_cc" >&5
-$as_echo "$bakefile_cv_c_compiler___HP_cc" >&6; }
-    if test "x$bakefile_cv_c_compiler___HP_cc" = "xyes"; then
-        :; HPCC=yes
-    else
-        :;
-    fi
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-
-                ;;
-
-            OSF1)
-
-
-    ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the Compaq C compiler" >&5
-$as_echo_n "checking whether we are using the Compaq C compiler... " >&6; }
-if test "${bakefile_cv_c_compiler___DECC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-             #ifndef __DECC
-                choke me
-             #endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  bakefile_cv_c_compiler___DECC=yes
-else
-  bakefile_cv_c_compiler___DECC=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_c_compiler___DECC" >&5
-$as_echo "$bakefile_cv_c_compiler___DECC" >&6; }
-    if test "x$bakefile_cv_c_compiler___DECC" = "xyes"; then
-        :; COMPAQCC=yes
-    else
-        :;
-    fi
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-
-                ;;
-
-            SunOS)
-
-
-    ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the Sun C compiler" >&5
-$as_echo_n "checking whether we are using the Sun C compiler... " >&6; }
-if test "${bakefile_cv_c_compiler___SUNPRO_C+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-             #ifndef __SUNPRO_C
-                choke me
-             #endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  bakefile_cv_c_compiler___SUNPRO_C=yes
-else
-  bakefile_cv_c_compiler___SUNPRO_C=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_c_compiler___SUNPRO_C" >&5
-$as_echo "$bakefile_cv_c_compiler___SUNPRO_C" >&6; }
-    if test "x$bakefile_cv_c_compiler___SUNPRO_C" = "xyes"; then
-        :; SUNCC=yes
-    else
-        :;
-    fi
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-
-                ;;
-        esac
-    fi
-
-
-
-
-
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-if test -z "$CXX"; then
-  if test -n "$CCC"; then
-    CXX=$CCC
-  else
-    if test -n "$ac_tool_prefix"; then
-  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CXX+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CXX"; then
-  ac_cv_prog_CXX="$CXX" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CXX=$ac_cv_prog_CXX
-if test -n "$CXX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
-$as_echo "$CXX" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CXX" && break
-  done
-fi
-if test -z "$CXX"; then
-  ac_ct_CXX=$CXX
-  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CXX"; then
-  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CXX="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
-if test -n "$ac_ct_CXX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
-$as_echo "$ac_ct_CXX" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CXX" && break
-done
-
-  if test "x$ac_ct_CXX" = x; then
-    CXX="g++"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CXX=$ac_ct_CXX
-  fi
-fi
-
-  fi
-fi
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    rm -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
-$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
-if test "${ac_cv_cxx_compiler_gnu+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
-$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GXX=yes
-else
-  GXX=
-fi
-ac_test_CXXFLAGS=${CXXFLAGS+set}
-ac_save_CXXFLAGS=$CXXFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
-$as_echo_n "checking whether $CXX accepts -g... " >&6; }
-if test "${ac_cv_prog_cxx_g+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
-   ac_cxx_werror_flag=yes
-   ac_cv_prog_cxx_g=no
-   CXXFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_cv_prog_cxx_g=yes
-else
-  CXXFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-
-else
-  ac_cxx_werror_flag=$ac_save_cxx_werror_flag
-	 CXXFLAGS="-g"
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_cv_prog_cxx_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
-$as_echo "$ac_cv_prog_cxx_g" >&6; }
-if test "$ac_test_CXXFLAGS" = set; then
-  CXXFLAGS=$ac_save_CXXFLAGS
-elif test $ac_cv_prog_cxx_g = yes; then
-  if test "$GXX" = yes; then
-    CXXFLAGS="-g -O2"
-  else
-    CXXFLAGS="-g"
-  fi
-else
-  if test "$GXX" = yes; then
-    CXXFLAGS="-O2"
-  else
-    CXXFLAGS=
-  fi
-fi
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-
-
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the Intel C++ compiler" >&5
-$as_echo_n "checking whether we are using the Intel C++ compiler... " >&6; }
-if test "${bakefile_cv_cxx_compiler___INTEL_COMPILER+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-             #ifndef __INTEL_COMPILER
-                choke me
-             #endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  bakefile_cv_cxx_compiler___INTEL_COMPILER=yes
-else
-  bakefile_cv_cxx_compiler___INTEL_COMPILER=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_cxx_compiler___INTEL_COMPILER" >&5
-$as_echo "$bakefile_cv_cxx_compiler___INTEL_COMPILER" >&6; }
-    if test "x$bakefile_cv_cxx_compiler___INTEL_COMPILER" = "xyes"; then
-        :; INTELCXX=yes
-    else
-        :;
-    fi
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-
-
-        if test "$INTELCXX" = "yes"; then
-
-
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using Intel C++ compiler v8 or later" >&5
-$as_echo_n "checking whether we are using Intel C++ compiler v8 or later... " >&6; }
-if test "${bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_800+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-             #ifndef __INTEL_COMPILER || __INTEL_COMPILER < 800
-                choke me
-             #endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_800=yes
-else
-  bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_800=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_800" >&5
-$as_echo "$bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_800" >&6; }
-    if test "x$bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_800" = "xyes"; then
-        :; INTELCXX8=yes
-    else
-        :;
-    fi
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-
-
-
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using Intel C++ compiler v10 or later" >&5
-$as_echo_n "checking whether we are using Intel C++ compiler v10 or later... " >&6; }
-if test "${bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_1000+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-             #ifndef __INTEL_COMPILER || __INTEL_COMPILER < 1000
-                choke me
-             #endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_1000=yes
-else
-  bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_1000=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_1000" >&5
-$as_echo "$bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_1000" >&6; }
-    if test "x$bakefile_cv_cxx_compiler___INTEL_COMPILER_lt_1000" = "xyes"; then
-        :; INTELCXX10=yes
-    else
-        :;
-    fi
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-
-    fi
-
-        if test "x$GCXX" != "xyes"; then
-        if test "xCXX" = "xC"; then
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the C++ compiler requires -ext o" >&5
-$as_echo_n "checking if the C++ compiler requires -ext o... " >&6; }
-if test "${bakefile_cv_cxx_exto+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest.$ac_ext.o
-if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  for ac_file in `(ls conftest.* 2>/dev/null)`; do
-    case $ac_file in
-        conftest.$ac_ext.o)
-            bakefile_cv_cxx_exto="-ext o"
-            ;;
-        *)
-            ;;
-    esac
-done
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "cannot figure out if compiler needs -ext o: cannot compile
-See \`config.log' for more details." "$LINENO" 5; }
-
-fi
-rm -f conftest.$ac_ext.o conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_cxx_exto" >&5
-$as_echo "$bakefile_cv_cxx_exto" >&6; }
-if test "x$bakefile_cv_cxx_exto" '!=' "x"; then
-    if test "cxx" = "c"; then
-        CFLAGS="$bakefile_cv_cxx_exto $CFLAGS"
-    fi
-    if test "cxx" = "cxx"; then
-        CXXFLAGS="$bakefile_cv_cxx_exto $CXXFLAGS"
-    fi
-fi
-
-            if test "x$bakefile_cv_c_exto" '!=' "x"; then
-                unset ac_cv_prog_cc_g
-                ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if test "${ac_cv_prog_cc_g+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_prog_cc_g=no
-   CFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-else
-  CFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-
-else
-  ac_c_werror_flag=$ac_save_c_werror_flag
-	 CFLAGS="-g"
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-            fi
-        fi
-
-                        case `uname -s` in
-            AIX*)
-
-
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the IBM xlC C++ compiler" >&5
-$as_echo_n "checking whether we are using the IBM xlC C++ compiler... " >&6; }
-if test "${bakefile_cv_cxx_compiler___xlC__+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-             #ifndef __xlC__
-                choke me
-             #endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  bakefile_cv_cxx_compiler___xlC__=yes
-else
-  bakefile_cv_cxx_compiler___xlC__=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_cxx_compiler___xlC__" >&5
-$as_echo "$bakefile_cv_cxx_compiler___xlC__" >&6; }
-    if test "x$bakefile_cv_cxx_compiler___xlC__" = "xyes"; then
-        :; XLCXX=yes
-    else
-        :;
-    fi
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-
-                ;;
-
-            Darwin)
-
-
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the Metrowerks C++ compiler" >&5
-$as_echo_n "checking whether we are using the Metrowerks C++ compiler... " >&6; }
-if test "${bakefile_cv_cxx_compiler___MWERKS__+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-             #ifndef __MWERKS__
-                choke me
-             #endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  bakefile_cv_cxx_compiler___MWERKS__=yes
-else
-  bakefile_cv_cxx_compiler___MWERKS__=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_cxx_compiler___MWERKS__" >&5
-$as_echo "$bakefile_cv_cxx_compiler___MWERKS__" >&6; }
-    if test "x$bakefile_cv_cxx_compiler___MWERKS__" = "xyes"; then
-        :; MWCXX=yes
-    else
-        :;
-    fi
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-
-                if test "$MWCXX" != "yes"; then
-
-
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the IBM xlC C++ compiler" >&5
-$as_echo_n "checking whether we are using the IBM xlC C++ compiler... " >&6; }
-if test "${bakefile_cv_cxx_compiler___xlC__+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-             #ifndef __xlC__
-                choke me
-             #endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  bakefile_cv_cxx_compiler___xlC__=yes
-else
-  bakefile_cv_cxx_compiler___xlC__=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_cxx_compiler___xlC__" >&5
-$as_echo "$bakefile_cv_cxx_compiler___xlC__" >&6; }
-    if test "x$bakefile_cv_cxx_compiler___xlC__" = "xyes"; then
-        :; XLCXX=yes
-    else
-        :;
-    fi
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-
-                fi
-                ;;
-
-            IRIX*)
-
-
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the SGI C++ compiler" >&5
-$as_echo_n "checking whether we are using the SGI C++ compiler... " >&6; }
-if test "${bakefile_cv_cxx_compiler__SGI_COMPILER_VERSION+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-             #ifndef _SGI_COMPILER_VERSION
-                choke me
-             #endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  bakefile_cv_cxx_compiler__SGI_COMPILER_VERSION=yes
-else
-  bakefile_cv_cxx_compiler__SGI_COMPILER_VERSION=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_cxx_compiler__SGI_COMPILER_VERSION" >&5
-$as_echo "$bakefile_cv_cxx_compiler__SGI_COMPILER_VERSION" >&6; }
-    if test "x$bakefile_cv_cxx_compiler__SGI_COMPILER_VERSION" = "xyes"; then
-        :; SGICXX=yes
-    else
-        :;
-    fi
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-
-                ;;
-
-            Linux*)
-                                                if test "$INTELCXX" != "yes"; then
-
-
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the Sun C++ compiler" >&5
-$as_echo_n "checking whether we are using the Sun C++ compiler... " >&6; }
-if test "${bakefile_cv_cxx_compiler___SUNPRO_CC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-             #ifndef __SUNPRO_CC
-                choke me
-             #endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  bakefile_cv_cxx_compiler___SUNPRO_CC=yes
-else
-  bakefile_cv_cxx_compiler___SUNPRO_CC=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_cxx_compiler___SUNPRO_CC" >&5
-$as_echo "$bakefile_cv_cxx_compiler___SUNPRO_CC" >&6; }
-    if test "x$bakefile_cv_cxx_compiler___SUNPRO_CC" = "xyes"; then
-        :; SUNCXX=yes
-    else
-        :;
-    fi
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-
-                fi
-                ;;
-
-            HP-UX*)
-
-
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the HP C++ compiler" >&5
-$as_echo_n "checking whether we are using the HP C++ compiler... " >&6; }
-if test "${bakefile_cv_cxx_compiler___HP_aCC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-             #ifndef __HP_aCC
-                choke me
-             #endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  bakefile_cv_cxx_compiler___HP_aCC=yes
-else
-  bakefile_cv_cxx_compiler___HP_aCC=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_cxx_compiler___HP_aCC" >&5
-$as_echo "$bakefile_cv_cxx_compiler___HP_aCC" >&6; }
-    if test "x$bakefile_cv_cxx_compiler___HP_aCC" = "xyes"; then
-        :; HPCXX=yes
-    else
-        :;
-    fi
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-
-                ;;
-
-            OSF1)
-
-
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the Compaq C++ compiler" >&5
-$as_echo_n "checking whether we are using the Compaq C++ compiler... " >&6; }
-if test "${bakefile_cv_cxx_compiler___DECCXX+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-             #ifndef __DECCXX
-                choke me
-             #endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  bakefile_cv_cxx_compiler___DECCXX=yes
-else
-  bakefile_cv_cxx_compiler___DECCXX=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_cxx_compiler___DECCXX" >&5
-$as_echo "$bakefile_cv_cxx_compiler___DECCXX" >&6; }
-    if test "x$bakefile_cv_cxx_compiler___DECCXX" = "xyes"; then
-        :; COMPAQCXX=yes
-    else
-        :;
-    fi
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-
-                ;;
-
-            SunOS)
-
-
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the Sun C++ compiler" >&5
-$as_echo_n "checking whether we are using the Sun C++ compiler... " >&6; }
-if test "${bakefile_cv_cxx_compiler___SUNPRO_CC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-             #ifndef __SUNPRO_CC
-                choke me
-             #endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  bakefile_cv_cxx_compiler___SUNPRO_CC=yes
-else
-  bakefile_cv_cxx_compiler___SUNPRO_CC=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_cxx_compiler___SUNPRO_CC" >&5
-$as_echo "$bakefile_cv_cxx_compiler___SUNPRO_CC" >&6; }
-    if test "x$bakefile_cv_cxx_compiler___SUNPRO_CC" = "xyes"; then
-        :; SUNCXX=yes
-    else
-        :;
-    fi
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-
-                ;;
-        esac
-    fi
-
-
-
-
-
-
-
-
-    if test "x$BAKEFILE_HOST" = "x"; then
-               if test "x${host}" = "x" ; then
-                       as_fn_error "You must call the autoconf \"CANONICAL_HOST\" macro in your configure.ac (or .in) file." "$LINENO" 5
-               fi
-
-        BAKEFILE_HOST="${host}"
-    fi
-
-    if test "x$BAKEFILE_CHECK_BASICS" != "xno"; then
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_RANLIB+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
-  ac_ct_RANLIB=$RANLIB
-  # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_RANLIB"; then
-  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_RANLIB="ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_RANLIB" = x; then
-    RANLIB=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    RANLIB=$ac_ct_RANLIB
-  fi
-else
-  RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
-$as_echo_n "checking whether ln -s works... " >&6; }
-LN_S=$as_ln_s
-if test "$LN_S" = "ln -s"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
-$as_echo "no, using $LN_S" >&6; }
-fi
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
-set x ${MAKE-make}
-ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.make <<\_ACEOF
-SHELL = /bin/sh
-all:
-	@echo '@@@%%%=$(MAKE)=@@@%%%'
-_ACEOF
-# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
-case `${MAKE-make} -f conftest.make 2>/dev/null` in
-  *@@@%%%=?*=@@@%%%*)
-    eval ac_cv_prog_make_${ac_make}_set=yes;;
-  *)
-    eval ac_cv_prog_make_${ac_make}_set=no;;
-esac
-rm -f conftest.make
-fi
-if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  SET_MAKE=
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-
-
-    if test "x$SUNCXX" = "xyes"; then
-                                AR=$CXX
-        AROPTIONS="-xar -o"
-
-    elif test "x$SGICC" = "xyes"; then
-                AR=$CXX
-        AROPTIONS="-ar -o"
-
-    else
-        if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ar; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_AR+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AR"; then
-  ac_cv_prog_AR="$AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_AR="${ac_tool_prefix}ar"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AR=$ac_cv_prog_AR
-if test -n "$AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_AR"; then
-  ac_ct_AR=$AR
-  # Extract the first word of "ar", so it can be a program name with args.
-set dummy ar; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_AR+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_AR"; then
-  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_AR="ar"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_AR=$ac_cv_prog_ac_ct_AR
-if test -n "$ac_ct_AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_AR" = x; then
-    AR="ar"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    AR=$ac_ct_AR
-  fi
-else
-  AR="$ac_cv_prog_AR"
-fi
-
-        AROPTIONS=rcu
-    fi
-
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_STRIP+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_STRIP" = x; then
-    STRIP=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    STRIP=$ac_ct_STRIP
-  fi
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}nm", so it can be a program name with args.
-set dummy ${ac_tool_prefix}nm; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_NM+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$NM"; then
-  ac_cv_prog_NM="$NM" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_NM="${ac_tool_prefix}nm"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-NM=$ac_cv_prog_NM
-if test -n "$NM"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NM" >&5
-$as_echo "$NM" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_NM"; then
-  ac_ct_NM=$NM
-  # Extract the first word of "nm", so it can be a program name with args.
-set dummy nm; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_NM+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_NM"; then
-  ac_cv_prog_ac_ct_NM="$ac_ct_NM" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_NM="nm"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_NM=$ac_cv_prog_ac_ct_NM
-if test -n "$ac_ct_NM"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NM" >&5
-$as_echo "$ac_ct_NM" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_NM" = x; then
-    NM=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    NM=$ac_ct_NM
-  fi
-else
-  NM="$ac_cv_prog_NM"
-fi
-
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for command to install directories" >&5
-$as_echo_n "checking for command to install directories... " >&6; }
-    INSTALL_TEST_DIR=acbftest$$
-    $INSTALL -d $INSTALL_TEST_DIR > /dev/null 2>&1
-    if test $? = 0 -a -d $INSTALL_TEST_DIR; then
-        rmdir $INSTALL_TEST_DIR
-                        INSTALL_DIR='$(INSTALL) -d'
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL -d" >&5
-$as_echo "$INSTALL -d" >&6; }
-    else
-        INSTALL_DIR="mkdir -p"
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: mkdir -p" >&5
-$as_echo "mkdir -p" >&6; }
-    fi
-
-
-    LDFLAGS_GUI=
-    case ${BAKEFILE_HOST} in
-        *-*-cygwin* | *-*-mingw32* )
-        LDFLAGS_GUI="-mwindows"
-    esac
-
-
-    fi
-
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking if make is GNU make" >&5
-$as_echo_n "checking if make is GNU make... " >&6; }
-if test "${bakefile_cv_prog_makeisgnu+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-
-        if ( ${SHELL-sh} -c "${MAKE-make} --version" 2> /dev/null |
-                egrep -s GNU > /dev/null); then
-            bakefile_cv_prog_makeisgnu="yes"
-        else
-            bakefile_cv_prog_makeisgnu="no"
-        fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_prog_makeisgnu" >&5
-$as_echo "$bakefile_cv_prog_makeisgnu" >&6; }
-
-    if test "x$bakefile_cv_prog_makeisgnu" = "xyes"; then
-        IF_GNU_MAKE=""
-    else
-        IF_GNU_MAKE="#"
-    fi
-
-
-
-    PLATFORM_UNIX=0
-    PLATFORM_WIN32=0
-    PLATFORM_MSDOS=0
-    PLATFORM_MAC=0
-    PLATFORM_MACOS=0
-    PLATFORM_MACOSX=0
-    PLATFORM_OS2=0
-    PLATFORM_BEOS=0
-
-    if test "x$BAKEFILE_FORCE_PLATFORM" = "x"; then
-        case "${BAKEFILE_HOST}" in
-            *-*-mingw32* )
-                PLATFORM_WIN32=1
-            ;;
-            *-pc-msdosdjgpp )
-                PLATFORM_MSDOS=1
-            ;;
-            *-pc-os2_emx | *-pc-os2-emx )
-                PLATFORM_OS2=1
-            ;;
-            *-*-darwin* )
-                PLATFORM_MAC=1
-                PLATFORM_MACOSX=1
-            ;;
-            *-*-beos* )
-                PLATFORM_BEOS=1
-            ;;
-            powerpc-apple-macos* )
-                PLATFORM_MAC=1
-                PLATFORM_MACOS=1
-            ;;
-            * )
-                PLATFORM_UNIX=1
-            ;;
-        esac
-    else
-        case "$BAKEFILE_FORCE_PLATFORM" in
-            win32 )
-                PLATFORM_WIN32=1
-            ;;
-            msdos )
-                PLATFORM_MSDOS=1
-            ;;
-            os2 )
-                PLATFORM_OS2=1
-            ;;
-            darwin )
-                PLATFORM_MAC=1
-                PLATFORM_MACOSX=1
-            ;;
-            unix )
-                PLATFORM_UNIX=1
-            ;;
-            beos )
-                PLATFORM_BEOS=1
-            ;;
-            * )
-                as_fn_error "Unknown platform: $BAKEFILE_FORCE_PLATFORM" "$LINENO" 5
-            ;;
-        esac
-    fi
-
-
-
-
-
-
-
-
-
-
-
-    # Check whether --enable-omf was given.
-if test "${enable_omf+set}" = set; then :
-  enableval=$enable_omf; bk_os2_use_omf="$enableval"
-fi
-
-
-    case "${BAKEFILE_HOST}" in
-      *-*-darwin* )
-                        if test "x$GCC" = "xyes"; then
-            CFLAGS="$CFLAGS -fno-common"
-            CXXFLAGS="$CXXFLAGS -fno-common"
-        fi
-        if test "x$XLCC" = "xyes"; then
-            CFLAGS="$CFLAGS -qnocommon"
-            CXXFLAGS="$CXXFLAGS -qnocommon"
-        fi
-        ;;
-
-      *-pc-os2_emx | *-pc-os2-emx )
-        if test "x$bk_os2_use_omf" = "xyes" ; then
-            AR=emxomfar
-            RANLIB=:
-            LDFLAGS="-Zomf $LDFLAGS"
-            CFLAGS="-Zomf $CFLAGS"
-            CXXFLAGS="-Zomf $CXXFLAGS"
-            OS2_LIBEXT="lib"
-        else
-            OS2_LIBEXT="a"
-        fi
-        ;;
-
-      i*86-*-beos* )
-        LDFLAGS="-L/boot/develop/lib/x86 $LDFLAGS"
-        ;;
-    esac
-
-
-    SO_SUFFIX="so"
-    SO_SUFFIX_MODULE="so"
-    EXEEXT=""
-    LIBPREFIX="lib"
-    LIBEXT=".a"
-    DLLPREFIX="lib"
-    DLLPREFIX_MODULE=""
-    DLLIMP_SUFFIX=""
-    dlldir="$libdir"
-
-    case "${BAKEFILE_HOST}" in
-                        ia64-hp-hpux* )
-        ;;
-        *-hp-hpux* )
-            SO_SUFFIX="sl"
-            SO_SUFFIX_MODULE="sl"
-        ;;
-        *-*-aix* )
-                                                                        SO_SUFFIX="a"
-            SO_SUFFIX_MODULE="a"
-        ;;
-        *-*-cygwin* )
-            SO_SUFFIX="dll"
-            SO_SUFFIX_MODULE="dll"
-            DLLIMP_SUFFIX="dll.a"
-            EXEEXT=".exe"
-            DLLPREFIX="cyg"
-            dlldir="$bindir"
-        ;;
-        *-*-mingw32* )
-            SO_SUFFIX="dll"
-            SO_SUFFIX_MODULE="dll"
-            DLLIMP_SUFFIX="dll.a"
-            EXEEXT=".exe"
-            DLLPREFIX=""
-            dlldir="$bindir"
-        ;;
-        *-pc-msdosdjgpp )
-            EXEEXT=".exe"
-            DLLPREFIX=""
-            dlldir="$bindir"
-        ;;
-        *-pc-os2_emx | *-pc-os2-emx )
-            SO_SUFFIX="dll"
-            SO_SUFFIX_MODULE="dll"
-            DLLIMP_SUFFIX=$OS2_LIBEXT
-            EXEEXT=".exe"
-            DLLPREFIX=""
-            LIBPREFIX=""
-            LIBEXT=".$OS2_LIBEXT"
-            dlldir="$bindir"
-        ;;
-        *-*-darwin* )
-            SO_SUFFIX="dylib"
-            SO_SUFFIX_MODULE="bundle"
-        ;;
-    esac
-
-    if test "x$DLLIMP_SUFFIX" = "x" ; then
-        DLLIMP_SUFFIX="$SO_SUFFIX"
-    fi
-
-
-
-
-
-
-
-
-
-
-
-
-        PIC_FLAG=""
-    if test "x$GCC" = "xyes"; then
-                PIC_FLAG="-fPIC"
-    fi
-
-        SHARED_LD_CC="\$(CC) -shared ${PIC_FLAG} -o"
-    SHARED_LD_CXX="\$(CXX) -shared ${PIC_FLAG} -o"
-    WINDOWS_IMPLIB=0
-
-    case "${BAKEFILE_HOST}" in
-      *-hp-hpux* )
-                if test "x$GCC" != "xyes"; then
-                        LDFLAGS="$LDFLAGS -L/usr/lib"
-
-            SHARED_LD_CC="${CC} -b -o"
-            SHARED_LD_CXX="${CXX} -b -o"
-            PIC_FLAG="+Z"
-        fi
-      ;;
-
-      *-*-linux* )
-                        if test "$INTELCC" = "yes" -a "$INTELCC8" != "yes"; then
-            PIC_FLAG="-KPIC"
-        elif test "x$SUNCXX" = "xyes"; then
-            SHARED_LD_CC="${CC} -G -o"
-            SHARED_LD_CXX="${CXX} -G -o"
-            PIC_FLAG="-KPIC"
-        fi
-      ;;
-
-      *-*-solaris2* )
-        if test "x$SUNCXX" = xyes ; then
-            SHARED_LD_CC="${CC} -G -o"
-            SHARED_LD_CXX="${CXX} -G -o"
-            PIC_FLAG="-KPIC"
-        fi
-      ;;
-
-      *-*-darwin* )
-
-D='$'
-cat <<EOF >shared-ld-sh
-#!/bin/sh
-#-----------------------------------------------------------------------------
-#-- Name:        distrib/mac/shared-ld-sh
-#-- Purpose:     Link a mach-o dynamic shared library for Darwin / Mac OS X
-#-- Author:      Gilles Depeyrot
-#-- Copyright:   (c) 2002 Gilles Depeyrot
-#-- Licence:     any use permitted
-#-----------------------------------------------------------------------------
-
-verbose=0
-args=""
-objects=""
-linking_flag="-dynamiclib"
-ldargs="-r -keep_private_externs -nostdlib"
-
-if test "x${D}CXX" = "x"; then
-    CXX="c++"
-fi
-
-while test ${D}# -gt 0; do
-    case ${D}1 in
-
-       -v)
-        verbose=1
-        ;;
-
-       -o|-compatibility_version|-current_version|-framework|-undefined|-install_name)
-        # collect these options and values
-        args="${D}{args} ${D}1 ${D}2"
-        shift
-        ;;
-
-       -arch|-isysroot)
-        # collect these options and values
-        ldargs="${D}{ldargs} ${D}1 ${D}2"
-        shift
-        ;;
-
-       -s|-Wl,*)
-        # collect these load args
-        ldargs="${D}{ldargs} ${D}1"
-        ;;
-
-       -l*|-L*|-flat_namespace|-headerpad_max_install_names)
-        # collect these options
-        args="${D}{args} ${D}1"
-        ;;
-
-       -dynamiclib|-bundle)
-        linking_flag="${D}1"
-        ;;
-
-       -*)
-        echo "shared-ld: unhandled option '${D}1'"
-        exit 1
-        ;;
-
-        *.o | *.a | *.dylib)
-        # collect object files
-        objects="${D}{objects} ${D}1"
-        ;;
-
-        *)
-        echo "shared-ld: unhandled argument '${D}1'"
-        exit 1
-        ;;
-
-    esac
-    shift
-done
-
-status=0
-
-#
-# Link one module containing all the others
-#
-if test ${D}{verbose} = 1; then
-    echo "${D}CXX ${D}{ldargs} ${D}{objects} -o master.${D}${D}.o"
-fi
-${D}CXX ${D}{ldargs} ${D}{objects} -o master.${D}${D}.o
-status=${D}?
-
-#
-# Link the shared library from the single module created, but only if the
-# previous command didn't fail:
-#
-if test ${D}{status} = 0; then
-    if test ${D}{verbose} = 1; then
-        echo "${D}CXX ${D}{linking_flag} master.${D}${D}.o ${D}{args}"
-    fi
-    ${D}CXX ${D}{linking_flag} master.${D}${D}.o ${D}{args}
-    status=${D}?
-fi
-
-#
-# Remove intermediate module
-#
-rm -f master.${D}${D}.o
-
-exit ${D}status
-EOF
-
-        chmod +x shared-ld-sh
-
-        SHARED_LD_MODULE_CC="`pwd`/shared-ld-sh -bundle -headerpad_max_install_names -o"
-        SHARED_LD_MODULE_CXX="CXX=\"\$(CXX)\" $SHARED_LD_MODULE_CC"
-
-
-                                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc 3.1 or later" >&5
-$as_echo_n "checking for gcc 3.1 or later... " >&6; }
-if test "${bakefile_cv_gcc31+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-
-           cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-                   #if (__GNUC__ < 3) || \
-                       ((__GNUC__ == 3) && (__GNUC_MINOR__ < 1))
-                       This is old gcc
-                   #endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-
-                   bakefile_cv_gcc31=yes
-
-else
-
-                   bakefile_cv_gcc31=no
-
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bakefile_cv_gcc31" >&5
-$as_echo "$bakefile_cv_gcc31" >&6; }
-        if test "$bakefile_cv_gcc31" = "no"; then
-                        SHARED_LD_CC="`pwd`/shared-ld-sh -dynamiclib -headerpad_max_install_names -o"
-            SHARED_LD_CXX="$SHARED_LD_CC"
-        else
-                        SHARED_LD_CC="\${CC} -dynamiclib -single_module -headerpad_max_install_names -o"
-            SHARED_LD_CXX="\${CXX} -dynamiclib -single_module -headerpad_max_install_names -o"
-        fi
-
-        if test "x$GCC" == "xyes"; then
-            PIC_FLAG="-dynamic -fPIC"
-        fi
-        if test "x$XLCC" = "xyes"; then
-            PIC_FLAG="-dynamic -DPIC"
-        fi
-      ;;
-
-      *-*-aix* )
-        if test "x$GCC" = "xyes"; then
-                                                            PIC_FLAG=""
-
-                                                                                    case "${BAKEFILE_HOST}" in
-                *-*-aix5* )
-                    LD_EXPFULL="-Wl,-bexpfull"
-                    ;;
-            esac
-
-            SHARED_LD_CC="\$(CC) -shared $LD_EXPFULL -o"
-            SHARED_LD_CXX="\$(CXX) -shared $LD_EXPFULL -o"
-        else
-                                    # Extract the first word of "makeC++SharedLib", so it can be a program name with args.
-set dummy makeC++SharedLib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_AIX_CXX_LD+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AIX_CXX_LD"; then
-  ac_cv_prog_AIX_CXX_LD="$AIX_CXX_LD" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_AIX_CXX_LD="makeC++SharedLib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  test -z "$ac_cv_prog_AIX_CXX_LD" && ac_cv_prog_AIX_CXX_LD="/usr/lpp/xlC/bin/makeC++SharedLib"
-fi
-fi
-AIX_CXX_LD=$ac_cv_prog_AIX_CXX_LD
-if test -n "$AIX_CXX_LD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AIX_CXX_LD" >&5
-$as_echo "$AIX_CXX_LD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-            SHARED_LD_CC="$AIX_CC_LD -p 0 -o"
-            SHARED_LD_CXX="$AIX_CXX_LD -p 0 -o"
-        fi
-      ;;
-
-      *-*-beos* )
-                        SHARED_LD_CC="${LD} -nostart -o"
-        SHARED_LD_CXX="${LD} -nostart -o"
-      ;;
-
-      *-*-irix* )
-                if test "x$GCC" != "xyes"; then
-            PIC_FLAG="-KPIC"
-        fi
-      ;;
-
-      *-*-cygwin* | *-*-mingw32* )
-        PIC_FLAG=""
-        SHARED_LD_CC="\$(CC) -shared -o"
-        SHARED_LD_CXX="\$(CXX) -shared -o"
-        WINDOWS_IMPLIB=1
-      ;;
-
-      *-pc-os2_emx | *-pc-os2-emx )
-        SHARED_LD_CC="`pwd`/dllar.sh -libf INITINSTANCE -libf TERMINSTANCE -o"
-        SHARED_LD_CXX="`pwd`/dllar.sh -libf INITINSTANCE -libf TERMINSTANCE -o"
-        PIC_FLAG=""
-
-D='$'
-cat <<EOF >dllar.sh
-#!/bin/sh
-#
-# dllar - a tool to build both a .dll and an .a file
-# from a set of object (.o) files for EMX/OS2.
-#
-#  Written by Andrew Zabolotny, bit at freya.etu.ru
-#  Ported to Unix like shell by Stefan Neis, Stefan.Neis at t-online.de
-#
-#  This script will accept a set of files on the command line.
-#  All the public symbols from the .o files will be exported into
-#  a .DEF file, then linker will be run (through gcc) against them to
-#  build a shared library consisting of all given .o files. All libraries
-#  (.a) will be first decompressed into component .o files then act as
-#  described above. You can optionally give a description (-d "description")
-#  which will be put into .DLL. To see the list of accepted options (as well
-#  as command-line format) simply run this program without options. The .DLL
-#  is built to be imported by name (there is no guarantee that new versions
-#  of the library you build will have same ordinals for same symbols).
-#
-#  dllar is free software; you can redistribute it and/or modify
-#  it under the terms of the GNU General Public License as published by
-#  the Free Software Foundation; either version 2, or (at your option)
-#  any later version.
-#
-#  dllar is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.
-#
-#  You should have received a copy of the GNU General Public License
-#  along with dllar; see the file COPYING.  If not, write to the Free
-#  Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-#  02111-1307, USA.
-
-# To successfuly run this program you will need:
-#  - Current drive should have LFN support (HPFS, ext2, network, etc)
-#    (Sometimes dllar generates filenames which won't fit 8.3 scheme)
-#  - gcc
-#    (used to build the .dll)
-#  - emxexp
-#    (used to create .def file from .o files)
-#  - emximp
-#    (used to create .a file from .def file)
-#  - GNU text utilites (cat, sort, uniq)
-#    used to process emxexp output
-#  - GNU file utilities (mv, rm)
-#  - GNU sed
-#  - lxlite (optional, see flag below)
-#    (used for general .dll cleanup)
-#
-
-flag_USE_LXLITE=1;
-
-#
-# helper functions
-# basnam, variant of basename, which does _not_ remove the path, _iff_
-#                              second argument (suffix to remove) is given
-basnam(){
-    case ${D}# in
-    1)
-        echo ${D}1 | sed 's/.*\\///' | sed 's/.*\\\\//'
-        ;;
-    2)
-        echo ${D}1 | sed 's/'${D}2'${D}//'
-        ;;
-    *)
-        echo "error in basnam ${D}*"
-        exit 8
-        ;;
-    esac
-}
-
-# Cleanup temporary files and output
-CleanUp() {
-    cd ${D}curDir
-    for i in ${D}inputFiles ; do
-        case ${D}i in
-        *!)
-            rm -rf \`basnam ${D}i !\`
-            ;;
-        *)
-            ;;
-        esac
-    done
-
-    # Kill result in case of failure as there is just to many stupid make/nmake
-    # things out there which doesn't do this.
-    if [ ${D}# -eq 0 ]; then
-        rm -f ${D}arcFile ${D}arcFile2 ${D}defFile ${D}dllFile
-    fi
-}
-
-# Print usage and exit script with rc=1.
-PrintHelp() {
- echo 'Usage: dllar.sh [-o[utput] output_file] [-i[mport] importlib_name]'
- echo '       [-name-mangler-script script.sh]'
- echo '       [-d[escription] "dll descrption"] [-cc "CC"] [-f[lags] "CFLAGS"]'
- echo '       [-ord[inals]] -ex[clude] "symbol(s)"'
- echo '       [-libf[lags] "{INIT|TERM}{GLOBAL|INSTANCE}"] [-nocrt[dll]] [-nolxl[ite]]'
- echo '       [*.o] [*.a]'
- echo '*> "output_file" should have no extension.'
- echo '   If it has the .o, .a or .dll extension, it is automatically removed.'
- echo '   The import library name is derived from this and is set to "name".a,'
- echo '   unless overridden by -import'
- echo '*> "importlib_name" should have no extension.'
- echo '   If it has the .o, or .a extension, it is automatically removed.'
- echo '   This name is used as the import library name and may be longer and'
- echo '   more descriptive than the DLL name which has to follow the old '
- echo '   8.3 convention of FAT.'
- echo '*> "script.sh may be given to override the output_file name by a'
- echo '   different name. It is mainly useful if the regular make process'
- echo '   of some package does not take into account OS/2 restriction of'
- echo '   DLL name lengths. It takes the importlib name as input and is'
- echo '   supposed to procude a shorter name as output. The script should'
- echo '   expect to get importlib_name without extension and should produce'
- echo '   a (max.) 8 letter name without extension.'
- echo '*> "cc" is used to use another GCC executable.   (default: gcc.exe)'
- echo '*> "flags" should be any set of valid GCC flags. (default: -s -Zcrtdll)'
- echo '   These flags will be put at the start of GCC command line.'
- echo '*> -ord[inals] tells dllar to export entries by ordinals. Be careful.'
- echo '*> -ex[clude] defines symbols which will not be exported. You can define'
- echo '   multiple symbols, for example -ex "myfunc yourfunc _GLOBAL*".'
- echo '   If the last character of a symbol is "*", all symbols beginning'
- echo '   with the prefix before "*" will be exclude, (see _GLOBAL* above).'
- echo '*> -libf[lags] can be used to add INITGLOBAL/INITINSTANCE and/or'
- echo '   TERMGLOBAL/TERMINSTANCE flags to the dynamically-linked library.'
- echo '*> -nocrt[dll] switch will disable linking the library against emx''s'
- echo '   C runtime DLLs.'
- echo '*> -nolxl[ite] switch will disable running lxlite on the resulting DLL.'
- echo '*> All other switches (for example -L./ or -lmylib) will be passed'
- echo '   unchanged to GCC at the end of command line.'
- echo '*> If you create a DLL from a library and you do not specify -o,'
- echo '   the basename for DLL and import library will be set to library name,'
- echo '   the initial library will be renamed to 'name'_s.a (_s for static)'
- echo '   i.e. "dllar gcc.a" will create gcc.dll and gcc.a, and the initial'
- echo '   library will be renamed into gcc_s.a.'
- echo '--------'
- echo 'Example:'
- echo '   dllar -o gcc290.dll libgcc.a -d "GNU C runtime library" -ord'
- echo '    -ex "__main __ctordtor*" -libf "INITINSTANCE TERMINSTANCE"'
- CleanUp
- exit 1
-}
-
-# Execute a command.
-# If exit code of the commnad <> 0 CleanUp() is called and we'll exit the script.
-# @Uses    Whatever CleanUp() uses.
-doCommand() {
-    echo "${D}*"
-    eval ${D}*
-    rcCmd=${D}?
-
-    if [ ${D}rcCmd -ne 0 ]; then
-        echo "command failed, exit code="${D}rcCmd
-        CleanUp
-        exit ${D}rcCmd
-    fi
-}
-
-# main routine
-# setup globals
-cmdLine=${D}*
-outFile=""
-outimpFile=""
-inputFiles=""
-renameScript=""
-description=""
-CC=gcc.exe
-CFLAGS="-s -Zcrtdll"
-EXTRA_CFLAGS=""
-EXPORT_BY_ORDINALS=0
-exclude_symbols=""
-library_flags=""
-curDir=\`pwd\`
-curDirS=curDir
-case ${D}curDirS in
-*/)
-  ;;
-*)
-  curDirS=${D}{curDirS}"/"
-  ;;
-esac
-# Parse commandline
-libsToLink=0
-omfLinking=0
-while [ ${D}1 ]; do
-    case ${D}1 in
-    -ord*)
-        EXPORT_BY_ORDINALS=1;
-        ;;
-    -o*)
-	shift
-        outFile=${D}1
-	;;
-    -i*)
-        shift
-        outimpFile=${D}1
-        ;;
-    -name-mangler-script)
-        shift
-        renameScript=${D}1
-        ;;
-    -d*)
-        shift
-        description=${D}1
-        ;;
-    -f*)
-        shift
-        CFLAGS=${D}1
-        ;;
-    -c*)
-        shift
-        CC=${D}1
-        ;;
-    -h*)
-        PrintHelp
-        ;;
-    -ex*)
-        shift
-        exclude_symbols=${D}{exclude_symbols}${D}1" "
-        ;;
-    -libf*)
-        shift
-        library_flags=${D}{library_flags}${D}1" "
-        ;;
-    -nocrt*)
-        CFLAGS="-s"
-        ;;
-    -nolxl*)
-        flag_USE_LXLITE=0
-        ;;
-    -* | /*)
-        case ${D}1 in
-        -L* | -l*)
-            libsToLink=1
-            ;;
-        -Zomf)
-            omfLinking=1
-            ;;
-        *)
-            ;;
-        esac
-        EXTRA_CFLAGS=${D}{EXTRA_CFLAGS}" "${D}1
-        ;;
-    *.dll)
-        EXTRA_CFLAGS="${D}{EXTRA_CFLAGS} \`basnam ${D}1 .dll\`"
-        if [ ${D}omfLinking -eq 1 ]; then
-            EXTRA_CFLAGS="${D}{EXTRA_CFLAGS}.lib"
-	else
-            EXTRA_CFLAGS="${D}{EXTRA_CFLAGS}.a"
-        fi
-        ;;
-    *)
-        found=0;
-        if [ ${D}libsToLink -ne 0 ]; then
-            EXTRA_CFLAGS=${D}{EXTRA_CFLAGS}" "${D}1
-        else
-            for file in ${D}1 ; do
-                if [ -f ${D}file ]; then
-                    inputFiles="${D}{inputFiles} ${D}file"
-                    found=1
-                fi
-            done
-            if [ ${D}found -eq 0 ]; then
-                echo "ERROR: No file(s) found: "${D}1
-                exit 8
-            fi
-        fi
-      ;;
-    esac
-    shift
-done # iterate cmdline words
-
-#
-if [ -z "${D}inputFiles" ]; then
-    echo "dllar: no input files"
-    PrintHelp
-fi
-
-# Now extract all .o files from .a files
-newInputFiles=""
-for file in ${D}inputFiles ; do
-    case ${D}file in
-    *.a | *.lib)
-        case ${D}file in
-        *.a)
-            suffix=".a"
-            AR="ar"
-            ;;
-        *.lib)
-            suffix=".lib"
-            AR="emxomfar"
-            EXTRA_CFLAGS="${D}EXTRA_CFLAGS -Zomf"
-            ;;
-        *)
-            ;;
-        esac
-        dirname=\`basnam ${D}file ${D}suffix\`"_%"
-        mkdir ${D}dirname
-        if [ ${D}? -ne 0 ]; then
-            echo "Failed to create subdirectory ./${D}dirname"
-            CleanUp
-            exit 8;
-        fi
-        # Append '!' to indicate archive
-        newInputFiles="${D}newInputFiles ${D}{dirname}!"
-        doCommand "cd ${D}dirname; ${D}AR x ../${D}file"
-        cd ${D}curDir
-        found=0;
-        for subfile in ${D}dirname/*.o* ; do
-            if [ -f ${D}subfile ]; then
-                found=1
-                if [ -s ${D}subfile ]; then
-	            # FIXME: This should be: is file size > 32 byte, _not_ > 0!
-                    newInputFiles="${D}newInputFiles ${D}subfile"
-                fi
-            fi
-        done
-        if [ ${D}found -eq 0 ]; then
-            echo "WARNING: there are no files in archive \\'${D}file\\'"
-        fi
-        ;;
-    *)
-        newInputFiles="${D}{newInputFiles} ${D}file"
-        ;;
-    esac
-done
-inputFiles="${D}newInputFiles"
-
-# Output filename(s).
-do_backup=0;
-if [ -z ${D}outFile ]; then
-    do_backup=1;
-    set outFile ${D}inputFiles; outFile=${D}2
-fi
-
-# If it is an archive, remove the '!' and the '_%' suffixes
-case ${D}outFile in
-*_%!)
-    outFile=\`basnam ${D}outFile _%!\`
-    ;;
-*)
-    ;;
-esac
-case ${D}outFile in
-*.dll)
-    outFile=\`basnam ${D}outFile .dll\`
-    ;;
-*.DLL)
-    outFile=\`basnam ${D}outFile .DLL\`
-    ;;
-*.o)
-    outFile=\`basnam ${D}outFile .o\`
-    ;;
-*.obj)
-    outFile=\`basnam ${D}outFile .obj\`
-    ;;
-*.a)
-    outFile=\`basnam ${D}outFile .a\`
-    ;;
-*.lib)
-    outFile=\`basnam ${D}outFile .lib\`
-    ;;
-*)
-    ;;
-esac
-case ${D}outimpFile in
-*.a)
-    outimpFile=\`basnam ${D}outimpFile .a\`
-    ;;
-*.lib)
-    outimpFile=\`basnam ${D}outimpFile .lib\`
-    ;;
-*)
-    ;;
-esac
-if [ -z ${D}outimpFile ]; then
-    outimpFile=${D}outFile
-fi
-defFile="${D}{outFile}.def"
-arcFile="${D}{outimpFile}.a"
-arcFile2="${D}{outimpFile}.lib"
-
-#create ${D}dllFile as something matching 8.3 restrictions,
-if [ -z ${D}renameScript ] ; then
-    dllFile="${D}outFile"
-else
-    dllFile=\`${D}renameScript ${D}outimpFile\`
-fi
-
-if [ ${D}do_backup -ne 0 ] ; then
-    if [ -f ${D}arcFile ] ; then
-        doCommand "mv ${D}arcFile ${D}{outFile}_s.a"
-    fi
-    if [ -f ${D}arcFile2 ] ; then
-        doCommand "mv ${D}arcFile2 ${D}{outFile}_s.lib"
-    fi
-fi
-
-# Extract public symbols from all the object files.
-tmpdefFile=${D}{defFile}_%
-rm -f ${D}tmpdefFile
-for file in ${D}inputFiles ; do
-    case ${D}file in
-    *!)
-        ;;
-    *)
-        doCommand "emxexp -u ${D}file >> ${D}tmpdefFile"
-        ;;
-    esac
-done
-
-# Create the def file.
-rm -f ${D}defFile
-echo "LIBRARY \`basnam ${D}dllFile\` ${D}library_flags" >> ${D}defFile
-dllFile="${D}{dllFile}.dll"
-if [ ! -z ${D}description ]; then
-    echo "DESCRIPTION  \\"${D}{description}\\"" >> ${D}defFile
-fi
-echo "EXPORTS" >> ${D}defFile
-
-doCommand "cat ${D}tmpdefFile | sort.exe | uniq.exe > ${D}{tmpdefFile}%"
-grep -v "^ *;" < ${D}{tmpdefFile}% | grep -v "^ *${D}" >${D}tmpdefFile
-
-# Checks if the export is ok or not.
-for word in ${D}exclude_symbols; do
-    grep -v ${D}word < ${D}tmpdefFile >${D}{tmpdefFile}%
-    mv ${D}{tmpdefFile}% ${D}tmpdefFile
-done
-
-
-if [ ${D}EXPORT_BY_ORDINALS -ne 0 ]; then
-    sed "=" < ${D}tmpdefFile | \\
-    sed '
-      N
-      : loop
-      s/^\\([0-9]\\+\\)\\([^;]*\\)\\(;.*\\)\\?/\\2 @\\1 NONAME/
-      t loop
-    ' > ${D}{tmpdefFile}%
-    grep -v "^ *${D}" < ${D}{tmpdefFile}% > ${D}tmpdefFile
-else
-    rm -f ${D}{tmpdefFile}%
-fi
-cat ${D}tmpdefFile >> ${D}defFile
-rm -f ${D}tmpdefFile
-
-# Do linking, create implib, and apply lxlite.
-gccCmdl="";
-for file in ${D}inputFiles ; do
-    case ${D}file in
-    *!)
-        ;;
-    *)
-        gccCmdl="${D}gccCmdl ${D}file"
-        ;;
-    esac
-done
-doCommand "${D}CC ${D}CFLAGS -Zdll -o ${D}dllFile ${D}defFile ${D}gccCmdl ${D}EXTRA_CFLAGS"
-touch "${D}{outFile}.dll"
-
-doCommand "emximp -o ${D}arcFile ${D}defFile"
-if [ ${D}flag_USE_LXLITE -ne 0 ]; then
-    add_flags="";
-    if [ ${D}EXPORT_BY_ORDINALS -ne 0 ]; then
-        add_flags="-ynd"
-    fi
-    doCommand "lxlite -cs -t: -mrn -mln ${D}add_flags ${D}dllFile"
-fi
-doCommand "emxomf -s -l ${D}arcFile"
-
-# Successful exit.
-CleanUp 1
-exit 0
-EOF
-
-        chmod +x dllar.sh
-      ;;
-
-      powerpc-apple-macos* | \
-      *-*-freebsd* | *-*-openbsd* | *-*-netbsd* | *-*-k*bsd*-gnu | \
-      *-*-mirbsd* | \
-      *-*-sunos4* | \
-      *-*-osf* | \
-      *-*-dgux5* | \
-      *-*-sysv5* | \
-      *-pc-msdosdjgpp )
-              ;;
-
-      *)
-        as_fn_error "unknown system type $BAKEFILE_HOST." "$LINENO" 5
-    esac
-
-    if test "x$PIC_FLAG" != "x" ; then
-        PIC_FLAG="$PIC_FLAG -DPIC"
-    fi
-
-    if test "x$SHARED_LD_MODULE_CC" = "x" ; then
-        SHARED_LD_MODULE_CC="$SHARED_LD_CC"
-    fi
-    if test "x$SHARED_LD_MODULE_CXX" = "x" ; then
-        SHARED_LD_MODULE_CXX="$SHARED_LD_CXX"
-    fi
-
-
-
-
-
-
-
-
-
-    USE_SOVERSION=0
-    USE_SOVERLINUX=0
-    USE_SOVERSOLARIS=0
-    USE_SOVERCYGWIN=0
-    USE_SOTWOSYMLINKS=0
-    USE_MACVERSION=0
-    SONAME_FLAG=
-
-    case "${BAKEFILE_HOST}" in
-      *-*-linux* | *-*-freebsd* | *-*-openbsd* | *-*-netbsd* | \
-      *-*-k*bsd*-gnu | *-*-mirbsd* )
-        if test "x$SUNCXX" = "xyes"; then
-            SONAME_FLAG="-h "
-        else
-            SONAME_FLAG="-Wl,-soname,"
-        fi
-        USE_SOVERSION=1
-        USE_SOVERLINUX=1
-        USE_SOTWOSYMLINKS=1
-      ;;
-
-      *-*-solaris2* )
-        SONAME_FLAG="-h "
-        USE_SOVERSION=1
-        USE_SOVERSOLARIS=1
-      ;;
-
-      *-*-darwin* )
-        USE_MACVERSION=1
-        USE_SOVERSION=1
-        USE_SOTWOSYMLINKS=1
-      ;;
-
-      *-*-cygwin* )
-        USE_SOVERSION=1
-        USE_SOVERCYGWIN=1
-      ;;
-    esac
-
-
-
-
-
-
-
-
-
-
-    # Check whether --enable-dependency-tracking was given.
-if test "${enable_dependency_tracking+set}" = set; then :
-  enableval=$enable_dependency_tracking; bk_use_trackdeps="$enableval"
-fi
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dependency tracking method" >&5
-$as_echo_n "checking for dependency tracking method... " >&6; }
-
-    BK_DEPS=""
-    if test "x$bk_use_trackdeps" = "xno" ; then
-        DEPS_TRACKING=0
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
-$as_echo "disabled" >&6; }
-    else
-        DEPS_TRACKING=1
-
-        if test "x$GCC" = "xyes"; then
-            DEPSMODE=gcc
-            case "${BAKEFILE_HOST}" in
-                *-*-darwin* )
-                                                            DEPSFLAG="-no-cpp-precomp -MMD"
-                ;;
-                * )
-                    DEPSFLAG="-MMD"
-                ;;
-            esac
-            { $as_echo "$as_me:${as_lineno-$LINENO}: result: gcc" >&5
-$as_echo "gcc" >&6; }
-        elif test "x$MWCC" = "xyes"; then
-            DEPSMODE=mwcc
-            DEPSFLAG="-MM"
-            { $as_echo "$as_me:${as_lineno-$LINENO}: result: mwcc" >&5
-$as_echo "mwcc" >&6; }
-        elif test "x$SUNCC" = "xyes"; then
-            DEPSMODE=unixcc
-            DEPSFLAG="-xM1"
-            { $as_echo "$as_me:${as_lineno-$LINENO}: result: Sun cc" >&5
-$as_echo "Sun cc" >&6; }
-        elif test "x$SGICC" = "xyes"; then
-            DEPSMODE=unixcc
-            DEPSFLAG="-M"
-            { $as_echo "$as_me:${as_lineno-$LINENO}: result: SGI cc" >&5
-$as_echo "SGI cc" >&6; }
-        elif test "x$HPCC" = "xyes"; then
-            DEPSMODE=unixcc
-            DEPSFLAG="+make"
-            { $as_echo "$as_me:${as_lineno-$LINENO}: result: HP cc" >&5
-$as_echo "HP cc" >&6; }
-        elif test "x$COMPAQCC" = "xyes"; then
-            DEPSMODE=gcc
-            DEPSFLAG="-MD"
-            { $as_echo "$as_me:${as_lineno-$LINENO}: result: Compaq cc" >&5
-$as_echo "Compaq cc" >&6; }
-        else
-            DEPS_TRACKING=0
-            { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
-$as_echo "none" >&6; }
-        fi
-
-        if test $DEPS_TRACKING = 1 ; then
-
-D='$'
-cat <<EOF >bk-deps
-#!/bin/sh
-
-# This script is part of Bakefile (http://www.bakefile.org) autoconf
-# script. It is used to track C/C++ files dependencies in portable way.
-#
-# Permission is given to use this file in any way.
-
-DEPSMODE=${DEPSMODE}
-DEPSFLAG="${DEPSFLAG}"
-DEPSDIRBASE=.deps
-
-if test ${D}DEPSMODE = gcc ; then
-    ${D}* ${D}{DEPSFLAG}
-    status=${D}?
-
-    # determine location of created files:
-    while test ${D}# -gt 0; do
-        case "${D}1" in
-            -o )
-                shift
-                objfile=${D}1
-            ;;
-            -* )
-            ;;
-            * )
-                srcfile=${D}1
-            ;;
-        esac
-        shift
-    done
-    objfilebase=\`basename ${D}objfile\`
-    builddir=\`dirname ${D}objfile\`
-    depfile=\`basename ${D}srcfile | sed -e 's/\\..*${D}/.d/g'\`
-    depobjname=\`echo ${D}depfile |sed -e 's/\\.d/.o/g'\`
-    depsdir=${D}builddir/${D}DEPSDIRBASE
-    mkdir -p ${D}depsdir
-
-    # if the compiler failed, we're done:
-    if test ${D}{status} != 0 ; then
-        rm -f ${D}depfile
-        exit ${D}{status}
-    fi
-
-    # move created file to the location we want it in:
-    if test -f ${D}depfile ; then
-        sed -e "s,${D}depobjname:,${D}objfile:,g" ${D}depfile >${D}{depsdir}/${D}{objfilebase}.d
-        rm -f ${D}depfile
-    else
-        # "g++ -MMD -o fooobj.o foosrc.cpp" produces fooobj.d
-        depfile=\`echo "${D}objfile" | sed -e 's/\\..*${D}/.d/g'\`
-        if test ! -f ${D}depfile ; then
-            # "cxx -MD -o fooobj.o foosrc.cpp" creates fooobj.o.d (Compaq C++)
-            depfile="${D}objfile.d"
-        fi
-        if test -f ${D}depfile ; then
-            sed -e "\\,^${D}objfile,!s,${D}depobjname:,${D}objfile:,g" ${D}depfile >${D}{depsdir}/${D}{objfilebase}.d
-            rm -f ${D}depfile
-        fi
-    fi
-    exit 0
-
-elif test ${D}DEPSMODE = mwcc ; then
-    ${D}* || exit ${D}?
-    # Run mwcc again with -MM and redirect into the dep file we want
-    # NOTE: We can't use shift here because we need ${D}* to be valid
-    prevarg=
-    for arg in ${D}* ; do
-        if test "${D}prevarg" = "-o"; then
-            objfile=${D}arg
-        else
-            case "${D}arg" in
-                -* )
-                ;;
-                * )
-                    srcfile=${D}arg
-                ;;
-            esac
-        fi
-        prevarg="${D}arg"
-    done
-
-    objfilebase=\`basename ${D}objfile\`
-    builddir=\`dirname ${D}objfile\`
-    depsdir=${D}builddir/${D}DEPSDIRBASE
-    mkdir -p ${D}depsdir
-
-    ${D}* ${D}DEPSFLAG >${D}{depsdir}/${D}{objfilebase}.d
-    exit 0
-
-elif test ${D}DEPSMODE = unixcc; then
-    ${D}* || exit ${D}?
-    # Run compiler again with deps flag and redirect into the dep file.
-    # It doesn't work if the '-o FILE' option is used, but without it the
-    # dependency file will contain the wrong name for the object. So it is
-    # removed from the command line, and the dep file is fixed with sed.
-    cmd=""
-    while test ${D}# -gt 0; do
-        case "${D}1" in
-            -o )
-                shift
-                objfile=${D}1
-            ;;
-            * )
-                eval arg${D}#=\\${D}1
-                cmd="${D}cmd \\${D}arg${D}#"
-            ;;
-        esac
-        shift
-    done
-
-    objfilebase=\`basename ${D}objfile\`
-    builddir=\`dirname ${D}objfile\`
-    depsdir=${D}builddir/${D}DEPSDIRBASE
-    mkdir -p ${D}depsdir
-
-    eval "${D}cmd ${D}DEPSFLAG" | sed "s|.*:|${D}objfile:|" >${D}{depsdir}/${D}{objfilebase}.d
-    exit 0
-
-else
-    ${D}*
-    exit ${D}?
-fi
-EOF
-
-            chmod +x bk-deps
-                                    BK_DEPS="`pwd`/bk-deps"
-        fi
-    fi
-
-
-
-
-
-    case ${BAKEFILE_HOST} in
-        *-*-cygwin* | *-*-mingw32* )
-                        if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args.
-set dummy ${ac_tool_prefix}windres; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_WINDRES+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$WINDRES"; then
-  ac_cv_prog_WINDRES="$WINDRES" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_WINDRES="${ac_tool_prefix}windres"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-WINDRES=$ac_cv_prog_WINDRES
-if test -n "$WINDRES"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WINDRES" >&5
-$as_echo "$WINDRES" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_WINDRES"; then
-  ac_ct_WINDRES=$WINDRES
-  # Extract the first word of "windres", so it can be a program name with args.
-set dummy windres; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_WINDRES+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_WINDRES"; then
-  ac_cv_prog_ac_ct_WINDRES="$ac_ct_WINDRES" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_WINDRES="windres"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_WINDRES=$ac_cv_prog_ac_ct_WINDRES
-if test -n "$ac_ct_WINDRES"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_WINDRES" >&5
-$as_echo "$ac_ct_WINDRES" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_WINDRES" = x; then
-    WINDRES=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    WINDRES=$ac_ct_WINDRES
-  fi
-else
-  WINDRES="$ac_cv_prog_WINDRES"
-fi
-
-         ;;
-
-      *-*-darwin* | powerpc-apple-macos* )
-            # Extract the first word of "Rez", so it can be a program name with args.
-set dummy Rez; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_REZ+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$REZ"; then
-  ac_cv_prog_REZ="$REZ" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_REZ="Rez"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  test -z "$ac_cv_prog_REZ" && ac_cv_prog_REZ="/Developer/Tools/Rez"
-fi
-fi
-REZ=$ac_cv_prog_REZ
-if test -n "$REZ"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $REZ" >&5
-$as_echo "$REZ" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-            # Extract the first word of "SetFile", so it can be a program name with args.
-set dummy SetFile; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_SETFILE+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$SETFILE"; then
-  ac_cv_prog_SETFILE="$SETFILE" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_SETFILE="SetFile"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  test -z "$ac_cv_prog_SETFILE" && ac_cv_prog_SETFILE="/Developer/Tools/SetFile"
-fi
-fi
-SETFILE=$ac_cv_prog_SETFILE
-if test -n "$SETFILE"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SETFILE" >&5
-$as_echo "$SETFILE" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-        ;;
-    esac
-
-
-
-
-
-
-
-
-
-    BAKEFILE_BAKEFILE_M4_VERSION="0.2.8"
-
-
-BAKEFILE_AUTOCONF_INC_M4_VERSION="0.2.8"
-
-    COND_DEBUG_0="#"
-    if test "x$DEBUG" = "x0" ; then
-        COND_DEBUG_0=""
-    fi
-
-    COND_DEBUG_1="#"
-    if test "x$DEBUG" = "x1" ; then
-        COND_DEBUG_1=""
-    fi
-
-    COND_DEPS_TRACKING_0="#"
-    if test "x$DEPS_TRACKING" = "x0" ; then
-        COND_DEPS_TRACKING_0=""
-    fi
-
-    COND_DEPS_TRACKING_1="#"
-    if test "x$DEPS_TRACKING" = "x1" ; then
-        COND_DEPS_TRACKING_1=""
-    fi
-
-    COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1="#"
-    if test "x$PLATFORM_MACOSX" = "x0" -a "x$USE_SOVERCYGWIN" = "x0" -a "x$USE_SOVERSION" = "x1" ; then
-        COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1=""
-    fi
-
-    COND_PLATFORM_MACOSX_0_USE_SOVERSION_1="#"
-    if test "x$PLATFORM_MACOSX" = "x0" -a "x$USE_SOVERSION" = "x1" ; then
-        COND_PLATFORM_MACOSX_0_USE_SOVERSION_1=""
-    fi
-
-    COND_PLATFORM_MACOSX_1="#"
-    if test "x$PLATFORM_MACOSX" = "x1" ; then
-        COND_PLATFORM_MACOSX_1=""
-    fi
-
-    COND_PLATFORM_MACOSX_1_USE_SOVERSION_1="#"
-    if test "x$PLATFORM_MACOSX" = "x1" -a "x$USE_SOVERSION" = "x1" ; then
-        COND_PLATFORM_MACOSX_1_USE_SOVERSION_1=""
-    fi
-
-    COND_PLATFORM_MAC_0="#"
-    if test "x$PLATFORM_MAC" = "x0" ; then
-        COND_PLATFORM_MAC_0=""
-    fi
-
-    COND_PLATFORM_MAC_1="#"
-    if test "x$PLATFORM_MAC" = "x1" ; then
-        COND_PLATFORM_MAC_1=""
-    fi
-
-    COND_PLATFORM_OS2_1="#"
-    if test "x$PLATFORM_OS2" = "x1" ; then
-        COND_PLATFORM_OS2_1=""
-    fi
-
-    COND_SAMPLES_1="#"
-    if test "x$SAMPLES" = "x1" ; then
-        COND_SAMPLES_1=""
-    fi
-
-    COND_SHARED_0="#"
-    if test "x$SHARED" = "x0" ; then
-        COND_SHARED_0=""
-    fi
-
-    COND_SHARED_1="#"
-    if test "x$SHARED" = "x1" ; then
-        COND_SHARED_1=""
-    fi
-
-    COND_USE_SOTWOSYMLINKS_1="#"
-    if test "x$USE_SOTWOSYMLINKS" = "x1" ; then
-        COND_USE_SOTWOSYMLINKS_1=""
-    fi
-
-    COND_USE_SOVERCYGWIN_1_USE_SOVERSION_1="#"
-    if test "x$USE_SOVERCYGWIN" = "x1" -a "x$USE_SOVERSION" = "x1" ; then
-        COND_USE_SOVERCYGWIN_1_USE_SOVERSION_1=""
-    fi
-
-    COND_USE_SOVERLINUX_1="#"
-    if test "x$USE_SOVERLINUX" = "x1" ; then
-        COND_USE_SOVERLINUX_1=""
-    fi
-
-    COND_USE_SOVERSION_0="#"
-    if test "x$USE_SOVERSION" = "x0" ; then
-        COND_USE_SOVERSION_0=""
-    fi
-
-    COND_USE_SOVERSION_1_USE_SOVERSOLARIS_1="#"
-    if test "x$USE_SOVERSION" = "x1" -a "x$USE_SOVERSOLARIS" = "x1" ; then
-        COND_USE_SOVERSION_1_USE_SOVERSOLARIS_1=""
-    fi
-
-    COND_USE_SOVERSOLARIS_1="#"
-    if test "x$USE_SOVERSOLARIS" = "x1" ; then
-        COND_USE_SOVERSOLARIS_1=""
-    fi
-
-    COND_WINDOWS_IMPLIB_1="#"
-    if test "x$WINDOWS_IMPLIB" = "x1" ; then
-        COND_WINDOWS_IMPLIB_1=""
-    fi
-
-
-
-    if test "$BAKEFILE_AUTOCONF_INC_M4_VERSION" = "" ; then
-        as_fn_error "No version found in autoconf_inc.m4 - bakefile macro was changed to take additional argument, perhaps configure.in wasn't updated (see the documentation)?" "$LINENO" 5
-    fi
-
-    if test "$BAKEFILE_BAKEFILE_M4_VERSION" != "$BAKEFILE_AUTOCONF_INC_M4_VERSION" ; then
-        as_fn_error "Versions of Bakefile used to generate makefiles ($BAKEFILE_AUTOCONF_INC_M4_VERSION) and configure ($BAKEFILE_BAKEFILE_M4_VERSION) do not match." "$LINENO" 5
-    fi
-
-ac_config_files="$ac_config_files Makefile build/autoconf/muparser.pc"
-
-cat >confcache <<\_ACEOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs, see configure's option --config-cache.
-# It is not useful on other systems.  If it contains results you don't
-# want to keep, you may remove or edit it.
-#
-# config.status only pays attention to the cache file if you give it
-# the --recheck option to rerun configure.
-#
-# `ac_cv_env_foo' variables (set or unset) will be overridden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
-# following values.
-
-_ACEOF
-
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, we kill variables containing newlines.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(
-  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) { eval $ac_var=; unset $ac_var;} ;;
-      esac ;;
-    esac
-  done
-
-  (set) 2>&1 |
-    case $as_nl`(ac_space=' '; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      # `set' does not quote correctly, so add quotes: double-quote
-      # substitution turns \\\\ into \\, and sed turns \\ into \.
-      sed -n \
-	"s/'/'\\\\''/g;
-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
-      ;; #(
-    *)
-      # `set' quotes correctly as required by POSIX, so do not add quotes.
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-) |
-  sed '
-     /^ac_cv_env_/b end
-     t clear
-     :clear
-     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
-     t end
-     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
-     :end' >>confcache
-if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
-  if test -w "$cache_file"; then
-    test "x$cache_file" != "x/dev/null" &&
-      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
-    cat confcache >$cache_file
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
-  fi
-fi
-rm -f confcache
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# Transform confdefs.h into DEFS.
-# Protect against shell expansion while executing Makefile rules.
-# Protect against Makefile macro expansion.
-#
-# If the first sed substitution is executed (which looks for macros that
-# take arguments), then branch to the quote section.  Otherwise,
-# look for a macro that doesn't take arguments.
-ac_script='
-:mline
-/\\$/{
- N
- s,\\\n,,
- b mline
-}
-t clear
-:clear
-s/^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 (][^	 (]*([^)]*)\)[	 ]*\(.*\)/-D\1=\2/g
-t quote
-s/^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 ][^	 ]*\)[	 ]*\(.*\)/-D\1=\2/g
-t quote
-b any
-:quote
-s/[	 `~#$^&*(){}\\|;'\''"<>?]/\\&/g
-s/\[/\\&/g
-s/\]/\\&/g
-s/\$/$$/g
-H
-:any
-${
-	g
-	s/^\n//
-	s/\n/ /g
-	p
-}
-'
-DEFS=`sed -n "$ac_script" confdefs.h`
-
-
-ac_libobjs=
-ac_ltlibobjs=
-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
-  # 1. Remove the extension, and $U if already installed.
-  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
-  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
-  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
-  #    will be set to the directory where LIBOBJS objects are built.
-  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
-  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
-done
-LIBOBJS=$ac_libobjs
-
-LTLIBOBJS=$ac_ltlibobjs
-
-
-
-: ${CONFIG_STATUS=./config.status}
-ac_write_fail=0
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
-as_write_fail=0
-cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-ac_cs_recheck=false
-ac_cs_silent=false
-
-SHELL=\${CONFIG_SHELL-$SHELL}
-export SHELL
-_ASEOF
-cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-	expr "X$arg" : "X\\(.*\\)$as_nl";
-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""	$as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-case $0 in #((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-
-# as_fn_error ERROR [LINENO LOG_FD]
-# ---------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with status $?, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$?; test $as_status -eq 0 && as_status=1
-  if test "$3"; then
-    as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
-  fi
-  $as_echo "$as_me: error: $1" >&2
-  as_fn_exit $as_status
-} # as_fn_error
-
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} # as_fn_exit
-
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='	';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -p'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -p'
-  fi
-else
-  as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-	test -d "$1/.";
-      else
-	case $1 in #(
-	-*)set "./$1";;
-	esac;
-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
-	???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-exec 6>&1
-## ----------------------------------- ##
-## Main body of $CONFIG_STATUS script. ##
-## ----------------------------------- ##
-_ASEOF
-test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# Save the log message, to keep $0 and so on meaningful, and to
-# report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling.
-ac_log="
-This file was extended by muParser $as_me 1.34, which was
-generated by GNU Autoconf 2.64.  Invocation command line was
-
-  CONFIG_FILES    = $CONFIG_FILES
-  CONFIG_HEADERS  = $CONFIG_HEADERS
-  CONFIG_LINKS    = $CONFIG_LINKS
-  CONFIG_COMMANDS = $CONFIG_COMMANDS
-  $ $0 $@
-
-on `(hostname || uname -n) 2>/dev/null | sed 1q`
-"
-
-_ACEOF
-
-case $ac_config_files in *"
-"*) set x $ac_config_files; shift; ac_config_files=$*;;
-esac
-
-
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-# Files that config.status was made for.
-config_files="$ac_config_files"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-ac_cs_usage="\
-\`$as_me' instantiates files and other configuration actions
-from templates according to the current configuration.  Unless the files
-and actions are specified as TAGs, all are instantiated by default.
-
-Usage: $0 [OPTION]... [TAG]...
-
-  -h, --help       print this help, then exit
-  -V, --version    print version number and configuration settings, then exit
-  -q, --quiet, --silent
-                   do not print progress messages
-  -d, --debug      don't remove temporary files
-      --recheck    update $as_me by reconfiguring in the same conditions
-      --file=FILE[:TEMPLATE]
-                   instantiate the configuration file FILE
-
-Configuration files:
-$config_files
-
-Report bugs to <frm at users.sourceforge.net>."
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_version="\\
-muParser config.status 1.34
-configured by $0, generated by GNU Autoconf 2.64,
-  with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
-
-Copyright (C) 2009 Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-
-ac_pwd='$ac_pwd'
-srcdir='$srcdir'
-INSTALL='$INSTALL'
-AWK='$AWK'
-test -n "\$AWK" || AWK=awk
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# The default lists apply if the user does not specify any file.
-ac_need_defaults=:
-while test $# != 0
-do
-  case $1 in
-  --*=*)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
-    ac_shift=:
-    ;;
-  *)
-    ac_option=$1
-    ac_optarg=$2
-    ac_shift=shift
-    ;;
-  esac
-
-  case $ac_option in
-  # Handling of the options.
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    ac_cs_recheck=: ;;
-  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
-    $as_echo "$ac_cs_version"; exit ;;
-  --debug | --debu | --deb | --de | --d | -d )
-    debug=: ;;
-  --file | --fil | --fi | --f )
-    $ac_shift
-    case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    as_fn_append CONFIG_FILES " '$ac_optarg'"
-    ac_need_defaults=false;;
-  --he | --h |  --help | --hel | -h )
-    $as_echo "$ac_cs_usage"; exit ;;
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil | --si | --s)
-    ac_cs_silent=: ;;
-
-  # This is an error.
-  -*) as_fn_error "unrecognized option: \`$1'
-Try \`$0 --help' for more information." ;;
-
-  *) as_fn_append ac_config_targets " $1"
-     ac_need_defaults=false ;;
-
-  esac
-  shift
-done
-
-ac_configure_extra_args=
-
-if $ac_cs_silent; then
-  exec 6>/dev/null
-  ac_configure_extra_args="$ac_configure_extra_args --silent"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-if \$ac_cs_recheck; then
-  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
-  shift
-  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
-  CONFIG_SHELL='$SHELL'
-  export CONFIG_SHELL
-  exec "\$@"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-exec 5>>config.log
-{
-  echo
-  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
-_ASBOX
-  $as_echo "$ac_log"
-} >&5
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-
-# Handling of arguments.
-for ac_config_target in $ac_config_targets
-do
-  case $ac_config_target in
-    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-    "build/autoconf/muparser.pc") CONFIG_FILES="$CONFIG_FILES build/autoconf/muparser.pc" ;;
-
-  *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
-  esac
-done
-
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used.  Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
-  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
-fi
-
-# Have a temporary directory for convenience.  Make it in the build tree
-# simply because there is no reason against having it here, and in addition,
-# creating and moving files from /tmp can sometimes cause problems.
-# Hook for its removal unless debugging.
-# Note that there is a small window in which the directory will not be cleaned:
-# after its creation but before its name has been assigned to `$tmp'.
-$debug ||
-{
-  tmp=
-  trap 'exit_status=$?
-  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
-' 0
-  trap 'as_fn_exit 1' 1 2 13 15
-}
-# Create a (secure) tmp directory for tmp files.
-
-{
-  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
-  test -n "$tmp" && test -d "$tmp"
-}  ||
-{
-  tmp=./conf$$-$RANDOM
-  (umask 077 && mkdir "$tmp")
-} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5
-
-# Set up the scripts for CONFIG_FILES section.
-# No need to generate them if there are no CONFIG_FILES.
-# This happens for instance with `./config.status config.h'.
-if test -n "$CONFIG_FILES"; then
-
-
-ac_cr=`echo X | tr X '\015'`
-# On cygwin, bash can eat \r inside `` if the user requested igncr.
-# But we know of no other shell where ac_cr would be empty at this
-# point, so we can use a bashism as a fallback.
-if test "x$ac_cr" = x; then
-  eval ac_cr=\$\'\\r\'
-fi
-ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
-if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
-  ac_cs_awk_cr='\r'
-else
-  ac_cs_awk_cr=$ac_cr
-fi
-
-echo 'BEGIN {' >"$tmp/subs1.awk" &&
-_ACEOF
-
-
-{
-  echo "cat >conf$$subs.awk <<_ACEOF" &&
-  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
-  echo "_ACEOF"
-} >conf$$subs.sh ||
-  as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
-ac_delim='%!_!# '
-for ac_last_try in false false false false false :; do
-  . ./conf$$subs.sh ||
-    as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
-
-  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
-  if test $ac_delim_n = $ac_delim_num; then
-    break
-  elif $ac_last_try; then
-    as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
-rm -f conf$$subs.sh
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
-_ACEOF
-sed -n '
-h
-s/^/S["/; s/!.*/"]=/
-p
-g
-s/^[^!]*!//
-:repl
-t repl
-s/'"$ac_delim"'$//
-t delim
-:nl
-h
-s/\(.\{148\}\).*/\1/
-t more1
-s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
-p
-n
-b repl
-:more1
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t nl
-:delim
-h
-s/\(.\{148\}\).*/\1/
-t more2
-s/["\\]/\\&/g; s/^/"/; s/$/"/
-p
-b
-:more2
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t delim
-' <conf$$subs.awk | sed '
-/^[^""]/{
-  N
-  s/\n//
-}
-' >>$CONFIG_STATUS || ac_write_fail=1
-rm -f conf$$subs.awk
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-_ACAWK
-cat >>"\$tmp/subs1.awk" <<_ACAWK &&
-  for (key in S) S_is_set[key] = 1
-  FS = ""
-
-}
-{
-  line = $ 0
-  nfields = split(line, field, "@")
-  substed = 0
-  len = length(field[1])
-  for (i = 2; i < nfields; i++) {
-    key = field[i]
-    keylen = length(key)
-    if (S_is_set[key]) {
-      value = S[key]
-      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
-      len += length(value) + length(field[++i])
-      substed = 1
-    } else
-      len += 1 + keylen
-  }
-
-  print line
-}
-
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
-  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
-else
-  cat
-fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
-  || as_fn_error "could not setup config files machinery" "$LINENO" 5
-_ACEOF
-
-# VPATH may cause trouble with some makes, so we remove $(srcdir),
-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
-  ac_vpsub='/^[	 ]*VPATH[	 ]*=/{
-s/:*\$(srcdir):*/:/
-s/:*\${srcdir}:*/:/
-s/:*@srcdir@:*/:/
-s/^\([^=]*=[	 ]*\):*/\1/
-s/:*$//
-s/^[^=]*=[	 ]*$//
-}'
-fi
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-fi # test -n "$CONFIG_FILES"
-
-
-eval set X "  :F $CONFIG_FILES      "
-shift
-for ac_tag
-do
-  case $ac_tag in
-  :[FHLC]) ac_mode=$ac_tag; continue;;
-  esac
-  case $ac_mode$ac_tag in
-  :[FHL]*:*);;
-  :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;;
-  :[FH]-) ac_tag=-:-;;
-  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
-  esac
-  ac_save_IFS=$IFS
-  IFS=:
-  set x $ac_tag
-  IFS=$ac_save_IFS
-  shift
-  ac_file=$1
-  shift
-
-  case $ac_mode in
-  :L) ac_source=$1;;
-  :[FH])
-    ac_file_inputs=
-    for ac_f
-    do
-      case $ac_f in
-      -) ac_f="$tmp/stdin";;
-      *) # Look for the file first in the build tree, then in the source tree
-	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
-	 # because $ac_f cannot contain `:'.
-	 test -f "$ac_f" ||
-	   case $ac_f in
-	   [\\/$]*) false;;
-	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
-	   esac ||
-	   as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;;
-      esac
-      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
-      as_fn_append ac_file_inputs " '$ac_f'"
-    done
-
-    # Let's still pretend it is `configure' which instantiates (i.e., don't
-    # use $as_me), people would be surprised to read:
-    #    /* config.h.  Generated by config.status.  */
-    configure_input='Generated from '`
-	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
-	`' by configure.'
-    if test x"$ac_file" != x-; then
-      configure_input="$ac_file.  $configure_input"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
-    fi
-    # Neutralize special characters interpreted by sed in replacement strings.
-    case $configure_input in #(
-    *\&* | *\|* | *\\* )
-       ac_sed_conf_input=`$as_echo "$configure_input" |
-       sed 's/[\\\\&|]/\\\\&/g'`;; #(
-    *) ac_sed_conf_input=$configure_input;;
-    esac
-
-    case $ac_tag in
-    *:-:* | *:-) cat >"$tmp/stdin" \
-      || as_fn_error "could not create $ac_file" "$LINENO" 5 ;;
-    esac
-    ;;
-  esac
-
-  ac_dir=`$as_dirname -- "$ac_file" ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$ac_file" : 'X\(//\)[^/]' \| \
-	 X"$ac_file" : 'X\(//\)$' \| \
-	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-  as_dir="$ac_dir"; as_fn_mkdir_p
-  ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-
-  case $ac_mode in
-  :F)
-  #
-  # CONFIG_FILE
-  #
-
-  case $INSTALL in
-  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
-  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
-  esac
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# If the template does not know about datarootdir, expand it.
-# FIXME: This hack should be removed a few years after 2.60.
-ac_datarootdir_hack=; ac_datarootdir_seen=
-ac_sed_dataroot='
-/datarootdir/ {
-  p
-  q
-}
-/@datadir@/p
-/@docdir@/p
-/@infodir@/p
-/@localedir@/p
-/@mandir@/p'
-case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
-*datarootdir*) ac_datarootdir_seen=yes;;
-*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-  ac_datarootdir_hack='
-  s&@datadir@&$datadir&g
-  s&@docdir@&$docdir&g
-  s&@infodir@&$infodir&g
-  s&@localedir@&$localedir&g
-  s&@mandir@&$mandir&g
-  s&\\\${datarootdir}&$datarootdir&g' ;;
-esac
-_ACEOF
-
-# Neutralize VPATH when `$srcdir' = `.'.
-# Shell code in configure.ac might set extrasub.
-# FIXME: do we really want to maintain this feature?
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_sed_extra="$ac_vpsub
-$extrasub
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s|@configure_input@|$ac_sed_conf_input|;t t
-s&@top_builddir@&$ac_top_builddir_sub&;t t
-s&@top_build_prefix@&$ac_top_build_prefix&;t t
-s&@srcdir@&$ac_srcdir&;t t
-s&@abs_srcdir@&$ac_abs_srcdir&;t t
-s&@top_srcdir@&$ac_top_srcdir&;t t
-s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
-s&@builddir@&$ac_builddir&;t t
-s&@abs_builddir@&$ac_abs_builddir&;t t
-s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
-s&@INSTALL@&$ac_INSTALL&;t t
-$ac_datarootdir_hack
-"
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
-  || as_fn_error "could not create $ac_file" "$LINENO" 5
-
-test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
-  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
-  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined." >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined." >&2;}
-
-  rm -f "$tmp/stdin"
-  case $ac_file in
-  -) cat "$tmp/out" && rm -f "$tmp/out";;
-  *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
-  esac \
-  || as_fn_error "could not create $ac_file" "$LINENO" 5
- ;;
-
-
-
-  esac
-
-done # for ac_tag
-
-
-as_fn_exit 0
-_ACEOF
-ac_clean_files=$ac_clean_files_save
-
-test $ac_write_fail = 0 ||
-  as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5
-
-
-# configure is writing to config.log, and then calls config.status.
-# config.status does its own redirection, appending to config.log.
-# Unfortunately, on DOS this fails, as config.log is still kept open
-# by configure, so config.status won't be able to write to it; its
-# output is simply discarded.  So we exec the FD to /dev/null,
-# effectively closing config.log, so it can be properly (re)opened and
-# appended to by config.status.  When coming back to configure, we
-# need to make the FD available again.
-if test "$no_create" != yes; then
-  ac_cs_success=:
-  ac_config_status_args=
-  test "$silent" = yes &&
-    ac_config_status_args="$ac_config_status_args --quiet"
-  exec 5>/dev/null
-  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
-  exec 5>>config.log
-  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
-  # would make configure fail if this is the last instruction.
-  $ac_cs_success || as_fn_exit $?
-fi
-if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
-fi
-
-
-
-
-## CONFIGURE END MESSAGE
-#####################################################################
-
-echo
-echo " ----------------------------------------------------------------"
-echo "  Configuration for $PACKAGE_NAME $PACKAGE_VERSION successfully completed."
-echo "  Summary of main configuration settings for $PACKAGE_NAME:"
-
-    if [ "$SHARED" = "1" ]; then
-        echo "  - SHARED mode"
-    else
-        echo "  - STATIC mode"
-    fi
-
-
-    if [ "$DEBUG" = "1" ]; then
-        echo "  - DEBUG build"
-    else
-        echo "  - RELEASE build"
-    fi
-
-if [ "$SAMPLES" = "1" ]; then
-    echo "  - SAMPLES enabled"
-else
-    echo "  - SAMPLES disabled"
-fi
-echo "  Now, just run make."
-echo " ----------------------------------------------------------------"
-echo
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/Doxyfile
--- a/muParser/docs/Doxyfile	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1504 +0,0 @@
-# Doxyfile 1.5.8
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project
-#
-# All text after a hash (#) is considered a comment and will be ignored
-# The format is:
-#       TAG = value [value, ...]
-# For lists items can also be appended using:
-#       TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ")
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the config file 
-# that follow. The default is UTF-8 which is also the encoding used for all 
-# text before the first occurrence of this tag. Doxygen uses libiconv (or the 
-# iconv built into libc) for the transcoding. See 
-# http://www.gnu.org/software/libiconv for the list of possible encodings.
-
-DOXYFILE_ENCODING      = UTF-8
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
-# by quotes) that should identify the project.
-
-PROJECT_NAME           = "muParser API -"
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
-# This could be handy for archiving the generated documentation or 
-# if some version control system is used.
-
-PROJECT_NUMBER         = 1.30
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
-# base path where the generated documentation will be put. 
-# If a relative path is entered, it will be relative to the location 
-# where doxygen was started. If left blank the current directory will be used.
-
-OUTPUT_DIRECTORY       = html/
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
-# 4096 sub-directories (in 2 levels) under the output directory of each output 
-# format and will distribute the generated files over these directories. 
-# Enabling this option can be useful when feeding doxygen a huge amount of 
-# source files, where putting all generated files in the same directory would 
-# otherwise cause performance problems for the file system.
-
-CREATE_SUBDIRS         = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
-# documentation generated by doxygen is written. Doxygen will use this 
-# information to generate all constant output in the proper language. 
-# The default language is English, other supported languages are: 
-# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, 
-# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, 
-# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), 
-# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, 
-# Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene, 
-# Spanish, Swedish, and Ukrainian.
-
-OUTPUT_LANGUAGE        = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
-# include brief member descriptions after the members that are listed in 
-# the file and class documentation (similar to JavaDoc). 
-# Set to NO to disable this.
-
-BRIEF_MEMBER_DESC      = YES
-
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
-# the brief description of a member or function before the detailed description. 
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
-# brief descriptions will be completely suppressed.
-
-REPEAT_BRIEF           = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator 
-# that is used to form the text in various listings. Each string 
-# in this list, if found as the leading text of the brief description, will be 
-# stripped from the text and the result after processing the whole list, is 
-# used as the annotated text. Otherwise, the brief description is used as-is. 
-# If left blank, the following values are used ("$name" is automatically 
-# replaced with the name of the entity): "The $name class" "The $name widget" 
-# "The $name file" "is" "provides" "specifies" "contains" 
-# "represents" "a" "an" "the"
-
-ABBREVIATE_BRIEF       = 
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
-# Doxygen will generate a detailed section even if there is only a brief 
-# description.
-
-ALWAYS_DETAILED_SEC    = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 
-# inherited members of a class in the documentation of that class as if those 
-# members were ordinary class members. Constructors, destructors and assignment 
-# operators of the base classes will not be shown.
-
-INLINE_INHERITED_MEMB  = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
-# path before files name in the file list and in the header files. If set 
-# to NO the shortest path that makes the file name unique will be used.
-
-FULL_PATH_NAMES        = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
-# can be used to strip a user-defined part of the path. Stripping is 
-# only done if one of the specified strings matches the left-hand part of 
-# the path. The tag can be used to show relative paths in the file list. 
-# If left blank the directory from which doxygen is run is used as the 
-# path to strip.
-
-STRIP_FROM_PATH        = 
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
-# the path mentioned in the documentation of a class, which tells 
-# the reader which header file to include in order to use a class. 
-# If left blank only the name of the header file containing the class 
-# definition is used. Otherwise one should specify the include paths that 
-# are normally passed to the compiler using the -I flag.
-
-STRIP_FROM_INC_PATH    = 
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
-# (but less readable) file names. This can be useful is your file systems 
-# doesn't support long names like on DOS, Mac, or CD-ROM.
-
-SHORT_NAMES            = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
-# will interpret the first line (until the first dot) of a JavaDoc-style 
-# comment as the brief description. If set to NO, the JavaDoc 
-# comments will behave just like regular Qt-style comments 
-# (thus requiring an explicit @brief command for a brief description.)
-
-JAVADOC_AUTOBRIEF      = NO
-
-# If the QT_AUTOBRIEF tag is set to YES then Doxygen will 
-# interpret the first line (until the first dot) of a Qt-style 
-# comment as the brief description. If set to NO, the comments 
-# will behave just like regular Qt-style comments (thus requiring 
-# an explicit \brief command for a brief description.)
-
-QT_AUTOBRIEF           = YES
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
-# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
-# comments) as a brief description. This used to be the default behaviour. 
-# The new default is to treat a multi-line C++ comment block as a detailed 
-# description. Set this tag to YES if you prefer the old behaviour instead.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
-# member inherits the documentation from any documented member that it 
-# re-implements.
-
-INHERIT_DOCS           = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 
-# a new page for each member. If set to NO, the documentation of a member will 
-# be part of the file/class/namespace that contains it.
-
-SEPARATE_MEMBER_PAGES  = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
-# Doxygen uses this value to replace tabs by spaces in code fragments.
-
-TAB_SIZE               = 16
-
-# This tag can be used to specify a number of aliases that acts 
-# as commands in the documentation. An alias has the form "name=value". 
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
-# put the command \sideeffect (or @sideeffect) in the documentation, which 
-# will result in a user-defined paragraph with heading "Side Effects:". 
-# You can put \n's in the value part of an alias to insert newlines.
-
-ALIASES                = 
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 
-# sources only. Doxygen will then generate output that is more tailored for C. 
-# For instance, some of the names that are used will be different. The list 
-# of all members will be omitted, etc.
-
-OPTIMIZE_OUTPUT_FOR_C  = NO
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java 
-# sources only. Doxygen will then generate output that is more tailored for 
-# Java. For instance, namespaces will be presented as packages, qualified 
-# scopes will look different, etc.
-
-OPTIMIZE_OUTPUT_JAVA   = NO
-
-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran 
-# sources only. Doxygen will then generate output that is more tailored for 
-# Fortran.
-
-OPTIMIZE_FOR_FORTRAN   = NO
-
-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL 
-# sources. Doxygen will then generate output that is tailored for 
-# VHDL.
-
-OPTIMIZE_OUTPUT_VHDL   = NO
-
-# Doxygen selects the parser to use depending on the extension of the files it parses. 
-# With this tag you can assign which parser to use for a given extension. 
-# Doxygen has a built-in mapping, but you can override or extend it using this tag. 
-# The format is ext=language, where ext is a file extension, and language is one of 
-# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, 
-# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat 
-# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), 
-# use: inc=Fortran f=C
-
-EXTENSION_MAPPING      = 
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want 
-# to include (a tag file for) the STL sources as input, then you should 
-# set this tag to YES in order to let doxygen match functions declarations and 
-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. 
-# func(std::string) {}). This also make the inheritance and collaboration 
-# diagrams that involve STL classes more complete and accurate.
-
-BUILTIN_STL_SUPPORT    = YES
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to 
-# enable parsing support.
-
-CPP_CLI_SUPPORT        = NO
-
-# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. 
-# Doxygen will parse them like normal C++ but will assume all classes use public 
-# instead of private inheritance when no explicit protection keyword is present.
-
-SIP_SUPPORT            = NO
-
-# For Microsoft's IDL there are propget and propput attributes to indicate getter 
-# and setter methods for a property. Setting this option to YES (the default) 
-# will make doxygen to replace the get and set methods by a property in the 
-# documentation. This will only work if the methods are indeed getting or 
-# setting a simple type. If this is not the case, or you want to show the 
-# methods anyway, you should set this option to NO.
-
-IDL_PROPERTY_SUPPORT   = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
-# tag is set to YES, then doxygen will reuse the documentation of the first 
-# member in the group (if any) for the other members of the group. By default 
-# all members of a group must be documented explicitly.
-
-DISTRIBUTE_GROUP_DOC   = NO
-
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
-# the same type (for instance a group of public functions) to be put as a 
-# subgroup of that type (e.g. under the Public Functions section). Set it to 
-# NO to prevent subgrouping. Alternatively, this can be done per class using 
-# the \nosubgrouping command.
-
-SUBGROUPING            = YES
-
-# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum 
-# is documented as struct, union, or enum with the name of the typedef. So 
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct 
-# with name TypeT. When disabled the typedef will appear as a member of a file, 
-# namespace, or class. And the struct will be named TypeS. This can typically 
-# be useful for C code in case the coding convention dictates that all compound 
-# types are typedef'ed and only the typedef is referenced, never the tag name.
-
-TYPEDEF_HIDES_STRUCT   = NO
-
-# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to 
-# determine which symbols to keep in memory and which to flush to disk. 
-# When the cache is full, less often used symbols will be written to disk. 
-# For small to medium size projects (<1000 input files) the default value is 
-# probably good enough. For larger projects a too small cache size can cause 
-# doxygen to be busy swapping symbols to and from disk most of the time 
-# causing a significant performance penality. 
-# If the system has enough physical memory increasing the cache will improve the 
-# performance by keeping more symbols in memory. Note that the value works on 
-# a logarithmic scale so increasing the size by one will rougly double the 
-# memory usage. The cache size is given by this formula: 
-# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, 
-# corresponding to a cache size of 2^16 = 65536 symbols
-
-SYMBOL_CACHE_SIZE      = 0
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
-# documentation are documented, even if no documentation was available. 
-# Private class members and static file members will be hidden unless 
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-
-EXTRACT_ALL            = NO
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
-# will be included in the documentation.
-
-EXTRACT_PRIVATE        = YES
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file 
-# will be included in the documentation.
-
-EXTRACT_STATIC         = YES
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
-# defined locally in source files will be included in the documentation. 
-# If set to NO only classes defined in header files are included.
-
-EXTRACT_LOCAL_CLASSES  = YES
-
-# This flag is only useful for Objective-C code. When set to YES local 
-# methods, which are defined in the implementation section but not in 
-# the interface are included in the documentation. 
-# If set to NO (the default) only methods in the interface are included.
-
-EXTRACT_LOCAL_METHODS  = YES
-
-# If this flag is set to YES, the members of anonymous namespaces will be 
-# extracted and appear in the documentation as a namespace called 
-# 'anonymous_namespace{file}', where file will be replaced with the base 
-# name of the file that contains the anonymous namespace. By default 
-# anonymous namespace are hidden.
-
-EXTRACT_ANON_NSPACES   = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
-# undocumented members of documented classes, files or namespaces. 
-# If set to NO (the default) these members will be included in the 
-# various overviews, but no documentation section is generated. 
-# This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_MEMBERS     = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
-# undocumented classes that are normally visible in the class hierarchy. 
-# If set to NO (the default) these classes will be included in the various 
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_CLASSES     = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
-# friend (class|struct|union) declarations. 
-# If set to NO (the default) these declarations will be included in the 
-# documentation.
-
-HIDE_FRIEND_COMPOUNDS  = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
-# documentation blocks found inside the body of a function. 
-# If set to NO (the default) these blocks will be appended to the 
-# function's detailed documentation block.
-
-HIDE_IN_BODY_DOCS      = NO
-
-# The INTERNAL_DOCS tag determines if documentation 
-# that is typed after a \internal command is included. If the tag is set 
-# to NO (the default) then the documentation will be excluded. 
-# Set it to YES to include the internal documentation.
-
-INTERNAL_DOCS          = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
-# file names in lower-case letters. If set to YES upper-case letters are also 
-# allowed. This is useful if you have classes or files whose names only differ 
-# in case and if your file system supports case sensitive file names. Windows 
-# and Mac users are advised to set this option to NO.
-
-CASE_SENSE_NAMES       = YES
-
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
-# will show members with their full class and namespace scopes in the 
-# documentation. If set to YES the scope will be hidden.
-
-HIDE_SCOPE_NAMES       = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
-# will put a list of the files that are included by a file in the documentation 
-# of that file.
-
-SHOW_INCLUDE_FILES     = YES
-
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
-# is inserted in the documentation for inline members.
-
-INLINE_INFO            = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
-# will sort the (detailed) documentation of file and class members 
-# alphabetically by member name. If set to NO the members will appear in 
-# declaration order.
-
-SORT_MEMBER_DOCS       = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
-# brief documentation of file, namespace and class members alphabetically 
-# by member name. If set to NO (the default) the members will appear in 
-# declaration order.
-
-SORT_BRIEF_DOCS        = NO
-
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the 
-# hierarchy of group names into alphabetical order. If set to NO (the default) 
-# the group names will appear in their defined order.
-
-SORT_GROUP_NAMES       = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
-# sorted by fully-qualified names, including namespaces. If set to 
-# NO (the default), the class list will be sorted only by class name, 
-# not including the namespace part. 
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. 
-# Note: This option applies only to the class list, not to the 
-# alphabetical list.
-
-SORT_BY_SCOPE_NAME     = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or 
-# disable (NO) the todo list. This list is created by putting \todo 
-# commands in the documentation.
-
-GENERATE_TODOLIST      = NO
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or 
-# disable (NO) the test list. This list is created by putting \test 
-# commands in the documentation.
-
-GENERATE_TESTLIST      = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or 
-# disable (NO) the bug list. This list is created by putting \bug 
-# commands in the documentation.
-
-GENERATE_BUGLIST       = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
-# disable (NO) the deprecated list. This list is created by putting 
-# \deprecated commands in the documentation.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional 
-# documentation sections, marked by \if sectionname ... \endif.
-
-ENABLED_SECTIONS       = 
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
-# the initial value of a variable or define consists of for it to appear in 
-# the documentation. If the initializer consists of more lines than specified 
-# here it will be hidden. Use a value of 0 to hide initializers completely. 
-# The appearance of the initializer of individual variables and defines in the 
-# documentation can be controlled using \showinitializer or \hideinitializer 
-# command in the documentation regardless of this setting.
-
-MAX_INITIALIZER_LINES  = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated 
-# at the bottom of the documentation of classes and structs. If set to YES the 
-# list will mention the files that were used to generate the documentation.
-
-SHOW_USED_FILES        = YES
-
-# If the sources in your project are distributed over multiple directories 
-# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 
-# in the documentation. The default is NO.
-
-SHOW_DIRECTORIES       = NO
-
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page. 
-# This will remove the Files entry from the Quick Index and from the 
-# Folder Tree View (if specified). The default is YES.
-
-SHOW_FILES             = YES
-
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the 
-# Namespaces page.  This will remove the Namespaces entry from the Quick Index 
-# and from the Folder Tree View (if specified). The default is YES.
-
-SHOW_NAMESPACES        = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that 
-# doxygen should invoke to get the current version for each file (typically from 
-# the version control system). Doxygen will invoke the program by executing (via 
-# popen()) the command <command> <input-file>, where <command> is the value of 
-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file 
-# provided by doxygen. Whatever the program writes to standard output 
-# is used as the file version. See the manual for examples.
-
-FILE_VERSION_FILTER    = 
-
-# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by 
-# doxygen. The layout file controls the global structure of the generated output files 
-# in an output format independent way. The create the layout file that represents 
-# doxygen's defaults, run doxygen with the -l option. You can optionally specify a 
-# file name after the option, if omitted DoxygenLayout.xml will be used as the name 
-# of the layout file.
-
-LAYOUT_FILE            = 
-
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated 
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
-
-QUIET                  = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are 
-# generated by doxygen. Possible values are YES and NO. If left blank 
-# NO is used.
-
-WARNINGS               = YES
-
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
-# automatically be disabled.
-
-WARN_IF_UNDOCUMENTED   = YES
-
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
-# potential errors in the documentation, such as not documenting some 
-# parameters in a documented function, or documenting parameters that 
-# don't exist or using markup commands wrongly.
-
-WARN_IF_DOC_ERROR      = YES
-
-# This WARN_NO_PARAMDOC option can be abled to get warnings for 
-# functions that are documented, but have no documentation for their parameters 
-# or return value. If set to NO (the default) doxygen will only warn about 
-# wrong or incomplete parameter documentation, but not about the absence of 
-# documentation.
-
-WARN_NO_PARAMDOC       = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that 
-# doxygen can produce. The string should contain the $file, $line, and $text 
-# tags, which will be replaced by the file and line number from which the 
-# warning originated and the warning text. Optionally the format may contain 
-# $version, which will be replaced by the version of the file (if it could 
-# be obtained via FILE_VERSION_FILTER)
-
-WARN_FORMAT            = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning 
-# and error messages should be written. If left blank the output is written 
-# to stderr.
-
-WARN_LOGFILE           = 
-
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag can be used to specify the files and/or directories that contain 
-# documented source files. You may enter file names like "myfile.cpp" or 
-# directories like "/usr/src/myproject". Separate the files or directories 
-# with spaces.
-
-INPUT                  = html/misc/Main.txt \
-                         html/misc/example.txt \
-                         ../src/ \
-                         ../include/
-
-# This tag can be used to specify the character encoding of the source files 
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is 
-# also the default input encoding. Doxygen uses libiconv (or the iconv built 
-# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for 
-# the list of possible encodings.
-
-INPUT_ENCODING         = UTF-8
-
-# If the value of the INPUT tag contains directories, you can use the 
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
-# and *.h) to filter out the source-files in the directories. If left 
-# blank the following patterns are tested: 
-# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 
-# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
-
-FILE_PATTERNS          = 
-
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
-# should be searched for input files as well. Possible values are YES and NO. 
-# If left blank NO is used.
-
-RECURSIVE              = NO
-
-# The EXCLUDE tag can be used to specify files and/or directories that should 
-# excluded from the INPUT source files. This way you can easily exclude a 
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-
-EXCLUDE                = 
-
-# The EXCLUDE_SYMLINKS tag can be used select whether or not files or 
-# directories that are symbolic links (a Unix filesystem feature) are excluded 
-# from the input.
-
-EXCLUDE_SYMLINKS       = NO
-
-# If the value of the INPUT tag contains directories, you can use the 
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
-# certain files from those directories. Note that the wildcards are matched 
-# against the file with absolute path, so to exclude all test directories 
-# for example use the pattern */test/*
-
-EXCLUDE_PATTERNS       = 
-
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names 
-# (namespaces, classes, functions, etc.) that should be excluded from the 
-# output. The symbol name can be a fully qualified name, a word, or if the 
-# wildcard * is used, a substring. Examples: ANamespace, AClass, 
-# AClass::ANamespace, ANamespace::*Test
-
-EXCLUDE_SYMBOLS        = 
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or 
-# directories that contain example code fragments that are included (see 
-# the \include command).
-
-EXAMPLE_PATH           = html/misc/
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
-# and *.h) to filter out the source-files in the directories. If left 
-# blank all files are included.
-
-EXAMPLE_PATTERNS       = 
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
-# searched for input files to be used with the \include or \dontinclude 
-# commands irrespective of the value of the RECURSIVE tag. 
-# Possible values are YES and NO. If left blank NO is used.
-
-EXAMPLE_RECURSIVE      = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or 
-# directories that contain image that are included in the documentation (see 
-# the \image command).
-
-IMAGE_PATH             = 
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should 
-# invoke to filter for each input file. Doxygen will invoke the filter program 
-# by executing (via popen()) the command <filter> <input-file>, where <filter> 
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
-# input file. Doxygen will then use the output that the filter program writes 
-# to standard output.  If FILTER_PATTERNS is specified, this tag will be 
-# ignored.
-
-INPUT_FILTER           = 
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
-# basis.  Doxygen will compare the file name with each pattern and apply the 
-# filter if there is a match.  The filters are a list of the form: 
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
-# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
-# is applied to all files.
-
-FILTER_PATTERNS        = 
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
-# INPUT_FILTER) will be used to filter the input files when producing source 
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-
-FILTER_SOURCE_FILES    = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
-# be generated. Documented entities will be cross-referenced with these sources. 
-# Note: To get rid of all source code in the generated output, make sure also 
-# VERBATIM_HEADERS is set to NO.
-
-SOURCE_BROWSER         = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body 
-# of functions and classes directly in the documentation.
-
-INLINE_SOURCES         = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
-# doxygen to hide any special comment blocks from generated source code 
-# fragments. Normal C and C++ comments will always remain visible.
-
-STRIP_CODE_COMMENTS    = NO
-
-# If the REFERENCED_BY_RELATION tag is set to YES 
-# then for each documented function all documented 
-# functions referencing it will be listed.
-
-REFERENCED_BY_RELATION = NO
-
-# If the REFERENCES_RELATION tag is set to YES 
-# then for each documented function all documented entities 
-# called/used by that function will be listed.
-
-REFERENCES_RELATION    = NO
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) 
-# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from 
-# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will 
-# link to the source code.  Otherwise they will link to the documentation.
-
-REFERENCES_LINK_SOURCE = NO
-
-# If the USE_HTAGS tag is set to YES then the references to source code 
-# will point to the HTML generated by the htags(1) tool instead of doxygen 
-# built-in source browser. The htags tool is part of GNU's global source 
-# tagging system (see http://www.gnu.org/software/global/global.html). You 
-# will need version 4.8.6 or higher.
-
-USE_HTAGS              = NO
-
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
-# will generate a verbatim copy of the header file for each class for 
-# which an include is specified. Set to NO to disable this.
-
-VERBATIM_HEADERS       = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
-# of all compounds will be generated. Enable this if the project 
-# contains a lot of classes, structs, unions or interfaces.
-
-ALPHABETICAL_INDEX     = YES
-
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
-# in which this list will be split (can be a number in the range [1..20])
-
-COLS_IN_ALPHA_INDEX    = 5
-
-# In case all classes in a project start with a common prefix, all 
-# classes will be put under the same header in the alphabetical index. 
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
-# should be ignored while generating the index headers.
-
-IGNORE_PREFIX          = 
-
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
-# generate HTML output.
-
-GENERATE_HTML          = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `html' will be used as the default path.
-
-HTML_OUTPUT            = classdocu/
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
-# doxygen will generate files with .html extension.
-
-HTML_FILE_EXTENSION    = .html
-
-# The HTML_HEADER tag can be used to specify a personal HTML header for 
-# each generated HTML page. If it is left blank doxygen will generate a 
-# standard header.
-
-HTML_HEADER            = 
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
-# each generated HTML page. If it is left blank doxygen will generate a 
-# standard footer.
-
-HTML_FOOTER            = html/misc/footer.html
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
-# style sheet that is used by each HTML page. It can be used to 
-# fine-tune the look of the HTML output. If the tag is left blank doxygen 
-# will generate a default style sheet. Note that doxygen will try to copy 
-# the style sheet file to the HTML output directory, so don't put your own 
-# stylesheet in the HTML output directory as well, or it will be erased!
-
-HTML_STYLESHEET        = 
-
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
-# files or namespaces will be aligned in HTML using tables. If set to 
-# NO a bullet list will be used.
-
-HTML_ALIGN_MEMBERS     = YES
-
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML 
-# documentation will contain sections that can be hidden and shown after the 
-# page has loaded. For this to work a browser that supports 
-# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox 
-# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
-
-HTML_DYNAMIC_SECTIONS  = NO
-
-# If the GENERATE_DOCSET tag is set to YES, additional index files 
-# will be generated that can be used as input for Apple's Xcode 3 
-# integrated development environment, introduced with OSX 10.5 (Leopard). 
-# To create a documentation set, doxygen will generate a Makefile in the 
-# HTML output directory. Running make will produce the docset in that 
-# directory and running "make install" will install the docset in 
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find 
-# it at startup. 
-# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.
-
-GENERATE_DOCSET        = NO
-
-# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the 
-# feed. A documentation feed provides an umbrella under which multiple 
-# documentation sets from a single provider (such as a company or product suite) 
-# can be grouped.
-
-DOCSET_FEEDNAME        = "Doxygen generated docs"
-
-# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that 
-# should uniquely identify the documentation set bundle. This should be a 
-# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen 
-# will append .docset to the name.
-
-DOCSET_BUNDLE_ID       = org.doxygen.Project
-
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
-# will be generated that can be used as input for tools like the 
-# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) 
-# of the generated HTML documentation.
-
-GENERATE_HTMLHELP      = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
-# be used to specify the file name of the resulting .chm file. You 
-# can add a path in front of the file if the result should not be 
-# written to the html output directory.
-
-CHM_FILE               = 
-
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
-# be used to specify the location (absolute path including file name) of 
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
-# the HTML help compiler on the generated index.hhp.
-
-HHC_LOCATION           = 
-
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
-# controls if a separate .chi index file is generated (YES) or that 
-# it should be included in the master .chm file (NO).
-
-GENERATE_CHI           = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING 
-# is used to encode HtmlHelp index (hhk), content (hhc) and project file 
-# content.
-
-CHM_INDEX_ENCODING     = 
-
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
-# controls whether a binary table of contents is generated (YES) or a 
-# normal table of contents (NO) in the .chm file.
-
-BINARY_TOC             = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members 
-# to the contents of the HTML help documentation and to the tree view.
-
-TOC_EXPAND             = NO
-
-# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER 
-# are set, an additional index file will be generated that can be used as input for 
-# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated 
-# HTML documentation.
-
-GENERATE_QHP           = NO
-
-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can 
-# be used to specify the file name of the resulting .qch file. 
-# The path specified is relative to the HTML output folder.
-
-QCH_FILE               = 
-
-# The QHP_NAMESPACE tag specifies the namespace to use when generating 
-# Qt Help Project output. For more information please see 
-# http://doc.trolltech.com/qthelpproject.html#namespace
-
-QHP_NAMESPACE          = 
-
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating 
-# Qt Help Project output. For more information please see 
-# http://doc.trolltech.com/qthelpproject.html#virtual-folders
-
-QHP_VIRTUAL_FOLDER     = doc
-
-# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add. 
-# For more information please see 
-# http://doc.trolltech.com/qthelpproject.html#custom-filters
-
-QHP_CUST_FILTER_NAME   = 
-
-# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see 
-# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.
-
-QHP_CUST_FILTER_ATTRS  = 
-
-# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's 
-# filter section matches. 
-# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>.
-
-QHP_SECT_FILTER_ATTRS  = 
-
-# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can 
-# be used to specify the location of Qt's qhelpgenerator. 
-# If non-empty doxygen will try to run qhelpgenerator on the generated 
-# .qhp file.
-
-QHG_LOCATION           = 
-
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
-# top of each HTML page. The value NO (the default) enables the index and 
-# the value YES disables it.
-
-DISABLE_INDEX          = NO
-
-# This tag can be used to set the number of enum values (range [1..20]) 
-# that doxygen will group on one line in the generated HTML documentation.
-
-ENUM_VALUES_PER_LINE   = 4
-
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index 
-# structure should be generated to display hierarchical information. 
-# If the tag value is set to FRAME, a side panel will be generated 
-# containing a tree-like index structure (just like the one that 
-# is generated for HTML Help). For this to work a browser that supports 
-# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
-# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
-# probably better off using the HTML help feature. Other possible values 
-# for this tag are: HIERARCHIES, which will generate the Groups, Directories, 
-# and Class Hierarchy pages using a tree view instead of an ordered list; 
-# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which 
-# disables this behavior completely. For backwards compatibility with previous 
-# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE 
-# respectively.
-
-GENERATE_TREEVIEW      = NONE
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
-# used to set the initial width (in pixels) of the frame in which the tree 
-# is shown.
-
-TREEVIEW_WIDTH         = 250
-
-# Use this tag to change the font size of Latex formulas included 
-# as images in the HTML documentation. The default is 10. Note that 
-# when you change the font size after a successful doxygen run you need 
-# to manually remove any form_*.png images from the HTML output directory 
-# to force them to be regenerated.
-
-FORMULA_FONTSIZE       = 10
-
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
-# generate Latex output.
-
-GENERATE_LATEX         = NO
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `latex' will be used as the default path.
-
-LATEX_OUTPUT           = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
-# invoked. If left blank `latex' will be used as the default command name.
-
-LATEX_CMD_NAME         = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
-# generate index for LaTeX. If left blank `makeindex' will be used as the 
-# default command name.
-
-MAKEINDEX_CMD_NAME     = makeindex
-
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
-# LaTeX documents. This may be useful for small projects and may help to 
-# save some trees in general.
-
-COMPACT_LATEX          = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used 
-# by the printer. Possible values are: a4, a4wide, letter, legal and 
-# executive. If left blank a4wide will be used.
-
-PAPER_TYPE             = a4wide
-
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
-# packages that should be included in the LaTeX output.
-
-EXTRA_PACKAGES         = 
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
-# the generated latex document. The header should contain everything until 
-# the first chapter. If it is left blank doxygen will generate a 
-# standard header. Notice: only use this tag if you know what you are doing!
-
-LATEX_HEADER           = 
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
-# contain links (just like the HTML output) instead of page references 
-# This makes the output suitable for online browsing using a pdf viewer.
-
-PDF_HYPERLINKS         = NO
-
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
-# plain latex in the generated Makefile. Set this option to YES to get a 
-# higher quality PDF documentation.
-
-USE_PDFLATEX           = NO
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
-# command to the generated LaTeX files. This will instruct LaTeX to keep 
-# running if errors occur, instead of asking the user for help. 
-# This option is also used when generating formulas in HTML.
-
-LATEX_BATCHMODE        = NO
-
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
-# include the index chapters (such as File Index, Compound Index, etc.) 
-# in the output.
-
-LATEX_HIDE_INDICES     = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
-# The RTF output is optimized for Word 97 and may not look very pretty with 
-# other RTF readers or editors.
-
-GENERATE_RTF           = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `rtf' will be used as the default path.
-
-RTF_OUTPUT             = rtf
-
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
-# RTF documents. This may be useful for small projects and may help to 
-# save some trees in general.
-
-COMPACT_RTF            = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
-# will contain hyperlink fields. The RTF file will 
-# contain links (just like the HTML output) instead of page references. 
-# This makes the output suitable for online browsing using WORD or other 
-# programs which support those fields. 
-# Note: wordpad (write) and others do not support links.
-
-RTF_HYPERLINKS         = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's 
-# config file, i.e. a series of assignments. You only have to provide 
-# replacements, missing definitions are set to their default value.
-
-RTF_STYLESHEET_FILE    = 
-
-# Set optional variables used in the generation of an rtf document. 
-# Syntax is similar to doxygen's config file.
-
-RTF_EXTENSIONS_FILE    = 
-
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
-# generate man pages
-
-GENERATE_MAN           = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `man' will be used as the default path.
-
-MAN_OUTPUT             = man
-
-# The MAN_EXTENSION tag determines the extension that is added to 
-# the generated man pages (default is the subroutine's section .3)
-
-MAN_EXTENSION          = .3
-
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
-# then it will generate one additional man file for each entity 
-# documented in the real man page(s). These additional files 
-# only source the real man page, but without them the man command 
-# would be unable to find the correct page. The default is NO.
-
-MAN_LINKS              = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES Doxygen will 
-# generate an XML file that captures the structure of 
-# the code including all documentation.
-
-GENERATE_XML           = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `xml' will be used as the default path.
-
-XML_OUTPUT             = xml
-
-# The XML_SCHEMA tag can be used to specify an XML schema, 
-# which can be used by a validating XML parser to check the 
-# syntax of the XML files.
-
-XML_SCHEMA             = 
-
-# The XML_DTD tag can be used to specify an XML DTD, 
-# which can be used by a validating XML parser to check the 
-# syntax of the XML files.
-
-XML_DTD                = 
-
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
-# dump the program listings (including syntax highlighting 
-# and cross-referencing information) to the XML output. Note that 
-# enabling this will significantly increase the size of the XML output.
-
-XML_PROGRAMLISTING     = YES
-
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
-# generate an AutoGen Definitions (see autogen.sf.net) file 
-# that captures the structure of the code including all 
-# documentation. Note that this feature is still experimental 
-# and incomplete at the moment.
-
-GENERATE_AUTOGEN_DEF   = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
-# generate a Perl module file that captures the structure of 
-# the code including all documentation. Note that this 
-# feature is still experimental and incomplete at the 
-# moment.
-
-GENERATE_PERLMOD       = NO
-
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
-# to generate PDF and DVI output from the Perl module output.
-
-PERLMOD_LATEX          = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
-# nicely formatted so it can be parsed by a human reader.  This is useful 
-# if you want to understand what is going on.  On the other hand, if this 
-# tag is set to NO the size of the Perl module output will be much smaller 
-# and Perl will parse it just the same.
-
-PERLMOD_PRETTY         = YES
-
-# The names of the make variables in the generated doxyrules.make file 
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
-# This is useful so different doxyrules.make files included by the same 
-# Makefile don't overwrite each other's variables.
-
-PERLMOD_MAKEVAR_PREFIX = 
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor   
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
-# evaluate all C-preprocessor directives found in the sources and include 
-# files.
-
-ENABLE_PREPROCESSING   = YES
-
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
-# names in the source code. If set to NO (the default) only conditional 
-# compilation will be performed. Macro expansion can be done in a controlled 
-# way by setting EXPAND_ONLY_PREDEF to YES.
-
-MACRO_EXPANSION        = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
-# then the macro expansion is limited to the macros specified with the 
-# PREDEFINED and EXPAND_AS_DEFINED tags.
-
-EXPAND_ONLY_PREDEF     = NO
-
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
-# in the INCLUDE_PATH (see below) will be search if a #include is found.
-
-SEARCH_INCLUDES        = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that 
-# contain include files that are not input files but should be processed by 
-# the preprocessor.
-
-INCLUDE_PATH           = 
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
-# patterns (like *.h and *.hpp) to filter out the header-files in the 
-# directories. If left blank, the patterns specified with FILE_PATTERNS will 
-# be used.
-
-INCLUDE_FILE_PATTERNS  = 
-
-# The PREDEFINED tag can be used to specify one or more macro names that 
-# are defined before the preprocessor is started (similar to the -D option of 
-# gcc). The argument of the tag is a list of macros of the form: name 
-# or name=definition (no spaces). If the definition and the = are 
-# omitted =1 is assumed. To prevent a macro definition from being 
-# undefined via #undef or recursively expanded use the := operator 
-# instead of the = operator.
-
-PREDEFINED             = 
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
-# this tag can be used to specify a list of macro names that should be expanded. 
-# The macro definition that is found in the sources will be used. 
-# Use the PREDEFINED tag if you want to use a different macro definition.
-
-EXPAND_AS_DEFINED      = 
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
-# doxygen's preprocessor will remove all function-like macros that are alone 
-# on a line, have an all uppercase name, and do not end with a semicolon. Such 
-# function macros are typically used for boiler-plate code, and will confuse 
-# the parser if not removed.
-
-SKIP_FUNCTION_MACROS   = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references   
-#---------------------------------------------------------------------------
-
-# The TAGFILES option can be used to specify one or more tagfiles. 
-# Optionally an initial location of the external documentation 
-# can be added for each tagfile. The format of a tag file without 
-# this location is as follows: 
-#   TAGFILES = file1 file2 ... 
-# Adding location for the tag files is done as follows: 
-#   TAGFILES = file1=loc1 "file2 = loc2" ... 
-# where "loc1" and "loc2" can be relative or absolute paths or 
-# URLs. If a location is present for each tag, the installdox tool 
-# does not have to be run to correct the links. 
-# Note that each tag file must have a unique name 
-# (where the name does NOT include the path) 
-# If a tag file is not located in the directory in which doxygen 
-# is run, you must also specify the path to the tagfile here.
-
-TAGFILES               = 
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
-# a tag file that is based on the input files it reads.
-
-GENERATE_TAGFILE       = 
-
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
-# in the class index. If set to NO only the inherited external classes 
-# will be listed.
-
-ALLEXTERNALS           = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
-# in the modules index. If set to NO, only the current project's groups will 
-# be listed.
-
-EXTERNAL_GROUPS        = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script 
-# interpreter (i.e. the result of `which perl').
-
-PERL_PATH              = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool   
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
-# or super classes. Setting the tag to NO turns the diagrams off. Note that 
-# this option is superseded by the HAVE_DOT option below. This is only a 
-# fallback. It is recommended to install and use dot, since it yields more 
-# powerful graphs.
-
-CLASS_DIAGRAMS         = YES
-
-# You can define message sequence charts within doxygen comments using the \msc 
-# command. Doxygen will then run the mscgen tool (see 
-# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the 
-# documentation. The MSCGEN_PATH tag allows you to specify the directory where 
-# the mscgen tool resides. If left empty the tool is assumed to be found in the 
-# default search path.
-
-MSCGEN_PATH            = 
-
-# If set to YES, the inheritance and collaboration graphs will hide 
-# inheritance and usage relations if the target is undocumented 
-# or is not a class.
-
-HIDE_UNDOC_RELATIONS   = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
-# available from the path. This tool is part of Graphviz, a graph visualization 
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
-# have no effect if this option is set to NO (the default)
-
-HAVE_DOT               = YES
-
-# By default doxygen will write a font called FreeSans.ttf to the output 
-# directory and reference it in all dot files that doxygen generates. This 
-# font does not include all possible unicode characters however, so when you need 
-# these (or just want a differently looking font) you can specify the font name 
-# using DOT_FONTNAME. You need need to make sure dot is able to find the font, 
-# which can be done by putting it in a standard location or by setting the 
-# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory 
-# containing the font.
-
-DOT_FONTNAME           = FreeSans
-
-# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. 
-# The default size is 10pt.
-
-DOT_FONTSIZE           = 10
-
-# By default doxygen will tell dot to use the output directory to look for the 
-# FreeSans.ttf font (which doxygen will put there itself). If you specify a 
-# different font using DOT_FONTNAME you can set the path where dot 
-# can find it using this tag.
-
-DOT_FONTPATH           = 
-
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
-# will generate a graph for each documented class showing the direct and 
-# indirect inheritance relations. Setting this tag to YES will force the 
-# the CLASS_DIAGRAMS tag to NO.
-
-CLASS_GRAPH            = YES
-
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
-# will generate a graph for each documented class showing the direct and 
-# indirect implementation dependencies (inheritance, containment, and 
-# class references variables) of the class with other documented classes.
-
-COLLABORATION_GRAPH    = NO
-
-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
-# will generate a graph for groups, showing the direct groups dependencies
-
-GROUP_GRAPHS           = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
-# collaboration diagrams in a style similar to the OMG's Unified Modeling 
-# Language.
-
-UML_LOOK               = NO
-
-# If set to YES, the inheritance and collaboration graphs will show the 
-# relations between templates and their instances.
-
-TEMPLATE_RELATIONS     = NO
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
-# tags are set to YES then doxygen will generate a graph for each documented 
-# file showing the direct and indirect include dependencies of the file with 
-# other documented files.
-
-INCLUDE_GRAPH          = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
-# documented header file showing the documented files that directly or 
-# indirectly include this file.
-
-INCLUDED_BY_GRAPH      = YES
-
-# If the CALL_GRAPH and HAVE_DOT options are set to YES then 
-# doxygen will generate a call dependency graph for every global function 
-# or class method. Note that enabling this option will significantly increase 
-# the time of a run. So in most cases it will be better to enable call graphs 
-# for selected functions only using the \callgraph command.
-
-CALL_GRAPH             = NO
-
-# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then 
-# doxygen will generate a caller dependency graph for every global function 
-# or class method. Note that enabling this option will significantly increase 
-# the time of a run. So in most cases it will be better to enable caller 
-# graphs for selected functions only using the \callergraph command.
-
-CALLER_GRAPH           = NO
-
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
-# will graphical hierarchy of all classes instead of a textual one.
-
-GRAPHICAL_HIERARCHY    = YES
-
-# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
-# then doxygen will show the dependencies a directory has on other directories 
-# in a graphical way. The dependency relations are determined by the #include 
-# relations between the files in the directories.
-
-DIRECTORY_GRAPH        = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
-# generated by dot. Possible values are png, jpg, or gif 
-# If left blank png will be used.
-
-DOT_IMAGE_FORMAT       = jpg
-
-# The tag DOT_PATH can be used to specify the path where the dot tool can be 
-# found. If left blank, it is assumed the dot tool can be found in the path.
-
-DOT_PATH               = "C:\Program Files (x86)\Graphviz2.20\bin"
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that 
-# contain dot files that are included in the documentation (see the 
-# \dotfile command).
-
-DOTFILE_DIRS           = 
-
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of 
-# nodes that will be shown in the graph. If the number of nodes in a graph 
-# becomes larger than this value, doxygen will truncate the graph, which is 
-# visualized by representing a node as a red box. Note that doxygen if the 
-# number of direct children of the root node in a graph is already larger than 
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note 
-# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
-
-DOT_GRAPH_MAX_NODES    = 50
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
-# graphs generated by dot. A depth value of 3 means that only nodes reachable 
-# from the root by following a path via at most 3 edges will be shown. Nodes 
-# that lay further from the root node will be omitted. Note that setting this 
-# option to 1 or 2 may greatly reduce the computation time needed for large 
-# code bases. Also note that the size of a graph can be further restricted by 
-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
-
-MAX_DOT_GRAPH_DEPTH    = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
-# background. This is disabled by default, because dot on Windows does not 
-# seem to support this out of the box. Warning: Depending on the platform used, 
-# enabling this option may lead to badly anti-aliased labels on the edges of 
-# a graph (i.e. they become hard to read).
-
-DOT_TRANSPARENT        = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
-# files in one run (i.e. multiple -o and -T options on the command line). This 
-# makes dot run faster, but since only newer versions of dot (>1.8.10) 
-# support this, this feature is disabled by default.
-
-DOT_MULTI_TARGETS      = NO
-
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
-# generate a legend page explaining the meaning of the various boxes and 
-# arrows in the dot generated graphs.
-
-GENERATE_LEGEND        = YES
-
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
-# remove the intermediate dot files that are used to generate 
-# the various graphs.
-
-DOT_CLEANUP            = YES
-
-#---------------------------------------------------------------------------
-# Options related to the search engine
-#---------------------------------------------------------------------------
-
-# The SEARCHENGINE tag specifies whether or not a search engine should be 
-# used. If set to NO the values of all tags below this one will be ignored.
-
-SEARCHENGINE           = NO
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/Crystal_Clear_app_utilities.png
Binary file muParser/docs/html/images/Crystal_Clear_app_utilities.png has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/api.png
Binary file muParser/docs/html/images/api.png has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/api_dark.png
Binary file muParser/docs/html/images/api_dark.png has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/bench2.jpg
Binary file muParser/docs/html/images/bench2.jpg has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/blocks.png
Binary file muParser/docs/html/images/blocks.png has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/build.png
Binary file muParser/docs/html/images/build.png has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/bytecode.png
Binary file muParser/docs/html/images/bytecode.png has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/caption.png
Binary file muParser/docs/html/images/caption.png has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/diff.png
Binary file muParser/docs/html/images/diff.png has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/download.gif
Binary file muParser/docs/html/images/download.gif has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/download.png
Binary file muParser/docs/html/images/download.png has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/download_dark.png
Binary file muParser/docs/html/images/download_dark.png has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/download_muparser.png
Binary file muParser/docs/html/images/download_muparser.png has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/download_muparser_.png
Binary file muParser/docs/html/images/download_muparser_.png has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/grad1.jpg
Binary file muParser/docs/html/images/grad1.jpg has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/grad2.jpg
Binary file muParser/docs/html/images/grad2.jpg has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/grad2.xcf
Binary file muParser/docs/html/images/grad2.xcf has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/grad3.jpg
Binary file muParser/docs/html/images/grad3.jpg has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/help.gif
Binary file muParser/docs/html/images/help.gif has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/help.png
Binary file muParser/docs/html/images/help.png has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/home.png
Binary file muParser/docs/html/images/home.png has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/home_dark.png
Binary file muParser/docs/html/images/home_dark.png has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/info.png
Binary file muParser/docs/html/images/info.png has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/list.png
Binary file muParser/docs/html/images/list.png has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/logo.xcf
Binary file muParser/docs/html/images/logo.xcf has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/mathparser.jpg
Binary file muParser/docs/html/images/mathparser.jpg has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/mathparser_logo.gif
Binary file muParser/docs/html/images/mathparser_logo.gif has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/mathparser_small.jpg
Binary file muParser/docs/html/images/mathparser_small.jpg has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/muParser.png
Binary file muParser/docs/html/images/muParser.png has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/muParserNET.png
Binary file muParser/docs/html/images/muParserNET.png has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/muParserNET.xcf
Binary file muParser/docs/html/images/muParserNET.xcf has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/muParserNET_.png
Binary file muParser/docs/html/images/muParserNET_.png has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/muParserX.png
Binary file muParser/docs/html/images/muParserX.png has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/muParserX.xcf
Binary file muParser/docs/html/images/muParserX.xcf has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/muParserX_.png
Binary file muParser/docs/html/images/muParserX_.png has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/osi.jpg
Binary file muParser/docs/html/images/osi.jpg has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/question.png
Binary file muParser/docs/html/images/question.png has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/related.png
Binary file muParser/docs/html/images/related.png has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/run.png
Binary file muParser/docs/html/images/run.png has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/sflogo.png
Binary file muParser/docs/html/images/sflogo.png has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/thumb_geodes.jpg
Binary file muParser/docs/html/images/thumb_geodes.jpg has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/thumb_kst.jpg
Binary file muParser/docs/html/images/thumb_kst.jpg has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/thumb_matrix.jpg
Binary file muParser/docs/html/images/thumb_matrix.jpg has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/thumb_meshlab.jpg
Binary file muParser/docs/html/images/thumb_meshlab.jpg has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/thumb_pasimodo.jpg
Binary file muParser/docs/html/images/thumb_pasimodo.jpg has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/thumb_qtiplot.jpg
Binary file muParser/docs/html/images/thumb_qtiplot.jpg has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/thumb_tm2.jpg
Binary file muParser/docs/html/images/thumb_tm2.jpg has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/thumb_trini.jpg
Binary file muParser/docs/html/images/thumb_trini.jpg has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/warning.gif
Binary file muParser/docs/html/images/warning.gif has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/xxx .png
Binary file muParser/docs/html/images/xxx .png has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/images/xxx.xcf
Binary file muParser/docs/html/images/xxx.xcf has changed
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/index.html
--- a/muParser/docs/html/index.html	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,302 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <link rel="stylesheet" type="text/css" href="style/formate.css"/>
-  <meta name="author" content="Ingo Berg"/>
-  <!-- $META -->	
-  <meta name="keywords" content="math parser, math expression parser, muparser, muparserx, muparser.net, .net, c++, lib, dll, donation, function parser"/>
-  <meta name="description" content="muParser - a fast math parser library"/>
-  <title>muParser - a fast math parser library</title>
-
-  <script src="script/functions.js" language="javascript" type="text/javascript"></script>
-  <script type="text/javascript">
-  imgHome=new Image();
-  imgHome.src="images/home.png";
-  imgHomeDark=new Image();
-  imgHomeDark.src="images/home_dark.png";
-
-  imgApi=new Image();
-  imgApi.src="images/api.png"; 
-  imgApiDark=new Image();
-  imgApiDark.src="images/api_dark.png";
-
-  function ChangeButtonImage(num,obj)
-  {
-    window.document.images[num].src=obj.src;
-  }
-  </script>
-</head>
-
-<body>
-    <div class="gradient" id="top">
-      <div class="header">
-        muParser - a fast math parser library
-        <br/>
-        <div style="font-size:14pt;">Version 1.32</div>
-      </div>
-
-      <div style="position:absolute; width:250px; height:100px; top:20px; text-align:center">
-        <a href="http://sourceforge.net/projects/muparser">
-          <img src="http://sflogo.sourceforge.net/sflogo.php?group_id=137191&amp;type=15" 
-               width="150" 
-               height="40" 
-               border="0"
-               alt="Get muParser - A fast math parser library at SourceForge.net. Fast, secure and Free Open Source software downloads" />
-        </a>
-      </div>	
-
-      <div style="position:absolute; width:100px; right:110px; text-align:center; line-height: 1em;">
-        <a class="white" 
-           href="http://www.beltoforion.de"  
-           onmouseover="ChangeButtonImage(1,imgHome)" 
-           onmouseout="ChangeButtonImage(1,imgHomeDark)">
-          <img src="images/home_dark.png" border="0" height="40" alt="My home page"/>
-          <br/>
-          <span class="tiny_text">My home<br/>page</span>
-        </a>
-     </div>
-
-     <div  style="position:absolute; width:100px; right:10px; text-align:center; line-height: 1em;">
-       <a class="white" 
-          href="http://muparser.sourceforge.net/classdocu/index.html"
-          onmouseover="ChangeButtonImage(2,imgApi)" 
-          onmouseout="ChangeButtonImage(2,imgApiDark)">
-         <img src="images/api_dark.png" border="0" alt="class documentation" height="40"/>
-         <br/>
-         <span class="tiny_text">muParser<br/>API-doc</span>
-       </a>
-    </div>
-  <!--
-    <div  style="position:absolute; width:100px; right:10px; text-align:center; line-height: 1em;">
-      <a class="white" 
-         href="http://sourceforge.net/project/showfiles.php?group_id=137191"
-         onmouseover="ChangeButtonImage(3,imgDown)" 
-         onmouseout="ChangeButtonImage(3,imgDownDark)">
-        <img src="images/download_dark.png" height="40" border="0" alt="muParser download"/>
-        <br/>
-        <span class="tiny_text">muParser<br/>Download</span>
-      </a>
-    </div>
--->
-  </div> <!-- class="gradient" -->
-
-    <!-- Tabelle mit Hauptinhalt der Seite -->
-    <table id="MainTable" border="0" cellpadding="5" cellspacing="0" style="width:100%; height:100%;">
-      <tbody>
-        <tr>
-          <td style="vertical-align: top; text-align: center" width="230">
-            <h3 class="navi_heading navi_info">Introduction</h3>
-            <div class="sidebarlink">
-                <a href="index.html">About the parser</a><br/>
-                <a href="http://sourceforge.net/news/?group_id=137191">News</a><br/>
-                <a href="mup_links.html">Software using muParser</a><br/>
-                <a href="mup_licence.html">Licence</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_blocks">Features</h3>
-            <div class="sidebarlink">
-              <a href="mup_features.html">Features</a><br/>
-              <a href="mup_features.html#idFeatureOverview">Overview</a><br/>
-              <a href="mup_features.html#idDef2">Built in functions</a><br/>
-              <a href="mup_features.html#idDef3">Built in binary operators</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_build">Build instructions</h3>
-            <div class="sidebarlink">
-              <a href="mup_usage.html#idInstWin">Building on Win32</a><br/>
-              <a href="mup_usage.html#idInstLinux">Building on BSD/Linux</a><br/>
-              <a href="mup_usage.html#idInstMisc">Misc build instructions</a><br/>
-              <a href="mup_usage.html#idInstInc">Including the files</a><br/>
-              <a href="mup_usage.html#idInstInc">Where to ask for help</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_list">Math parser interface</h3>
-            <div class="sidebarlink">
-              <a href="mup_interface.html#idInit">Parser (de)initialization</a><br/>
-              <a href="mup_interface.html#idEval">Evaluating an expression</a><br/>
-              <a href="mup_interface.html#idSetExpr">Setting the expression</a><br/>
-              <a href="mup_interface.html#idDefCharset">Defining identifier charsets</a><br/>
-              <a href="mup_interface.html#idDefVar">Defining parser variables</a><br/>
-              <a href="mup_interface.html#idDefVarEx">Explicit variable definition</a><br/>
-              <a href="mup_interface.html#idDefVarIm">Implicit variable definition</a><br/>
-              <a href="mup_interface.html#idDefConst">Defining constants</a><br/>
-              <a href="mup_interface.html#idDefFun">Defining functions</a><br/>
-              <a href="mup_interface.html#idDefOprt">Defining operators</a><br/>
-              <a href="mup_interface.html#idUnOp">Unary operators</a><br/>
-              <a href="mup_interface.html#idBinOp">Binary operators</a><br/>
-              <a href="mup_interface.html#idQueryVar">Querying variables</a><br/>
-              <a href="mup_interface.html#idQueryConst">Querying constants</a><br/>
-              <a href="mup_interface.html#idDefConst2">Value recognition callbacks</a><br/>
-              <a href="mup_interface.html#idDefConst2">Removing variables/constants</a><br/>
-              <a href="mup_locale.html#idLoc">Localization</a><br/>
-              <a href="mup_interface.html#idErrors">Error handling</a><br/>
-              <a href="mup_version.html#idExample">Example code</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_question">Current version</h3>
-            <div class="sidebarlink">
-              <a href="mup_version.html#idRelNote">Release notes</a><br/>
-              <a href="mup_version.html#idBench">Benchmarks</a><br/>
-            </div>
-
-            <br/>
-            <div align="center">
-              <a href="http://www.opensource.org/"><img style="border:0;" src="images/osi.jpg" alt="Open source initiative logo"/></a>
-              <br/>
-              <br/>
-              <a href="http://validator.w3.org/check?uri=referer">
-                <img src="http://www.w3.org/Icons/valid-xhtml10-blue" alt="Valid XHTML 1.0 Transitional" style="border:0;width:88px;height:31px"/>
-              </a>
-              <br/>
-              <br/>
-	      <a href="http://jigsaw.w3.org/css-validator/check/referer">
-                <img style="border:0;width:88px;height:31px" src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="CSS ist valide!" />
-	      </a>
-
-            </div>
-          </td>
-
-          <td style="height: 100%; padding: 1em; vertical-align: top;">
-            <!-- 
-              This section contains the real page content. 
-              pages are created automatically by using the script "build_page.sh"
-              which combines section templated with the navigation bar.
-
-	      This creates webpages that do not rely on php3 or Javascript for 
-              serverside or client side html inclusion.
-            //-->
-            <!-- $PLACEHOLDER -->
-<script type="text/javascript">
-  imgParserNET=new Image();
-  imgParserNET.src="images/muParserNET.png";
-  imgParserNETDark=new Image();
-  imgParserNETDark.src="images/muParserNET_.png";
-
-  imgParserX=new Image();
-  imgParserX.src="images/muParserX.png"; 
-  imgParserXDark=new Image();
-  imgParserXDark.src="images/muParserX_.png";
-
-  imgDownload=new Image();
-  imgDownload.src="images/download_muparser.png"; 
-  imgDownloadDark=new Image();
-  imgDownloadDark.src="images/download_muparser_.png";
-</script>
-
-<h2>About the parser</h2> 
-
-<p>
-Many applications require the parsing of <strong>mathematical expressions</strong>.
-The main objective of this library is to provide a fast and easy way of
-doing this. <strong>muParser</strong> is an extensible high performance
-<strong>math parser</strong> library written in <a href="http://www.cplusplus.com/">C++</a>. It works 
-by transforming a mathematical expression into bytecode and precalculating constant 
-parts of the expression.
-</p>
-
-<div style="/*position:float; */border: 1px solid #000000; width:420px; height:220px; text-align:left; float:left; margin-right:10px; background-color: #ffffff;">
-<img src="images/related.png" alt="math expression parser - related links" border="0" width="420"/>
-  <a href="http://www.codeproject.com/KB/recipes/muParser.aspx">
-    <img src="images/muParserNET_.png" alt=".NET math parser" border="0" width="200" style="float:left;" onmouseover="ChangeButtonImage(7,imgParserNET)" onmouseout="ChangeButtonImage(7,imgParserNETDark)"/>
-    <br/>
-    <strong>muParser C# wrapper</strong>
-    <br/>
-    <span class="tiny_text">a math parser for .NET</span>
-  </a>
-
-  <br clear="all"/><br/>
-  <a href="http://beltoforion.de/muparserx/math_expression_parser_en.html">
-    <img src="images/muParserX_.png" 
-         alt="math expression parser" 
-         border="0" 
-         width="200" 
-         style="float:left;"
-         onmouseover="ChangeButtonImage(8,imgParserX)" 
-         onmouseout="ChangeButtonImage(8,imgParserXDark)"/>
-    <strong>muParserX</strong>
-    <br/>
-    <span class="tiny_text">a math expression parser with support for multitype data types</span>
-  </a>
-</div>
-The library was designed with portability in mind and should compile on every
-standard compliant C++ compiler. Wrapper for <strong>C</strong> and <strong>C#</strong> 
-exist. The parser archive contains ready to use project and makefiles files for a variety of 
-platforms. The code runs on both <strong>32 bit</strong> and 
-<strong>64 bit</strong> architechtures and has been tested using MS VC++ V8.0 
-and GCC V4.4.1. Code samples are provided in order to help you understand its 
-usage. The library is <strong>open source</strong> and distributed under 
-the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.
-
-<div style="text-align:center;">
-<a href="http://sourceforge.net/project/showfiles.php?group_id=137191">
-  <img src="images/download_muparser_.png" 
-       border="0" 
-       alt="muParser download"
-       onmouseover="ChangeButtonImage(9,imgDownload)" 
-       onmouseout="ChangeButtonImage(9,imgDownloadDark)"/>
-</a>
-</div>
-
-<p>
-Before I go on, I'd like to thank <a href="http://sourceforge.net">SourceForge</a> for hosting this project. This
-pages would not exist without the webspace provided by them and of course I'd like 
-to thank <a href="http://www.codeproject.com">CodeProject</a> for hosting the original 
-<a href="http://www.codeproject.com/cpp/FastMathParser.asp" target="_blank">math parser</a> 
-article.
-</p>
-
-
-<h2>Support this project</h2>
-muParser is free software and anyone can use it free of charge for commercial and noncommercial purposes. If you wish you can support this project by <strong>making a small donation</strong>:
-<br/>
-<br/>
-<div style="text-align:center;">
-  <a href="http://sourceforge.net/donate/index.php?group_id=137191">
-    <img src="http://images.sourceforge.net/images/project-support.jpg" 
-         width="196" 
-         height="64" 
-         border="0" 
-         alt="Support This Project"/> 
-  </a>
-</div>
-<br/>
-A project like muParser requires permanent maintanence in order to adopt to new platforms, new compiler version and for fixing bugs. So if you are using the library and find it useful i would like to encourage you to make a donation in order to help keeping the project up to date. I can officially guarantee that you <strong>make my day</strong> by donating even a small amount of money. In a way this is a "Wow the people actually really appreciate what i'm doing" kind of thing and that's whats driving me and ultimately this is what is keeping this project alive.
-
-
-
-            <hr/>
-            <table border="0" style="width:100%">
-            <tr>
-              <td>&copy; 2005-2010 <a href="http://beltoforion.de">Ingo Berg</a> | 
-                  <a href="http://beltoforion.de/privacy_policy/privacy_policy_en.html">Privacy policy</a></td>
-              <td style="text-align:right; padding-right: 3em;">
-                <a href="#top">^ TOP</a>
-              </td>
-            </tr>
-          </table>
-          <br/>
-          <br/>
-
-          </td>
-        </tr>
-      </tbody>
-    </table>
-
-<!--
-    <script type="text/javascript">
-    var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-    document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-    </script>
-    <script type="text/javascript">
-    try 
-    {
-      var pageTracker = _gat._getTracker("UA-1019178-1");
-      pageTracker._trackPageview();
-    } 
-    catch(err) {}
-    </script>
--->
-</body>
-</html>
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/misc/Main.txt
--- a/muParser/docs/html/misc/Main.txt	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-/** \mainpage
-Welcome to the muParser API documentation. These pages contain the muParser API documentation.
-
-<table border="0" width="100%">
-<tr>
-
-<td>
-<img src="../images/mathparser_small.jpg" width="200"/>
-</td>
-
-<td>
-<b>More muParser resources</b>
-<ul>
-<li><p>The <a href="http://muparser.sourceforge.net/">muParser homepage</a>
-<br><small>More dokumentation; benchmarks ...</small>
-</li>
-<li><p>The official <a href="http://sourceforge.net/project/showfiles.php?group_id=137191">Project page</a> at Sourceforge<br>
-<small>Downloadlinks for the current and older versions.</small>
-</li>
-<li><p>The <a href="http://www.codeproject.com/KB/recipes/FastMathParser.aspx">Project page</a> at CodeProject<br>
-<small>This is how it started, provides an alternate package for VS2005.</small>
-</li>
-<li><p>A CodeProject article featuring a <a href="http://www.codeproject.com/KB/recipes/muParser.aspx">C# wrapper for muParser</a>
-<br><small>Uses muParser with C# and the .NET framework.</small>
-</li>
-</ul>
-<p>
-
-<b>Things i do when i'm not working on muParser.</b>
-<ul>
-<li>
-<p><a href="http://www.codeproject.com/KB/openGL/Wator.aspx">Wator Screensaver</a> (for Windows; requires OpenGL)
-<br><small>A simulation of predator prey dynamic  C# wrapper for muParser</small>
-</li>
-<li><p><a href="http://www.codeproject.com/KB/recipes/MagneticPendulum.aspx">The magnetic pendulum fractal</a> (for Windows; requires OpenGL)
-<br><small>Chaotic motion of a pendulum over three magnets</small>
-</li>
-</ul>
-</td>
-
-
-</tr>
-</table>
-*/
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/misc/calc.cpp
--- a/muParser/docs/html/misc/calc.cpp	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-//---------------------------------------------------------------------------
-value_type Mega(value_type a_fVal) 
-{ 
-  return a_fVal * 1e6; 
-}
-
-//---------------------------------------------------------------------------
-value_type Not(value_type v) 
-{ 
-  return v==0; 
-}
-
-//---------------------------------------------------------------------------
-value_type Ping() 
-{ 
-  mu::console() << "ping\n"; 
-  return 0; 
-}
-
-//---------------------------------------------------------------------------
-void Calc()
-{
-  mu::Parser  parser;
-
-  parser.SetArgSep(';');
-  parser.SetDecSep(',');
-  parser.SetThousandsSep('.');
-
-  // Add some variables
-  value_type  a = 10;
-  parser.DefineVar("a", &a);
-  parser.DefineStrConst("strBuf", "hello world");
-
-  // Add user defined unary operators
-  parser.DefinePostfixOprt("M", Mega);
-  parser.DefineInfixOprt("!", Not);
-  parser.DefineFun("ping", Ping, false);
-
-  try
-  {
-    string_type sLine;
-    std::getline(mu::console_in(), sLine);
-
-    parser.SetExpr(sLine);
-    mu::console() << std::setprecision(12);
-    mu::console() << parser.Eval() << "\n";
-  }
-  catch(mu::Parser::exception_type &e)
-  {
-    mu::console() << "\nError:\n";
-    mu::console() << "------\n";
-    mu::console() << "Message:     "   << e.GetMsg()      << "\n";
-    mu::console() << "Expression:  \"" << e.GetExpr()     << "\"\n";
-    mu::console() << "Token:       \"" << e.GetToken()    << "\"\n";
-    mu::console() << "Position:    "   << (int)e.GetPos() << "\n";
-    mu::console() << "Errc:        "   << std::dec << e.GetCode() << "\n";
-  }
-}
-
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/misc/example.txt
--- a/muParser/docs/html/misc/example.txt	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-/** \example listvar.cpp
-    This example shows how to list parser variables.
-*/
-
-/** \example list_expr_var.cpp
-  This example shows how to list variables used in an expression.
-*/
-
-/** \example calc.cpp
-    This example shows a typical use case of muParser.
-*/
-
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/misc/footer.html
--- a/muParser/docs/html/misc/footer.html	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-<div style="position:absolute; width:100%; height:100%; text-align:center;">
-<p>
-<hr/>
-<strong>muParser</strong> API documentation - (C) 2009 <a href="http://beltoforion.de">Ingo Berg</a>
-</p>
-</div>
-
-<script type="text/javascript">
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-<script type="text/javascript">
-try {
-var pageTracker = _gat._getTracker("UA-1019178-3");
-pageTracker._trackPageview();
-} catch(err) {}</script>
-
-</body>
-</html>
\ No newline at end of file
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/misc/header.html
--- a/muParser/docs/html/misc/header.html	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<html>
-<title>muParser - a fast math parser: Main Page</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-
-<body>
-<img src="../images/grad2.jpg"/>
-
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/misc/list_expr_var.cpp
--- a/muParser/docs/html/misc/list_expr_var.cpp	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-void ListExprVar(const mu::ParserBase &parser)
-{
-  varmap_type variables = parser.GetUsedVar();
-  if (!variables.size())
-    mu::console() << "Expression does not contain variables\n";
-  else
-  {
-    mu::console() << "Number: " << (int)variables.size() << "\n";
-    mu::varmap_type::const_iterator item = variables.begin();
-
-    for (; item!=variables.end(); ++item)
-      mu::console() << "Name: " << item->first << "   Address: [0x" << item->second << "]\n";
-  }
-}
-
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/misc/listvar.cpp
--- a/muParser/docs/html/misc/listvar.cpp	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-void ListVar(const mu::ParserBase &parser)
-{
-  mu::varmap_type variables = parser.GetVar();
-  if (!variables.size())
-    return;
-
-  cout << "\nParser variables:\n";
-  cout <<   "-----------------\n";
-  cout << "Number: " << (int)variables.size() << "\n";
-  varmap_type::const_iterator item = variables.begin();
-  for (; item!=variables.end(); ++item)
-    mu::console() << _T("Name: ") << item->first << _T("   Address: [0x") << item->second << _T("]\n");
-}
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/mup_features.html
--- a/muParser/docs/html/mup_features.html	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,418 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <link rel="stylesheet" type="text/css" href="style/formate.css"/>
-  <meta name="author" content="Ingo Berg"/>
-  <!-- $META -->	
-  <meta name="keywords" content="features, muparser, operator, function, math parser, C++"/>
-  <meta name="description" content="List of operators and functions supported by muparser"/>
-  <title>List of muparser features</title>
-
-  <script src="script/functions.js" language="javascript" type="text/javascript"></script>
-  <script type="text/javascript">
-  imgHome=new Image();
-  imgHome.src="images/home.png";
-  imgHomeDark=new Image();
-  imgHomeDark.src="images/home_dark.png";
-
-  imgApi=new Image();
-  imgApi.src="images/api.png"; 
-  imgApiDark=new Image();
-  imgApiDark.src="images/api_dark.png";
-
-  function ChangeButtonImage(num,obj)
-  {
-    window.document.images[num].src=obj.src;
-  }
-  </script>
-</head>
-
-<body>
-    <div class="gradient" id="top">
-      <div class="header">
-        muParser - a fast math parser library
-        <br/>
-        <div style="font-size:14pt;">Version 1.32</div>
-      </div>
-
-      <div style="position:absolute; width:250px; height:100px; top:20px; text-align:center">
-        <a href="http://sourceforge.net/projects/muparser">
-          <img src="http://sflogo.sourceforge.net/sflogo.php?group_id=137191&amp;type=15" 
-               width="150" 
-               height="40" 
-               border="0"
-               alt="Get muParser - A fast math parser library at SourceForge.net. Fast, secure and Free Open Source software downloads" />
-        </a>
-      </div>	
-
-      <div style="position:absolute; width:100px; right:110px; text-align:center; line-height: 1em;">
-        <a class="white" 
-           href="http://www.beltoforion.de"  
-           onmouseover="ChangeButtonImage(1,imgHome)" 
-           onmouseout="ChangeButtonImage(1,imgHomeDark)">
-          <img src="images/home_dark.png" border="0" height="40" alt="My home page"/>
-          <br/>
-          <span class="tiny_text">My home<br/>page</span>
-        </a>
-     </div>
-
-     <div  style="position:absolute; width:100px; right:10px; text-align:center; line-height: 1em;">
-       <a class="white" 
-          href="http://muparser.sourceforge.net/classdocu/index.html"
-          onmouseover="ChangeButtonImage(2,imgApi)" 
-          onmouseout="ChangeButtonImage(2,imgApiDark)">
-         <img src="images/api_dark.png" border="0" alt="class documentation" height="40"/>
-         <br/>
-         <span class="tiny_text">muParser<br/>API-doc</span>
-       </a>
-    </div>
-  <!--
-    <div  style="position:absolute; width:100px; right:10px; text-align:center; line-height: 1em;">
-      <a class="white" 
-         href="http://sourceforge.net/project/showfiles.php?group_id=137191"
-         onmouseover="ChangeButtonImage(3,imgDown)" 
-         onmouseout="ChangeButtonImage(3,imgDownDark)">
-        <img src="images/download_dark.png" height="40" border="0" alt="muParser download"/>
-        <br/>
-        <span class="tiny_text">muParser<br/>Download</span>
-      </a>
-    </div>
--->
-  </div> <!-- class="gradient" -->
-
-    <!-- Tabelle mit Hauptinhalt der Seite -->
-    <table id="MainTable" border="0" cellpadding="5" cellspacing="0" style="width:100%; height:100%;">
-      <tbody>
-        <tr>
-          <td style="vertical-align: top; text-align: center" width="230">
-            <h3 class="navi_heading navi_info">Introduction</h3>
-            <div class="sidebarlink">
-                <a href="index.html">About the parser</a><br/>
-                <a href="http://sourceforge.net/news/?group_id=137191">News</a><br/>
-                <a href="mup_links.html">Software using muParser</a><br/>
-                <a href="mup_licence.html">Licence</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_blocks">Features</h3>
-            <div class="sidebarlink">
-              <a href="mup_features.html">Features</a><br/>
-              <a href="mup_features.html#idFeatureOverview">Overview</a><br/>
-              <a href="mup_features.html#idDef2">Built in functions</a><br/>
-              <a href="mup_features.html#idDef3">Built in binary operators</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_build">Build instructions</h3>
-            <div class="sidebarlink">
-              <a href="mup_usage.html#idInstWin">Building on Win32</a><br/>
-              <a href="mup_usage.html#idInstLinux">Building on BSD/Linux</a><br/>
-              <a href="mup_usage.html#idInstMisc">Misc build instructions</a><br/>
-              <a href="mup_usage.html#idInstInc">Including the files</a><br/>
-              <a href="mup_usage.html#idInstInc">Where to ask for help</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_list">Math parser interface</h3>
-            <div class="sidebarlink">
-              <a href="mup_interface.html#idInit">Parser (de)initialization</a><br/>
-              <a href="mup_interface.html#idEval">Evaluating an expression</a><br/>
-              <a href="mup_interface.html#idSetExpr">Setting the expression</a><br/>
-              <a href="mup_interface.html#idDefCharset">Defining identifier charsets</a><br/>
-              <a href="mup_interface.html#idDefVar">Defining parser variables</a><br/>
-              <a href="mup_interface.html#idDefVarEx">Explicit variable definition</a><br/>
-              <a href="mup_interface.html#idDefVarIm">Implicit variable definition</a><br/>
-              <a href="mup_interface.html#idDefConst">Defining constants</a><br/>
-              <a href="mup_interface.html#idDefFun">Defining functions</a><br/>
-              <a href="mup_interface.html#idDefOprt">Defining operators</a><br/>
-              <a href="mup_interface.html#idUnOp">Unary operators</a><br/>
-              <a href="mup_interface.html#idBinOp">Binary operators</a><br/>
-              <a href="mup_interface.html#idQueryVar">Querying variables</a><br/>
-              <a href="mup_interface.html#idQueryConst">Querying constants</a><br/>
-              <a href="mup_interface.html#idDefConst2">Value recognition callbacks</a><br/>
-              <a href="mup_interface.html#idDefConst2">Removing variables/constants</a><br/>
-              <a href="mup_locale.html#idLoc">Localization</a><br/>
-              <a href="mup_interface.html#idErrors">Error handling</a><br/>
-              <a href="mup_version.html#idExample">Example code</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_question">Current version</h3>
-            <div class="sidebarlink">
-              <a href="mup_version.html#idRelNote">Release notes</a><br/>
-              <a href="mup_version.html#idBench">Benchmarks</a><br/>
-            </div>
-
-            <br/>
-            <div align="center">
-              <a href="http://www.opensource.org/"><img style="border:0;" src="images/osi.jpg" alt="Open source initiative logo"/></a>
-              <br/>
-              <br/>
-              <a href="http://validator.w3.org/check?uri=referer">
-                <img src="http://www.w3.org/Icons/valid-xhtml10-blue" alt="Valid XHTML 1.0 Transitional" style="border:0;width:88px;height:31px"/>
-              </a>
-              <br/>
-              <br/>
-	      <a href="http://jigsaw.w3.org/css-validator/check/referer">
-                <img style="border:0;width:88px;height:31px" src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="CSS ist valide!" />
-	      </a>
-
-            </div>
-          </td>
-
-          <td style="height: 100%; padding: 1em; vertical-align: top;">
-            <!-- 
-              This section contains the real page content. 
-              pages are created automatically by using the script "build_page.sh"
-              which combines section templated with the navigation bar.
-
-	      This creates webpages that do not rely on php3 or Javascript for 
-              serverside or client side html inclusion.
-            //-->
-            <!-- $PLACEHOLDER -->
-<!-- 
-//
-//
-//  
-//   Features
-//
-//
-//
--->
-
-<br/>
-<h2><a name="idFeature">Features</a></h2>
-
-<p>
-The following is a list of the features currently supported by the parser library. 
-The primary objective is to keep it as extensible as possible whilst ensuring a maximum parsing speed. Extending the parser is mostly based on allowing a user to add custom callbacks which require only an absolute minimum of code. For instance you need exactly 2 lines of code to add a new function.
-But extending the parser may not be necessary at all since it comes with a powerful default 
-implementation. Here is the (incomplete) list of features:
-</p>
-
-
-<!-- 
-//
-//   Features / Overview
-//
--->
-
-<h3><a name="idFeatureOverview">Overview</a></h3>
-
-
-<ul>
-  <li><b>Easy to use</b>
-    <ul>
-      <li>You need only a <a href="mup_version.html#idExample">few lines of code</a> to evaluate en expression</li>
-    </ul> 
-  </li>
-  <li><b>Extremely fast</b>
-    <ul>
-      <li><a href="mup_version.html#idBench">faster than similar commercial parsers</a></li>
-    </ul> 
-  </li>
-
-  <li><b>User-defined operators</b>
-    <ul>
-      <li>binary operators</li>
-      <li>postfix operators</li>
-      <li>infix operators</li>
-    </ul>
-  </li>
-
-  <li><b>User-defined functions</b>
-    <ul>
-      <li>with a fixed number of up to five arguments</li>
-      <li>with variable number of arguments</li>
-      <li>with a single string argument (for database queries)</li>
-    </ul>
-  </li>
-
-  <li><b>User-defined constants.</b>
-    <ul>
-      <li>numeric constants</li>
-      <li>string constants</li>
-    </ul> 
-  </li>
-
-  <li><b>User-defined variables.</b>
-    <ul>
-        <li>unlimited in number</li>	
-        <li>definable at parser runtime by the parser</li>
-        <li>assigning variables in terms of other variables is possible</li>	
-    </ul>
-  </li>
-  
-  <li><b>Custom value recognition callbacks</b>
-    <ul>
-	<li>support for binary and hex values.</li>
-        <li>can be used to implement database queries</li>
-    </ul>
-  </li>
-
-  <li><b>Default implementaion with many features</b> 
-    <ul>
-      <li>26 <a href="#idDef1">predefined functions</a>.</li>
-      <li>15 <a href="#idDef2">predefined operators</a>.</li>
-      <li>Supports numerical differentiation with respect to a given variable.</li>
-      <li>Assignement operator is supported</li>
-    </ul>
-  </li>
-
-  <li><b>Portability</b>
-    <ul>
-       <li>Project / makefiles for MSVC, mingw, autoconf, bcc</li>
-       <li>ISO 14882 compliant code</li>
-       <li>DLL version usable from every language able to use function exported in C-style</li>
-    </ul> 
-  </li>
-
-  <li><b>Unit support</b>
-    <ul>
-      <li>Use postfix operators as unit multipliers <code>(3m -> 0.003)</code></li>
-    </ul>
-  </li>
-
-  <li><b>Localization</b>
-    <ul>
-      <li>Argument separator, decimal separator, thousands separator can be adjusted to your locale</code></li>
-    </ul>
-  </li>
-
-</ul>
-
-
-<!-- 
-//
-//
-//  
-//   Default implementation
-//
-//
-//
--->
-
-<h3><a name="idDef1">The default implementation</a></h3>
-<p>
-This section gives an overview on the default features supported by the parser. The default
-implementation is defined in the class <code>mu::Parser</code> located in the file 
-<i>muParser.cpp</i>. The DLL-version uses this class internally.
-</p>
-
-<!-- 
-//
-//   Features / Built in functions
-//
--->
-
-
-<h4><a name="idDef2">Built-in functions</a></h4>
-<p>
-The following table gives an overview of the functions supported by the
-default implementation. It lists the function names, the number of 
-arguments and a brief description.
-</p>
-
-<table border="1">
-<thead>
-<tr>
-  <td><b>Name</b></td>  <td><b>Argc.</b></td>  <td><b>Explanation</b></td>
-</tr>
-</thead>
-
-<tbody>
-<tr><td><code>sin</code></td>   <td align="center">1</td>     <td>sine function</td></tr>
-<tr><td><code>cos</code></td>   <td align="center">1</td>     <td>cosine function</td></tr>
-<tr><td><code>tan</code></td>   <td align="center">1</td>     <td>tangens function</td></tr>
-<tr><td><code>asin</code></td>  <td align="center">1</td>     <td>arcus sine function</td></tr>
-<tr><td><code>acos</code></td>  <td align="center">1</td>     <td>arcus cosine function</td></tr>
-<tr><td><code>atan</code></td>  <td align="center">1</td>     <td>arcus tangens function</td></tr>
-<tr><td><code>sinh</code></td>  <td align="center">1</td>     <td>hyperbolic sine function</td></tr>
-<tr><td><code>cosh</code></td>  <td align="center">1</td>     <td>hyperbolic cosine</td></tr>
-<tr><td><code>tanh</code></td>  <td align="center">1</td>     <td>hyperbolic tangens function</td></tr>
-<tr><td><code>asinh</code></td> <td align="center">1</td>     <td>hyperbolic arcus sine function</td></tr>
-<tr><td><code>acosh</code></td> <td align="center">1</td>     <td>hyperbolic arcus tangens function</td></tr>
-<tr><td><code>atanh</code></td> <td align="center">1</td>     <td>hyperbolic arcur tangens function</td></tr>
-<tr><td><code>log2</code></td>  <td align="center">1</td>     <td>logarithm to the base 2</td></tr>
-<tr><td><code>log10</code></td> <td align="center">1</td>     <td>logarithm to the base 10</td></tr>
-<tr><td><code>log</code></td>   <td align="center">1</td>     <td>logarithm to the base 10</td></tr>
-<tr><td><code>ln</code></td>    <td align="center">1</td>     <td>logarithm to base e (2.71828...)</td></tr>
-<tr><td><code>exp</code></td>   <td align="center">1</td>     <td>e raised to the power of x</td></tr>
-<tr><td><code>sqrt</code></td>  <td align="center">1</td>     <td>square root of a value</td></tr>
-<tr><td><code>sign</code></td>  <td align="center">1</td>     <td>sign function -1 if x&lt;0; 1 if x&gt;0</td></tr>
-<tr><td><code>rint</code></td>  <td align="center">1</td>     <td>round to nearest integer</td></tr>
-<tr><td><code>abs</code></td>   <td align="center">1</td>     <td>absolute value</td></tr>
-<tr><td><code>if</code></td>    <td align="center">3</td>     <td>if ... then ... else ...</td></tr>
-<tr><td><code>min</code></td>   <td align="center">var.</td>  <td>min of all arguments</td></tr>
-<tr><td><code>max</code></td>   <td align="center">var.</td>  <td>max of all arguments</td></tr>
-<tr><td><code>sum</code></td>   <td align="center">var.</td>  <td>sum of all arguments</td></tr>
-<tr><td><code>avg</code></td>   <td align="center">var.</td>  <td>mean value of all arguments</td></tr>
-</tbody>
-
-</table>
-
-
-<h4><a name="idDef3">Built-in binary operators</a></h4>
-<p>
-The following table lists the default binary operators supported by the parser.
-</p>
-
-<table border="1">
-	<thead>
-	  <tr><td><b>Operator</b></td>     <td><b>Meaning</b></td>             <td><b>Priority</b></td></tr>
-	</thead>
-
-	<tbody>
-	  <tr><td><code>=</code></td>      <td>assignement*</td>               <td>-1</td></tr>
-	  <tr><td><code>and</code></td>    <td>logical and</td>                <td>1</td></tr>
-	  <tr><td><code>or</code></td>     <td>logical or</td>                 <td>1</td></tr>
-	  <tr><td><code>xor</code></td>    <td>logical xor</td>                <td>1</td></tr>
-	  <tr><td><code>&lt;=</code></td>  <td>less or equal</td>              <td>2</td></tr>
-	  <tr><td><code>&gt;=</code></td>  <td>greater or equal</td>           <td>2</td></tr>
-	  <tr><td><code>!=</code></td>     <td>not equal</td>                  <td>2</td></tr>
-	  <tr><td><code>==</code></td>     <td>equal</td>                      <td>2</td></tr>
-	  <tr><td><code>&gt;</code></td>   <td>greater than</td>               <td>2</td></tr>
-	  <tr><td><code>&lt;</code></td>   <td>less than</td>                  <td>2</td></tr>
-	  <tr><td><code>+</code></td>      <td>addition</td>                   <td>3</td></tr>
-	  <tr><td><code>-</code></td>      <td>subtraction</td>                <td>3</td></tr>
-	  <tr><td><code>*</code></td>      <td>multiplication</td>             <td>4</td></tr>
-	  <tr><td><code>/</code></td>      <td>division</td>                   <td>4</td></tr>
-	  <tr><td><code>^</code></td>      <td>raise x to the power of y</td>  <td>5</td></tr>
-	</tbody>
-</table>
-<small>*The assignment operator is special since it changes one of its
-       arguments and can only by applied to variables.</small>
-
-
-            <hr/>
-            <table border="0" style="width:100%">
-            <tr>
-              <td>&copy; 2005-2010 <a href="http://beltoforion.de">Ingo Berg</a> | 
-                  <a href="http://beltoforion.de/privacy_policy/privacy_policy_en.html">Privacy policy</a></td>
-              <td style="text-align:right; padding-right: 3em;">
-                <a href="#top">^ TOP</a>
-              </td>
-            </tr>
-          </table>
-          <br/>
-          <br/>
-
-          </td>
-        </tr>
-      </tbody>
-    </table>
-
-<!--
-    <script type="text/javascript">
-    var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-    document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-    </script>
-    <script type="text/javascript">
-    try 
-    {
-      var pageTracker = _gat._getTracker("UA-1019178-1");
-      pageTracker._trackPageview();
-    } 
-    catch(err) {}
-    </script>
--->
-</body>
-</html>
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/mup_interface.html
--- a/muParser/docs/html/mup_interface.html	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1190 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <link rel="stylesheet" type="text/css" href="style/formate.css"/>
-  <meta name="author" content="Ingo Berg"/>
-  <!-- $META -->	
-  <meta name="keywords" content="muparser, api, interface, dll, C++"/>
-  <meta name="description" content="muparser programming interface"/>
-  <title>muParser programming interface</title>
-
-  <script src="script/functions.js" language="javascript" type="text/javascript"></script>
-  <script type="text/javascript">
-  imgHome=new Image();
-  imgHome.src="images/home.png";
-  imgHomeDark=new Image();
-  imgHomeDark.src="images/home_dark.png";
-
-  imgApi=new Image();
-  imgApi.src="images/api.png"; 
-  imgApiDark=new Image();
-  imgApiDark.src="images/api_dark.png";
-
-  function ChangeButtonImage(num,obj)
-  {
-    window.document.images[num].src=obj.src;
-  }
-  </script>
-</head>
-
-<body>
-    <div class="gradient" id="top">
-      <div class="header">
-        muParser - a fast math parser library
-        <br/>
-        <div style="font-size:14pt;">Version 1.32</div>
-      </div>
-
-      <div style="position:absolute; width:250px; height:100px; top:20px; text-align:center">
-        <a href="http://sourceforge.net/projects/muparser">
-          <img src="http://sflogo.sourceforge.net/sflogo.php?group_id=137191&amp;type=15" 
-               width="150" 
-               height="40" 
-               border="0"
-               alt="Get muParser - A fast math parser library at SourceForge.net. Fast, secure and Free Open Source software downloads" />
-        </a>
-      </div>	
-
-      <div style="position:absolute; width:100px; right:110px; text-align:center; line-height: 1em;">
-        <a class="white" 
-           href="http://www.beltoforion.de"  
-           onmouseover="ChangeButtonImage(1,imgHome)" 
-           onmouseout="ChangeButtonImage(1,imgHomeDark)">
-          <img src="images/home_dark.png" border="0" height="40" alt="My home page"/>
-          <br/>
-          <span class="tiny_text">My home<br/>page</span>
-        </a>
-     </div>
-
-     <div  style="position:absolute; width:100px; right:10px; text-align:center; line-height: 1em;">
-       <a class="white" 
-          href="http://muparser.sourceforge.net/classdocu/index.html"
-          onmouseover="ChangeButtonImage(2,imgApi)" 
-          onmouseout="ChangeButtonImage(2,imgApiDark)">
-         <img src="images/api_dark.png" border="0" alt="class documentation" height="40"/>
-         <br/>
-         <span class="tiny_text">muParser<br/>API-doc</span>
-       </a>
-    </div>
-  <!--
-    <div  style="position:absolute; width:100px; right:10px; text-align:center; line-height: 1em;">
-      <a class="white" 
-         href="http://sourceforge.net/project/showfiles.php?group_id=137191"
-         onmouseover="ChangeButtonImage(3,imgDown)" 
-         onmouseout="ChangeButtonImage(3,imgDownDark)">
-        <img src="images/download_dark.png" height="40" border="0" alt="muParser download"/>
-        <br/>
-        <span class="tiny_text">muParser<br/>Download</span>
-      </a>
-    </div>
--->
-  </div> <!-- class="gradient" -->
-
-    <!-- Tabelle mit Hauptinhalt der Seite -->
-    <table id="MainTable" border="0" cellpadding="5" cellspacing="0" style="width:100%; height:100%;">
-      <tbody>
-        <tr>
-          <td style="vertical-align: top; text-align: center" width="230">
-            <h3 class="navi_heading navi_info">Introduction</h3>
-            <div class="sidebarlink">
-                <a href="index.html">About the parser</a><br/>
-                <a href="http://sourceforge.net/news/?group_id=137191">News</a><br/>
-                <a href="mup_links.html">Software using muParser</a><br/>
-                <a href="mup_licence.html">Licence</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_blocks">Features</h3>
-            <div class="sidebarlink">
-              <a href="mup_features.html">Features</a><br/>
-              <a href="mup_features.html#idFeatureOverview">Overview</a><br/>
-              <a href="mup_features.html#idDef2">Built in functions</a><br/>
-              <a href="mup_features.html#idDef3">Built in binary operators</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_build">Build instructions</h3>
-            <div class="sidebarlink">
-              <a href="mup_usage.html#idInstWin">Building on Win32</a><br/>
-              <a href="mup_usage.html#idInstLinux">Building on BSD/Linux</a><br/>
-              <a href="mup_usage.html#idInstMisc">Misc build instructions</a><br/>
-              <a href="mup_usage.html#idInstInc">Including the files</a><br/>
-              <a href="mup_usage.html#idInstInc">Where to ask for help</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_list">Math parser interface</h3>
-            <div class="sidebarlink">
-              <a href="mup_interface.html#idInit">Parser (de)initialization</a><br/>
-              <a href="mup_interface.html#idEval">Evaluating an expression</a><br/>
-              <a href="mup_interface.html#idSetExpr">Setting the expression</a><br/>
-              <a href="mup_interface.html#idDefCharset">Defining identifier charsets</a><br/>
-              <a href="mup_interface.html#idDefVar">Defining parser variables</a><br/>
-              <a href="mup_interface.html#idDefVarEx">Explicit variable definition</a><br/>
-              <a href="mup_interface.html#idDefVarIm">Implicit variable definition</a><br/>
-              <a href="mup_interface.html#idDefConst">Defining constants</a><br/>
-              <a href="mup_interface.html#idDefFun">Defining functions</a><br/>
-              <a href="mup_interface.html#idDefOprt">Defining operators</a><br/>
-              <a href="mup_interface.html#idUnOp">Unary operators</a><br/>
-              <a href="mup_interface.html#idBinOp">Binary operators</a><br/>
-              <a href="mup_interface.html#idQueryVar">Querying variables</a><br/>
-              <a href="mup_interface.html#idQueryConst">Querying constants</a><br/>
-              <a href="mup_interface.html#idDefConst2">Value recognition callbacks</a><br/>
-              <a href="mup_interface.html#idDefConst2">Removing variables/constants</a><br/>
-              <a href="mup_locale.html#idLoc">Localization</a><br/>
-              <a href="mup_interface.html#idErrors">Error handling</a><br/>
-              <a href="mup_version.html#idExample">Example code</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_question">Current version</h3>
-            <div class="sidebarlink">
-              <a href="mup_version.html#idRelNote">Release notes</a><br/>
-              <a href="mup_version.html#idBench">Benchmarks</a><br/>
-            </div>
-
-            <br/>
-            <div align="center">
-              <a href="http://www.opensource.org/"><img style="border:0;" src="images/osi.jpg" alt="Open source initiative logo"/></a>
-              <br/>
-              <br/>
-              <a href="http://validator.w3.org/check?uri=referer">
-                <img src="http://www.w3.org/Icons/valid-xhtml10-blue" alt="Valid XHTML 1.0 Transitional" style="border:0;width:88px;height:31px"/>
-              </a>
-              <br/>
-              <br/>
-	      <a href="http://jigsaw.w3.org/css-validator/check/referer">
-                <img style="border:0;width:88px;height:31px" src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="CSS ist valide!" />
-	      </a>
-
-            </div>
-          </td>
-
-          <td style="height: 100%; padding: 1em; vertical-align: top;">
-            <!-- 
-              This section contains the real page content. 
-              pages are created automatically by using the script "build_page.sh"
-              which combines section templated with the navigation bar.
-
-	      This creates webpages that do not rely on php3 or Javascript for 
-              serverside or client side html inclusion.
-            //-->
-            <!-- $PLACEHOLDER -->
-
-<!-- 
-//
-//
-//  
-//   The parser interface
-//
-//
-//
--->
-
-<br/>
-<h1><a id="idInterface"></a>The parser interface</h1>
-The following section gives an overview of the public parser member functions as well as of the functions 
-exported by the DLL version of the parser.
-
-
-<h2><a id="idInit"></a>Parser initialization / deinitialization</h2>
-<h3>[DLL interface]</h3>
-Create a new instance handle. You can create as many different instance handles as you like. Each will 
-internally reference a different parser object. When using the DLL it is necessary to manually release 
-any parser handle created by <code>mupInit()</code> by calling <code>mupRelease(hParser)</code>.
-
-<pre>
-parser_handle hParser;
-hParser = mupInit(); // Create a new handle
-
-// use the parser...
-
-mupRelease(hParser); // Release an existing parser handle
-</pre>
-
-Internally a handle is nothing more than a pointer to a parser object casted to a void pointer.
-
-
-<h3>[Parser class interface]</h3>
-Code for creating a new parser object. (In case of dynamic allocation use <code>new</code> and <code>delete</code> 
-for initialization and deinitialization.) 
-
-<pre>
-mu::Parser parser;
-</pre>
-
-<!-- 
-//
-//   The parser interface / Setting the expression
-//
--->
-
-<h2><a id="idSetExpr"></a>Setting the expression</h2>
-<h3>[DLL interface]</h3>
-Setting the expression when using the DLL requires a valid parser handle and a pointer to 
-<code>const char</code> pointing to the expression.
-
-<pre>
-mupSetExpr(hParser, szLine);
-</pre>
-<small>See also: <i>Example3/Example3.cpp</i>.</small>
-
-<h3>[Parser class interface]</h3>
-Setting the expression using the parser class requires a <code>std::string</code> containing the expression as the
-only parameter.
-<pre>
-parser.SetExpr(line);
-</pre>
-<small>See also: <i>Example1/Example1.cpp; Example2/WndMain.cpp; ParserLib/muParserTest.cpp</i>.</small>
-
-<!-- 
-//
-//   The parser interface / Evaluating the expression
-//
--->
-
-<h2><a id="idEval"></a>Evaluating an expression</h2>
-<p>
-Expression evaluation is done by calling the <code>mupEval()</code> function in the DLL version or the 
-<code>Eval()</code> member function of a parser object. When evaluating an expression for the first time
-the parser evaluates the expression string directly and creates a bytecode during 
-this first time evaluation. Every sucessive call to <code>Eval()</code> will evaluate the bytecode directly
-unless you call a function that will silently reset the parser to string parse mode. Some functions 
-invalidate the bytecode due to possible changes in callback
-function pointers or variable addresses. In this way they effectively cause a recreation of the 
-bytecode during the next call to <code>Eval()</code>.
-</p>
-<p>
-Internally there are different evaluation functions. One for parsing from a string, the other for
-parsing from bytecode (and a third one used only if the expression can be simplified to a constant). 
-Initially, <code>Eval()</code> will call the string parsing function which is slow due to all the 
-necessary syntax checking, variable lookup, and bytecode creation. Once this
-function succeeds, <code>Eval()</code> will change its internal parse function pointer to either
-the bytecode parsing function or the const result function which are significantly (approx. 1000 times) 
-faster. You don't have to worry about this, it's done automatically, just keep in mind that the 
-first time evaluation of a new formula is significantly slower than any successive call to 
-<code>Eval()</code>.
-</p>
-
-<h3>[DLL interface]</h3>
-<pre>
-double fVal;
-fVal = mupEval(hParser);
-</pre>
-<small>See also: <i>Example3/Example3.cpp</i>.</small>
-
-<h3>[Parser class interface]</h3>
-<pre>
-double fVal;
-try
-{
-  fVal = parser.Eval();
-}
-catch (Parser::exception_type &amp;e)
-{
-  std::cout &lt;&lt; e.GetMsg() &lt;&lt; endl;
-}
-</pre>
-<small>See also: <i>Example1/Example1.cpp; Example2/WndMain.cpp</i>.</small>
-
-<!-- 
-//
-//   The parser interface / Defining identifier character sets
-//
--->
-
-<h2><a id="idDefCharset"></a>Defining identifier character sets</h2>
-Sometimes it is necessary to change the character sets that are used for token identifiers in 
-order to avoid conflicts. The parser uses three different character sets.
-<ul>
-  <li>The name character set, is used for:
-  <ul>
-    <li>function identifiers</li>
-    <li>variable identifiers</li>
-    <li>constant identifiers</li>
-  </ul>
-  </li>
-  <li>The operator character set is used for:
-  <ul>
-    <li>binary operator identifiers</li>
-    <li>postfix operator identifiers</li>
-  </ul></li>
-
-  <li>The Infix operator charset is used for infix operator identifiers only</li>
-</ul>
-
-When using the default implementation <code>mu::muParser</code> directly you can skip this
-section. (The DLL version uses the default implementation internally.)
-
-<h3>[DLL interface]</h3>
-<pre>
-mupDefineNameChars(hParser, "0123456789_"
-                            "abcdefghijklmnopqrstuvwxyz"
-                            "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
-mupDefineOprtChars(hParser, "abcdefghijklmnopqrstuvwxyz"
-                            "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-                            "+-*^/?&lt;&gt;=#!$%&amp;|~'_");
-mupDefineInfixOprtChars(hParser, "/+-*^?&lt;&gt;=#!$%&amp;|~'_");
-</pre>
-
-<h3>[Parser class interface]</h3>
-<pre>
-parser.DefineNameChars("0123456789_"
-                       "abcdefghijklmnopqrstuvwxyz"
-                       "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
-parser.DefineOprtChars("abcdefghijklmnopqrstuvwxyz"
-                       "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-                       "+-*^/?&lt;&gt;=#!$%&amp;|~'_");
-parser.DefineInfixOprtChars("/+-*^?&lt;&gt;=#!$%&amp;|~'_");
-</pre>
-<small>See also: <i>ParserLib/muParser.cpp; ParserLib/muParserInt.cpp</i>.</small>
-
-<!-- 
-//
-//   The parser interface / Defining parser variables
-//
--->
-
-<h2><a id="idDefVar"></a>Defining parser variables</h2>
-Custom variables can be defined either explicit in the code by using the <code>DefineVar</code> function or implicit by the parser. Implicit declaration will call a variable factory function provided by the user. The parser is never the owner of its variables. So you must take care of their destruction in case of dynamic allocation. The general idea is to bind every parser variable to a C++ variable. For this reason, you have to make sure the C++ variable stays valid as long as you process a formula that needs it. Only variables of type <code>double</code> are supported.
-
-
-<h2><a id="idDefVarEx"></a>Explicitely defining variables</h2>
-Explicitely in this context means you have to do add the variables manually it in your application code. So you must know in advance which variables you intend to use. If this is not the case have a look at
-the section on <a href="#idDefVarIm">Implicit creation of new variables</a>.
-
-<table>
-  <tr>
-    <td><img src="images/warning.gif" alt="warning"/></td>  
-    <td>Defining new Variables will reset the parser bytecode. Do not use this function just for changing the values of variables! It would dramatically reduce the parser performance! Once the parser knows the address of the variable there is no need to explicitely call a function for changing the value. Since the parser knows the address it knows the value too so simply change the C++ variable in your code directly!</td>
-  </tr>
-</table>
-
-<h3>[DLL interface]</h3>
-The first parameter is a valid parser handle, the second the variable name and the third a pointer to 
-the associated C++ variable.
-
-<pre>
-double fVal=0;
-mupDefineVar(hParser, "a", &amp;fVal);  
-</pre>
-<small>See also: <i>Example3/Example3.cpp</i>.</small>
-
-<h3>[Parser class interface]</h3>
-
-The first parameter is the variable name and the second a pointer to the associated C++ variable.
-
-<pre>
-double fVal=0;
-parser.DefineVar("a", &amp;fVal);
-</pre>
-<small>See also: <i>Example1/Example1.cpp; Example2/WndMain.cpp; ParserLib/muParserTest.cpp</i>.</small>
-
-
-<h2><a id="idDefVarIm"></a>Implicit creation of new variables</h2>
-Implicit declaration of new variables is only possible by setting a factory function. Implicit creation 
-means that everytime the parser finds an unknown token at a position where a variable could be located it 
-creates a new variable with that name automatically. The necessary factory function must be of type:
-<pre>double* (*facfun_type)(const char*, void*)</pre> 
-The first argument to a factory function is the name of the variable found by the parser. The second is a pointer
-to user defined data. This pointer can be used to provide a pointer to a class that implements the actual factory. 
-By doing this it is possible to use custom factory classes depending on the variable name.
-
-<table>
-<tr><td><img src="images/warning.gif" alt="warning"/></td> <td>Be aware of name conflicts! Please notice that recognizing the name of an undefined variable is the last step during parser token detection. If the potential variable name starts with identifiers that could be interpreted as a function or operator it will be detected as such most likely resulting in an syntax error.</td>
-</tr>
-</table>
-
-The following code is an example of a factory function. The example does not use dynamic allocation for 
-the new variables although this would be possible too. But when using dynamic allocation you must keep
-track of the variables allocated implicitely in order to free them later on. 
-
-<pre>
-double* AddVariable(const char *a_szName, void *pUserData)
-{
-  static double afValBuf[100];  
-  static int iVal = 0;          
-
-  std::cout &lt;&lt; "Generating new variable \"" 
-            &lt;&lt; a_szName &lt;&lt; "\" (slots left: " 
-            &lt;&lt; 99-iVal &lt;&lt; ")" &lt;&lt; endl;
-
-  // you could also do:
-  // MyFactory *pFactory = (MyFactory*)pUserData;
-  // pFactory->CreateNewVariable(a_szName);
-
-  afValBuf[iVal++] = 0;
-  if (iVal>=99)
-    throw mu::Parser::exception_type("Variable buffer overflow.");
-
-  return &amp;afValBuf[iVal];
-}
-</pre>
-<small>See also: <i>Example1/Example1.cpp</i>.</small>
-
-In order to add a variable factory use the <code>SetVarFactory</code> functions. The first parameter 
-is a pointer to the static factory function, the second parameter is optional and represents a pointer 
-to user defined data. Without a variable factory each undefined variable will cause an undefined token error. Factory 
-functions can be used to query the values of newly created variables directly from a
-database. If you emit errors from a factory function be sure to throw an exception of
-type <code>ParserBase::exception_type</code> all other exceptions will be caught internally
-and result in an internal error.
-
-<h3>[DLL interface]</h3>
-<pre>
-mupSetVarFactory(hParser, AddVariable, pUserData);
-</pre>
-<small>See also: <i>Example3/Example3.cpp</i>.</small>
-
-<h3>[Parser class interface]</h3>
-<pre>
-parser.SetVarFactory(AddVariable, pUserData);
-</pre>
-<small>See also: <i>Example1/Example1.cpp</i>.</small>
-
-
-<!-- 
-//
-//   The parser interface / Defining parser constants
-//
--->
-
-
-<h2><a id="idDefConst"></a>Defining parser constants</h2>
-Parser constants can either be values of type <code>double</code> or <code>string</code>. Constness 
-refers to the bytecode. Constants will be stored by their value in the bytecode, not by a reference to
-their address. Thus accessing them is faster. They may be optimized away if this is possible. 
-Defining new constants or changing old ones will reset the parser to string parsing mode thus resetting
-the bytecode.
-<br/>
-The Names of user defined constants may contain only the following characters: <code>0-9, a-z, A-Z, _</code>, and they may not start with a number. Violating this rule will raise a parser error.
-
-<h3>[DLL interface]</h3>
-<pre>
-// Define value constants <code>_pi</code>
-mupDefineConst(hParser, "_pi", (double)PARSER_CONST_PI);  
-
-// Define a string constant named <code>strBuf</code>
-mupDefineStrConst("strBuf", "hello world");
-</pre>
-<small>See also: <i>Example3/Example3.cpp</i>.</small>
-
-
-<h3>[Parser class interface]</h3>
-<pre>
-// Define value constant <code>_pi</code>
-parser.DefineConst("_pi", (double)PARSER_CONST_PI);
-
-// Define a string constant named <code>strBuf</code>
-parser.DefineStrConst("strBuf", "hello world");
-</pre>
-<small>See also: <i>Example1/Example1.cpp; Example2/WndMain.cpp; ParserLib/muParserTest.cpp</i>.</small>
-
-<!-- 
-//
-//   The parser interface / Defining parser functions
-//
--->
-
-
-<h2><a id="idDefFun"></a>Defining parser functions</h2>
-The parser allows the user to define a variety of different callback functions. 
-Functions with a fixed number of up to five numeric arguments, functions with
-a variable number of numeric arguments and functions taking a sinlge string 
-argument plus up to two numeric values. 
-In order to define a parser function you need to specify its name, a pointer
-to a static callback function and an optional flag indicating if the function 
-is volatile. Volatile functions are functions that can not be optimized.
-<br/>
-The static callback functions must have of either one of the <a id="FunTypes">following types</a>:
-
-<pre>
-// For fixed number of arguments
-double (*fun_type1)(double); 
-double (*fun_type2)(double, double); 
-double (*fun_type3)(double, double, double); 
-double (*fun_type4)(double, double, double, double); 
-double (*fun_type5)(double, double, double, double, double); 
-
-// for a variable number of arguments
-//   first arg:   pointer to the arguments
-//   second arg:  number of arguments
-double (*multfun_type)(const double*, int);
-
-// for functions taking a single string plus up to two numeric values
-double (*strfun_type1)(const char *);
-double (*strfun_type2)(const char *, double);
-double (*strfun_type3)(const char *, double, double);
-</pre>
-
-
-<h3>[DLL interface]</h3>
-When using the DLL version it is necessary to call a seperate function for
-each type of callback. The following is a list of possible choices.
-
-<pre>
-// Add functions taking string parameters that cant be optimized
-mupDefineStrFun1(hParser, "StrFun1", pStrCallback1, false); 
-mupDefineStrFun2(hParser, "StrFun2", pStrCallback2, false); 
-mupDefineStrFun3(hParser, "StrFun3", pStrCallback3, false); 
-
-// Add an function with a fixed number of arguments
-mupDefineFun1(hParser, "fun1", pCallback1, false);             
-mupDefineFun2(hParser, "fun2", pCallback2, false);             
-mupDefineFun3(hParser, "fun3", pCallback3, false);             
-mupDefineFun4(hParser, "fun4", pCallback4, false);             
-mupDefineFun5(hParser, "fun5", pCallback5, false);             
-
-// Define a function with variable number of arguments
-mupDefineMultFun(hParser, "MultFun", pMultCallback);  
-</pre>
-<small>See also: <i>Example3.cpp</i>.</small>
-
-
-<h3>[Parser class interface]</h3>
-Defining callback functions by using the parser class directly is easier since there is
-only a single member function that is used for all kinds of callbacks. Since
-this member function is defined as a template internally it automatically associates
-the right code to any given type of callback. (As long as this type is listed 
-<a href="#FunTypes">above</a>)
-
-<pre>
-parser.DefineFun("FunName", pCallback, false)
-</pre>
-<small>See also: <i>Example1/Example1.cpp; ParserLib/muParser.cpp; ParserLib/muParserInt.cpp</i>.</small>
-
-<!-- 
-//
-//
-//   The parser interface / Defining parser operators
-//
-//
--->
-
-<h2><a id="idDefOprt"></a>Defining parser operators</h2>
-The parser is extensible with different kinds of operators: prefix operators, infix operators
-and binary operators. Operators can be applied to numerical values only (not to string constants).
-
-<ul>
-  <li>Postfix operators are operators that succeed values. For instance the factorial operator 
-      (<code>a! = a*(a-1)...*2*1</code>). Another application for postfix operators is their use as multipliers 
-      that can be used for implementing units.</li>
-  <li>Infix operators are operators like the unary minus which serves as a sign or the logical 
-      not <code>"!(a&lt;9)"</code>.</li>
-  <li>Binary operators can be defined in order to supplement or replace the built in binary operators
-      they require an additional parameter, the operator priority.</li>
-</ul>
-
-
-<!-- 
-//
-//   The parser interface / unary Operators
-//
--->
-
-
-<h3><a id="idUnOp"></a>Unary operators</h3>
-Both postfix and infix operators take <a href="#FunTypes">callback functions of type</a> <code>fun_type1</code> like the following: 
-
-<pre>
-double MyCallback(double fVal) 
-{
-  return fVal/1000.0;
-}
-</pre>
-
-For defining postfix operators and infix operators you need a valid parser instance, 
-an identifier string, and an optional third parameter marking the operator as volatile
-(non optimizable). 
-
-<h3>[DLL interface]</h3>
-<pre>
-// Define an infix operator
-mupDefineInfixOprt(hParser, "!", MyCallback);
-
-// Define a postfix operators
-mupDefinePostfixOprt(hParser, "M", MyCallback);
-</pre>
-<small>See also:<i>Example3/Example3.cpp</i>.</small>
-
-<h3>[Parser class interface]</h3>
-<pre>
-// Define an infix operator
-parser.DefineInfixOprt("!", MyCallback);
-
-// Define a postfix operators
-parser.DefinePostfixOprt("m", MyCallback);
-</pre>
-<small>See also:<i>Example1/Example1.cpp; Example2/WndMain.cpp; muParserTest.cpp</i>.</small>
-
-
-
-<!-- 
-//
-//   The parser interface / Binary Operators
-//
--->
-
-
-<h3><a id="idBinOp"></a>Binary operators</h3>
-This parser has 15 <a href="mup_features.html#idDef3">Built in binary operators</a>. Sometimes it might be necessary to add additional custom binary operators. Examples are <code>shl</code> or <code>shr</code>, the "<b>shift left</b>" and "<b>shift right</b>" operators for integer numbers.
-In order to add user defined operators you need to assign a name, a callback function of type <code><a href="#idDefFun">fun_type2</a></code> and a priority for each new binary operator. You are not allowed to overload built in operators, this would result in an error being raised! For instance lets consider the
-following callback function which should be assigned to a binary operator:
-
-<pre>
-double pMyAddFun(double v1, double v2) 
-{
-  return v1+v2; 
-}
-</pre>
-
-For the definintion of binary operators you need at least 4 parameters. The first is a valid parser handle,
-the second is the identifier of the operator, the third is the operator callback function, the fourth is 
-the operator priority and the optional fifth parameter is a flag of type <code>bool</code> marking the operator
-as volatile. (The examples below omit the last flag.)
-Having defined a proper operator callback function you can add the binary operator with the following code:
-
-<h3>[DLL interface]</h3>
-<pre>
-mupDefineOprt(hParser, "add", pMyAddFun, 0);
-</pre>
-<small>See also:<i>Example3/Example3.cpp</i>.</small>
-
-<h3>[Parser class interface]</h3>
-<pre>
-parser.DefineOprt("add", pMyAddFun, 0);
-</pre>
-<small>See also:<i>Example1/Example1.cpp; Example2/WndMain.cpp; muParserTest.cpp</i>.</small>
-
-<a href="mup_features.html#idDef3">The priority</a> value must be greater or equal than zero (lowest possible priority). It controls the operator precedence in the formula. For instance if you want to calculate the formula <code>1+2*3^4</code> in a mathemetically correct sense you have to make sure that Addition has a lower priority than multiplication which in turn has a lower priority than the power operator. The most likely cases are that you assign an operator with a low priority of 0 (like <code>and</code>, <code>or</code>, <code>xor</code>) or a high priority that is larger than 6. (The priority of the power operator (<code>^</code>).)
-By assigning Priority values already used by built in operators you might introduce unwanted side effects. To avoid this and make the order of calculation clear you must use brackets in these cases. Otherwise the order will be determined by the Formula parsing direction which is from left to right.
-<br/>
-<br/>
-Example A:  Priority of <code>shl</code> equals priority of an addition; The order of the execution is from left to right.
-<pre>
-1 + 2 shl 1 => (1 + 2) shl 1
-2 shl 1 + 1 => (s shl 1) + 1
-</pre>
-Example B:  Priority of <code>shl</code> is higher than the one of the addition; <code>shl</code> is executed first.
-<pre>
-1 + 2 shl 1 => 1 + (2 shl 1)
-2 shl 1 + 1 => (2 shl 1) + 1
-</pre>
-
-If you encounter such conflicts or simply dont need the built in operators these can easily be deactivated using the <code>EnableBuiltInOprt(bool)</code> function. If you call this function you must add binary operators manually. After all without any operators you won't be able to parse anything useful. User defined operators come with approximately 10% decrease in parsing speed compared to built in operators. There is no way to avoid that. They cause an overhead when calling theeir callback functions. (This is the reason why there are built in operators)
-
-<pre>
-// disable all built in operators
-parser.EnableBuiltInOprt(false);
-</pre>
-
-
-<!-- 
-//
-//   The parser interface / Querying parser variables
-//
--->
-
-<h2><a id="idQueryVar"></a>Querying parser variables</h2>
-Keeping track of all variables can be a difficult task. For simplification the parser allows the user
-to query the variables defined in the parser. There are two different sets of variables that can 
-be accessed:
-
-<ul>
-  <li>Varaiables defined in the parser</li>
-  <li>Variables used in the current expression</li>
-</ul>
-
-Since the usage of the necessary commands is similar the following example shows 
-querying the parser variables only.
-
-
-<h3>[DLL interface]</h3>
-For querying the variables used in the expression exchange <code>mupGetVarNum(...)</code> with 
-<code>mupGetExprVarNum(...)</code> and <code>mupGetVar(...)</code> with <code>mupGetExprVar(...)</code> 
-in the following example. Due to the use of an temporary internal static buffer for storing the variable
-name in the DLL version this DLL-function is not thread safe.
-
-<pre>
-// Get the number of variables
-int iNumVar = mupGetVarNum(a_hParser);
-
-// Query the variables  
-for (int i=0; i &lt; iNumVar; ++i)
-{
-  const char *szName = 0;
-  double *pVar = 0;
-  mupGetVar(a_hParser, i, &amp;szName, &amp;pVar);
-  std::cout &lt;&lt; "Name: " &lt;&lt; szName &lt;&lt; "   Address: [0x" &lt;&lt; pVar &lt;&lt; "]\n";
-}
-</pre>
-<small>See also: <i>Example3/Example3.cpp</i>.</small>
-
-<h3>[Parser class interface]</h3>
-For querying the expression variables exchange <code>parser.GetVar()</code> with
-<code>parser.GetUsedVar()</code> in the following example.
-
-<pre>
-// Get the map with the variables
-mu::Parser::varmap_type variables = parser.GetVar();
-cout &lt;&lt; "Number: " &lt;&lt; (int)variables.size() &lt;&lt; "\n";
-
-// Get the number of variables 
-mu::Parser::varmap_type::const_iterator item = variables.begin();
-
-// Query the variables
-for (; item!=variables.end(); ++item)
-{
-  cout &lt;&lt; "Name: " &lt;&lt; item->first &lt;&lt; " Address: [0x" &lt;&lt; item->second &lt;&lt; "]\n";
-}
-</pre>
-
-<small>
-  See also: <i>Example1/Example1.cpp, Example2/WndMain.cpp</i>.
-</small>
-
-<!-- 
-//
-//   The parser interface / Querying parser constants
-//
--->
-
-
-<h2><a id="idQueryConst"></a>Querying parser constants</h2>
-Querying parser constants is similar to querying variables and expression variables. 
-
-<h3>[DLL interface]</h3>
-Due to the use of an temporary internal static buffer for storing the variable
-name in the DLL version this DLL-function is not thread safe.
-
-<pre>
-int iNumVar = mupGetConstNum(a_hParser);
-
-for (int i=0; i &lt; iNumVar; ++i)
-{
-  const char *szName = 0;
-  double fVal = 0;
-  mupGetConst(a_hParser, i, &amp;szName, fVal);
-  std::cout &lt;&lt; "  " &lt;&lt; szName &lt;&lt; " = " &lt;&lt; fVal &lt;&lt; "\n";
-}
-</pre>
-
-<small>
-  See also: <i>Example3/Example3.cpp</i>.
-</small>
-
-
-<h3>[Parser class interface]</h3>
-The parser class provides you with the <code>GetConst()</code> member function that returns a map structure
-with all defined constants. The following code snippet shows how to use it:
-<pre>
-mu::Parser::valmap_type cmap = parser.GetConst();
-if (cmap.size())
-{
-  mu::Parser::valmap_type::const_iterator item = cmap.begin();
-  for (; item!=cmap.end(); ++item)
-    cout &lt;&lt; "  " &lt;&lt; item->first &lt;&lt; " =  " &lt;&lt; item->second &lt;&lt; "\n";
-}
-</pre>
-<small>See also: <i>Example1/Example1.cpp, Example2/WndMain.cpp</i>.</small>
-
-<!-- 
-//
-//   The parser interface / Setting custom value recognition callbacks
-//
--->
-
-
-<h2><a id="idDefConst2"></a>Setting custom value recognition callbacks</h2>
-The parser default implementation <i>(muParser.cpp)</i> scans expressions 
-only for floating point values. Custom value recognition callbacks can be used in order to 
-implement support for binary, hexadecimal or octal numbers. These functions are called 
-during the string parsing and allow the user to scan portions of the original expressions
-for values. Their callback functions must be of the following type:
-
-<pre>
-bool (*identfun_type)(const char_type*, int&amp;, value_type&amp;);
-</pre>
-
-<p>
-If the parser reaches an a position during string parsing that could host a value token it 
-tries to interpret it as such. If that fails the parser sucessively calls all 
-internal value recognition callbacks in order to give them a chance to make 
-sense out of what has been found. If all of them fail the parser continues to
-check if it is a Variable or another kind of token. 
-</p>
-
-<p>
-In order to perform the task of value recognition these functions take a <code>const char</code>
-pointer, a reference to <code>int</code> and a reference 
-to <code>double</code> as their arguments. 
-The <code>const char</code> pointer points to the current formula position. The second
-argument is the index of that position. This value must be increased by the length of the 
-value entry if one has been found. In that case the value must be written to the third 
-argument which is of type <code>double</code>.
-</p>
-
-<p>
-The next code snippet shows a sample implementation of a function that reads and
-interprets binary values from the expression string. The code is taken from 
-<i>muParserInt.cpp</i> the implementation of a parser for integer numbers. Binary 
-numbers must be preceded with a <code>#</code> (i.e. <code>#1000101</code>).
-</p>
-
-<pre>
-bool ParserInt::IsBinVal(const char_type *a_szExpr, 
-                         int &amp;a_iPos, value_type &amp;a_fVal)
-{
-  if (a_szExpr[0]!='#') 
-    return false;
-
-  unsigned iVal = 0, iBits = sizeof(iVal)*8;
-  for (unsigned i=0; 
-       (a_szExpr[i+1]=='0'||a_szExpr[i+1]=='1')&amp;&amp; i&lt;iBits; 
-       ++i)
-  {
-    iVal |= (int)(a_szExpr[i+1]=='1') &lt;&lt; ((iBits-1)-i);
-  }
-
-  if (i==0) 
-    return false;
-
-  if (i==iBits)
-    throw exception_type("Binary to integer conversion error (overflow).");
-
-  a_fVal = (unsigned)(iVal &gt;&gt; (iBits-i) );
-  a_iPos += i+1;
-
-  return true;
-}
-</pre>
-
-Once you have the callback you must add it to the parser. This can be done with:
-
-<h3>[DLL interface]</h3>
-<pre>
-mupAddValIdent(hParser, IsBinVal);
-</pre>
-
-<small>
-See also: <i>Example3/Example3.cpp</i>.
-</small>
-
-
-<h3>[Parser class interface]</h3>
-<pre>
-parser.AddValIdent(IsBinVal);
-</pre>
-<small>
-See also: <i>ParserLib/muParserInt.cpp</i>.
-</small>
-
-<!-- 
-//
-//   The parser interface / Removing variables or constants
-//
--->
-
-<h2><a id="idRemoveVar"></a>Removing variables or constants</h2>
-Removing variables and constants can be done all at once using <code>ClearVar</code> and 
-<code>ClearConst</code>. Additionally variables can be removed by name using 
-<code>RemoveVar</code>. Since the parser never owns the variables you must take care of
-their release yourself <small>(if they were dynamically allocated)</small>. If you need to browse all 
-the variables have a look at the chapter explaining how to 
-<a href="#idQueryVar">query parser variables</a>.
-
-
-<h3>[DLL interface]</h3>
-<pre>
-// Remove all constants
-mupClearConst(hParser);
-
-// remove all variables
-mupClearVar(hParser);
-
-// remove a single variable by name
-mupRemoveVar(hParser, "a"); 
-</pre>
-
-
-<h3>[Parser class interface]</h3>
-<pre>
-// Remove all constants
-parser.ClearConst();
-
-// remove all variables
-parser.ClearVar();
-
-// remove a single variable by name
-parser.RemoveVar("a"); 
-</pre>
-
-<!-- 
-//
-//   The parser interface / Error handling
-//
--->
-
-
-<h2><a id="idErrors"></a>Error handling</h2>
-In case of an error both parser class and the parser DLL provide 
-similar methods for querying the information associated with the 
-error. In the parser class they are member functions of the associated 
-exception class <code>mu::Parser::exception_type</code> and in the DLL 
-version they are normal functions.
-
-<p>
-These functions are:
-</p>
-
-<ul>
-  <li><code>exception.GetMsg() / mupGetErrorMsg()</code> - returns the error message.</li>
-  <li><code>exception.GetExpr() / mupGetExpr()</code> - returns the current formula (if a formula is set)</li>
-  <li><code>exception.GetToken() / mupGetErrorToken()</code> - returns the token associated with the error (if applicable)</li>
-  <li><code>exception.GetPos() / mupGetErrorPos()</code> - returns the current formula position (if applicable)</li>
-  <li><code>exception.GetCode() / mupGetErrorCode()</code> - returns the error code.</li>
-</ul>
-
-<p>
-The following table lists the parser error codes. 
-The first column contains the enumeration values as defined in the enumeration <code>mu::EErrorCodes</code> 
-located in the file <i>muParserError.h</i>. Since they are only accessible from C++ the second column lists 
-their numeric code and the third column contains the error description.
-</p>
-
-<table border="0">
-<thead>
-  <tr>
-    <td>             <small><b>Enumeration name</b></small></td>
-    <td align="center"><small><b>Value</b></small></td>
-    <td>             <small><b>Description</b></small></td>
-  </tr>
-</thead>
-
-<tbody>
-  <tr>
-      <td><small><code>ecUNEXPECTED_OPERATOR</code></small></td>  
-      <td align="center"><small>0</small></td>
-      <td><small>Unexpected binary operator found</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecUNASSIGNABLE_TOKEN</code></small></td>
-      <td align="center"><small>1</small></td>
-      <td><small>Token cant be identified</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecUNEXPECTED_EOF</code></small></td> 
-      <td align="center"><small>2</small></td> 
-      <td><small>Unexpected end of formula. (Example: "2+sin(")</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecUNEXPECTED_COMMA</code></small></td> 
-      <td align="center"><small>3</small></td>  
-      <td><small>An unexpected comma has been found. (Example: "1,23")</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecUNEXPECTED_ARG</code></small></td>
-      <td align="center"><small>4</small></td> 
-      <td><small>An unexpected argument has been found</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecUNEXPECTED_VAL</code></small></td>
-      <td align="center"><small>5</small></td> 
-      <td><small>An unexpected value token has been found</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecUNEXPECTED_VAR</code></small></td>
-      <td align="center"><small>6</small></td>  
-      <td><small>An unexpected variable token has been found</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecUNEXPECTED_PARENS</code></small></td> 
-      <td align="center"><small>7</small></td>
-      <td><small>Unexpected parenthesis, opening or closing</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecUNEXPECTED_STR</code></small></td>
-      <td align="center"><small>8</small></td> 
-      <td><small>A string has been found at an inapropriate position</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecSTRING_EXPECTED</code></small></td>
-      <td align="center"><small>9</small></td>  
-      <td><small>A string function has been called with a different type of argument</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecVAL_EXPECTED</code></small></td>
-      <td align="center"><small>10</small></td> 
-      <td><small>A numerical function has been called with a non value type of argument</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecMISSING_PARENS</code></small></td>
-      <td align="center"><small>11</small></td> <td><small>Missing parens. (Example: "3*sin(3")</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecUNEXPECTED_FUN</code></small></td>
-      <td align="center"><small>12</small></td> 
-      <td><small>Unexpected function found. (Example: "sin(8)cos(9)")</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecUNTERMINATED_STRING</code></small></td>
-      <td align="center"><small>13</small></td>
-      <td><small>unterminated string constant. (Example: "3*valueof("hello)")</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecTOO_MANY_PARAMS</code></small></td>
-      <td align="center"><small>14</small></td> 
-      <td><small>Too many function parameters</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecTOO_FEW_PARAMS</code></small></td> 
-      <td align="center"><small>15</small></td>
-      <td><small>Too few function parameters. (Example: "ite(1&lt;2,2)")</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecOPRT_TYPE_CONFLICT</code></small></td> 
-      <td align="center"><small>16</small></td> 
-      <td><small>binary operators may only be applied to value items of the same type</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecSTR_RESULT</code></small></td>  
-      <td align="center"><small>17</small></td> 
-      <td><small>result is a string</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecINVALID_NAME</code></small></td>
-      <td align="center"><small>18</small></td> 
-      <td><small>Invalid function, variable or constant name.</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecBUILTIN_OVERLOAD</code></small></td>
-      <td align="center"><small>19</small></td> 
-      <td><small>Trying to overload builtin operator</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecINVALID_FUN_PTR</code></small></td>  
-      <td align="center"><small>20</small></td> 
-      <td><small>Invalid callback function pointer</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecINVALID_VAR_PTR</code></small></td>
-      <td align="center"><small>21</small></td> 
-      <td><small>Invalid variable pointer</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecNAME_CONFLICT</code></small></td>  
-      <td align="center"><small>22</small></td> 
-      <td><small>Name conflict</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecOPT_PRI</code></small></td>  
-      <td align="center"><small>23</small></td>
-      <td><small>Invalid operator priority</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecDOMAIN_ERROR</code></small></td>
-      <td align="center"><small>24</small></td>
-      <td><small>catch division by zero, sqrt(-1), log(0) (currently unused)</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecDIV_BY_ZERO</code></small></td>
-      <td align="center"><small>25</small></td> 
-      <td><small>Division by zero (currently unused)</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecGENERIC</code></small></td> 
-      <td align="center"><small>26</small></td> 
-      <td><small>Error that does not fit any other code but is not an internal error</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecINTERNAL_ERROR</code></small></td>   
-      <td align="center"><small>27</small></td> 
-      <td><small>Internal error of any kind.</small></td>
-  </tr>
-  </tbody>
-</table>
-
-<h3>[DLL interface]</h3>
-Since dynamic libraries with functions exported in C-style can't throw exceptions the DLL version
-provides the user with a callback mechanism to raise errors. Simply add a callback function
-that does the handling of errors. Additionally you can query the error flag with 
-<code>mupError()</code>. Please note that by calling this function you will automatically reset the error flag!
-<pre>
-// Callback function for errors
-void OnError()
-{
-  cout &lt;&lt; "Message:  " &lt;&lt; mupGetErrorMsg() &lt;&lt; "\n";
-  cout &lt;&lt; "Token:    " &lt;&lt; mupGetErrorToken() &lt;&lt; "\n";
-  cout &lt;&lt; "Position: " &lt;&lt; mupGetErrorPos() &lt;&lt; "\n";
-  cout &lt;&lt; "Errc:     " &lt;&lt; mupGetErrorCode() &lt;&lt; "\n";
-}
-
-...
-
-// Set a callback for error handling
-mupSetErrorHandler(OnError);
-
-// The next function could raise an error
-fVal = mupEval(hParser);
-
-// Test for the error flag
-if (!mupError()) cout &lt;&lt; fVal &lt;&lt; "\n";
-</pre>
-<small>See also: Example3/Example3.cpp</small>
-
-<h3>[Parser class interface]</h3>
-In case of an error the parser class raises an exception of type <code>Parser::exception_type</code>. This 
-class provides you with several member functions that allow querying the exact cause as well as 
-additional information for the error.
-<pre>
-try
-{
-  ...
-  parser.Eval();
-  ...
-}
-catch(mu::Parser::exception_type &amp;e)
-{
-  cout &lt;&lt; "Message:  " &lt;&lt; e.GetMsg() &lt;&lt; "\n";
-  cout &lt;&lt; "Formula:  " &lt;&lt; e.GetExpr() &lt;&lt; "\n";
-  cout &lt;&lt; "Token:    " &lt;&lt; e.GetToken() &lt;&lt; "\n";
-  cout &lt;&lt; "Position: " &lt;&lt; e.GetPos() &lt;&lt; "\n";
-  cout &lt;&lt; "Errc:     " &lt;&lt; e.GetCode() &lt;&lt; "\n";
-}
-</pre>
-<small>See also: Example1/Example1.cpp</small>
-
-
-
-            <hr/>
-            <table border="0" style="width:100%">
-            <tr>
-              <td>&copy; 2005-2010 <a href="http://beltoforion.de">Ingo Berg</a> | 
-                  <a href="http://beltoforion.de/privacy_policy/privacy_policy_en.html">Privacy policy</a></td>
-              <td style="text-align:right; padding-right: 3em;">
-                <a href="#top">^ TOP</a>
-              </td>
-            </tr>
-          </table>
-          <br/>
-          <br/>
-
-          </td>
-        </tr>
-      </tbody>
-    </table>
-
-<!--
-    <script type="text/javascript">
-    var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-    document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-    </script>
-    <script type="text/javascript">
-    try 
-    {
-      var pageTracker = _gat._getTracker("UA-1019178-1");
-      pageTracker._trackPageview();
-    } 
-    catch(err) {}
-    </script>
--->
-</body>
-</html>
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/mup_intro.html
--- a/muParser/docs/html/mup_intro.html	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,302 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <link rel="stylesheet" type="text/css" href="style/formate.css"/>
-  <meta name="author" content="Ingo Berg"/>
-  <!-- $META -->	
-  <meta name="keywords" content="math parser, math expression parser, muparser, muparserx, muparser.net, .net, c++, lib, dll, donation, function parser"/>
-  <meta name="description" content="muParser - a fast math parser library"/>
-  <title>muParser - a fast math parser library</title>
-
-  <script src="script/functions.js" language="javascript" type="text/javascript"></script>
-  <script type="text/javascript">
-  imgHome=new Image();
-  imgHome.src="images/home.png";
-  imgHomeDark=new Image();
-  imgHomeDark.src="images/home_dark.png";
-
-  imgApi=new Image();
-  imgApi.src="images/api.png"; 
-  imgApiDark=new Image();
-  imgApiDark.src="images/api_dark.png";
-
-  function ChangeButtonImage(num,obj)
-  {
-    window.document.images[num].src=obj.src;
-  }
-  </script>
-</head>
-
-<body>
-    <div class="gradient" id="top">
-      <div class="header">
-        muParser - a fast math parser library
-        <br/>
-        <div style="font-size:14pt;">Version 1.32</div>
-      </div>
-
-      <div style="position:absolute; width:250px; height:100px; top:20px; text-align:center">
-        <a href="http://sourceforge.net/projects/muparser">
-          <img src="http://sflogo.sourceforge.net/sflogo.php?group_id=137191&amp;type=15" 
-               width="150" 
-               height="40" 
-               border="0"
-               alt="Get muParser - A fast math parser library at SourceForge.net. Fast, secure and Free Open Source software downloads" />
-        </a>
-      </div>	
-
-      <div style="position:absolute; width:100px; right:110px; text-align:center; line-height: 1em;">
-        <a class="white" 
-           href="http://www.beltoforion.de"  
-           onmouseover="ChangeButtonImage(1,imgHome)" 
-           onmouseout="ChangeButtonImage(1,imgHomeDark)">
-          <img src="images/home_dark.png" border="0" height="40" alt="My home page"/>
-          <br/>
-          <span class="tiny_text">My home<br/>page</span>
-        </a>
-     </div>
-
-     <div  style="position:absolute; width:100px; right:10px; text-align:center; line-height: 1em;">
-       <a class="white" 
-          href="http://muparser.sourceforge.net/classdocu/index.html"
-          onmouseover="ChangeButtonImage(2,imgApi)" 
-          onmouseout="ChangeButtonImage(2,imgApiDark)">
-         <img src="images/api_dark.png" border="0" alt="class documentation" height="40"/>
-         <br/>
-         <span class="tiny_text">muParser<br/>API-doc</span>
-       </a>
-    </div>
-  <!--
-    <div  style="position:absolute; width:100px; right:10px; text-align:center; line-height: 1em;">
-      <a class="white" 
-         href="http://sourceforge.net/project/showfiles.php?group_id=137191"
-         onmouseover="ChangeButtonImage(3,imgDown)" 
-         onmouseout="ChangeButtonImage(3,imgDownDark)">
-        <img src="images/download_dark.png" height="40" border="0" alt="muParser download"/>
-        <br/>
-        <span class="tiny_text">muParser<br/>Download</span>
-      </a>
-    </div>
--->
-  </div> <!-- class="gradient" -->
-
-    <!-- Tabelle mit Hauptinhalt der Seite -->
-    <table id="MainTable" border="0" cellpadding="5" cellspacing="0" style="width:100%; height:100%;">
-      <tbody>
-        <tr>
-          <td style="vertical-align: top; text-align: center" width="230">
-            <h3 class="navi_heading navi_info">Introduction</h3>
-            <div class="sidebarlink">
-                <a href="index.html">About the parser</a><br/>
-                <a href="http://sourceforge.net/news/?group_id=137191">News</a><br/>
-                <a href="mup_links.html">Software using muParser</a><br/>
-                <a href="mup_licence.html">Licence</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_blocks">Features</h3>
-            <div class="sidebarlink">
-              <a href="mup_features.html">Features</a><br/>
-              <a href="mup_features.html#idFeatureOverview">Overview</a><br/>
-              <a href="mup_features.html#idDef2">Built in functions</a><br/>
-              <a href="mup_features.html#idDef3">Built in binary operators</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_build">Build instructions</h3>
-            <div class="sidebarlink">
-              <a href="mup_usage.html#idInstWin">Building on Win32</a><br/>
-              <a href="mup_usage.html#idInstLinux">Building on BSD/Linux</a><br/>
-              <a href="mup_usage.html#idInstMisc">Misc build instructions</a><br/>
-              <a href="mup_usage.html#idInstInc">Including the files</a><br/>
-              <a href="mup_usage.html#idInstInc">Where to ask for help</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_list">Math parser interface</h3>
-            <div class="sidebarlink">
-              <a href="mup_interface.html#idInit">Parser (de)initialization</a><br/>
-              <a href="mup_interface.html#idEval">Evaluating an expression</a><br/>
-              <a href="mup_interface.html#idSetExpr">Setting the expression</a><br/>
-              <a href="mup_interface.html#idDefCharset">Defining identifier charsets</a><br/>
-              <a href="mup_interface.html#idDefVar">Defining parser variables</a><br/>
-              <a href="mup_interface.html#idDefVarEx">Explicit variable definition</a><br/>
-              <a href="mup_interface.html#idDefVarIm">Implicit variable definition</a><br/>
-              <a href="mup_interface.html#idDefConst">Defining constants</a><br/>
-              <a href="mup_interface.html#idDefFun">Defining functions</a><br/>
-              <a href="mup_interface.html#idDefOprt">Defining operators</a><br/>
-              <a href="mup_interface.html#idUnOp">Unary operators</a><br/>
-              <a href="mup_interface.html#idBinOp">Binary operators</a><br/>
-              <a href="mup_interface.html#idQueryVar">Querying variables</a><br/>
-              <a href="mup_interface.html#idQueryConst">Querying constants</a><br/>
-              <a href="mup_interface.html#idDefConst2">Value recognition callbacks</a><br/>
-              <a href="mup_interface.html#idDefConst2">Removing variables/constants</a><br/>
-              <a href="mup_locale.html#idLoc">Localization</a><br/>
-              <a href="mup_interface.html#idErrors">Error handling</a><br/>
-              <a href="mup_version.html#idExample">Example code</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_question">Current version</h3>
-            <div class="sidebarlink">
-              <a href="mup_version.html#idRelNote">Release notes</a><br/>
-              <a href="mup_version.html#idBench">Benchmarks</a><br/>
-            </div>
-
-            <br/>
-            <div align="center">
-              <a href="http://www.opensource.org/"><img style="border:0;" src="images/osi.jpg" alt="Open source initiative logo"/></a>
-              <br/>
-              <br/>
-              <a href="http://validator.w3.org/check?uri=referer">
-                <img src="http://www.w3.org/Icons/valid-xhtml10-blue" alt="Valid XHTML 1.0 Transitional" style="border:0;width:88px;height:31px"/>
-              </a>
-              <br/>
-              <br/>
-	      <a href="http://jigsaw.w3.org/css-validator/check/referer">
-                <img style="border:0;width:88px;height:31px" src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="CSS ist valide!" />
-	      </a>
-
-            </div>
-          </td>
-
-          <td style="height: 100%; padding: 1em; vertical-align: top;">
-            <!-- 
-              This section contains the real page content. 
-              pages are created automatically by using the script "build_page.sh"
-              which combines section templated with the navigation bar.
-
-	      This creates webpages that do not rely on php3 or Javascript for 
-              serverside or client side html inclusion.
-            //-->
-            <!-- $PLACEHOLDER -->
-<script type="text/javascript">
-  imgParserNET=new Image();
-  imgParserNET.src="images/muParserNET.png";
-  imgParserNETDark=new Image();
-  imgParserNETDark.src="images/muParserNET_.png";
-
-  imgParserX=new Image();
-  imgParserX.src="images/muParserX.png"; 
-  imgParserXDark=new Image();
-  imgParserXDark.src="images/muParserX_.png";
-
-  imgDownload=new Image();
-  imgDownload.src="images/download_muparser.png"; 
-  imgDownloadDark=new Image();
-  imgDownloadDark.src="images/download_muparser_.png";
-</script>
-
-<h2>About the parser</h2> 
-
-<p>
-Many applications require the parsing of <strong>mathematical expressions</strong>.
-The main objective of this library is to provide a fast and easy way of
-doing this. <strong>muParser</strong> is an extensible high performance
-<strong>math parser</strong> library written in <a href="http://www.cplusplus.com/">C++</a>. It works 
-by transforming a mathematical expression into bytecode and precalculating constant 
-parts of the expression.
-</p>
-
-<div style="/*position:float; */border: 1px solid #000000; width:420px; height:220px; text-align:left; float:left; margin-right:10px; background-color: #ffffff;">
-<img src="images/related.png" alt="math expression parser - related links" border="0" width="420"/>
-  <a href="http://www.codeproject.com/KB/recipes/muParser.aspx">
-    <img src="images/muParserNET_.png" alt=".NET math parser" border="0" width="200" style="float:left;" onmouseover="ChangeButtonImage(7,imgParserNET)" onmouseout="ChangeButtonImage(7,imgParserNETDark)"/>
-    <br/>
-    <strong>muParser C# wrapper</strong>
-    <br/>
-    <span class="tiny_text">a math parser for .NET</span>
-  </a>
-
-  <br clear="all"/><br/>
-  <a href="http://beltoforion.de/muparserx/math_expression_parser_en.html">
-    <img src="images/muParserX_.png" 
-         alt="math expression parser" 
-         border="0" 
-         width="200" 
-         style="float:left;"
-         onmouseover="ChangeButtonImage(8,imgParserX)" 
-         onmouseout="ChangeButtonImage(8,imgParserXDark)"/>
-    <strong>muParserX</strong>
-    <br/>
-    <span class="tiny_text">a math expression parser with support for multitype data types</span>
-  </a>
-</div>
-The library was designed with portability in mind and should compile on every
-standard compliant C++ compiler. Wrapper for <strong>C</strong> and <strong>C#</strong> 
-exist. The parser archive contains ready to use project and makefiles files for a variety of 
-platforms. The code runs on both <strong>32 bit</strong> and 
-<strong>64 bit</strong> architechtures and has been tested using MS VC++ V8.0 
-and GCC V4.4.1. Code samples are provided in order to help you understand its 
-usage. The library is <strong>open source</strong> and distributed under 
-the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.
-
-<div style="text-align:center;">
-<a href="http://sourceforge.net/project/showfiles.php?group_id=137191">
-  <img src="images/download_muparser_.png" 
-       border="0" 
-       alt="muParser download"
-       onmouseover="ChangeButtonImage(9,imgDownload)" 
-       onmouseout="ChangeButtonImage(9,imgDownloadDark)"/>
-</a>
-</div>
-
-<p>
-Before I go on, I'd like to thank <a href="http://sourceforge.net">SourceForge</a> for hosting this project. This
-pages would not exist without the webspace provided by them and of course I'd like 
-to thank <a href="http://www.codeproject.com">CodeProject</a> for hosting the original 
-<a href="http://www.codeproject.com/cpp/FastMathParser.asp" target="_blank">math parser</a> 
-article.
-</p>
-
-
-<h2>Support this project</h2>
-muParser is free software and anyone can use it free of charge for commercial and noncommercial purposes. If you wish you can support this project by <strong>making a small donation</strong>:
-<br/>
-<br/>
-<div style="text-align:center;">
-  <a href="http://sourceforge.net/donate/index.php?group_id=137191">
-    <img src="http://images.sourceforge.net/images/project-support.jpg" 
-         width="196" 
-         height="64" 
-         border="0" 
-         alt="Support This Project"/> 
-  </a>
-</div>
-<br/>
-A project like muParser requires permanent maintanence in order to adopt to new platforms, new compiler version and for fixing bugs. So if you are using the library and find it useful i would like to encourage you to make a donation in order to help keeping the project up to date. I can officially guarantee that you <strong>make my day</strong> by donating even a small amount of money. In a way this is a "Wow the people actually really appreciate what i'm doing" kind of thing and that's whats driving me and ultimately this is what is keeping this project alive.
-
-
-
-            <hr/>
-            <table border="0" style="width:100%">
-            <tr>
-              <td>&copy; 2005-2010 <a href="http://beltoforion.de">Ingo Berg</a> | 
-                  <a href="http://beltoforion.de/privacy_policy/privacy_policy_en.html">Privacy policy</a></td>
-              <td style="text-align:right; padding-right: 3em;">
-                <a href="#top">^ TOP</a>
-              </td>
-            </tr>
-          </table>
-          <br/>
-          <br/>
-
-          </td>
-        </tr>
-      </tbody>
-    </table>
-
-<!--
-    <script type="text/javascript">
-    var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-    document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-    </script>
-    <script type="text/javascript">
-    try 
-    {
-      var pageTracker = _gat._getTracker("UA-1019178-1");
-      pageTracker._trackPageview();
-    } 
-    catch(err) {}
-    </script>
--->
-</body>
-</html>
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/mup_licence.html
--- a/muParser/docs/html/mup_licence.html	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,259 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <link rel="stylesheet" type="text/css" href="style/formate.css"/>
-  <meta name="author" content="Ingo Berg"/>
-  <!-- $META -->	
-  <meta name="keywords" content="muparser, licence, licencing, terms and conditions, legal, mit, open source, c++"/>
-  <meta name="description" content="muparser licence"/>
-  <title>muparser Licence</title>
-
-  <script src="script/functions.js" language="javascript" type="text/javascript"></script>
-  <script type="text/javascript">
-  imgHome=new Image();
-  imgHome.src="images/home.png";
-  imgHomeDark=new Image();
-  imgHomeDark.src="images/home_dark.png";
-
-  imgApi=new Image();
-  imgApi.src="images/api.png"; 
-  imgApiDark=new Image();
-  imgApiDark.src="images/api_dark.png";
-
-  function ChangeButtonImage(num,obj)
-  {
-    window.document.images[num].src=obj.src;
-  }
-  </script>
-</head>
-
-<body>
-    <div class="gradient" id="top">
-      <div class="header">
-        muParser - a fast math parser library
-        <br/>
-        <div style="font-size:14pt;">Version 1.32</div>
-      </div>
-
-      <div style="position:absolute; width:250px; height:100px; top:20px; text-align:center">
-        <a href="http://sourceforge.net/projects/muparser">
-          <img src="http://sflogo.sourceforge.net/sflogo.php?group_id=137191&amp;type=15" 
-               width="150" 
-               height="40" 
-               border="0"
-               alt="Get muParser - A fast math parser library at SourceForge.net. Fast, secure and Free Open Source software downloads" />
-        </a>
-      </div>	
-
-      <div style="position:absolute; width:100px; right:110px; text-align:center; line-height: 1em;">
-        <a class="white" 
-           href="http://www.beltoforion.de"  
-           onmouseover="ChangeButtonImage(1,imgHome)" 
-           onmouseout="ChangeButtonImage(1,imgHomeDark)">
-          <img src="images/home_dark.png" border="0" height="40" alt="My home page"/>
-          <br/>
-          <span class="tiny_text">My home<br/>page</span>
-        </a>
-     </div>
-
-     <div  style="position:absolute; width:100px; right:10px; text-align:center; line-height: 1em;">
-       <a class="white" 
-          href="http://muparser.sourceforge.net/classdocu/index.html"
-          onmouseover="ChangeButtonImage(2,imgApi)" 
-          onmouseout="ChangeButtonImage(2,imgApiDark)">
-         <img src="images/api_dark.png" border="0" alt="class documentation" height="40"/>
-         <br/>
-         <span class="tiny_text">muParser<br/>API-doc</span>
-       </a>
-    </div>
-  <!--
-    <div  style="position:absolute; width:100px; right:10px; text-align:center; line-height: 1em;">
-      <a class="white" 
-         href="http://sourceforge.net/project/showfiles.php?group_id=137191"
-         onmouseover="ChangeButtonImage(3,imgDown)" 
-         onmouseout="ChangeButtonImage(3,imgDownDark)">
-        <img src="images/download_dark.png" height="40" border="0" alt="muParser download"/>
-        <br/>
-        <span class="tiny_text">muParser<br/>Download</span>
-      </a>
-    </div>
--->
-  </div> <!-- class="gradient" -->
-
-    <!-- Tabelle mit Hauptinhalt der Seite -->
-    <table id="MainTable" border="0" cellpadding="5" cellspacing="0" style="width:100%; height:100%;">
-      <tbody>
-        <tr>
-          <td style="vertical-align: top; text-align: center" width="230">
-            <h3 class="navi_heading navi_info">Introduction</h3>
-            <div class="sidebarlink">
-                <a href="index.html">About the parser</a><br/>
-                <a href="http://sourceforge.net/news/?group_id=137191">News</a><br/>
-                <a href="mup_links.html">Software using muParser</a><br/>
-                <a href="mup_licence.html">Licence</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_blocks">Features</h3>
-            <div class="sidebarlink">
-              <a href="mup_features.html">Features</a><br/>
-              <a href="mup_features.html#idFeatureOverview">Overview</a><br/>
-              <a href="mup_features.html#idDef2">Built in functions</a><br/>
-              <a href="mup_features.html#idDef3">Built in binary operators</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_build">Build instructions</h3>
-            <div class="sidebarlink">
-              <a href="mup_usage.html#idInstWin">Building on Win32</a><br/>
-              <a href="mup_usage.html#idInstLinux">Building on BSD/Linux</a><br/>
-              <a href="mup_usage.html#idInstMisc">Misc build instructions</a><br/>
-              <a href="mup_usage.html#idInstInc">Including the files</a><br/>
-              <a href="mup_usage.html#idInstInc">Where to ask for help</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_list">Math parser interface</h3>
-            <div class="sidebarlink">
-              <a href="mup_interface.html#idInit">Parser (de)initialization</a><br/>
-              <a href="mup_interface.html#idEval">Evaluating an expression</a><br/>
-              <a href="mup_interface.html#idSetExpr">Setting the expression</a><br/>
-              <a href="mup_interface.html#idDefCharset">Defining identifier charsets</a><br/>
-              <a href="mup_interface.html#idDefVar">Defining parser variables</a><br/>
-              <a href="mup_interface.html#idDefVarEx">Explicit variable definition</a><br/>
-              <a href="mup_interface.html#idDefVarIm">Implicit variable definition</a><br/>
-              <a href="mup_interface.html#idDefConst">Defining constants</a><br/>
-              <a href="mup_interface.html#idDefFun">Defining functions</a><br/>
-              <a href="mup_interface.html#idDefOprt">Defining operators</a><br/>
-              <a href="mup_interface.html#idUnOp">Unary operators</a><br/>
-              <a href="mup_interface.html#idBinOp">Binary operators</a><br/>
-              <a href="mup_interface.html#idQueryVar">Querying variables</a><br/>
-              <a href="mup_interface.html#idQueryConst">Querying constants</a><br/>
-              <a href="mup_interface.html#idDefConst2">Value recognition callbacks</a><br/>
-              <a href="mup_interface.html#idDefConst2">Removing variables/constants</a><br/>
-              <a href="mup_locale.html#idLoc">Localization</a><br/>
-              <a href="mup_interface.html#idErrors">Error handling</a><br/>
-              <a href="mup_version.html#idExample">Example code</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_question">Current version</h3>
-            <div class="sidebarlink">
-              <a href="mup_version.html#idRelNote">Release notes</a><br/>
-              <a href="mup_version.html#idBench">Benchmarks</a><br/>
-            </div>
-
-            <br/>
-            <div align="center">
-              <a href="http://www.opensource.org/"><img style="border:0;" src="images/osi.jpg" alt="Open source initiative logo"/></a>
-              <br/>
-              <br/>
-              <a href="http://validator.w3.org/check?uri=referer">
-                <img src="http://www.w3.org/Icons/valid-xhtml10-blue" alt="Valid XHTML 1.0 Transitional" style="border:0;width:88px;height:31px"/>
-              </a>
-              <br/>
-              <br/>
-	      <a href="http://jigsaw.w3.org/css-validator/check/referer">
-                <img style="border:0;width:88px;height:31px" src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="CSS ist valide!" />
-	      </a>
-
-            </div>
-          </td>
-
-          <td style="height: 100%; padding: 1em; vertical-align: top;">
-            <!-- 
-              This section contains the real page content. 
-              pages are created automatically by using the script "build_page.sh"
-              which combines section templated with the navigation bar.
-
-	      This creates webpages that do not rely on php3 or Javascript for 
-              serverside or client side html inclusion.
-            //-->
-            <!-- $PLACEHOLDER -->
-<!--
-//
-//
-//
-//   License
-//
-//
-//
--->
-
-<h1><a name="idLicense">muParser licence</a></h1>
-
-<p>
-This library is distributed as freeware. The licence is the <a href="http://www.opensource.org/licenses/mit-license.php">MIT licence</a>: you are free to use it for both non-commercial and commercial use. In order to use it you have to agree to the licence text below. If you use the library I consider it appropriate to give me credit at some place. This can either be the about dialog of your application or the documentation of your software.
-If you like this project I encourage you to support it by:
-</p>
-<ul>
-  <li>sending a brief description of how you use it in your project</li>
-  <li>sending <a href="http://sourceforge.net/tracker/?atid=737979&amp;group_id=137191&amp;func=browse">bug reports</a></li>
-  <li>voting for this project on <a href="http://www.codeproject.com/cpp/FastMathParser.asp">CodeProject</a></li>
-</ul>
-
-<p>
-<b>Copyright (c) 2010 Ingo Berg</b>
-<br/>
-Permission is hereby granted, free of charge, to any
-person obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the
-Software without restriction, including without limitation
-the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the
-Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-</p>
-
-<p>
-The above copyright notice and this permission notice
-shall be included in all copies or substantial portions of
-the Software.</p>
-<p>
-
-<i>
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
-PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
-OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-</i>
-
-</p>
-
-
-            <hr/>
-            <table border="0" style="width:100%">
-            <tr>
-              <td>&copy; 2005-2010 <a href="http://beltoforion.de">Ingo Berg</a> | 
-                  <a href="http://beltoforion.de/privacy_policy/privacy_policy_en.html">Privacy policy</a></td>
-              <td style="text-align:right; padding-right: 3em;">
-                <a href="#top">^ TOP</a>
-              </td>
-            </tr>
-          </table>
-          <br/>
-          <br/>
-
-          </td>
-        </tr>
-      </tbody>
-    </table>
-
-<!--
-    <script type="text/javascript">
-    var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-    document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-    </script>
-    <script type="text/javascript">
-    try 
-    {
-      var pageTracker = _gat._getTracker("UA-1019178-1");
-      pageTracker._trackPageview();
-    } 
-    catch(err) {}
-    </script>
--->
-</body>
-</html>
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/mup_links.html
--- a/muParser/docs/html/mup_links.html	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,276 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <link rel="stylesheet" type="text/css" href="style/formate.css"/>
-  <meta name="author" content="Ingo Berg"/>
-  <!-- $META -->	
-  <meta name="keywords" content="muparser, related links, related"/>
-  <meta name="description" content="Software using muparser"/>
-  <title>Software using muparser</title>
-
-  <script src="script/functions.js" language="javascript" type="text/javascript"></script>
-  <script type="text/javascript">
-  imgHome=new Image();
-  imgHome.src="images/home.png";
-  imgHomeDark=new Image();
-  imgHomeDark.src="images/home_dark.png";
-
-  imgApi=new Image();
-  imgApi.src="images/api.png"; 
-  imgApiDark=new Image();
-  imgApiDark.src="images/api_dark.png";
-
-  function ChangeButtonImage(num,obj)
-  {
-    window.document.images[num].src=obj.src;
-  }
-  </script>
-</head>
-
-<body>
-    <div class="gradient" id="top">
-      <div class="header">
-        muParser - a fast math parser library
-        <br/>
-        <div style="font-size:14pt;">Version 1.32</div>
-      </div>
-
-      <div style="position:absolute; width:250px; height:100px; top:20px; text-align:center">
-        <a href="http://sourceforge.net/projects/muparser">
-          <img src="http://sflogo.sourceforge.net/sflogo.php?group_id=137191&amp;type=15" 
-               width="150" 
-               height="40" 
-               border="0"
-               alt="Get muParser - A fast math parser library at SourceForge.net. Fast, secure and Free Open Source software downloads" />
-        </a>
-      </div>	
-
-      <div style="position:absolute; width:100px; right:110px; text-align:center; line-height: 1em;">
-        <a class="white" 
-           href="http://www.beltoforion.de"  
-           onmouseover="ChangeButtonImage(1,imgHome)" 
-           onmouseout="ChangeButtonImage(1,imgHomeDark)">
-          <img src="images/home_dark.png" border="0" height="40" alt="My home page"/>
-          <br/>
-          <span class="tiny_text">My home<br/>page</span>
-        </a>
-     </div>
-
-     <div  style="position:absolute; width:100px; right:10px; text-align:center; line-height: 1em;">
-       <a class="white" 
-          href="http://muparser.sourceforge.net/classdocu/index.html"
-          onmouseover="ChangeButtonImage(2,imgApi)" 
-          onmouseout="ChangeButtonImage(2,imgApiDark)">
-         <img src="images/api_dark.png" border="0" alt="class documentation" height="40"/>
-         <br/>
-         <span class="tiny_text">muParser<br/>API-doc</span>
-       </a>
-    </div>
-  <!--
-    <div  style="position:absolute; width:100px; right:10px; text-align:center; line-height: 1em;">
-      <a class="white" 
-         href="http://sourceforge.net/project/showfiles.php?group_id=137191"
-         onmouseover="ChangeButtonImage(3,imgDown)" 
-         onmouseout="ChangeButtonImage(3,imgDownDark)">
-        <img src="images/download_dark.png" height="40" border="0" alt="muParser download"/>
-        <br/>
-        <span class="tiny_text">muParser<br/>Download</span>
-      </a>
-    </div>
--->
-  </div> <!-- class="gradient" -->
-
-    <!-- Tabelle mit Hauptinhalt der Seite -->
-    <table id="MainTable" border="0" cellpadding="5" cellspacing="0" style="width:100%; height:100%;">
-      <tbody>
-        <tr>
-          <td style="vertical-align: top; text-align: center" width="230">
-            <h3 class="navi_heading navi_info">Introduction</h3>
-            <div class="sidebarlink">
-                <a href="index.html">About the parser</a><br/>
-                <a href="http://sourceforge.net/news/?group_id=137191">News</a><br/>
-                <a href="mup_links.html">Software using muParser</a><br/>
-                <a href="mup_licence.html">Licence</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_blocks">Features</h3>
-            <div class="sidebarlink">
-              <a href="mup_features.html">Features</a><br/>
-              <a href="mup_features.html#idFeatureOverview">Overview</a><br/>
-              <a href="mup_features.html#idDef2">Built in functions</a><br/>
-              <a href="mup_features.html#idDef3">Built in binary operators</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_build">Build instructions</h3>
-            <div class="sidebarlink">
-              <a href="mup_usage.html#idInstWin">Building on Win32</a><br/>
-              <a href="mup_usage.html#idInstLinux">Building on BSD/Linux</a><br/>
-              <a href="mup_usage.html#idInstMisc">Misc build instructions</a><br/>
-              <a href="mup_usage.html#idInstInc">Including the files</a><br/>
-              <a href="mup_usage.html#idInstInc">Where to ask for help</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_list">Math parser interface</h3>
-            <div class="sidebarlink">
-              <a href="mup_interface.html#idInit">Parser (de)initialization</a><br/>
-              <a href="mup_interface.html#idEval">Evaluating an expression</a><br/>
-              <a href="mup_interface.html#idSetExpr">Setting the expression</a><br/>
-              <a href="mup_interface.html#idDefCharset">Defining identifier charsets</a><br/>
-              <a href="mup_interface.html#idDefVar">Defining parser variables</a><br/>
-              <a href="mup_interface.html#idDefVarEx">Explicit variable definition</a><br/>
-              <a href="mup_interface.html#idDefVarIm">Implicit variable definition</a><br/>
-              <a href="mup_interface.html#idDefConst">Defining constants</a><br/>
-              <a href="mup_interface.html#idDefFun">Defining functions</a><br/>
-              <a href="mup_interface.html#idDefOprt">Defining operators</a><br/>
-              <a href="mup_interface.html#idUnOp">Unary operators</a><br/>
-              <a href="mup_interface.html#idBinOp">Binary operators</a><br/>
-              <a href="mup_interface.html#idQueryVar">Querying variables</a><br/>
-              <a href="mup_interface.html#idQueryConst">Querying constants</a><br/>
-              <a href="mup_interface.html#idDefConst2">Value recognition callbacks</a><br/>
-              <a href="mup_interface.html#idDefConst2">Removing variables/constants</a><br/>
-              <a href="mup_locale.html#idLoc">Localization</a><br/>
-              <a href="mup_interface.html#idErrors">Error handling</a><br/>
-              <a href="mup_version.html#idExample">Example code</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_question">Current version</h3>
-            <div class="sidebarlink">
-              <a href="mup_version.html#idRelNote">Release notes</a><br/>
-              <a href="mup_version.html#idBench">Benchmarks</a><br/>
-            </div>
-
-            <br/>
-            <div align="center">
-              <a href="http://www.opensource.org/"><img style="border:0;" src="images/osi.jpg" alt="Open source initiative logo"/></a>
-              <br/>
-              <br/>
-              <a href="http://validator.w3.org/check?uri=referer">
-                <img src="http://www.w3.org/Icons/valid-xhtml10-blue" alt="Valid XHTML 1.0 Transitional" style="border:0;width:88px;height:31px"/>
-              </a>
-              <br/>
-              <br/>
-	      <a href="http://jigsaw.w3.org/css-validator/check/referer">
-                <img style="border:0;width:88px;height:31px" src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="CSS ist valide!" />
-	      </a>
-
-            </div>
-          </td>
-
-          <td style="height: 100%; padding: 1em; vertical-align: top;">
-            <!-- 
-              This section contains the real page content. 
-              pages are created automatically by using the script "build_page.sh"
-              which combines section templated with the navigation bar.
-
-	      This creates webpages that do not rely on php3 or Javascript for 
-              serverside or client side html inclusion.
-            //-->
-            <!-- $PLACEHOLDER -->
-<br/>
-<br/>
-<h2>Software using the muParser library (alphabetically)</h2>
-<table border="0">
-  <colgroup>
-    <col width="120"/>
-  </colgroup>
-
-  <tr>
-    <td><img src="images/thumb_geodes.jpg" border="0" width="120" alt="Geodes thumbnail"/></td>
-    <td align="center"><a href="http://geodes.sourceforge.net/" target="_top">Geodes</a></td>
-    <td>Geodes is a new dynamic geometry software for Mac OS X. The goal of this application is to make geometry become easy and funny.<br/>
-        (Platform:  Mac OSX)</td>
-  </tr>
-
-  <tr>
-    <td><img src="images/thumb_kst.jpg" width="120" border="0" alt="kst thumbnail"/></td>
-    <td align="center"><a href="http://extragear.kde.org/apps/kst/" target="_top">kst</a></td>
-    <td>A plotter for scientific data. (currently muParser is used by the Marquardt
-	Levenberg plugin)<br/>
-        (Platform:  Linux / Operating systems that support KDE)
-    </td> 
-  </tr>
-
-  <tr>
-    <td><img src="images/thumb_matrix.jpg" border="0" width="120" alt="MatriX thumbnail"/></td>
-    <td align="center"><a href="http://www.ds4.it/" target="_top">MatriX</a></td>
-    <td>DS4 produces laser systems for industry applications like engraving, cutting, incision and welding. muParser is used 
-        in  their MatriX application, a software for for managing the laser systems.<br/>
-        (Platform:  Linux)</td>
-  </tr>
-
-  <tr>
-    <td><img src="images/thumb_meshlab.jpg" border="0" width="120" alt="tm2 thumbnail"/></td>
-    <td align="center"><a href="http://meshlab.sourceforge.net" target="_top">Meshlab&nbsp; &nbsp;</a></td>
-    <td>An open source, portable, and extensible system for the processing and editing of unstructured 3D triangular meshes. <br/>
-        (Platform:  MS Windows, Linux, OSX)</td>
-  </tr>
-
-  <tr>
-    <td><img src="images/thumb_pasimodo.jpg" border="0" width="120" alt="Pasimodo"/></td>
-    <td align="center"><a href="http://www.itm.uni-stuttgart.de/research/pasimodo/pasimodo_de.php" target="_top">Pasimodo</a></td>
-    <td>Pasimodo is a scientific software package for particle based simulations.<br/>
-        (Platform:  Linux/BSD)</td>
-  </tr>
-
-  <tr>
-    <td><img src="images/thumb_tm2.jpg" border="0" width="120" alt="tm2 thumbnail"/></td>
-    <td align="center"><a href="http://www.papajohn.org/tm2.html" target="_top">Transition Maker 2&nbsp; &nbsp;</a></td>
-    <td>Creates transition sequences for video processing.<br/>
-        (Platform:  MS Windows)</td>
-  </tr>
-
-  <tr>
-    <td><img src="images/thumb_trini.jpg" border="0" width="120" alt="trininaut thumbnail"/></td>
-    <td align="center"><a href="http://trininaut.sourceforge.net/" target="_top">Trininaut</a></td>
-    <td>A Program launcher with extra features.<br/>
-        (Platform:  WinXP, Win2K)</td>
-  </tr>
-
-  <tr>
-    <td><img src="images/thumb_qtiplot.jpg" width="120" border="0" alt="qtiplot thumbnail"/></td>
-    <td align="center"><a href="http://soft.proindependent.com/qtiplot.html" target="_top">Qtiplot</a></td>
-    <td>A free platform independent clone of Origin<br/>
-        (Platform:  MS Windows / Linux / Mac)
-    </td>
-  </tr>
-
-
-</table>
-
-
-            <hr/>
-            <table border="0" style="width:100%">
-            <tr>
-              <td>&copy; 2005-2010 <a href="http://beltoforion.de">Ingo Berg</a> | 
-                  <a href="http://beltoforion.de/privacy_policy/privacy_policy_en.html">Privacy policy</a></td>
-              <td style="text-align:right; padding-right: 3em;">
-                <a href="#top">^ TOP</a>
-              </td>
-            </tr>
-          </table>
-          <br/>
-          <br/>
-
-          </td>
-        </tr>
-      </tbody>
-    </table>
-
-<!--
-    <script type="text/javascript">
-    var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-    document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-    </script>
-    <script type="text/javascript">
-    try 
-    {
-      var pageTracker = _gat._getTracker("UA-1019178-1");
-      pageTracker._trackPageview();
-    } 
-    catch(err) {}
-    </script>
--->
-</body>
-</html>
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/mup_locale.html
--- a/muParser/docs/html/mup_locale.html	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,244 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <link rel="stylesheet" type="text/css" href="style/formate.css"/>
-  <meta name="author" content="Ingo Berg"/>
-  <!-- $META -->	
-  <meta name="keywords" content="muparser, example, sample, benchmarks, benchmark, performance, comparison, release notes, changes, history"/>
-  <meta name="description" content="Sample code for using muParser"/>
-  <title>muParser - A basic axample and benchmarks</title>
-
-  <script src="script/functions.js" language="javascript" type="text/javascript"></script>
-  <script type="text/javascript">
-  imgHome=new Image();
-  imgHome.src="images/home.png";
-  imgHomeDark=new Image();
-  imgHomeDark.src="images/home_dark.png";
-
-  imgApi=new Image();
-  imgApi.src="images/api.png"; 
-  imgApiDark=new Image();
-  imgApiDark.src="images/api_dark.png";
-
-  function ChangeButtonImage(num,obj)
-  {
-    window.document.images[num].src=obj.src;
-  }
-  </script>
-</head>
-
-<body>
-    <div class="gradient" id="top">
-      <div class="header">
-        muParser - a fast math parser library
-        <br/>
-        <div style="font-size:14pt;">Version 1.32</div>
-      </div>
-
-      <div style="position:absolute; width:250px; height:100px; top:20px; text-align:center">
-        <a href="http://sourceforge.net/projects/muparser">
-          <img src="http://sflogo.sourceforge.net/sflogo.php?group_id=137191&amp;type=15" 
-               width="150" 
-               height="40" 
-               border="0"
-               alt="Get muParser - A fast math parser library at SourceForge.net. Fast, secure and Free Open Source software downloads" />
-        </a>
-      </div>	
-
-      <div style="position:absolute; width:100px; right:110px; text-align:center; line-height: 1em;">
-        <a class="white" 
-           href="http://www.beltoforion.de"  
-           onmouseover="ChangeButtonImage(1,imgHome)" 
-           onmouseout="ChangeButtonImage(1,imgHomeDark)">
-          <img src="images/home_dark.png" border="0" height="40" alt="My home page"/>
-          <br/>
-          <span class="tiny_text">My home<br/>page</span>
-        </a>
-     </div>
-
-     <div  style="position:absolute; width:100px; right:10px; text-align:center; line-height: 1em;">
-       <a class="white" 
-          href="http://muparser.sourceforge.net/classdocu/index.html"
-          onmouseover="ChangeButtonImage(2,imgApi)" 
-          onmouseout="ChangeButtonImage(2,imgApiDark)">
-         <img src="images/api_dark.png" border="0" alt="class documentation" height="40"/>
-         <br/>
-         <span class="tiny_text">muParser<br/>API-doc</span>
-       </a>
-    </div>
-  <!--
-    <div  style="position:absolute; width:100px; right:10px; text-align:center; line-height: 1em;">
-      <a class="white" 
-         href="http://sourceforge.net/project/showfiles.php?group_id=137191"
-         onmouseover="ChangeButtonImage(3,imgDown)" 
-         onmouseout="ChangeButtonImage(3,imgDownDark)">
-        <img src="images/download_dark.png" height="40" border="0" alt="muParser download"/>
-        <br/>
-        <span class="tiny_text">muParser<br/>Download</span>
-      </a>
-    </div>
--->
-  </div> <!-- class="gradient" -->
-
-    <!-- Tabelle mit Hauptinhalt der Seite -->
-    <table id="MainTable" border="0" cellpadding="5" cellspacing="0" style="width:100%; height:100%;">
-      <tbody>
-        <tr>
-          <td style="vertical-align: top; text-align: center" width="230">
-            <h3 class="navi_heading navi_info">Introduction</h3>
-            <div class="sidebarlink">
-                <a href="index.html">About the parser</a><br/>
-                <a href="http://sourceforge.net/news/?group_id=137191">News</a><br/>
-                <a href="mup_links.html">Software using muParser</a><br/>
-                <a href="mup_licence.html">Licence</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_blocks">Features</h3>
-            <div class="sidebarlink">
-              <a href="mup_features.html">Features</a><br/>
-              <a href="mup_features.html#idFeatureOverview">Overview</a><br/>
-              <a href="mup_features.html#idDef2">Built in functions</a><br/>
-              <a href="mup_features.html#idDef3">Built in binary operators</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_build">Build instructions</h3>
-            <div class="sidebarlink">
-              <a href="mup_usage.html#idInstWin">Building on Win32</a><br/>
-              <a href="mup_usage.html#idInstLinux">Building on BSD/Linux</a><br/>
-              <a href="mup_usage.html#idInstMisc">Misc build instructions</a><br/>
-              <a href="mup_usage.html#idInstInc">Including the files</a><br/>
-              <a href="mup_usage.html#idInstInc">Where to ask for help</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_list">Math parser interface</h3>
-            <div class="sidebarlink">
-              <a href="mup_interface.html#idInit">Parser (de)initialization</a><br/>
-              <a href="mup_interface.html#idEval">Evaluating an expression</a><br/>
-              <a href="mup_interface.html#idSetExpr">Setting the expression</a><br/>
-              <a href="mup_interface.html#idDefCharset">Defining identifier charsets</a><br/>
-              <a href="mup_interface.html#idDefVar">Defining parser variables</a><br/>
-              <a href="mup_interface.html#idDefVarEx">Explicit variable definition</a><br/>
-              <a href="mup_interface.html#idDefVarIm">Implicit variable definition</a><br/>
-              <a href="mup_interface.html#idDefConst">Defining constants</a><br/>
-              <a href="mup_interface.html#idDefFun">Defining functions</a><br/>
-              <a href="mup_interface.html#idDefOprt">Defining operators</a><br/>
-              <a href="mup_interface.html#idUnOp">Unary operators</a><br/>
-              <a href="mup_interface.html#idBinOp">Binary operators</a><br/>
-              <a href="mup_interface.html#idQueryVar">Querying variables</a><br/>
-              <a href="mup_interface.html#idQueryConst">Querying constants</a><br/>
-              <a href="mup_interface.html#idDefConst2">Value recognition callbacks</a><br/>
-              <a href="mup_interface.html#idDefConst2">Removing variables/constants</a><br/>
-              <a href="mup_locale.html#idLoc">Localization</a><br/>
-              <a href="mup_interface.html#idErrors">Error handling</a><br/>
-              <a href="mup_version.html#idExample">Example code</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_question">Current version</h3>
-            <div class="sidebarlink">
-              <a href="mup_version.html#idRelNote">Release notes</a><br/>
-              <a href="mup_version.html#idBench">Benchmarks</a><br/>
-            </div>
-
-            <br/>
-            <div align="center">
-              <a href="http://www.opensource.org/"><img style="border:0;" src="images/osi.jpg" alt="Open source initiative logo"/></a>
-              <br/>
-              <br/>
-              <a href="http://validator.w3.org/check?uri=referer">
-                <img src="http://www.w3.org/Icons/valid-xhtml10-blue" alt="Valid XHTML 1.0 Transitional" style="border:0;width:88px;height:31px"/>
-              </a>
-              <br/>
-              <br/>
-	      <a href="http://jigsaw.w3.org/css-validator/check/referer">
-                <img style="border:0;width:88px;height:31px" src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="CSS ist valide!" />
-	      </a>
-
-            </div>
-          </td>
-
-          <td style="height: 100%; padding: 1em; vertical-align: top;">
-            <!-- 
-              This section contains the real page content. 
-              pages are created automatically by using the script "build_page.sh"
-              which combines section templated with the navigation bar.
-
-	      This creates webpages that do not rely on php3 or Javascript for 
-              serverside or client side html inclusion.
-            //-->
-            <!-- $PLACEHOLDER -->
-<!-- 
-//
-//
-//  
-//   Localization
-//
-//
-//
--->
-
-<h2><a id="idLoc"></a>Localization</h2>
-<p>
-Sometimes it is necessary to change decimal separator, argument separator or thousands separator 
-to match a certain locale. The following functions can be used for this purpose:
-</p>
-
-<h3>[DLL interface]</h3>
-<pre>
-// german localization
-mupSetArgSep(hParser, ';');
-mupSetDecSep(hParser, ',');
-mupSetThousandsSep(hParser, '.');
-
-// reset to defaults
-mupResetLocale();
-</pre>
-<small>See also: <i>example2/example2.c</i>.</small>
-
-<h3>[Parser class interface]</h3>
-<pre>
-// german localization
-parser.SetArgSep(';');
-parser.SetDecSep(',');
-parser.SetThousandsSep('.');
-
-// reset to defaults
-parser.ResetLocale();
-</pre>
-<small>See also: <i>example1/example1.cpp</i>.</small>
-
-            <hr/>
-            <table border="0" style="width:100%">
-            <tr>
-              <td>&copy; 2005-2010 <a href="http://beltoforion.de">Ingo Berg</a> | 
-                  <a href="http://beltoforion.de/privacy_policy/privacy_policy_en.html">Privacy policy</a></td>
-              <td style="text-align:right; padding-right: 3em;">
-                <a href="#top">^ TOP</a>
-              </td>
-            </tr>
-          </table>
-          <br/>
-          <br/>
-
-          </td>
-        </tr>
-      </tbody>
-    </table>
-
-<!--
-    <script type="text/javascript">
-    var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-    document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-    </script>
-    <script type="text/javascript">
-    try 
-    {
-      var pageTracker = _gat._getTracker("UA-1019178-1");
-      pageTracker._trackPageview();
-    } 
-    catch(err) {}
-    </script>
--->
-</body>
-</html>
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/mup_usage.html
--- a/muParser/docs/html/mup_usage.html	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,354 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <link rel="stylesheet" type="text/css" href="style/formate.css"/>
-  <meta name="author" content="Ingo Berg"/>
-  <!-- $META -->	
-  <meta name="keywords" content="muparser, build instructions, makefile, configuration, built, project file, install"/>
-  <meta name="description" content="muparser build instructions"/>
-  <title>muParser build instructions</title>
-
-  <script src="script/functions.js" language="javascript" type="text/javascript"></script>
-  <script type="text/javascript">
-  imgHome=new Image();
-  imgHome.src="images/home.png";
-  imgHomeDark=new Image();
-  imgHomeDark.src="images/home_dark.png";
-
-  imgApi=new Image();
-  imgApi.src="images/api.png"; 
-  imgApiDark=new Image();
-  imgApiDark.src="images/api_dark.png";
-
-  function ChangeButtonImage(num,obj)
-  {
-    window.document.images[num].src=obj.src;
-  }
-  </script>
-</head>
-
-<body>
-    <div class="gradient" id="top">
-      <div class="header">
-        muParser - a fast math parser library
-        <br/>
-        <div style="font-size:14pt;">Version 1.32</div>
-      </div>
-
-      <div style="position:absolute; width:250px; height:100px; top:20px; text-align:center">
-        <a href="http://sourceforge.net/projects/muparser">
-          <img src="http://sflogo.sourceforge.net/sflogo.php?group_id=137191&amp;type=15" 
-               width="150" 
-               height="40" 
-               border="0"
-               alt="Get muParser - A fast math parser library at SourceForge.net. Fast, secure and Free Open Source software downloads" />
-        </a>
-      </div>	
-
-      <div style="position:absolute; width:100px; right:110px; text-align:center; line-height: 1em;">
-        <a class="white" 
-           href="http://www.beltoforion.de"  
-           onmouseover="ChangeButtonImage(1,imgHome)" 
-           onmouseout="ChangeButtonImage(1,imgHomeDark)">
-          <img src="images/home_dark.png" border="0" height="40" alt="My home page"/>
-          <br/>
-          <span class="tiny_text">My home<br/>page</span>
-        </a>
-     </div>
-
-     <div  style="position:absolute; width:100px; right:10px; text-align:center; line-height: 1em;">
-       <a class="white" 
-          href="http://muparser.sourceforge.net/classdocu/index.html"
-          onmouseover="ChangeButtonImage(2,imgApi)" 
-          onmouseout="ChangeButtonImage(2,imgApiDark)">
-         <img src="images/api_dark.png" border="0" alt="class documentation" height="40"/>
-         <br/>
-         <span class="tiny_text">muParser<br/>API-doc</span>
-       </a>
-    </div>
-  <!--
-    <div  style="position:absolute; width:100px; right:10px; text-align:center; line-height: 1em;">
-      <a class="white" 
-         href="http://sourceforge.net/project/showfiles.php?group_id=137191"
-         onmouseover="ChangeButtonImage(3,imgDown)" 
-         onmouseout="ChangeButtonImage(3,imgDownDark)">
-        <img src="images/download_dark.png" height="40" border="0" alt="muParser download"/>
-        <br/>
-        <span class="tiny_text">muParser<br/>Download</span>
-      </a>
-    </div>
--->
-  </div> <!-- class="gradient" -->
-
-    <!-- Tabelle mit Hauptinhalt der Seite -->
-    <table id="MainTable" border="0" cellpadding="5" cellspacing="0" style="width:100%; height:100%;">
-      <tbody>
-        <tr>
-          <td style="vertical-align: top; text-align: center" width="230">
-            <h3 class="navi_heading navi_info">Introduction</h3>
-            <div class="sidebarlink">
-                <a href="index.html">About the parser</a><br/>
-                <a href="http://sourceforge.net/news/?group_id=137191">News</a><br/>
-                <a href="mup_links.html">Software using muParser</a><br/>
-                <a href="mup_licence.html">Licence</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_blocks">Features</h3>
-            <div class="sidebarlink">
-              <a href="mup_features.html">Features</a><br/>
-              <a href="mup_features.html#idFeatureOverview">Overview</a><br/>
-              <a href="mup_features.html#idDef2">Built in functions</a><br/>
-              <a href="mup_features.html#idDef3">Built in binary operators</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_build">Build instructions</h3>
-            <div class="sidebarlink">
-              <a href="mup_usage.html#idInstWin">Building on Win32</a><br/>
-              <a href="mup_usage.html#idInstLinux">Building on BSD/Linux</a><br/>
-              <a href="mup_usage.html#idInstMisc">Misc build instructions</a><br/>
-              <a href="mup_usage.html#idInstInc">Including the files</a><br/>
-              <a href="mup_usage.html#idInstInc">Where to ask for help</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_list">Math parser interface</h3>
-            <div class="sidebarlink">
-              <a href="mup_interface.html#idInit">Parser (de)initialization</a><br/>
-              <a href="mup_interface.html#idEval">Evaluating an expression</a><br/>
-              <a href="mup_interface.html#idSetExpr">Setting the expression</a><br/>
-              <a href="mup_interface.html#idDefCharset">Defining identifier charsets</a><br/>
-              <a href="mup_interface.html#idDefVar">Defining parser variables</a><br/>
-              <a href="mup_interface.html#idDefVarEx">Explicit variable definition</a><br/>
-              <a href="mup_interface.html#idDefVarIm">Implicit variable definition</a><br/>
-              <a href="mup_interface.html#idDefConst">Defining constants</a><br/>
-              <a href="mup_interface.html#idDefFun">Defining functions</a><br/>
-              <a href="mup_interface.html#idDefOprt">Defining operators</a><br/>
-              <a href="mup_interface.html#idUnOp">Unary operators</a><br/>
-              <a href="mup_interface.html#idBinOp">Binary operators</a><br/>
-              <a href="mup_interface.html#idQueryVar">Querying variables</a><br/>
-              <a href="mup_interface.html#idQueryConst">Querying constants</a><br/>
-              <a href="mup_interface.html#idDefConst2">Value recognition callbacks</a><br/>
-              <a href="mup_interface.html#idDefConst2">Removing variables/constants</a><br/>
-              <a href="mup_locale.html#idLoc">Localization</a><br/>
-              <a href="mup_interface.html#idErrors">Error handling</a><br/>
-              <a href="mup_version.html#idExample">Example code</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_question">Current version</h3>
-            <div class="sidebarlink">
-              <a href="mup_version.html#idRelNote">Release notes</a><br/>
-              <a href="mup_version.html#idBench">Benchmarks</a><br/>
-            </div>
-
-            <br/>
-            <div align="center">
-              <a href="http://www.opensource.org/"><img style="border:0;" src="images/osi.jpg" alt="Open source initiative logo"/></a>
-              <br/>
-              <br/>
-              <a href="http://validator.w3.org/check?uri=referer">
-                <img src="http://www.w3.org/Icons/valid-xhtml10-blue" alt="Valid XHTML 1.0 Transitional" style="border:0;width:88px;height:31px"/>
-              </a>
-              <br/>
-              <br/>
-	      <a href="http://jigsaw.w3.org/css-validator/check/referer">
-                <img style="border:0;width:88px;height:31px" src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="CSS ist valide!" />
-	      </a>
-
-            </div>
-          </td>
-
-          <td style="height: 100%; padding: 1em; vertical-align: top;">
-            <!-- 
-              This section contains the real page content. 
-              pages are created automatically by using the script "build_page.sh"
-              which combines section templated with the navigation bar.
-
-	      This creates webpages that do not rely on php3 or Javascript for 
-              serverside or client side html inclusion.
-            //-->
-            <!-- $PLACEHOLDER -->
-<!-- 
-//
-//
-//  
-//   Adding the parser to your projects
-//
-//
-//
--->
-
-
-<br/>
-<h1><a id="idBuild"></a>Build instructions</h1>
-<h2><a id="idInstWin"></a>Building on win32</h2>
-<b>muParser</b> supports various win32 command-line compilers:
-<ul>
-  <li>Mingw</li>
-  <li>Borland C++</li>
-  <li>Watcom</li>
-  <li>Microsoft CL</li>
-</ul>
-In order to compile muParser from makefiles, open a command prompt then move to the muParser/build directory and
-type:
-
-<ul>
-  <li>mingw32-make -fmakefile.gcc      for mingw</li>
-  <li>nmake -fmakefile.vc              for msvc</li>
-  <li>make -fmakefile.bcc              for borland</li>
-  <li>wmake -fmakefile.wat             for watcom</li>
-</ul>
-
-All makefiles support the following options:
-<pre>
-  # Set to 1 to build debug version [0,1]
-  #   0 - Release
-  #   1 - Debug
-  DEBUG = 0
-
-  # Set to 1 to build shared (DLL) version [0,1]
-  #   0 - Static
-  #   1 - DLL
-  SHARED = 0
-
-  # Set to 1 to compile samples [0,1]
-  SAMPLES = 1
-</pre>
-The muParser library is created in the 'lib' folder and the sample
-binaries are created in samples\example1 or samples\example2. (You may need to copy the dll
-into the example2 directory in order to run it.)
-
-<table>
-<tr>
-  <td><img src="images/warning.gif" alt="warning"/></td> 
-  <td>samples\example1 can be compiled *only* when building muParser as a STATIC library (SHARED=0).<br/>
-      samples\example2 can be compiled *only* when building muParser as a SHARED library (SHARED=1).
-  </td>
-</tr>
-</table>
-
-<h2><a id="idInstLinux"></a>Building on BSD/Linux</h2>
-muParser can be installed just extracting the sources somewhere and then, from a terminal, typing:
-
-<pre>
- cd [path to muParser]
- ./configure [--enable-shared=yes/no] [--enable-samples=yes/no]
-             [--enable-debug=yes/no]
- make
- [sudo*] make install
-</pre>
- <small>* = this command must be executed with root permissions and thus
-     you have to use 'sudo' or just 'su' to gain root access.
-     Note that installation is not strictly required.</small>
-<p>
-The "make" step will create the muParser library in 'lib' and the
-sample binary in samples/example1. The samples/example2 is win32-specific and 
-thus won't be built.
-</p>
-
-<h2><a id="idInstMisc"></a>Other miscellaneous info Unix-specific</h2>
-If you don't like to have your muParser folder filled by temporary
-files created by GCC, then you can do the following:
-
-<pre>
-  mkdir mybuild &amp;&amp; cd mybuild &amp;&amp; ../configure &amp;&amp; make
-</pre>
-
-to put all object files in the "mybuild" directory. If you want to use 
-muParser library in your programs, you can use the pkg-config program 
-(this works only if muParser was installed with 'make install' !). 
-The commands:
-<ul>
-   <li>pkg-config muparser --cflags</li>
-   <li>pkg-config muparser --libs</li>
-</ul>
-will return all useful info you need to build your programs against
-muParser !
-
-<h2><a id="idInstInc"></a><a name="idUseSource"></a>Including the source code directly</h2>
-Sometimes including the library sources directly into an application is the easiest 
-possibility to avoid linker conflicts originating from different versions of the 
-runtime libraries used by the parser and your project.
-
-In order to use the parser simply include the following files into your project:
-
-<p>
-<i>muParser.cpp</i><br/>
-<i>muParserBase.cpp</i><br/>
-<i>muParserBytecode.cpp</i><br/>
-<i>muParserCallback.cpp</i><br/>
-<i>muParserError.cpp</i><br/>
-<i>muParserTokenReader.cpp</i>
-</p>
-
-And make sure the following files can be found in your projects include path:
-<p>
-<i>muParser.h</i><br/>
-<i>muParserBase.h</i><br/>
-<i>muParserBytecode.h</i><br/>
-<i>muParserCallback.h</i><br/>
-<i>muParserDef.h</i><br/>
-<i>muParserError.h</i><br/>
-<i>muParserFixes.h</i><br/>
-<i>muParserStack.h</i><br/>
-<i>muParserToken.h</i><br/>
-<i>muParserTokenReader.h</i><br/>
-</p>
-
-The parser class and all related classes reside in the namespace <code>mu</code> (MathUtils). So make sure to either
-add a using 
-
-<pre>
-using namespace mu;
-</pre>
-
-to your files or reference all classes with their complete name.
-
-<h2>Where to ask for help</h2>
-
-If you find problems with either compilation, installation or usage
-of muParser, then you can ask in the muParser forum at:<br/>
-<ul>
-<li><a href="https://sourceforge.net/forum/forum.php?forum_id=462843">https://sourceforge.net/forum/forum.php?forum_id=462843</a></li>
-</ul>
-
-For more info about muParser, visit:
-<ul>
-<li><a href="http://sourceforge.net/projects/muparser/">http://sourceforge.net/projects/muparser/</a><br/></li>
-<li><a href="http://muparser.sourceforge.net">http://muparser.sourceforge.net</a></li>
-</ul>
-
-            <hr/>
-            <table border="0" style="width:100%">
-            <tr>
-              <td>&copy; 2005-2010 <a href="http://beltoforion.de">Ingo Berg</a> | 
-                  <a href="http://beltoforion.de/privacy_policy/privacy_policy_en.html">Privacy policy</a></td>
-              <td style="text-align:right; padding-right: 3em;">
-                <a href="#top">^ TOP</a>
-              </td>
-            </tr>
-          </table>
-          <br/>
-          <br/>
-
-          </td>
-        </tr>
-      </tbody>
-    </table>
-
-<!--
-    <script type="text/javascript">
-    var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-    document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-    </script>
-    <script type="text/javascript">
-    try 
-    {
-      var pageTracker = _gat._getTracker("UA-1019178-1");
-      pageTracker._trackPageview();
-    } 
-    catch(err) {}
-    </script>
--->
-</body>
-</html>
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/mup_version.html
--- a/muParser/docs/html/mup_version.html	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,422 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <link rel="stylesheet" type="text/css" href="style/formate.css"/>
-  <meta name="author" content="Ingo Berg"/>
-  <!-- $META -->	
-  <meta name="keywords" content="muparser, example, sample, benchmarks, benchmark, performance, comparison, release notes, changes, history"/>
-  <meta name="description" content="Sample code for using muParser"/>
-  <title>muParser - A basic axample and benchmarks</title>
-
-  <script src="script/functions.js" language="javascript" type="text/javascript"></script>
-  <script type="text/javascript">
-  imgHome=new Image();
-  imgHome.src="images/home.png";
-  imgHomeDark=new Image();
-  imgHomeDark.src="images/home_dark.png";
-
-  imgApi=new Image();
-  imgApi.src="images/api.png"; 
-  imgApiDark=new Image();
-  imgApiDark.src="images/api_dark.png";
-
-  function ChangeButtonImage(num,obj)
-  {
-    window.document.images[num].src=obj.src;
-  }
-  </script>
-</head>
-
-<body>
-    <div class="gradient" id="top">
-      <div class="header">
-        muParser - a fast math parser library
-        <br/>
-        <div style="font-size:14pt;">Version 1.32</div>
-      </div>
-
-      <div style="position:absolute; width:250px; height:100px; top:20px; text-align:center">
-        <a href="http://sourceforge.net/projects/muparser">
-          <img src="http://sflogo.sourceforge.net/sflogo.php?group_id=137191&amp;type=15" 
-               width="150" 
-               height="40" 
-               border="0"
-               alt="Get muParser - A fast math parser library at SourceForge.net. Fast, secure and Free Open Source software downloads" />
-        </a>
-      </div>	
-
-      <div style="position:absolute; width:100px; right:110px; text-align:center; line-height: 1em;">
-        <a class="white" 
-           href="http://www.beltoforion.de"  
-           onmouseover="ChangeButtonImage(1,imgHome)" 
-           onmouseout="ChangeButtonImage(1,imgHomeDark)">
-          <img src="images/home_dark.png" border="0" height="40" alt="My home page"/>
-          <br/>
-          <span class="tiny_text">My home<br/>page</span>
-        </a>
-     </div>
-
-     <div  style="position:absolute; width:100px; right:10px; text-align:center; line-height: 1em;">
-       <a class="white" 
-          href="http://muparser.sourceforge.net/classdocu/index.html"
-          onmouseover="ChangeButtonImage(2,imgApi)" 
-          onmouseout="ChangeButtonImage(2,imgApiDark)">
-         <img src="images/api_dark.png" border="0" alt="class documentation" height="40"/>
-         <br/>
-         <span class="tiny_text">muParser<br/>API-doc</span>
-       </a>
-    </div>
-  <!--
-    <div  style="position:absolute; width:100px; right:10px; text-align:center; line-height: 1em;">
-      <a class="white" 
-         href="http://sourceforge.net/project/showfiles.php?group_id=137191"
-         onmouseover="ChangeButtonImage(3,imgDown)" 
-         onmouseout="ChangeButtonImage(3,imgDownDark)">
-        <img src="images/download_dark.png" height="40" border="0" alt="muParser download"/>
-        <br/>
-        <span class="tiny_text">muParser<br/>Download</span>
-      </a>
-    </div>
--->
-  </div> <!-- class="gradient" -->
-
-    <!-- Tabelle mit Hauptinhalt der Seite -->
-    <table id="MainTable" border="0" cellpadding="5" cellspacing="0" style="width:100%; height:100%;">
-      <tbody>
-        <tr>
-          <td style="vertical-align: top; text-align: center" width="230">
-            <h3 class="navi_heading navi_info">Introduction</h3>
-            <div class="sidebarlink">
-                <a href="index.html">About the parser</a><br/>
-                <a href="http://sourceforge.net/news/?group_id=137191">News</a><br/>
-                <a href="mup_links.html">Software using muParser</a><br/>
-                <a href="mup_licence.html">Licence</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_blocks">Features</h3>
-            <div class="sidebarlink">
-              <a href="mup_features.html">Features</a><br/>
-              <a href="mup_features.html#idFeatureOverview">Overview</a><br/>
-              <a href="mup_features.html#idDef2">Built in functions</a><br/>
-              <a href="mup_features.html#idDef3">Built in binary operators</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_build">Build instructions</h3>
-            <div class="sidebarlink">
-              <a href="mup_usage.html#idInstWin">Building on Win32</a><br/>
-              <a href="mup_usage.html#idInstLinux">Building on BSD/Linux</a><br/>
-              <a href="mup_usage.html#idInstMisc">Misc build instructions</a><br/>
-              <a href="mup_usage.html#idInstInc">Including the files</a><br/>
-              <a href="mup_usage.html#idInstInc">Where to ask for help</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_list">Math parser interface</h3>
-            <div class="sidebarlink">
-              <a href="mup_interface.html#idInit">Parser (de)initialization</a><br/>
-              <a href="mup_interface.html#idEval">Evaluating an expression</a><br/>
-              <a href="mup_interface.html#idSetExpr">Setting the expression</a><br/>
-              <a href="mup_interface.html#idDefCharset">Defining identifier charsets</a><br/>
-              <a href="mup_interface.html#idDefVar">Defining parser variables</a><br/>
-              <a href="mup_interface.html#idDefVarEx">Explicit variable definition</a><br/>
-              <a href="mup_interface.html#idDefVarIm">Implicit variable definition</a><br/>
-              <a href="mup_interface.html#idDefConst">Defining constants</a><br/>
-              <a href="mup_interface.html#idDefFun">Defining functions</a><br/>
-              <a href="mup_interface.html#idDefOprt">Defining operators</a><br/>
-              <a href="mup_interface.html#idUnOp">Unary operators</a><br/>
-              <a href="mup_interface.html#idBinOp">Binary operators</a><br/>
-              <a href="mup_interface.html#idQueryVar">Querying variables</a><br/>
-              <a href="mup_interface.html#idQueryConst">Querying constants</a><br/>
-              <a href="mup_interface.html#idDefConst2">Value recognition callbacks</a><br/>
-              <a href="mup_interface.html#idDefConst2">Removing variables/constants</a><br/>
-              <a href="mup_locale.html#idLoc">Localization</a><br/>
-              <a href="mup_interface.html#idErrors">Error handling</a><br/>
-              <a href="mup_version.html#idExample">Example code</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_question">Current version</h3>
-            <div class="sidebarlink">
-              <a href="mup_version.html#idRelNote">Release notes</a><br/>
-              <a href="mup_version.html#idBench">Benchmarks</a><br/>
-            </div>
-
-            <br/>
-            <div align="center">
-              <a href="http://www.opensource.org/"><img style="border:0;" src="images/osi.jpg" alt="Open source initiative logo"/></a>
-              <br/>
-              <br/>
-              <a href="http://validator.w3.org/check?uri=referer">
-                <img src="http://www.w3.org/Icons/valid-xhtml10-blue" alt="Valid XHTML 1.0 Transitional" style="border:0;width:88px;height:31px"/>
-              </a>
-              <br/>
-              <br/>
-	      <a href="http://jigsaw.w3.org/css-validator/check/referer">
-                <img style="border:0;width:88px;height:31px" src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="CSS ist valide!" />
-	      </a>
-
-            </div>
-          </td>
-
-          <td style="height: 100%; padding: 1em; vertical-align: top;">
-            <!-- 
-              This section contains the real page content. 
-              pages are created automatically by using the script "build_page.sh"
-              which combines section templated with the navigation bar.
-
-	      This creates webpages that do not rely on php3 or Javascript for 
-              serverside or client side html inclusion.
-            //-->
-            <!-- $PLACEHOLDER -->
-<!-- 
-//
-//
-//  
-//   Example code
-//
-//
-//
--->
-
-<h2><a id="idExample"></a>Example code</h2>
-
-<p>
-If you put all this together, you get the source code for a small application. The application defines a parser variables ("<code>a</code>") and adds 
-a user defined functions named "<code>MyFunc</code>". When using the parser make sure that you don't forget to catch the <code>Parser::exception_type</code> in your application. It contains detailed information helping you to find syntax errors in your formula.
-</p>
-
-<pre>
-#include &lt;iostream&gt;
-#include "muParser.h"
-
-// Function callback
-double MyFunction(double a_fVal) 
-{ 
-  return a_fVal*a_fVal; 
-}
-
-// main program
-int main(int argc, char* argv[])
-{
-  using namespace mu;
-
-  try
-  {
-    double fVal = 1;
-    Parser p;
-    p.DefineVar("a", &amp;fVal); 
-    p.DefineFun("MyFunc", MyFunction); 
-    p.SetExpr("MyFunc(a)*_pi+min(10,a)");
-    std::cout &lt;&lt; p.Eval() &lt;&lt; std::endl;
-  }
-  catch (Parser::exception_type &amp;e)
-  {
-    std::cout &lt;&lt; e.GetMsg() &lt;&lt; std::endl;
-  }
-  return 0;
-}
-</pre>
-
-
-<!-- 
-//
-//
-//
-//  Benchmarks
-//
-//
-//
--->
-
-<hr/>
-<h2><a id="idBench"></a>Benchmarks</h2>
-
-<p>
-Finally, I'd like to give you some benchmarks. The benchmarking was done on an Intel 
-Pentium P-4 with 2.6 GHz, with a version compiled by using MSVC++ 7.1 (Standard edition).
-The diagram shows number of <b>evaluations per seconds vs. expression length</b>. 
-I compared both the static lib and the dll version with two other parsers that are freely available 
-on the net, very fast and have a similar set of features. One of them is a commercial product.
-</p>
-
-<p>
-  <img src="images/bench2.jpg" alt="parser benchmarks" border="0" height="489" width="560"/>
-</p>
-
-<p>
-A higher curve means better performance. Expressions were created randomly. They used only <code>sin</code> and <code>cos</code> functions and contained 
-multiple variables and constants. In order to smoothen the curves each point represents the value of a
-running average over 10 sample expressions. 
-</p>
-
-
-<!-- 
-//
-//
-//  
-//   History
-//
-//
-//
--->
-
-<hr/>
-<h2><a name="idRelNote"></a>Release Notes</h2>
-
-<h4>Rev 1.32: 30.01.2010</h4>
-This is a service release to fix problems with modern compilers.
-<ul>
-  <li><b>Changes</b>
-    <ul>
-      <li>Added a function for retrieving the Version number of muparser.</li>
-      <li>example3 renamed to example2</li>
-      <li>Project files for bcb and msvc6 removed (include the source directly into your projects)</li>
-      <li>Project files for msvc2003, msvc2005 and msvc2008 added</li>
-    </ul>
-  </li>
-
-  <li><b>Bugfixes</b>
-    <ul>
-      <li>Deprecated feature warnings removed for gcc</li>
-      <li>example1 changed to get rid of memory leaks. Added code for memory leak detection (VisualStudio only)</li>
-      <li>Changes to allow compilation with msvc10 beta2</li>
-      <li>gcc versions >4.0 were not able to run with a customized locale (resulted in std::bad_cast exception)</li>
-    </ul>
-  </li>
-</ul>
-<hr/>
-<h4>Rev 1.30: 09.06.2008</h4>
-This is a service release with minor extensions and bugfixes.
-
-<ul>
-  <li><b>Changes</b>
-    <ul>
-      <li>Epsilon of the numerical differentiation algorithm changed to allow greater accuracy.</li>
-    </ul>
-  </li>
-
-  <li><b>New features</b>
-    <ul>
-      <li>Setting thousands separator and decimal separator is now possible</li>
-    </ul>
-  </li>
-
-  <li><b>Bugfixes</b>
-    <ul>
-      <li>The dll interface did not provide a callback for functions without any arguments.</li>
-    </ul>
-  </li>
-</ul>
-<hr/>
-<h4>Rev 1.28: 02.07.2007</h4>
-
-<ul>
-  <li><b>Library changes</b>
-    <ul>
-      <li>Interface for the dynamic library changed and extended to create an interface using pure C functions only.</li>
-      <li>mupInit() removed</li>
-    </ul>
-  </li>
-
-  <li><b>New features</b>
-    <ul>
-      <li>Functions without parameters added</li>
-    </ul>
-  </li>
-
-  <li><b>Build system</b>
-    <ul>
-      <li>MSVC7 Project files removed in favor of MSVC8.</li>
-    </ul>
-  </li>
-
-  <li><b>Bugfixes</b>
-    <ul>
-      <li>The dynamic library did not build on other systems than linux due to a misplaced
-           preprocessor definition. This is fixed now.</li>
-    </ul>
-  </li>
-
-</ul>
-
-<hr/>
-<h4>Rev 1.2: 14.04.2005</h4>
-First of all the interface has changed so this version is not backwards compatible. 
-After receiving a couple of questions about it, this version features support for user defined binary operators. Consequently the built in operators can now be turned off, thus you can deactivate them and write complete customized parser subclasses that only contain the functionality you want. Other new feature is the introduction of callback functions taking string arguments, implicit generation of 
-variables and the Assignement operator. 
-
-<ul>
-  <li> <b>Functionality</b>
-  <ul>
-    <li><a href="mup_features.html#idDef3">New built in operator</a>: <code>xor</code>; Logical xor.</li>
-    <li>New built in operator: Assignement operator; Defining variables in terms of other 			       variables/constants</li> 
-    <li>New feature: <a href="mup_interface.html#idDefFun">Strings as arguments for callback functions</a></li>
-    <li>New feature: <a href="mup_interface.html#idDefOprt">User defined binary operators</a></li>
-    <li>New feature: <code>ParserInt</code> a class with a sample implementation for
-                     integer numbers.</li> 
-    <li>New feature: <a href="mup_interface.html#idDefConst2">Callbacks to value regognition functions.</a></li> 
-
-    <li>Removed:  all predefined postfix operators have been removed.</li> 
-    <li>New project file:  Now comes with a ready to use windows DLL.</li> 
-    <li>New project file:  Makefile for cygwin now included.</li> 
-    <li>New example:  Example3 shows usage of the DLL.</li> 
-  </ul>
-  </li>
-
-  <li> <b>Interface changes</b>
-  <ul>
-    <li><a href="mup_interface.html#idBinOp">New member function</a>: <code>DefineOprt</code> For 
-                                                    adding user defined binary operators.</li>
-    <li>New member function: <code>EnableBuiltInOprt(bool)</code>  Enables/Disables <a href="mup_features.html#idDef3">
-                             built in binary operators</a>.</li>
-    <li>New member function: <code>AddValIdent(...)</code> to add callbacks for custom value recognition functions.</li>
-    <li>Removed: <code>SetVar()</code>, <code>SetConst()</code>.</li> 
-    <li>Renamed: Most interface functions have been renamed</li>
-    <li>Changed:  The <a href="mup_interface.html#idDefFun">type for multiargument callbacks</a> <code>multfun_type</code> has changed. 
-                  It no longer takes a std::vector as input.</li>
-  </ul>
-  </li>
-  
-  <li> <b>Internal changes</b>
-  <ul>
-     <li>new class <i>muParserTokenReader.h</i> encapsulates the token identification and token assignement.</li>
-     <li>Internal handling of function callbacks unified as a result the performance of the bytecode evaluation 
-         increased.</li>
-  </ul>
-  </li>
-</ul>
-
-            <hr/>
-            <table border="0" style="width:100%">
-            <tr>
-              <td>&copy; 2005-2010 <a href="http://beltoforion.de">Ingo Berg</a> | 
-                  <a href="http://beltoforion.de/privacy_policy/privacy_policy_en.html">Privacy policy</a></td>
-              <td style="text-align:right; padding-right: 3em;">
-                <a href="#top">^ TOP</a>
-              </td>
-            </tr>
-          </table>
-          <br/>
-          <br/>
-
-          </td>
-        </tr>
-      </tbody>
-    </table>
-
-<!--
-    <script type="text/javascript">
-    var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-    document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-    </script>
-    <script type="text/javascript">
-    try 
-    {
-      var pageTracker = _gat._getTracker("UA-1019178-1");
-      pageTracker._trackPageview();
-    } 
-    catch(err) {}
-    </script>
--->
-</body>
-</html>
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/script/functions.js
--- a/muParser/docs/html/script/functions.js	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-//--------------------------------------------------
-//
-// Bedingte darstellung des SourceForge logos
-//
-function SFLogo()
-{
-  document.write("<img src=\"http:\/\/sourceforge.net\/sflogo.php?group_id=137191&amp;type=5\" width=\"210\" height=\"62\" border=\"0\" alt=\"SourceForge.net Logo\" \/>");
-}
-
-//--------------------------------------------------
-//
-// Statcounter code erzeugen
-//
-function statCounter()
-{
-  // statcounter variablen
-  document.write("<script type=\"text\/javascript\" language=\"javascript\">");
-  document.write("var sc_project=671117;");
-  document.write("var sc_partition=5; ");
-  document.write("var sc_security=\"f3fad66c\";");
-  document.write("<\/script>");
-
-  var sc_project=671117;
-  var sc_partition=5;
-  var sc_security="f3fad66c";
-
-	
-  // statcounter script	
-  document.write("<script type=\"text\/javascript\" language=\"javascript\" src=\"http:\/\/www.statcounter.com\/counter\/counter.js\">");
-  document.write("<\/script>");
-}
-
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/sources/build_page.sh
--- a/muParser/docs/html/sources/build_page.sh	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-#!/bin/sh
-
-#
-# This script is used for building the muParser html page from
-# html templates.
-#
-
-rm -rf ../mup_*.html
-rm -rf ..index.html
-
-#
-# add navigation bar to all html templates starting with mup_*
-#
-cat navigation.html | sed "/\$PLACEHOLDER/r mup_features.html"  | sed "/\$META/r mup_features_meta.html"  > ../mup_features.html
-cat navigation.html | sed "/\$PLACEHOLDER/r mup_interface.html" | sed "/\$META/r mup_interface_meta.html" > ../mup_interface.html
-cat navigation.html | sed "/\$PLACEHOLDER/r mup_intro.html"     | sed "/\$META/r mup_intro_meta.html"     > ../mup_intro.html
-cat navigation.html | sed "/\$PLACEHOLDER/r mup_licence.html"   | sed "/\$META/r mup_licence_meta.html"   > ../mup_licence.html
-cat navigation.html | sed "/\$PLACEHOLDER/r mup_links.html"     | sed "/\$META/r mup_links_meta.html"     > ../mup_links.html
-cat navigation.html | sed "/\$PLACEHOLDER/r mup_usage.html"     | sed "/\$META/r mup_usage_meta.html"     > ../mup_usage.html
-cat navigation.html | sed "/\$PLACEHOLDER/r mup_version.html"   | sed "/\$META/r mup_version_meta.html"   > ../mup_version.html
-cat navigation.html | sed "/\$PLACEHOLDER/r mup_locale.html"   | sed "/\$META/r mup_locale_meta.html"     > ../mup_locale.html
-
-
-#for file in mup_*.html
-#do
-#  echo processing $file
-#  cat navigation.html | sed "/\$PLACEHOLDER/r $file" > ../$file
-#done##
-#
-#for file in mup_*_header.html
-#do
-#  echo processing $file
-#  cat navigation.html | sed "/\$META/r $file" > ../$file
-#done
-
-# create index.html
-cp ../mup_intro.html ../index.html
-rm -rf ../*~
-
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/sources/mup_features.html
--- a/muParser/docs/html/sources/mup_features.html	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,213 +0,0 @@
-<!-- 
-//
-//
-//  
-//   Features
-//
-//
-//
--->
-
-<br/>
-<h2><a name="idFeature">Features</a></h2>
-
-<p>
-The following is a list of the features currently supported by the parser library. 
-The primary objective is to keep it as extensible as possible whilst ensuring a maximum parsing speed. Extending the parser is mostly based on allowing a user to add custom callbacks which require only an absolute minimum of code. For instance you need exactly 2 lines of code to add a new function.
-But extending the parser may not be necessary at all since it comes with a powerful default 
-implementation. Here is the (incomplete) list of features:
-</p>
-
-
-<!-- 
-//
-//   Features / Overview
-//
--->
-
-<h3><a name="idFeatureOverview">Overview</a></h3>
-
-
-<ul>
-  <li><b>Easy to use</b>
-    <ul>
-      <li>You need only a <a href="mup_version.html#idExample">few lines of code</a> to evaluate en expression</li>
-    </ul> 
-  </li>
-  <li><b>Extremely fast</b>
-    <ul>
-      <li><a href="mup_version.html#idBench">faster than similar commercial parsers</a></li>
-    </ul> 
-  </li>
-
-  <li><b>User-defined operators</b>
-    <ul>
-      <li>binary operators</li>
-      <li>postfix operators</li>
-      <li>infix operators</li>
-    </ul>
-  </li>
-
-  <li><b>User-defined functions</b>
-    <ul>
-      <li>with a fixed number of up to five arguments</li>
-      <li>with variable number of arguments</li>
-      <li>with a single string argument (for database queries)</li>
-    </ul>
-  </li>
-
-  <li><b>User-defined constants.</b>
-    <ul>
-      <li>numeric constants</li>
-      <li>string constants</li>
-    </ul> 
-  </li>
-
-  <li><b>User-defined variables.</b>
-    <ul>
-        <li>unlimited in number</li>	
-        <li>definable at parser runtime by the parser</li>
-        <li>assigning variables in terms of other variables is possible</li>	
-    </ul>
-  </li>
-  
-  <li><b>Custom value recognition callbacks</b>
-    <ul>
-	<li>support for binary and hex values.</li>
-        <li>can be used to implement database queries</li>
-    </ul>
-  </li>
-
-  <li><b>Default implementaion with many features</b> 
-    <ul>
-      <li>26 <a href="#idDef1">predefined functions</a>.</li>
-      <li>15 <a href="#idDef2">predefined operators</a>.</li>
-      <li>Supports numerical differentiation with respect to a given variable.</li>
-      <li>Assignement operator is supported</li>
-    </ul>
-  </li>
-
-  <li><b>Portability</b>
-    <ul>
-       <li>Project / makefiles for MSVC, mingw, autoconf, bcc</li>
-       <li>ISO 14882 compliant code</li>
-       <li>DLL version usable from every language able to use function exported in C-style</li>
-    </ul> 
-  </li>
-
-  <li><b>Unit support</b>
-    <ul>
-      <li>Use postfix operators as unit multipliers <code>(3m -> 0.003)</code></li>
-    </ul>
-  </li>
-
-  <li><b>Localization</b>
-    <ul>
-      <li>Argument separator, decimal separator, thousands separator can be adjusted to your locale</code></li>
-    </ul>
-  </li>
-
-</ul>
-
-
-<!-- 
-//
-//
-//  
-//   Default implementation
-//
-//
-//
--->
-
-<h3><a name="idDef1">The default implementation</a></h3>
-<p>
-This section gives an overview on the default features supported by the parser. The default
-implementation is defined in the class <code>mu::Parser</code> located in the file 
-<i>muParser.cpp</i>. The DLL-version uses this class internally.
-</p>
-
-<!-- 
-//
-//   Features / Built in functions
-//
--->
-
-
-<h4><a name="idDef2">Built-in functions</a></h4>
-<p>
-The following table gives an overview of the functions supported by the
-default implementation. It lists the function names, the number of 
-arguments and a brief description.
-</p>
-
-<table border="1">
-<thead>
-<tr>
-  <td><b>Name</b></td>  <td><b>Argc.</b></td>  <td><b>Explanation</b></td>
-</tr>
-</thead>
-
-<tbody>
-<tr><td><code>sin</code></td>   <td align="center">1</td>     <td>sine function</td></tr>
-<tr><td><code>cos</code></td>   <td align="center">1</td>     <td>cosine function</td></tr>
-<tr><td><code>tan</code></td>   <td align="center">1</td>     <td>tangens function</td></tr>
-<tr><td><code>asin</code></td>  <td align="center">1</td>     <td>arcus sine function</td></tr>
-<tr><td><code>acos</code></td>  <td align="center">1</td>     <td>arcus cosine function</td></tr>
-<tr><td><code>atan</code></td>  <td align="center">1</td>     <td>arcus tangens function</td></tr>
-<tr><td><code>sinh</code></td>  <td align="center">1</td>     <td>hyperbolic sine function</td></tr>
-<tr><td><code>cosh</code></td>  <td align="center">1</td>     <td>hyperbolic cosine</td></tr>
-<tr><td><code>tanh</code></td>  <td align="center">1</td>     <td>hyperbolic tangens function</td></tr>
-<tr><td><code>asinh</code></td> <td align="center">1</td>     <td>hyperbolic arcus sine function</td></tr>
-<tr><td><code>acosh</code></td> <td align="center">1</td>     <td>hyperbolic arcus tangens function</td></tr>
-<tr><td><code>atanh</code></td> <td align="center">1</td>     <td>hyperbolic arcur tangens function</td></tr>
-<tr><td><code>log2</code></td>  <td align="center">1</td>     <td>logarithm to the base 2</td></tr>
-<tr><td><code>log10</code></td> <td align="center">1</td>     <td>logarithm to the base 10</td></tr>
-<tr><td><code>log</code></td>   <td align="center">1</td>     <td>logarithm to the base 10</td></tr>
-<tr><td><code>ln</code></td>    <td align="center">1</td>     <td>logarithm to base e (2.71828...)</td></tr>
-<tr><td><code>exp</code></td>   <td align="center">1</td>     <td>e raised to the power of x</td></tr>
-<tr><td><code>sqrt</code></td>  <td align="center">1</td>     <td>square root of a value</td></tr>
-<tr><td><code>sign</code></td>  <td align="center">1</td>     <td>sign function -1 if x&lt;0; 1 if x&gt;0</td></tr>
-<tr><td><code>rint</code></td>  <td align="center">1</td>     <td>round to nearest integer</td></tr>
-<tr><td><code>abs</code></td>   <td align="center">1</td>     <td>absolute value</td></tr>
-<tr><td><code>if</code></td>    <td align="center">3</td>     <td>if ... then ... else ...</td></tr>
-<tr><td><code>min</code></td>   <td align="center">var.</td>  <td>min of all arguments</td></tr>
-<tr><td><code>max</code></td>   <td align="center">var.</td>  <td>max of all arguments</td></tr>
-<tr><td><code>sum</code></td>   <td align="center">var.</td>  <td>sum of all arguments</td></tr>
-<tr><td><code>avg</code></td>   <td align="center">var.</td>  <td>mean value of all arguments</td></tr>
-</tbody>
-
-</table>
-
-
-<h4><a name="idDef3">Built-in binary operators</a></h4>
-<p>
-The following table lists the default binary operators supported by the parser.
-</p>
-
-<table border="1">
-	<thead>
-	  <tr><td><b>Operator</b></td>     <td><b>Meaning</b></td>             <td><b>Priority</b></td></tr>
-	</thead>
-
-	<tbody>
-	  <tr><td><code>=</code></td>      <td>assignement*</td>               <td>-1</td></tr>
-	  <tr><td><code>and</code></td>    <td>logical and</td>                <td>1</td></tr>
-	  <tr><td><code>or</code></td>     <td>logical or</td>                 <td>1</td></tr>
-	  <tr><td><code>xor</code></td>    <td>logical xor</td>                <td>1</td></tr>
-	  <tr><td><code>&lt;=</code></td>  <td>less or equal</td>              <td>2</td></tr>
-	  <tr><td><code>&gt;=</code></td>  <td>greater or equal</td>           <td>2</td></tr>
-	  <tr><td><code>!=</code></td>     <td>not equal</td>                  <td>2</td></tr>
-	  <tr><td><code>==</code></td>     <td>equal</td>                      <td>2</td></tr>
-	  <tr><td><code>&gt;</code></td>   <td>greater than</td>               <td>2</td></tr>
-	  <tr><td><code>&lt;</code></td>   <td>less than</td>                  <td>2</td></tr>
-	  <tr><td><code>+</code></td>      <td>addition</td>                   <td>3</td></tr>
-	  <tr><td><code>-</code></td>      <td>subtraction</td>                <td>3</td></tr>
-	  <tr><td><code>*</code></td>      <td>multiplication</td>             <td>4</td></tr>
-	  <tr><td><code>/</code></td>      <td>division</td>                   <td>4</td></tr>
-	  <tr><td><code>^</code></td>      <td>raise x to the power of y</td>  <td>5</td></tr>
-	</tbody>
-</table>
-<small>*The assignment operator is special since it changes one of its
-       arguments and can only by applied to variables.</small>
-
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/sources/mup_features_meta.html
--- a/muParser/docs/html/sources/mup_features_meta.html	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-  <meta name="keywords" content="features, muparser, operator, function, math parser, C++"/>
-  <meta name="description" content="List of operators and functions supported by muparser"/>
-  <title>List of muparser features</title>
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/sources/mup_interface.html
--- a/muParser/docs/html/sources/mup_interface.html	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,985 +0,0 @@
-
-<!-- 
-//
-//
-//  
-//   The parser interface
-//
-//
-//
--->
-
-<br/>
-<h1><a id="idInterface"></a>The parser interface</h1>
-The following section gives an overview of the public parser member functions as well as of the functions 
-exported by the DLL version of the parser.
-
-
-<h2><a id="idInit"></a>Parser initialization / deinitialization</h2>
-<h3>[DLL interface]</h3>
-Create a new instance handle. You can create as many different instance handles as you like. Each will 
-internally reference a different parser object. When using the DLL it is necessary to manually release 
-any parser handle created by <code>mupInit()</code> by calling <code>mupRelease(hParser)</code>.
-
-<pre>
-parser_handle hParser;
-hParser = mupInit(); // Create a new handle
-
-// use the parser...
-
-mupRelease(hParser); // Release an existing parser handle
-</pre>
-
-Internally a handle is nothing more than a pointer to a parser object casted to a void pointer.
-
-
-<h3>[Parser class interface]</h3>
-Code for creating a new parser object. (In case of dynamic allocation use <code>new</code> and <code>delete</code> 
-for initialization and deinitialization.) 
-
-<pre>
-mu::Parser parser;
-</pre>
-
-<!-- 
-//
-//   The parser interface / Setting the expression
-//
--->
-
-<h2><a id="idSetExpr"></a>Setting the expression</h2>
-<h3>[DLL interface]</h3>
-Setting the expression when using the DLL requires a valid parser handle and a pointer to 
-<code>const char</code> pointing to the expression.
-
-<pre>
-mupSetExpr(hParser, szLine);
-</pre>
-<small>See also: <i>Example3/Example3.cpp</i>.</small>
-
-<h3>[Parser class interface]</h3>
-Setting the expression using the parser class requires a <code>std::string</code> containing the expression as the
-only parameter.
-<pre>
-parser.SetExpr(line);
-</pre>
-<small>See also: <i>Example1/Example1.cpp; Example2/WndMain.cpp; ParserLib/muParserTest.cpp</i>.</small>
-
-<!-- 
-//
-//   The parser interface / Evaluating the expression
-//
--->
-
-<h2><a id="idEval"></a>Evaluating an expression</h2>
-<p>
-Expression evaluation is done by calling the <code>mupEval()</code> function in the DLL version or the 
-<code>Eval()</code> member function of a parser object. When evaluating an expression for the first time
-the parser evaluates the expression string directly and creates a bytecode during 
-this first time evaluation. Every sucessive call to <code>Eval()</code> will evaluate the bytecode directly
-unless you call a function that will silently reset the parser to string parse mode. Some functions 
-invalidate the bytecode due to possible changes in callback
-function pointers or variable addresses. In this way they effectively cause a recreation of the 
-bytecode during the next call to <code>Eval()</code>.
-</p>
-<p>
-Internally there are different evaluation functions. One for parsing from a string, the other for
-parsing from bytecode (and a third one used only if the expression can be simplified to a constant). 
-Initially, <code>Eval()</code> will call the string parsing function which is slow due to all the 
-necessary syntax checking, variable lookup, and bytecode creation. Once this
-function succeeds, <code>Eval()</code> will change its internal parse function pointer to either
-the bytecode parsing function or the const result function which are significantly (approx. 1000 times) 
-faster. You don't have to worry about this, it's done automatically, just keep in mind that the 
-first time evaluation of a new formula is significantly slower than any successive call to 
-<code>Eval()</code>.
-</p>
-
-<h3>[DLL interface]</h3>
-<pre>
-double fVal;
-fVal = mupEval(hParser);
-</pre>
-<small>See also: <i>Example3/Example3.cpp</i>.</small>
-
-<h3>[Parser class interface]</h3>
-<pre>
-double fVal;
-try
-{
-  fVal = parser.Eval();
-}
-catch (Parser::exception_type &amp;e)
-{
-  std::cout &lt;&lt; e.GetMsg() &lt;&lt; endl;
-}
-</pre>
-<small>See also: <i>Example1/Example1.cpp; Example2/WndMain.cpp</i>.</small>
-
-<!-- 
-//
-//   The parser interface / Defining identifier character sets
-//
--->
-
-<h2><a id="idDefCharset"></a>Defining identifier character sets</h2>
-Sometimes it is necessary to change the character sets that are used for token identifiers in 
-order to avoid conflicts. The parser uses three different character sets.
-<ul>
-  <li>The name character set, is used for:
-  <ul>
-    <li>function identifiers</li>
-    <li>variable identifiers</li>
-    <li>constant identifiers</li>
-  </ul>
-  </li>
-  <li>The operator character set is used for:
-  <ul>
-    <li>binary operator identifiers</li>
-    <li>postfix operator identifiers</li>
-  </ul></li>
-
-  <li>The Infix operator charset is used for infix operator identifiers only</li>
-</ul>
-
-When using the default implementation <code>mu::muParser</code> directly you can skip this
-section. (The DLL version uses the default implementation internally.)
-
-<h3>[DLL interface]</h3>
-<pre>
-mupDefineNameChars(hParser, "0123456789_"
-                            "abcdefghijklmnopqrstuvwxyz"
-                            "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
-mupDefineOprtChars(hParser, "abcdefghijklmnopqrstuvwxyz"
-                            "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-                            "+-*^/?&lt;&gt;=#!$%&amp;|~'_");
-mupDefineInfixOprtChars(hParser, "/+-*^?&lt;&gt;=#!$%&amp;|~'_");
-</pre>
-
-<h3>[Parser class interface]</h3>
-<pre>
-parser.DefineNameChars("0123456789_"
-                       "abcdefghijklmnopqrstuvwxyz"
-                       "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
-parser.DefineOprtChars("abcdefghijklmnopqrstuvwxyz"
-                       "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-                       "+-*^/?&lt;&gt;=#!$%&amp;|~'_");
-parser.DefineInfixOprtChars("/+-*^?&lt;&gt;=#!$%&amp;|~'_");
-</pre>
-<small>See also: <i>ParserLib/muParser.cpp; ParserLib/muParserInt.cpp</i>.</small>
-
-<!-- 
-//
-//   The parser interface / Defining parser variables
-//
--->
-
-<h2><a id="idDefVar"></a>Defining parser variables</h2>
-Custom variables can be defined either explicit in the code by using the <code>DefineVar</code> function or implicit by the parser. Implicit declaration will call a variable factory function provided by the user. The parser is never the owner of its variables. So you must take care of their destruction in case of dynamic allocation. The general idea is to bind every parser variable to a C++ variable. For this reason, you have to make sure the C++ variable stays valid as long as you process a formula that needs it. Only variables of type <code>double</code> are supported.
-
-
-<h2><a id="idDefVarEx"></a>Explicitely defining variables</h2>
-Explicitely in this context means you have to do add the variables manually it in your application code. So you must know in advance which variables you intend to use. If this is not the case have a look at
-the section on <a href="#idDefVarIm">Implicit creation of new variables</a>.
-
-<table>
-  <tr>
-    <td><img src="images/warning.gif" alt="warning"/></td>  
-    <td>Defining new Variables will reset the parser bytecode. Do not use this function just for changing the values of variables! It would dramatically reduce the parser performance! Once the parser knows the address of the variable there is no need to explicitely call a function for changing the value. Since the parser knows the address it knows the value too so simply change the C++ variable in your code directly!</td>
-  </tr>
-</table>
-
-<h3>[DLL interface]</h3>
-The first parameter is a valid parser handle, the second the variable name and the third a pointer to 
-the associated C++ variable.
-
-<pre>
-double fVal=0;
-mupDefineVar(hParser, "a", &amp;fVal);  
-</pre>
-<small>See also: <i>Example3/Example3.cpp</i>.</small>
-
-<h3>[Parser class interface]</h3>
-
-The first parameter is the variable name and the second a pointer to the associated C++ variable.
-
-<pre>
-double fVal=0;
-parser.DefineVar("a", &amp;fVal);
-</pre>
-<small>See also: <i>Example1/Example1.cpp; Example2/WndMain.cpp; ParserLib/muParserTest.cpp</i>.</small>
-
-
-<h2><a id="idDefVarIm"></a>Implicit creation of new variables</h2>
-Implicit declaration of new variables is only possible by setting a factory function. Implicit creation 
-means that everytime the parser finds an unknown token at a position where a variable could be located it 
-creates a new variable with that name automatically. The necessary factory function must be of type:
-<pre>double* (*facfun_type)(const char*, void*)</pre> 
-The first argument to a factory function is the name of the variable found by the parser. The second is a pointer
-to user defined data. This pointer can be used to provide a pointer to a class that implements the actual factory. 
-By doing this it is possible to use custom factory classes depending on the variable name.
-
-<table>
-<tr><td><img src="images/warning.gif" alt="warning"/></td> <td>Be aware of name conflicts! Please notice that recognizing the name of an undefined variable is the last step during parser token detection. If the potential variable name starts with identifiers that could be interpreted as a function or operator it will be detected as such most likely resulting in an syntax error.</td>
-</tr>
-</table>
-
-The following code is an example of a factory function. The example does not use dynamic allocation for 
-the new variables although this would be possible too. But when using dynamic allocation you must keep
-track of the variables allocated implicitely in order to free them later on. 
-
-<pre>
-double* AddVariable(const char *a_szName, void *pUserData)
-{
-  static double afValBuf[100];  
-  static int iVal = 0;          
-
-  std::cout &lt;&lt; "Generating new variable \"" 
-            &lt;&lt; a_szName &lt;&lt; "\" (slots left: " 
-            &lt;&lt; 99-iVal &lt;&lt; ")" &lt;&lt; endl;
-
-  // you could also do:
-  // MyFactory *pFactory = (MyFactory*)pUserData;
-  // pFactory->CreateNewVariable(a_szName);
-
-  afValBuf[iVal++] = 0;
-  if (iVal>=99)
-    throw mu::Parser::exception_type("Variable buffer overflow.");
-
-  return &amp;afValBuf[iVal];
-}
-</pre>
-<small>See also: <i>Example1/Example1.cpp</i>.</small>
-
-In order to add a variable factory use the <code>SetVarFactory</code> functions. The first parameter 
-is a pointer to the static factory function, the second parameter is optional and represents a pointer 
-to user defined data. Without a variable factory each undefined variable will cause an undefined token error. Factory 
-functions can be used to query the values of newly created variables directly from a
-database. If you emit errors from a factory function be sure to throw an exception of
-type <code>ParserBase::exception_type</code> all other exceptions will be caught internally
-and result in an internal error.
-
-<h3>[DLL interface]</h3>
-<pre>
-mupSetVarFactory(hParser, AddVariable, pUserData);
-</pre>
-<small>See also: <i>Example3/Example3.cpp</i>.</small>
-
-<h3>[Parser class interface]</h3>
-<pre>
-parser.SetVarFactory(AddVariable, pUserData);
-</pre>
-<small>See also: <i>Example1/Example1.cpp</i>.</small>
-
-
-<!-- 
-//
-//   The parser interface / Defining parser constants
-//
--->
-
-
-<h2><a id="idDefConst"></a>Defining parser constants</h2>
-Parser constants can either be values of type <code>double</code> or <code>string</code>. Constness 
-refers to the bytecode. Constants will be stored by their value in the bytecode, not by a reference to
-their address. Thus accessing them is faster. They may be optimized away if this is possible. 
-Defining new constants or changing old ones will reset the parser to string parsing mode thus resetting
-the bytecode.
-<br/>
-The Names of user defined constants may contain only the following characters: <code>0-9, a-z, A-Z, _</code>, and they may not start with a number. Violating this rule will raise a parser error.
-
-<h3>[DLL interface]</h3>
-<pre>
-// Define value constants <code>_pi</code>
-mupDefineConst(hParser, "_pi", (double)PARSER_CONST_PI);  
-
-// Define a string constant named <code>strBuf</code>
-mupDefineStrConst("strBuf", "hello world");
-</pre>
-<small>See also: <i>Example3/Example3.cpp</i>.</small>
-
-
-<h3>[Parser class interface]</h3>
-<pre>
-// Define value constant <code>_pi</code>
-parser.DefineConst("_pi", (double)PARSER_CONST_PI);
-
-// Define a string constant named <code>strBuf</code>
-parser.DefineStrConst("strBuf", "hello world");
-</pre>
-<small>See also: <i>Example1/Example1.cpp; Example2/WndMain.cpp; ParserLib/muParserTest.cpp</i>.</small>
-
-<!-- 
-//
-//   The parser interface / Defining parser functions
-//
--->
-
-
-<h2><a id="idDefFun"></a>Defining parser functions</h2>
-The parser allows the user to define a variety of different callback functions. 
-Functions with a fixed number of up to five numeric arguments, functions with
-a variable number of numeric arguments and functions taking a sinlge string 
-argument plus up to two numeric values. 
-In order to define a parser function you need to specify its name, a pointer
-to a static callback function and an optional flag indicating if the function 
-is volatile. Volatile functions are functions that can not be optimized.
-<br/>
-The static callback functions must have of either one of the <a id="FunTypes">following types</a>:
-
-<pre>
-// For fixed number of arguments
-double (*fun_type1)(double); 
-double (*fun_type2)(double, double); 
-double (*fun_type3)(double, double, double); 
-double (*fun_type4)(double, double, double, double); 
-double (*fun_type5)(double, double, double, double, double); 
-
-// for a variable number of arguments
-//   first arg:   pointer to the arguments
-//   second arg:  number of arguments
-double (*multfun_type)(const double*, int);
-
-// for functions taking a single string plus up to two numeric values
-double (*strfun_type1)(const char *);
-double (*strfun_type2)(const char *, double);
-double (*strfun_type3)(const char *, double, double);
-</pre>
-
-
-<h3>[DLL interface]</h3>
-When using the DLL version it is necessary to call a seperate function for
-each type of callback. The following is a list of possible choices.
-
-<pre>
-// Add functions taking string parameters that cant be optimized
-mupDefineStrFun1(hParser, "StrFun1", pStrCallback1, false); 
-mupDefineStrFun2(hParser, "StrFun2", pStrCallback2, false); 
-mupDefineStrFun3(hParser, "StrFun3", pStrCallback3, false); 
-
-// Add an function with a fixed number of arguments
-mupDefineFun1(hParser, "fun1", pCallback1, false);             
-mupDefineFun2(hParser, "fun2", pCallback2, false);             
-mupDefineFun3(hParser, "fun3", pCallback3, false);             
-mupDefineFun4(hParser, "fun4", pCallback4, false);             
-mupDefineFun5(hParser, "fun5", pCallback5, false);             
-
-// Define a function with variable number of arguments
-mupDefineMultFun(hParser, "MultFun", pMultCallback);  
-</pre>
-<small>See also: <i>Example3.cpp</i>.</small>
-
-
-<h3>[Parser class interface]</h3>
-Defining callback functions by using the parser class directly is easier since there is
-only a single member function that is used for all kinds of callbacks. Since
-this member function is defined as a template internally it automatically associates
-the right code to any given type of callback. (As long as this type is listed 
-<a href="#FunTypes">above</a>)
-
-<pre>
-parser.DefineFun("FunName", pCallback, false)
-</pre>
-<small>See also: <i>Example1/Example1.cpp; ParserLib/muParser.cpp; ParserLib/muParserInt.cpp</i>.</small>
-
-<!-- 
-//
-//
-//   The parser interface / Defining parser operators
-//
-//
--->
-
-<h2><a id="idDefOprt"></a>Defining parser operators</h2>
-The parser is extensible with different kinds of operators: prefix operators, infix operators
-and binary operators. Operators can be applied to numerical values only (not to string constants).
-
-<ul>
-  <li>Postfix operators are operators that succeed values. For instance the factorial operator 
-      (<code>a! = a*(a-1)...*2*1</code>). Another application for postfix operators is their use as multipliers 
-      that can be used for implementing units.</li>
-  <li>Infix operators are operators like the unary minus which serves as a sign or the logical 
-      not <code>"!(a&lt;9)"</code>.</li>
-  <li>Binary operators can be defined in order to supplement or replace the built in binary operators
-      they require an additional parameter, the operator priority.</li>
-</ul>
-
-
-<!-- 
-//
-//   The parser interface / unary Operators
-//
--->
-
-
-<h3><a id="idUnOp"></a>Unary operators</h3>
-Both postfix and infix operators take <a href="#FunTypes">callback functions of type</a> <code>fun_type1</code> like the following: 
-
-<pre>
-double MyCallback(double fVal) 
-{
-  return fVal/1000.0;
-}
-</pre>
-
-For defining postfix operators and infix operators you need a valid parser instance, 
-an identifier string, and an optional third parameter marking the operator as volatile
-(non optimizable). 
-
-<h3>[DLL interface]</h3>
-<pre>
-// Define an infix operator
-mupDefineInfixOprt(hParser, "!", MyCallback);
-
-// Define a postfix operators
-mupDefinePostfixOprt(hParser, "M", MyCallback);
-</pre>
-<small>See also:<i>Example3/Example3.cpp</i>.</small>
-
-<h3>[Parser class interface]</h3>
-<pre>
-// Define an infix operator
-parser.DefineInfixOprt("!", MyCallback);
-
-// Define a postfix operators
-parser.DefinePostfixOprt("m", MyCallback);
-</pre>
-<small>See also:<i>Example1/Example1.cpp; Example2/WndMain.cpp; muParserTest.cpp</i>.</small>
-
-
-
-<!-- 
-//
-//   The parser interface / Binary Operators
-//
--->
-
-
-<h3><a id="idBinOp"></a>Binary operators</h3>
-This parser has 15 <a href="mup_features.html#idDef3">Built in binary operators</a>. Sometimes it might be necessary to add additional custom binary operators. Examples are <code>shl</code> or <code>shr</code>, the "<b>shift left</b>" and "<b>shift right</b>" operators for integer numbers.
-In order to add user defined operators you need to assign a name, a callback function of type <code><a href="#idDefFun">fun_type2</a></code> and a priority for each new binary operator. You are not allowed to overload built in operators, this would result in an error being raised! For instance lets consider the
-following callback function which should be assigned to a binary operator:
-
-<pre>
-double pMyAddFun(double v1, double v2) 
-{
-  return v1+v2; 
-}
-</pre>
-
-For the definintion of binary operators you need at least 4 parameters. The first is a valid parser handle,
-the second is the identifier of the operator, the third is the operator callback function, the fourth is 
-the operator priority and the optional fifth parameter is a flag of type <code>bool</code> marking the operator
-as volatile. (The examples below omit the last flag.)
-Having defined a proper operator callback function you can add the binary operator with the following code:
-
-<h3>[DLL interface]</h3>
-<pre>
-mupDefineOprt(hParser, "add", pMyAddFun, 0);
-</pre>
-<small>See also:<i>Example3/Example3.cpp</i>.</small>
-
-<h3>[Parser class interface]</h3>
-<pre>
-parser.DefineOprt("add", pMyAddFun, 0);
-</pre>
-<small>See also:<i>Example1/Example1.cpp; Example2/WndMain.cpp; muParserTest.cpp</i>.</small>
-
-<a href="mup_features.html#idDef3">The priority</a> value must be greater or equal than zero (lowest possible priority). It controls the operator precedence in the formula. For instance if you want to calculate the formula <code>1+2*3^4</code> in a mathemetically correct sense you have to make sure that Addition has a lower priority than multiplication which in turn has a lower priority than the power operator. The most likely cases are that you assign an operator with a low priority of 0 (like <code>and</code>, <code>or</code>, <code>xor</code>) or a high priority that is larger than 6. (The priority of the power operator (<code>^</code>).)
-By assigning Priority values already used by built in operators you might introduce unwanted side effects. To avoid this and make the order of calculation clear you must use brackets in these cases. Otherwise the order will be determined by the Formula parsing direction which is from left to right.
-<br/>
-<br/>
-Example A:  Priority of <code>shl</code> equals priority of an addition; The order of the execution is from left to right.
-<pre>
-1 + 2 shl 1 => (1 + 2) shl 1
-2 shl 1 + 1 => (s shl 1) + 1
-</pre>
-Example B:  Priority of <code>shl</code> is higher than the one of the addition; <code>shl</code> is executed first.
-<pre>
-1 + 2 shl 1 => 1 + (2 shl 1)
-2 shl 1 + 1 => (2 shl 1) + 1
-</pre>
-
-If you encounter such conflicts or simply dont need the built in operators these can easily be deactivated using the <code>EnableBuiltInOprt(bool)</code> function. If you call this function you must add binary operators manually. After all without any operators you won't be able to parse anything useful. User defined operators come with approximately 10% decrease in parsing speed compared to built in operators. There is no way to avoid that. They cause an overhead when calling theeir callback functions. (This is the reason why there are built in operators)
-
-<pre>
-// disable all built in operators
-parser.EnableBuiltInOprt(false);
-</pre>
-
-
-<!-- 
-//
-//   The parser interface / Querying parser variables
-//
--->
-
-<h2><a id="idQueryVar"></a>Querying parser variables</h2>
-Keeping track of all variables can be a difficult task. For simplification the parser allows the user
-to query the variables defined in the parser. There are two different sets of variables that can 
-be accessed:
-
-<ul>
-  <li>Varaiables defined in the parser</li>
-  <li>Variables used in the current expression</li>
-</ul>
-
-Since the usage of the necessary commands is similar the following example shows 
-querying the parser variables only.
-
-
-<h3>[DLL interface]</h3>
-For querying the variables used in the expression exchange <code>mupGetVarNum(...)</code> with 
-<code>mupGetExprVarNum(...)</code> and <code>mupGetVar(...)</code> with <code>mupGetExprVar(...)</code> 
-in the following example. Due to the use of an temporary internal static buffer for storing the variable
-name in the DLL version this DLL-function is not thread safe.
-
-<pre>
-// Get the number of variables
-int iNumVar = mupGetVarNum(a_hParser);
-
-// Query the variables  
-for (int i=0; i &lt; iNumVar; ++i)
-{
-  const char *szName = 0;
-  double *pVar = 0;
-  mupGetVar(a_hParser, i, &amp;szName, &amp;pVar);
-  std::cout &lt;&lt; "Name: " &lt;&lt; szName &lt;&lt; "   Address: [0x" &lt;&lt; pVar &lt;&lt; "]\n";
-}
-</pre>
-<small>See also: <i>Example3/Example3.cpp</i>.</small>
-
-<h3>[Parser class interface]</h3>
-For querying the expression variables exchange <code>parser.GetVar()</code> with
-<code>parser.GetUsedVar()</code> in the following example.
-
-<pre>
-// Get the map with the variables
-mu::Parser::varmap_type variables = parser.GetVar();
-cout &lt;&lt; "Number: " &lt;&lt; (int)variables.size() &lt;&lt; "\n";
-
-// Get the number of variables 
-mu::Parser::varmap_type::const_iterator item = variables.begin();
-
-// Query the variables
-for (; item!=variables.end(); ++item)
-{
-  cout &lt;&lt; "Name: " &lt;&lt; item->first &lt;&lt; " Address: [0x" &lt;&lt; item->second &lt;&lt; "]\n";
-}
-</pre>
-
-<small>
-  See also: <i>Example1/Example1.cpp, Example2/WndMain.cpp</i>.
-</small>
-
-<!-- 
-//
-//   The parser interface / Querying parser constants
-//
--->
-
-
-<h2><a id="idQueryConst"></a>Querying parser constants</h2>
-Querying parser constants is similar to querying variables and expression variables. 
-
-<h3>[DLL interface]</h3>
-Due to the use of an temporary internal static buffer for storing the variable
-name in the DLL version this DLL-function is not thread safe.
-
-<pre>
-int iNumVar = mupGetConstNum(a_hParser);
-
-for (int i=0; i &lt; iNumVar; ++i)
-{
-  const char *szName = 0;
-  double fVal = 0;
-  mupGetConst(a_hParser, i, &amp;szName, fVal);
-  std::cout &lt;&lt; "  " &lt;&lt; szName &lt;&lt; " = " &lt;&lt; fVal &lt;&lt; "\n";
-}
-</pre>
-
-<small>
-  See also: <i>Example3/Example3.cpp</i>.
-</small>
-
-
-<h3>[Parser class interface]</h3>
-The parser class provides you with the <code>GetConst()</code> member function that returns a map structure
-with all defined constants. The following code snippet shows how to use it:
-<pre>
-mu::Parser::valmap_type cmap = parser.GetConst();
-if (cmap.size())
-{
-  mu::Parser::valmap_type::const_iterator item = cmap.begin();
-  for (; item!=cmap.end(); ++item)
-    cout &lt;&lt; "  " &lt;&lt; item->first &lt;&lt; " =  " &lt;&lt; item->second &lt;&lt; "\n";
-}
-</pre>
-<small>See also: <i>Example1/Example1.cpp, Example2/WndMain.cpp</i>.</small>
-
-<!-- 
-//
-//   The parser interface / Setting custom value recognition callbacks
-//
--->
-
-
-<h2><a id="idDefConst2"></a>Setting custom value recognition callbacks</h2>
-The parser default implementation <i>(muParser.cpp)</i> scans expressions 
-only for floating point values. Custom value recognition callbacks can be used in order to 
-implement support for binary, hexadecimal or octal numbers. These functions are called 
-during the string parsing and allow the user to scan portions of the original expressions
-for values. Their callback functions must be of the following type:
-
-<pre>
-bool (*identfun_type)(const char_type*, int&amp;, value_type&amp;);
-</pre>
-
-<p>
-If the parser reaches an a position during string parsing that could host a value token it 
-tries to interpret it as such. If that fails the parser sucessively calls all 
-internal value recognition callbacks in order to give them a chance to make 
-sense out of what has been found. If all of them fail the parser continues to
-check if it is a Variable or another kind of token. 
-</p>
-
-<p>
-In order to perform the task of value recognition these functions take a <code>const char</code>
-pointer, a reference to <code>int</code> and a reference 
-to <code>double</code> as their arguments. 
-The <code>const char</code> pointer points to the current formula position. The second
-argument is the index of that position. This value must be increased by the length of the 
-value entry if one has been found. In that case the value must be written to the third 
-argument which is of type <code>double</code>.
-</p>
-
-<p>
-The next code snippet shows a sample implementation of a function that reads and
-interprets binary values from the expression string. The code is taken from 
-<i>muParserInt.cpp</i> the implementation of a parser for integer numbers. Binary 
-numbers must be preceded with a <code>#</code> (i.e. <code>#1000101</code>).
-</p>
-
-<pre>
-bool ParserInt::IsBinVal(const char_type *a_szExpr, 
-                         int &amp;a_iPos, value_type &amp;a_fVal)
-{
-  if (a_szExpr[0]!='#') 
-    return false;
-
-  unsigned iVal = 0, iBits = sizeof(iVal)*8;
-  for (unsigned i=0; 
-       (a_szExpr[i+1]=='0'||a_szExpr[i+1]=='1')&amp;&amp; i&lt;iBits; 
-       ++i)
-  {
-    iVal |= (int)(a_szExpr[i+1]=='1') &lt;&lt; ((iBits-1)-i);
-  }
-
-  if (i==0) 
-    return false;
-
-  if (i==iBits)
-    throw exception_type("Binary to integer conversion error (overflow).");
-
-  a_fVal = (unsigned)(iVal &gt;&gt; (iBits-i) );
-  a_iPos += i+1;
-
-  return true;
-}
-</pre>
-
-Once you have the callback you must add it to the parser. This can be done with:
-
-<h3>[DLL interface]</h3>
-<pre>
-mupAddValIdent(hParser, IsBinVal);
-</pre>
-
-<small>
-See also: <i>Example3/Example3.cpp</i>.
-</small>
-
-
-<h3>[Parser class interface]</h3>
-<pre>
-parser.AddValIdent(IsBinVal);
-</pre>
-<small>
-See also: <i>ParserLib/muParserInt.cpp</i>.
-</small>
-
-<!-- 
-//
-//   The parser interface / Removing variables or constants
-//
--->
-
-<h2><a id="idRemoveVar"></a>Removing variables or constants</h2>
-Removing variables and constants can be done all at once using <code>ClearVar</code> and 
-<code>ClearConst</code>. Additionally variables can be removed by name using 
-<code>RemoveVar</code>. Since the parser never owns the variables you must take care of
-their release yourself <small>(if they were dynamically allocated)</small>. If you need to browse all 
-the variables have a look at the chapter explaining how to 
-<a href="#idQueryVar">query parser variables</a>.
-
-
-<h3>[DLL interface]</h3>
-<pre>
-// Remove all constants
-mupClearConst(hParser);
-
-// remove all variables
-mupClearVar(hParser);
-
-// remove a single variable by name
-mupRemoveVar(hParser, "a"); 
-</pre>
-
-
-<h3>[Parser class interface]</h3>
-<pre>
-// Remove all constants
-parser.ClearConst();
-
-// remove all variables
-parser.ClearVar();
-
-// remove a single variable by name
-parser.RemoveVar("a"); 
-</pre>
-
-<!-- 
-//
-//   The parser interface / Error handling
-//
--->
-
-
-<h2><a id="idErrors"></a>Error handling</h2>
-In case of an error both parser class and the parser DLL provide 
-similar methods for querying the information associated with the 
-error. In the parser class they are member functions of the associated 
-exception class <code>mu::Parser::exception_type</code> and in the DLL 
-version they are normal functions.
-
-<p>
-These functions are:
-</p>
-
-<ul>
-  <li><code>exception.GetMsg() / mupGetErrorMsg()</code> - returns the error message.</li>
-  <li><code>exception.GetExpr() / mupGetExpr()</code> - returns the current formula (if a formula is set)</li>
-  <li><code>exception.GetToken() / mupGetErrorToken()</code> - returns the token associated with the error (if applicable)</li>
-  <li><code>exception.GetPos() / mupGetErrorPos()</code> - returns the current formula position (if applicable)</li>
-  <li><code>exception.GetCode() / mupGetErrorCode()</code> - returns the error code.</li>
-</ul>
-
-<p>
-The following table lists the parser error codes. 
-The first column contains the enumeration values as defined in the enumeration <code>mu::EErrorCodes</code> 
-located in the file <i>muParserError.h</i>. Since they are only accessible from C++ the second column lists 
-their numeric code and the third column contains the error description.
-</p>
-
-<table border="0">
-<thead>
-  <tr>
-    <td>             <small><b>Enumeration name</b></small></td>
-    <td align="center"><small><b>Value</b></small></td>
-    <td>             <small><b>Description</b></small></td>
-  </tr>
-</thead>
-
-<tbody>
-  <tr>
-      <td><small><code>ecUNEXPECTED_OPERATOR</code></small></td>  
-      <td align="center"><small>0</small></td>
-      <td><small>Unexpected binary operator found</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecUNASSIGNABLE_TOKEN</code></small></td>
-      <td align="center"><small>1</small></td>
-      <td><small>Token cant be identified</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecUNEXPECTED_EOF</code></small></td> 
-      <td align="center"><small>2</small></td> 
-      <td><small>Unexpected end of formula. (Example: "2+sin(")</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecUNEXPECTED_COMMA</code></small></td> 
-      <td align="center"><small>3</small></td>  
-      <td><small>An unexpected comma has been found. (Example: "1,23")</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecUNEXPECTED_ARG</code></small></td>
-      <td align="center"><small>4</small></td> 
-      <td><small>An unexpected argument has been found</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecUNEXPECTED_VAL</code></small></td>
-      <td align="center"><small>5</small></td> 
-      <td><small>An unexpected value token has been found</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecUNEXPECTED_VAR</code></small></td>
-      <td align="center"><small>6</small></td>  
-      <td><small>An unexpected variable token has been found</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecUNEXPECTED_PARENS</code></small></td> 
-      <td align="center"><small>7</small></td>
-      <td><small>Unexpected parenthesis, opening or closing</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecUNEXPECTED_STR</code></small></td>
-      <td align="center"><small>8</small></td> 
-      <td><small>A string has been found at an inapropriate position</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecSTRING_EXPECTED</code></small></td>
-      <td align="center"><small>9</small></td>  
-      <td><small>A string function has been called with a different type of argument</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecVAL_EXPECTED</code></small></td>
-      <td align="center"><small>10</small></td> 
-      <td><small>A numerical function has been called with a non value type of argument</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecMISSING_PARENS</code></small></td>
-      <td align="center"><small>11</small></td> <td><small>Missing parens. (Example: "3*sin(3")</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecUNEXPECTED_FUN</code></small></td>
-      <td align="center"><small>12</small></td> 
-      <td><small>Unexpected function found. (Example: "sin(8)cos(9)")</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecUNTERMINATED_STRING</code></small></td>
-      <td align="center"><small>13</small></td>
-      <td><small>unterminated string constant. (Example: "3*valueof("hello)")</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecTOO_MANY_PARAMS</code></small></td>
-      <td align="center"><small>14</small></td> 
-      <td><small>Too many function parameters</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecTOO_FEW_PARAMS</code></small></td> 
-      <td align="center"><small>15</small></td>
-      <td><small>Too few function parameters. (Example: "ite(1&lt;2,2)")</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecOPRT_TYPE_CONFLICT</code></small></td> 
-      <td align="center"><small>16</small></td> 
-      <td><small>binary operators may only be applied to value items of the same type</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecSTR_RESULT</code></small></td>  
-      <td align="center"><small>17</small></td> 
-      <td><small>result is a string</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecINVALID_NAME</code></small></td>
-      <td align="center"><small>18</small></td> 
-      <td><small>Invalid function, variable or constant name.</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecBUILTIN_OVERLOAD</code></small></td>
-      <td align="center"><small>19</small></td> 
-      <td><small>Trying to overload builtin operator</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecINVALID_FUN_PTR</code></small></td>  
-      <td align="center"><small>20</small></td> 
-      <td><small>Invalid callback function pointer</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecINVALID_VAR_PTR</code></small></td>
-      <td align="center"><small>21</small></td> 
-      <td><small>Invalid variable pointer</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecNAME_CONFLICT</code></small></td>  
-      <td align="center"><small>22</small></td> 
-      <td><small>Name conflict</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecOPT_PRI</code></small></td>  
-      <td align="center"><small>23</small></td>
-      <td><small>Invalid operator priority</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecDOMAIN_ERROR</code></small></td>
-      <td align="center"><small>24</small></td>
-      <td><small>catch division by zero, sqrt(-1), log(0) (currently unused)</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecDIV_BY_ZERO</code></small></td>
-      <td align="center"><small>25</small></td> 
-      <td><small>Division by zero (currently unused)</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecGENERIC</code></small></td> 
-      <td align="center"><small>26</small></td> 
-      <td><small>Error that does not fit any other code but is not an internal error</small></td>
-  </tr>
-  <tr>
-      <td><small><code>ecINTERNAL_ERROR</code></small></td>   
-      <td align="center"><small>27</small></td> 
-      <td><small>Internal error of any kind.</small></td>
-  </tr>
-  </tbody>
-</table>
-
-<h3>[DLL interface]</h3>
-Since dynamic libraries with functions exported in C-style can't throw exceptions the DLL version
-provides the user with a callback mechanism to raise errors. Simply add a callback function
-that does the handling of errors. Additionally you can query the error flag with 
-<code>mupError()</code>. Please note that by calling this function you will automatically reset the error flag!
-<pre>
-// Callback function for errors
-void OnError()
-{
-  cout &lt;&lt; "Message:  " &lt;&lt; mupGetErrorMsg() &lt;&lt; "\n";
-  cout &lt;&lt; "Token:    " &lt;&lt; mupGetErrorToken() &lt;&lt; "\n";
-  cout &lt;&lt; "Position: " &lt;&lt; mupGetErrorPos() &lt;&lt; "\n";
-  cout &lt;&lt; "Errc:     " &lt;&lt; mupGetErrorCode() &lt;&lt; "\n";
-}
-
-...
-
-// Set a callback for error handling
-mupSetErrorHandler(OnError);
-
-// The next function could raise an error
-fVal = mupEval(hParser);
-
-// Test for the error flag
-if (!mupError()) cout &lt;&lt; fVal &lt;&lt; "\n";
-</pre>
-<small>See also: Example3/Example3.cpp</small>
-
-<h3>[Parser class interface]</h3>
-In case of an error the parser class raises an exception of type <code>Parser::exception_type</code>. This 
-class provides you with several member functions that allow querying the exact cause as well as 
-additional information for the error.
-<pre>
-try
-{
-  ...
-  parser.Eval();
-  ...
-}
-catch(mu::Parser::exception_type &amp;e)
-{
-  cout &lt;&lt; "Message:  " &lt;&lt; e.GetMsg() &lt;&lt; "\n";
-  cout &lt;&lt; "Formula:  " &lt;&lt; e.GetExpr() &lt;&lt; "\n";
-  cout &lt;&lt; "Token:    " &lt;&lt; e.GetToken() &lt;&lt; "\n";
-  cout &lt;&lt; "Position: " &lt;&lt; e.GetPos() &lt;&lt; "\n";
-  cout &lt;&lt; "Errc:     " &lt;&lt; e.GetCode() &lt;&lt; "\n";
-}
-</pre>
-<small>See also: Example1/Example1.cpp</small>
-
-
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/sources/mup_interface_meta.html
--- a/muParser/docs/html/sources/mup_interface_meta.html	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-  <meta name="keywords" content="muparser, api, interface, dll, C++"/>
-  <meta name="description" content="muparser programming interface"/>
-  <title>muParser programming interface</title>
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/sources/mup_intro.html
--- a/muParser/docs/html/sources/mup_intro.html	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-<script type="text/javascript">
-  imgParserNET=new Image();
-  imgParserNET.src="images/muParserNET.png";
-  imgParserNETDark=new Image();
-  imgParserNETDark.src="images/muParserNET_.png";
-
-  imgParserX=new Image();
-  imgParserX.src="images/muParserX.png"; 
-  imgParserXDark=new Image();
-  imgParserXDark.src="images/muParserX_.png";
-
-  imgDownload=new Image();
-  imgDownload.src="images/download_muparser.png"; 
-  imgDownloadDark=new Image();
-  imgDownloadDark.src="images/download_muparser_.png";
-</script>
-
-<h2>About the parser</h2> 
-
-<p>
-Many applications require the parsing of <strong>mathematical expressions</strong>.
-The main objective of this library is to provide a fast and easy way of
-doing this. <strong>muParser</strong> is an extensible high performance
-<strong>math parser</strong> library written in <a href="http://www.cplusplus.com/">C++</a>. It works 
-by transforming a mathematical expression into bytecode and precalculating constant 
-parts of the expression.
-</p>
-
-<div style="/*position:float; */border: 1px solid #000000; width:420px; height:220px; text-align:left; float:left; margin-right:10px; background-color: #ffffff;">
-<img src="images/related.png" alt="math expression parser - related links" border="0" width="420"/>
-  <a href="http://www.codeproject.com/KB/recipes/muParser.aspx">
-    <img src="images/muParserNET_.png" alt=".NET math parser" border="0" width="200" style="float:left;" onmouseover="ChangeButtonImage(7,imgParserNET)" onmouseout="ChangeButtonImage(7,imgParserNETDark)"/>
-    <br/>
-    <strong>muParser C# wrapper</strong>
-    <br/>
-    <span class="tiny_text">a math parser for .NET</span>
-  </a>
-
-  <br clear="all"/><br/>
-  <a href="http://beltoforion.de/muparserx/math_expression_parser_en.html">
-    <img src="images/muParserX_.png" 
-         alt="math expression parser" 
-         border="0" 
-         width="200" 
-         style="float:left;"
-         onmouseover="ChangeButtonImage(8,imgParserX)" 
-         onmouseout="ChangeButtonImage(8,imgParserXDark)"/>
-    <strong>muParserX</strong>
-    <br/>
-    <span class="tiny_text">a math expression parser with support for multitype data types</span>
-  </a>
-</div>
-The library was designed with portability in mind and should compile on every
-standard compliant C++ compiler. Wrapper for <strong>C</strong> and <strong>C#</strong> 
-exist. The parser archive contains ready to use project and makefiles files for a variety of 
-platforms. The code runs on both <strong>32 bit</strong> and 
-<strong>64 bit</strong> architechtures and has been tested using MS VC++ V8.0 
-and GCC V4.4.1. Code samples are provided in order to help you understand its 
-usage. The library is <strong>open source</strong> and distributed under 
-the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.
-
-<div style="text-align:center;">
-<a href="http://sourceforge.net/project/showfiles.php?group_id=137191">
-  <img src="images/download_muparser_.png" 
-       border="0" 
-       alt="muParser download"
-       onmouseover="ChangeButtonImage(9,imgDownload)" 
-       onmouseout="ChangeButtonImage(9,imgDownloadDark)"/>
-</a>
-</div>
-
-<p>
-Before I go on, I'd like to thank <a href="http://sourceforge.net">SourceForge</a> for hosting this project. This
-pages would not exist without the webspace provided by them and of course I'd like 
-to thank <a href="http://www.codeproject.com">CodeProject</a> for hosting the original 
-<a href="http://www.codeproject.com/cpp/FastMathParser.asp" target="_blank">math parser</a> 
-article.
-</p>
-
-
-<h2>Support this project</h2>
-muParser is free software and anyone can use it free of charge for commercial and noncommercial purposes. If you wish you can support this project by <strong>making a small donation</strong>:
-<br/>
-<br/>
-<div style="text-align:center;">
-  <a href="http://sourceforge.net/donate/index.php?group_id=137191">
-    <img src="http://images.sourceforge.net/images/project-support.jpg" 
-         width="196" 
-         height="64" 
-         border="0" 
-         alt="Support This Project"/> 
-  </a>
-</div>
-<br/>
-A project like muParser requires permanent maintanence in order to adopt to new platforms, new compiler version and for fixing bugs. So if you are using the library and find it useful i would like to encourage you to make a donation in order to help keeping the project up to date. I can officially guarantee that you <strong>make my day</strong> by donating even a small amount of money. In a way this is a "Wow the people actually really appreciate what i'm doing" kind of thing and that's whats driving me and ultimately this is what is keeping this project alive.
-
-
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/sources/mup_intro_meta.html
--- a/muParser/docs/html/sources/mup_intro_meta.html	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-  <meta name="keywords" content="math parser, math expression parser, muparser, muparserx, muparser.net, .net, c++, lib, dll, donation, function parser"/>
-  <meta name="description" content="muParser - a fast math parser library"/>
-  <title>muParser - a fast math parser library</title>
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/sources/mup_licence.html
--- a/muParser/docs/html/sources/mup_licence.html	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-<!--
-//
-//
-//
-//   License
-//
-//
-//
--->
-
-<h1><a name="idLicense">muParser licence</a></h1>
-
-<p>
-This library is distributed as freeware. The licence is the <a href="http://www.opensource.org/licenses/mit-license.php">MIT licence</a>: you are free to use it for both non-commercial and commercial use. In order to use it you have to agree to the licence text below. If you use the library I consider it appropriate to give me credit at some place. This can either be the about dialog of your application or the documentation of your software.
-If you like this project I encourage you to support it by:
-</p>
-<ul>
-  <li>sending a brief description of how you use it in your project</li>
-  <li>sending <a href="http://sourceforge.net/tracker/?atid=737979&amp;group_id=137191&amp;func=browse">bug reports</a></li>
-  <li>voting for this project on <a href="http://www.codeproject.com/cpp/FastMathParser.asp">CodeProject</a></li>
-</ul>
-
-<p>
-<b>Copyright (c) 2010 Ingo Berg</b>
-<br/>
-Permission is hereby granted, free of charge, to any
-person obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the
-Software without restriction, including without limitation
-the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the
-Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-</p>
-
-<p>
-The above copyright notice and this permission notice
-shall be included in all copies or substantial portions of
-the Software.</p>
-<p>
-
-<i>
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
-PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
-OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-</i>
-
-</p>
-
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/sources/mup_licence_meta.html
--- a/muParser/docs/html/sources/mup_licence_meta.html	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-  <meta name="keywords" content="muparser, licence, licencing, terms and conditions, legal, mit, open source, c++"/>
-  <meta name="description" content="muparser licence"/>
-  <title>muparser Licence</title>
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/sources/mup_links.html
--- a/muParser/docs/html/sources/mup_links.html	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-<br/>
-<br/>
-<h2>Software using the muParser library (alphabetically)</h2>
-<table border="0">
-  <colgroup>
-    <col width="120"/>
-  </colgroup>
-
-  <tr>
-    <td><img src="images/thumb_geodes.jpg" border="0" width="120" alt="Geodes thumbnail"/></td>
-    <td align="center"><a href="http://geodes.sourceforge.net/" target="_top">Geodes</a></td>
-    <td>Geodes is a new dynamic geometry software for Mac OS X. The goal of this application is to make geometry become easy and funny.<br/>
-        (Platform:  Mac OSX)</td>
-  </tr>
-
-  <tr>
-    <td><img src="images/thumb_kst.jpg" width="120" border="0" alt="kst thumbnail"/></td>
-    <td align="center"><a href="http://extragear.kde.org/apps/kst/" target="_top">kst</a></td>
-    <td>A plotter for scientific data. (currently muParser is used by the Marquardt
-	Levenberg plugin)<br/>
-        (Platform:  Linux / Operating systems that support KDE)
-    </td> 
-  </tr>
-
-  <tr>
-    <td><img src="images/thumb_matrix.jpg" border="0" width="120" alt="MatriX thumbnail"/></td>
-    <td align="center"><a href="http://www.ds4.it/" target="_top">MatriX</a></td>
-    <td>DS4 produces laser systems for industry applications like engraving, cutting, incision and welding. muParser is used 
-        in  their MatriX application, a software for for managing the laser systems.<br/>
-        (Platform:  Linux)</td>
-  </tr>
-
-  <tr>
-    <td><img src="images/thumb_meshlab.jpg" border="0" width="120" alt="tm2 thumbnail"/></td>
-    <td align="center"><a href="http://meshlab.sourceforge.net" target="_top">Meshlab&nbsp; &nbsp;</a></td>
-    <td>An open source, portable, and extensible system for the processing and editing of unstructured 3D triangular meshes. <br/>
-        (Platform:  MS Windows, Linux, OSX)</td>
-  </tr>
-
-  <tr>
-    <td><img src="images/thumb_pasimodo.jpg" border="0" width="120" alt="Pasimodo"/></td>
-    <td align="center"><a href="http://www.itm.uni-stuttgart.de/research/pasimodo/pasimodo_de.php" target="_top">Pasimodo</a></td>
-    <td>Pasimodo is a scientific software package for particle based simulations.<br/>
-        (Platform:  Linux/BSD)</td>
-  </tr>
-
-  <tr>
-    <td><img src="images/thumb_tm2.jpg" border="0" width="120" alt="tm2 thumbnail"/></td>
-    <td align="center"><a href="http://www.papajohn.org/tm2.html" target="_top">Transition Maker 2&nbsp; &nbsp;</a></td>
-    <td>Creates transition sequences for video processing.<br/>
-        (Platform:  MS Windows)</td>
-  </tr>
-
-  <tr>
-    <td><img src="images/thumb_trini.jpg" border="0" width="120" alt="trininaut thumbnail"/></td>
-    <td align="center"><a href="http://trininaut.sourceforge.net/" target="_top">Trininaut</a></td>
-    <td>A Program launcher with extra features.<br/>
-        (Platform:  WinXP, Win2K)</td>
-  </tr>
-
-  <tr>
-    <td><img src="images/thumb_qtiplot.jpg" width="120" border="0" alt="qtiplot thumbnail"/></td>
-    <td align="center"><a href="http://soft.proindependent.com/qtiplot.html" target="_top">Qtiplot</a></td>
-    <td>A free platform independent clone of Origin<br/>
-        (Platform:  MS Windows / Linux / Mac)
-    </td>
-  </tr>
-
-
-</table>
-
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/sources/mup_links_meta.html
--- a/muParser/docs/html/sources/mup_links_meta.html	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-  <meta name="keywords" content="muparser, related links, related"/>
-  <meta name="description" content="Software using muparser"/>
-  <title>Software using muparser</title>
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/sources/mup_locale.html
--- a/muParser/docs/html/sources/mup_locale.html	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-<!-- 
-//
-//
-//  
-//   Localization
-//
-//
-//
--->
-
-<h2><a id="idLoc"></a>Localization</h2>
-<p>
-Sometimes it is necessary to change decimal separator, argument separator or thousands separator 
-to match a certain locale. The following functions can be used for this purpose:
-</p>
-
-<h3>[DLL interface]</h3>
-<pre>
-// german localization
-mupSetArgSep(hParser, ';');
-mupSetDecSep(hParser, ',');
-mupSetThousandsSep(hParser, '.');
-
-// reset to defaults
-mupResetLocale();
-</pre>
-<small>See also: <i>example2/example2.c</i>.</small>
-
-<h3>[Parser class interface]</h3>
-<pre>
-// german localization
-parser.SetArgSep(';');
-parser.SetDecSep(',');
-parser.SetThousandsSep('.');
-
-// reset to defaults
-parser.ResetLocale();
-</pre>
-<small>See also: <i>example1/example1.cpp</i>.</small>
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/sources/mup_locale_meta.html
--- a/muParser/docs/html/sources/mup_locale_meta.html	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-  <meta name="keywords" content="muparser, example, sample, benchmarks, benchmark, performance, comparison, release notes, changes, history"/>
-  <meta name="description" content="Sample code for using muParser"/>
-  <title>muParser - A basic axample and benchmarks</title>
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/sources/mup_usage.html
--- a/muParser/docs/html/sources/mup_usage.html	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,149 +0,0 @@
-<!-- 
-//
-//
-//  
-//   Adding the parser to your projects
-//
-//
-//
--->
-
-
-<br/>
-<h1><a id="idBuild"></a>Build instructions</h1>
-<h2><a id="idInstWin"></a>Building on win32</h2>
-<b>muParser</b> supports various win32 command-line compilers:
-<ul>
-  <li>Mingw</li>
-  <li>Borland C++</li>
-  <li>Watcom</li>
-  <li>Microsoft CL</li>
-</ul>
-In order to compile muParser from makefiles, open a command prompt then move to the muParser/build directory and
-type:
-
-<ul>
-  <li>mingw32-make -fmakefile.gcc      for mingw</li>
-  <li>nmake -fmakefile.vc              for msvc</li>
-  <li>make -fmakefile.bcc              for borland</li>
-  <li>wmake -fmakefile.wat             for watcom</li>
-</ul>
-
-All makefiles support the following options:
-<pre>
-  # Set to 1 to build debug version [0,1]
-  #   0 - Release
-  #   1 - Debug
-  DEBUG = 0
-
-  # Set to 1 to build shared (DLL) version [0,1]
-  #   0 - Static
-  #   1 - DLL
-  SHARED = 0
-
-  # Set to 1 to compile samples [0,1]
-  SAMPLES = 1
-</pre>
-The muParser library is created in the 'lib' folder and the sample
-binaries are created in samples\example1 or samples\example2. (You may need to copy the dll
-into the example2 directory in order to run it.)
-
-<table>
-<tr>
-  <td><img src="images/warning.gif" alt="warning"/></td> 
-  <td>samples\example1 can be compiled *only* when building muParser as a STATIC library (SHARED=0).<br/>
-      samples\example2 can be compiled *only* when building muParser as a SHARED library (SHARED=1).
-  </td>
-</tr>
-</table>
-
-<h2><a id="idInstLinux"></a>Building on BSD/Linux</h2>
-muParser can be installed just extracting the sources somewhere and then, from a terminal, typing:
-
-<pre>
- cd [path to muParser]
- ./configure [--enable-shared=yes/no] [--enable-samples=yes/no]
-             [--enable-debug=yes/no]
- make
- [sudo*] make install
-</pre>
- <small>* = this command must be executed with root permissions and thus
-     you have to use 'sudo' or just 'su' to gain root access.
-     Note that installation is not strictly required.</small>
-<p>
-The "make" step will create the muParser library in 'lib' and the
-sample binary in samples/example1. The samples/example2 is win32-specific and 
-thus won't be built.
-</p>
-
-<h2><a id="idInstMisc"></a>Other miscellaneous info Unix-specific</h2>
-If you don't like to have your muParser folder filled by temporary
-files created by GCC, then you can do the following:
-
-<pre>
-  mkdir mybuild &amp;&amp; cd mybuild &amp;&amp; ../configure &amp;&amp; make
-</pre>
-
-to put all object files in the "mybuild" directory. If you want to use 
-muParser library in your programs, you can use the pkg-config program 
-(this works only if muParser was installed with 'make install' !). 
-The commands:
-<ul>
-   <li>pkg-config muparser --cflags</li>
-   <li>pkg-config muparser --libs</li>
-</ul>
-will return all useful info you need to build your programs against
-muParser !
-
-<h2><a id="idInstInc"></a><a name="idUseSource"></a>Including the source code directly</h2>
-Sometimes including the library sources directly into an application is the easiest 
-possibility to avoid linker conflicts originating from different versions of the 
-runtime libraries used by the parser and your project.
-
-In order to use the parser simply include the following files into your project:
-
-<p>
-<i>muParser.cpp</i><br/>
-<i>muParserBase.cpp</i><br/>
-<i>muParserBytecode.cpp</i><br/>
-<i>muParserCallback.cpp</i><br/>
-<i>muParserError.cpp</i><br/>
-<i>muParserTokenReader.cpp</i>
-</p>
-
-And make sure the following files can be found in your projects include path:
-<p>
-<i>muParser.h</i><br/>
-<i>muParserBase.h</i><br/>
-<i>muParserBytecode.h</i><br/>
-<i>muParserCallback.h</i><br/>
-<i>muParserDef.h</i><br/>
-<i>muParserError.h</i><br/>
-<i>muParserFixes.h</i><br/>
-<i>muParserStack.h</i><br/>
-<i>muParserToken.h</i><br/>
-<i>muParserTokenReader.h</i><br/>
-</p>
-
-The parser class and all related classes reside in the namespace <code>mu</code> (MathUtils). So make sure to either
-add a using 
-
-<pre>
-using namespace mu;
-</pre>
-
-to your files or reference all classes with their complete name.
-
-<h2>Where to ask for help</h2>
-
-If you find problems with either compilation, installation or usage
-of muParser, then you can ask in the muParser forum at:<br/>
-<ul>
-<li><a href="https://sourceforge.net/forum/forum.php?forum_id=462843">https://sourceforge.net/forum/forum.php?forum_id=462843</a></li>
-</ul>
-
-For more info about muParser, visit:
-<ul>
-<li><a href="http://sourceforge.net/projects/muparser/">http://sourceforge.net/projects/muparser/</a><br/></li>
-<li><a href="http://muparser.sourceforge.net">http://muparser.sourceforge.net</a></li>
-</ul>
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/sources/mup_usage_meta.html
--- a/muParser/docs/html/sources/mup_usage_meta.html	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-  <meta name="keywords" content="muparser, build instructions, makefile, configuration, built, project file, install"/>
-  <meta name="description" content="muparser build instructions"/>
-  <title>muParser build instructions</title>
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/sources/mup_version.html
--- a/muParser/docs/html/sources/mup_version.html	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,217 +0,0 @@
-<!-- 
-//
-//
-//  
-//   Example code
-//
-//
-//
--->
-
-<h2><a id="idExample"></a>Example code</h2>
-
-<p>
-If you put all this together, you get the source code for a small application. The application defines a parser variables ("<code>a</code>") and adds 
-a user defined functions named "<code>MyFunc</code>". When using the parser make sure that you don't forget to catch the <code>Parser::exception_type</code> in your application. It contains detailed information helping you to find syntax errors in your formula.
-</p>
-
-<pre>
-#include &lt;iostream&gt;
-#include "muParser.h"
-
-// Function callback
-double MyFunction(double a_fVal) 
-{ 
-  return a_fVal*a_fVal; 
-}
-
-// main program
-int main(int argc, char* argv[])
-{
-  using namespace mu;
-
-  try
-  {
-    double fVal = 1;
-    Parser p;
-    p.DefineVar("a", &amp;fVal); 
-    p.DefineFun("MyFunc", MyFunction); 
-    p.SetExpr("MyFunc(a)*_pi+min(10,a)");
-    std::cout &lt;&lt; p.Eval() &lt;&lt; std::endl;
-  }
-  catch (Parser::exception_type &amp;e)
-  {
-    std::cout &lt;&lt; e.GetMsg() &lt;&lt; std::endl;
-  }
-  return 0;
-}
-</pre>
-
-
-<!-- 
-//
-//
-//
-//  Benchmarks
-//
-//
-//
--->
-
-<hr/>
-<h2><a id="idBench"></a>Benchmarks</h2>
-
-<p>
-Finally, I'd like to give you some benchmarks. The benchmarking was done on an Intel 
-Pentium P-4 with 2.6 GHz, with a version compiled by using MSVC++ 7.1 (Standard edition).
-The diagram shows number of <b>evaluations per seconds vs. expression length</b>. 
-I compared both the static lib and the dll version with two other parsers that are freely available 
-on the net, very fast and have a similar set of features. One of them is a commercial product.
-</p>
-
-<p>
-  <img src="images/bench2.jpg" alt="parser benchmarks" border="0" height="489" width="560"/>
-</p>
-
-<p>
-A higher curve means better performance. Expressions were created randomly. They used only <code>sin</code> and <code>cos</code> functions and contained 
-multiple variables and constants. In order to smoothen the curves each point represents the value of a
-running average over 10 sample expressions. 
-</p>
-
-
-<!-- 
-//
-//
-//  
-//   History
-//
-//
-//
--->
-
-<hr/>
-<h2><a name="idRelNote"></a>Release Notes</h2>
-
-<h4>Rev 1.32: 30.01.2010</h4>
-This is a service release to fix problems with modern compilers.
-<ul>
-  <li><b>Changes</b>
-    <ul>
-      <li>Added a function for retrieving the Version number of muparser.</li>
-      <li>example3 renamed to example2</li>
-      <li>Project files for bcb and msvc6 removed (include the source directly into your projects)</li>
-      <li>Project files for msvc2003, msvc2005 and msvc2008 added</li>
-    </ul>
-  </li>
-
-  <li><b>Bugfixes</b>
-    <ul>
-      <li>Deprecated feature warnings removed for gcc</li>
-      <li>example1 changed to get rid of memory leaks. Added code for memory leak detection (VisualStudio only)</li>
-      <li>Changes to allow compilation with msvc10 beta2</li>
-      <li>gcc versions >4.0 were not able to run with a customized locale (resulted in std::bad_cast exception)</li>
-    </ul>
-  </li>
-</ul>
-<hr/>
-<h4>Rev 1.30: 09.06.2008</h4>
-This is a service release with minor extensions and bugfixes.
-
-<ul>
-  <li><b>Changes</b>
-    <ul>
-      <li>Epsilon of the numerical differentiation algorithm changed to allow greater accuracy.</li>
-    </ul>
-  </li>
-
-  <li><b>New features</b>
-    <ul>
-      <li>Setting thousands separator and decimal separator is now possible</li>
-    </ul>
-  </li>
-
-  <li><b>Bugfixes</b>
-    <ul>
-      <li>The dll interface did not provide a callback for functions without any arguments.</li>
-    </ul>
-  </li>
-</ul>
-<hr/>
-<h4>Rev 1.28: 02.07.2007</h4>
-
-<ul>
-  <li><b>Library changes</b>
-    <ul>
-      <li>Interface for the dynamic library changed and extended to create an interface using pure C functions only.</li>
-      <li>mupInit() removed</li>
-    </ul>
-  </li>
-
-  <li><b>New features</b>
-    <ul>
-      <li>Functions without parameters added</li>
-    </ul>
-  </li>
-
-  <li><b>Build system</b>
-    <ul>
-      <li>MSVC7 Project files removed in favor of MSVC8.</li>
-    </ul>
-  </li>
-
-  <li><b>Bugfixes</b>
-    <ul>
-      <li>The dynamic library did not build on other systems than linux due to a misplaced
-           preprocessor definition. This is fixed now.</li>
-    </ul>
-  </li>
-
-</ul>
-
-<hr/>
-<h4>Rev 1.2: 14.04.2005</h4>
-First of all the interface has changed so this version is not backwards compatible. 
-After receiving a couple of questions about it, this version features support for user defined binary operators. Consequently the built in operators can now be turned off, thus you can deactivate them and write complete customized parser subclasses that only contain the functionality you want. Other new feature is the introduction of callback functions taking string arguments, implicit generation of 
-variables and the Assignement operator. 
-
-<ul>
-  <li> <b>Functionality</b>
-  <ul>
-    <li><a href="mup_features.html#idDef3">New built in operator</a>: <code>xor</code>; Logical xor.</li>
-    <li>New built in operator: Assignement operator; Defining variables in terms of other 			       variables/constants</li> 
-    <li>New feature: <a href="mup_interface.html#idDefFun">Strings as arguments for callback functions</a></li>
-    <li>New feature: <a href="mup_interface.html#idDefOprt">User defined binary operators</a></li>
-    <li>New feature: <code>ParserInt</code> a class with a sample implementation for
-                     integer numbers.</li> 
-    <li>New feature: <a href="mup_interface.html#idDefConst2">Callbacks to value regognition functions.</a></li> 
-
-    <li>Removed:  all predefined postfix operators have been removed.</li> 
-    <li>New project file:  Now comes with a ready to use windows DLL.</li> 
-    <li>New project file:  Makefile for cygwin now included.</li> 
-    <li>New example:  Example3 shows usage of the DLL.</li> 
-  </ul>
-  </li>
-
-  <li> <b>Interface changes</b>
-  <ul>
-    <li><a href="mup_interface.html#idBinOp">New member function</a>: <code>DefineOprt</code> For 
-                                                    adding user defined binary operators.</li>
-    <li>New member function: <code>EnableBuiltInOprt(bool)</code>  Enables/Disables <a href="mup_features.html#idDef3">
-                             built in binary operators</a>.</li>
-    <li>New member function: <code>AddValIdent(...)</code> to add callbacks for custom value recognition functions.</li>
-    <li>Removed: <code>SetVar()</code>, <code>SetConst()</code>.</li> 
-    <li>Renamed: Most interface functions have been renamed</li>
-    <li>Changed:  The <a href="mup_interface.html#idDefFun">type for multiargument callbacks</a> <code>multfun_type</code> has changed. 
-                  It no longer takes a std::vector as input.</li>
-  </ul>
-  </li>
-  
-  <li> <b>Internal changes</b>
-  <ul>
-     <li>new class <i>muParserTokenReader.h</i> encapsulates the token identification and token assignement.</li>
-     <li>Internal handling of function callbacks unified as a result the performance of the bytecode evaluation 
-         increased.</li>
-  </ul>
-  </li>
-</ul>
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/sources/mup_version_meta.html
--- a/muParser/docs/html/sources/mup_version_meta.html	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-  <meta name="keywords" content="muparser, example, sample, benchmarks, benchmark, performance, comparison, release notes, changes, history"/>
-  <meta name="description" content="Sample code for using muParser"/>
-  <title>muParser - A basic axample and benchmarks</title>
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/sources/navigation.html
--- a/muParser/docs/html/sources/navigation.html	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,202 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <link rel="stylesheet" type="text/css" href="style/formate.css"/>
-  <meta name="author" content="Ingo Berg"/>
-  <!-- $META -->	
-
-  <script src="script/functions.js" language="javascript" type="text/javascript"></script>
-  <script type="text/javascript">
-  imgHome=new Image();
-  imgHome.src="images/home.png";
-  imgHomeDark=new Image();
-  imgHomeDark.src="images/home_dark.png";
-
-  imgApi=new Image();
-  imgApi.src="images/api.png"; 
-  imgApiDark=new Image();
-  imgApiDark.src="images/api_dark.png";
-
-  function ChangeButtonImage(num,obj)
-  {
-    window.document.images[num].src=obj.src;
-  }
-  </script>
-</head>
-
-<body>
-    <div class="gradient" id="top">
-      <div class="header">
-        muParser - a fast math parser library
-        <br/>
-        <div style="font-size:14pt;">Version 1.32</div>
-      </div>
-
-      <div style="position:absolute; width:250px; height:100px; top:20px; text-align:center">
-        <a href="http://sourceforge.net/projects/muparser">
-          <img src="http://sflogo.sourceforge.net/sflogo.php?group_id=137191&amp;type=15" 
-               width="150" 
-               height="40" 
-               border="0"
-               alt="Get muParser - A fast math parser library at SourceForge.net. Fast, secure and Free Open Source software downloads" />
-        </a>
-      </div>	
-
-      <div style="position:absolute; width:100px; right:110px; text-align:center; line-height: 1em;">
-        <a class="white" 
-           href="http://www.beltoforion.de"  
-           onmouseover="ChangeButtonImage(1,imgHome)" 
-           onmouseout="ChangeButtonImage(1,imgHomeDark)">
-          <img src="images/home_dark.png" border="0" height="40" alt="My home page"/>
-          <br/>
-          <span class="tiny_text">My home<br/>page</span>
-        </a>
-     </div>
-
-     <div  style="position:absolute; width:100px; right:10px; text-align:center; line-height: 1em;">
-       <a class="white" 
-          href="http://muparser.sourceforge.net/classdocu/index.html"
-          onmouseover="ChangeButtonImage(2,imgApi)" 
-          onmouseout="ChangeButtonImage(2,imgApiDark)">
-         <img src="images/api_dark.png" border="0" alt="class documentation" height="40"/>
-         <br/>
-         <span class="tiny_text">muParser<br/>API-doc</span>
-       </a>
-    </div>
-  <!--
-    <div  style="position:absolute; width:100px; right:10px; text-align:center; line-height: 1em;">
-      <a class="white" 
-         href="http://sourceforge.net/project/showfiles.php?group_id=137191"
-         onmouseover="ChangeButtonImage(3,imgDown)" 
-         onmouseout="ChangeButtonImage(3,imgDownDark)">
-        <img src="images/download_dark.png" height="40" border="0" alt="muParser download"/>
-        <br/>
-        <span class="tiny_text">muParser<br/>Download</span>
-      </a>
-    </div>
--->
-  </div> <!-- class="gradient" -->
-
-    <!-- Tabelle mit Hauptinhalt der Seite -->
-    <table id="MainTable" border="0" cellpadding="5" cellspacing="0" style="width:100%; height:100%;">
-      <tbody>
-        <tr>
-          <td style="vertical-align: top; text-align: center" width="230">
-            <h3 class="navi_heading navi_info">Introduction</h3>
-            <div class="sidebarlink">
-                <a href="index.html">About the parser</a><br/>
-                <a href="http://sourceforge.net/news/?group_id=137191">News</a><br/>
-                <a href="mup_links.html">Software using muParser</a><br/>
-                <a href="mup_licence.html">Licence</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_blocks">Features</h3>
-            <div class="sidebarlink">
-              <a href="mup_features.html">Features</a><br/>
-              <a href="mup_features.html#idFeatureOverview">Overview</a><br/>
-              <a href="mup_features.html#idDef2">Built in functions</a><br/>
-              <a href="mup_features.html#idDef3">Built in binary operators</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_build">Build instructions</h3>
-            <div class="sidebarlink">
-              <a href="mup_usage.html#idInstWin">Building on Win32</a><br/>
-              <a href="mup_usage.html#idInstLinux">Building on BSD/Linux</a><br/>
-              <a href="mup_usage.html#idInstMisc">Misc build instructions</a><br/>
-              <a href="mup_usage.html#idInstInc">Including the files</a><br/>
-              <a href="mup_usage.html#idInstInc">Where to ask for help</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_list">Math parser interface</h3>
-            <div class="sidebarlink">
-              <a href="mup_interface.html#idInit">Parser (de)initialization</a><br/>
-              <a href="mup_interface.html#idEval">Evaluating an expression</a><br/>
-              <a href="mup_interface.html#idSetExpr">Setting the expression</a><br/>
-              <a href="mup_interface.html#idDefCharset">Defining identifier charsets</a><br/>
-              <a href="mup_interface.html#idDefVar">Defining parser variables</a><br/>
-              <a href="mup_interface.html#idDefVarEx">Explicit variable definition</a><br/>
-              <a href="mup_interface.html#idDefVarIm">Implicit variable definition</a><br/>
-              <a href="mup_interface.html#idDefConst">Defining constants</a><br/>
-              <a href="mup_interface.html#idDefFun">Defining functions</a><br/>
-              <a href="mup_interface.html#idDefOprt">Defining operators</a><br/>
-              <a href="mup_interface.html#idUnOp">Unary operators</a><br/>
-              <a href="mup_interface.html#idBinOp">Binary operators</a><br/>
-              <a href="mup_interface.html#idQueryVar">Querying variables</a><br/>
-              <a href="mup_interface.html#idQueryConst">Querying constants</a><br/>
-              <a href="mup_interface.html#idDefConst2">Value recognition callbacks</a><br/>
-              <a href="mup_interface.html#idDefConst2">Removing variables/constants</a><br/>
-              <a href="mup_locale.html#idLoc">Localization</a><br/>
-              <a href="mup_interface.html#idErrors">Error handling</a><br/>
-              <a href="mup_version.html#idExample">Example code</a><br/>
-            </div>
-
-            <h3 class="navi_heading navi_question">Current version</h3>
-            <div class="sidebarlink">
-              <a href="mup_version.html#idRelNote">Release notes</a><br/>
-              <a href="mup_version.html#idBench">Benchmarks</a><br/>
-            </div>
-
-            <br/>
-            <div align="center">
-              <a href="http://www.opensource.org/"><img style="border:0;" src="images/osi.jpg" alt="Open source initiative logo"/></a>
-              <br/>
-              <br/>
-              <a href="http://validator.w3.org/check?uri=referer">
-                <img src="http://www.w3.org/Icons/valid-xhtml10-blue" alt="Valid XHTML 1.0 Transitional" style="border:0;width:88px;height:31px"/>
-              </a>
-              <br/>
-              <br/>
-	      <a href="http://jigsaw.w3.org/css-validator/check/referer">
-                <img style="border:0;width:88px;height:31px" src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="CSS ist valide!" />
-	      </a>
-
-            </div>
-          </td>
-
-          <td style="height: 100%; padding: 1em; vertical-align: top;">
-            <!-- 
-              This section contains the real page content. 
-              pages are created automatically by using the script "build_page.sh"
-              which combines section templated with the navigation bar.
-
-	      This creates webpages that do not rely on php3 or Javascript for 
-              serverside or client side html inclusion.
-            //-->
-            <!-- $PLACEHOLDER -->
-
-            <hr/>
-            <table border="0" style="width:100%">
-            <tr>
-              <td>&copy; 2005-2010 <a href="http://beltoforion.de">Ingo Berg</a> | 
-                  <a href="http://beltoforion.de/privacy_policy/privacy_policy_en.html">Privacy policy</a></td>
-              <td style="text-align:right; padding-right: 3em;">
-                <a href="#top">^ TOP</a>
-              </td>
-            </tr>
-          </table>
-          <br/>
-          <br/>
-
-          </td>
-        </tr>
-      </tbody>
-    </table>
-
-<!--
-    <script type="text/javascript">
-    var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-    document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-    </script>
-    <script type="text/javascript">
-    try 
-    {
-      var pageTracker = _gat._getTracker("UA-1019178-1");
-      pageTracker._trackPageview();
-    } 
-    catch(err) {}
-    </script>
--->
-</body>
-</html>
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/html/style/formate.css
--- a/muParser/docs/html/style/formate.css	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,169 +0,0 @@
-/* Style Sheet Definition */
-
-body {
-    background-color: #ffffff;
-    margin-top:0px;
-    background-repeat:repeat-y;
-    margin-left:0px;
-    margin-top:0px;
-    margin-right:0px;
-    margin-bottom:0px;
-    overflow:auto;
-}
-
-div.header 
-{ 
-  position:absolute;
-  left:20%;
-  width:600px;
-  height:80px; 
-  z-index:2;
-  background-image:url("../images/caption.png"); 
-  background-repeat: no-repeat;
-  background-position: top center;
-  text-align: center;
-  font-family: "Times New Roman",vserif;
-  font-size: 25pt;
-}
-
-div.gradient
-{
-  background-image:url("../images/grad2.jpg"); 
-  z-index:1;
-  width:100%;
-  height:80px; 
-}
-
-div.sidebarlink 
-{
-  margin-top: -12px;
-  border: 1px solid #cfcfcf;
-  padding: 0.2em 0.1em 0.2em 0.2em;
-  background-color:#f4f4fF;
-  text-align: left;
-  line-height: 1.5em;
-}
-
-.tiny_text { font-size: 80%;   line-height: 0.8em;}
-
-/* Links */
-a         { text-decoration: none; }
-
-a:link    { color:#0000BB; }
-a:visited { /*font-weight:bold;*/ color:#000080; }
-a:hover   { color:#00BB00; }
-a:active  { color:#E00000; }
-a:focus   { color:#BBBBBB; }
-
-a.white:link   { color:#FFFFFF; }
-a.white:visited  { color:#FFFFFF; }
-a.white:active  { color:#000000; }
-a.white:focus   { color:#BBBBBB; }
-a.white:hover   { color:#FFFFFF; font-weight:bold;}
-
-/* Tables */
-table.main { background-color: #ffffff; }
-td.Menu       { background-color: #ffffff; color: #000000;}
-td.MenuActive { background-color: #000000; color: #ffffff;}
-td.main { color: #FFFFFF;}
-td.Info { background-color: #ffffff;}
-
-/* Für <h> tags im Navigationsbereich */
-.navi_heading { text-align:left; 
-		padding-left:50px; 
-                line-height:30px;
-                color: #000000;}
-
-.navi_info { background-image:url("../images/info.png");
-             background-repeat: no-repeat;
-             background-position:10px 0px; }
-
-.navi_build { background-image:url("../images/build.png");
-              background-repeat: no-repeat;
-             background-position:10px 0px; }
-
-
-.navi_list { background-image:url("../images/list.png");
-             background-repeat: no-repeat;
-             background-position:10px 0px; }
-
-.navi_run { background-image:url("../images/run.png");
-            background-repeat: no-repeat;
-             background-position:10px 0px; }
-
-.navi_question { background-image:url("../images/question.png");
-                 background-repeat: no-repeat;
-             background-position:10px 0px; }
-
-.navi_blocks { background-image:url("../images/blocks.png");
-               background-repeat: no-repeat;
-               background-position:10px 0px; }
-
-/* Miscellaneous */
-body, P, H1, H2, H3, H4, H5, H6, LI, TD, TH, DD, DT
-{
-  font-family:Helvetica,Arial,sans-serif;
-  color: black;
-}
-
-h1
-{
-    font-size: 18pt;
-    border-bottom: 3px solid black;
-}
-
-h2
-{
-  font-size: 16pt;
-  font-weight: bold;
-  border-bottom: 1px solid #AAA;
-  color: #0099cc;
-}
-
-h3
-{
-  font-family: Arial, sans-serif;
-  font-size: 14pt;
-  font-weight: bold;
-  border-bottom: 1px solid #AAA;
-  color: #0099cc;
-}
-
-h4
-{
-  font-size: 12pt;
-  margin-bottom: 2px;
-}
-
-h5
-{
-  font-size: 12pt;
-  margin-bottom: 2px;
-  color: #0099cc;
-}
-
-H6
-{
-    color: #626262;
-    font-size: 65%;
-    font-weight: normal;
-}
-
-code
-{
-    color: #990000;
-    font-family: "Courier New", Courier, mono;
-}
-
-pre {
-    border: 1pt solid black;
-    background-color: #EFEFEF;
-    font: 12pt "Courier New", Courier, mono;
-    padding: 10pt;
-    width: 90%;
-}
-
-p 
-{
-  text-align: justify;
-}
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/docs/muParser.tdl
--- a/muParser/docs/muParser.tdl	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="windows-1252" ?>
-<TODOLIST FILEFORMAT="8" PROJECTNAME="muParser" NEXTUNIQUEID="8" FILEVERSION="5" LASTMODIFIED="2006-02-15" CUSTOMCOMMENTSTYPE="849cf988-79fe-418a-a40d-01fe3afcab2c"><TASK PRIORITYCOLOR="15388928" STARTDATESTRING="05.02.2006" TEXTWEBCOLOR="#000000" PRIORITY="3" LASTMOD="38753.75568287" TEXTCOLOR="0" CREATIONDATESTRING="05.02.2006" TITLE="Bytecodebase datatype should be set be template metaprogramming" CREATIONDATE="38753.00000000" COMMENTS="64 bit Alignment problems may require to adjust the bytecode to a different basetype on such machines.
-
-http://www.codeproject.com/cpp/FastMathParser.asp?df=100&amp;forumid=79444&amp;exp=0&amp;select=1354345#xx1354345xx" PRIORITYWEBCOLOR="#00D1EA" ID="1" CUSTOMCOMMENTS="e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcZGVmbGFuZzEwMzF7XGZvbnR0Ymx7XGYwXGZuaWxcZmNoYXJzZXQwIE1TIFNhbnMgU2VyaWY7fX0NClx2aWV3a2luZDRcdWMxXHBhcmRcdHg2NDBcdHgxMjgwXHR4MTkyMFx0eDI1NjBcdHgzMjAwXHR4Mzg0MFx0eDQ0ODBcdHg1MTIwXHR4NTc2MFx0eDY0MDBcdHg3MDQwXHR4NzY4MFx0eDgzMjBcdHg4OTYwXHR4OTYwMFx0eDEwMjQwXHR4MTA4ODBcdHgxMTUyMFx0eDEyMTYwXHR4MTI4MDBcdHgxMzQ0MFx0eDE0MDgwXHR4MTQ3MjBcdHgxNTM2MFx0eDE2MDAwXHR4MTY2NDBcdHgxNzI4MFx0eDE3OTIwXHR4MTg1NjBcdHgxOTIwMFx0eDE5ODQwXHR4MjA0ODBcZjBcZnMxOCA2NCBiaXQgQWxpZ25tZW50IHByb2JsZW1zIG1heSByZXF1aXJlIHRvIGFkanVzdCB0aGUgYnl0ZWNvZGUgdG8gYSBkaWZmZXJlbnQgYmFzZXR5cGUgb24gc3VjaCBtYWNoaW5lcy5ccGFyDQpccGFyDQpodHRwOi8vd3d3LmNvZGVwcm9qZWN0LmNvbS9jcHAvRmFzdE1hdGhQYXJzZXIuYXNwP2RmPTEwMCZmb3J1bWlkPTc5NDQ0JmV4cD0wJnNlbGVjdD0xMzU0MzQ1I3h4MTM1NDM0NXh4XHBhcg0KfQ0K" PERCENTDONE="0" STARTDATE="38753.00000000" POS="4"/><TASK PRIORITYCOLOR="4187136" STARTDATESTRING="05.02.2006" TEXTWEBCOLOR="#000000" PRIORITY="1" CALCPERCENTDONE="100" LASTMOD="38761.96054398" TEXTCOLOR="0" CREATIONDATESTRING="05.02.2006" TITLE="Remove unnecessary code" CREATIONDATE="38753.00000000" COMMENTS="http://www.codeproject.com/cpp/FastMathParser.asp?df=100&amp;forumid=79444&amp;exp=0&amp;select=1354654#xx1354654xx" PRIORITYWEBCOLOR="#00E43F" ID="2" CUSTOMCOMMENTS="e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcZGVmbGFuZzEwMzF7XGZvbnR0Ymx7XGYwXGZuaWxcZmNoYXJzZXQwIE1TIFNhbnMgU2VyaWY7fX0NClx2aWV3a2luZDRcdWMxXHBhcmRcdHg2NDBcdHgxMjgwXHR4MTkyMFx0eDI1NjBcdHgzMjAwXHR4Mzg0MFx0eDQ0ODBcdHg1MTIwXHR4NTc2MFx0eDY0MDBcdHg3MDQwXHR4NzY4MFx0eDgzMjBcdHg4OTYwXHR4OTYwMFx0eDEwMjQwXHR4MTA4ODBcdHgxMTUyMFx0eDEyMTYwXHR4MTI4MDBcdHgxMzQ0MFx0eDE0MDgwXHR4MTQ3MjBcdHgxNTM2MFx0eDE2MDAwXHR4MTY2NDBcdHgxNzI4MFx0eDE3OTIwXHR4MTg1NjBcdHgxOTIwMFx0eDE5ODQwXHR4MjA0ODBcZjBcZnMxOCBodHRwOi8vd3d3LmNvZGVwcm9qZWN0LmNvbS9jcHAvRmFzdE1hdGhQYXJzZXIuYXNwP2RmPTEwMCZmb3J1bWlkPTc5NDQ0JmV4cD0wJnNlbGVjdD0xMzU0NjU0I3h4MTM1NDY1NHh4XHBhcg0KfQ0K" PERCENTDONE="100" STARTDATE="38753.00000000" DONEDATESTRING="13.02.2006" DONEDATE="38761.00000000" POS="6"/><TASK PRIORITYCOLOR="15388928" STARTDATESTRING="05.02.2006" TEXTWEBCOLOR="#000000" PRIORITY="3" LASTMOD="38753.75146991" TEXTCOLOR="0" CREATIONDATESTRING="05.02.2006" TITLE="Compatibility" CREATIONDATE="38753.00000000" PRIORITYWEBCOLOR="#00D1EA" ID="3" PERCENTDONE="0" STARTDATE="38753.00000000" POS="3"><TASK PRIORITYCOLOR="4187136" STARTDATESTRING="05.02.2006" TEXTWEBCOLOR="#000000" PRIORITY="1" LASTMOD="38753.75134259" TEXTCOLOR="0" CREATIONDATESTRING="05.02.2006" TITLE="Fix stringstream for old gcc" CREATIONDATE="38753.00000000" COMMENTS="http://www.codeproject.com/cpp/FastMathParser.asp?df=100&amp;forumid=79444&amp;exp=0&amp;select=1354598#xx1354598xx" PRIORITYWEBCOLOR="#00E43F" ID="4" CUSTOMCOMMENTS="e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcZGVmbGFuZzEwMzF7XGZvbnR0Ymx7XGYwXGZuaWxcZmNoYXJzZXQwIE1TIFNhbnMgU2VyaWY7fX0NClx2aWV3a2luZDRcdWMxXHBhcmRcdHg2NDBcdHgxMjgwXHR4MTkyMFx0eDI1NjBcdHgzMjAwXHR4Mzg0MFx0eDQ0ODBcdHg1MTIwXHR4NTc2MFx0eDY0MDBcdHg3MDQwXHR4NzY4MFx0eDgzMjBcdHg4OTYwXHR4OTYwMFx0eDEwMjQwXHR4MTA4ODBcdHgxMTUyMFx0eDEyMTYwXHR4MTI4MDBcdHgxMzQ0MFx0eDE0MDgwXHR4MTQ3MjBcdHgxNTM2MFx0eDE2MDAwXHR4MTY2NDBcdHgxNzI4MFx0eDE3OTIwXHR4MTg1NjBcdHgxOTIwMFx0eDE5ODQwXHR4MjA0ODBcZjBcZnMxOCBodHRwOi8vd3d3LmNvZGVwcm9qZWN0LmNvbS9jcHAvRmFzdE1hdGhQYXJzZXIuYXNwP2RmPTEwMCZmb3J1bWlkPTc5NDQ0JmV4cD0wJnNlbGVjdD0xMzU0NTk4I3h4MTM1NDU5OHh4XHBhcg0KfQ0K" PERCENTDONE="0" STARTDATE="38753.00000000" POS="1"/></TASK><TASK PRIORITYCOLOR="10544896" STARTDATESTRING="05.02.2006" TEXTWEBCOLOR="#000000" PRIORITY="2" LASTMOD="38761.96232639" TEXTCOLOR="0" CREATIONDATESTRING="05.02.2006" TITLE="Add math functions: ceil, fmod, floor" CREATIONDATE="38753.00000000" COMMENTS="-(2+x)^2 should be evaluated as -((2+x)^2) currently - priority is too high for that" PRIORITYWEBCOLOR="#00E7A0" ID="5" CUSTOMCOMMENTS="e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcZGVmbGFuZzEwMzF7XGZvbnR0Ymx7XGYwXGZuaWxcZmNoYXJzZXQwIE1TIFNhbnMgU2VyaWY7fX0NClx2aWV3a2luZDRcdWMxXHBhcmRcdHg2NDBcdHgxMjgwXHR4MTkyMFx0eDI1NjBcdHgzMjAwXHR4Mzg0MFx0eDQ0ODBcdHg1MTIwXHR4NTc2MFx0eDY0MDBcdHg3MDQwXHR4NzY4MFx0eDgzMjBcdHg4OTYwXHR4OTYwMFx0eDEwMjQwXHR4MTA4ODBcdHgxMTUyMFx0eDEyMTYwXHR4MTI4MDBcdHgxMzQ0MFx0eDE0MDgwXHR4MTQ3MjBcdHgxNTM2MFx0eDE2MDAwXHR4MTY2NDBcdHgxNzI4MFx0eDE3OTIwXHR4MTg1NjBcdHgxOTIwMFx0eDE5ODQwXHR4MjA0ODBcZjBcZnMxOCAtKDIreCleMiBzaG91bGQgYmUgZXZhbHVhdGVkIGFzIC0oKDIreCleMikgY3VycmVudGx5IC0gcHJpb3JpdHkgaXMgdG9vIGhpZ2ggZm9yIHRoYXRccGFyDQpccGFyDQp9DQoA" PERCENTDONE="0" STARTDATE="38753.00000000" POS="5"/><TASK PRIORITYCOLOR="15732480" STARTDATESTRING="13.02.2006" TEXTWEBCOLOR="#000000" PRIORITY="5" LASTMOD="38761.96026620" TEXTCOLOR="0" CREATIONDATESTRING="13.02.2006" TITLE="fix precedence issue with unary operators" CREATIONDATE="38761.00000000" PRIORITYWEBCOLOR="#000FF0" ID="6" PERCENTDONE="0" STARTDATE="38761.00000000" POS="1"/><TASK PRIORITYCOLOR="15732480" STARTDATESTRING="15.02.2006" TEXTWEBCOLOR="#000000" PRIORITY="5" LASTMOD="38763.94878472" TEXTCOLOR="0" CREATIONDATESTRING="15.02.2006" TITLE="Kommandocodes für postfix und infix operatoren" CREATIONDATE="38763.00000000" PRIORITYWEBCOLOR="#000FF0" ID="7" PERCENTDONE="0" STARTDATE="38763.00000000" POS="2"/></TODOLIST>
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/include/muParser.h
--- a/muParser/include/muParser.h	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,168 +0,0 @@
-/*
-                 __________                                      
-    _____   __ __\______   \_____  _______  ______  ____ _______ 
-   /     \ |  |  \|     ___/\__  \ \_  __ \/  ___/_/ __ \\_  __ \
-  |  Y Y  \|  |  /|    |     / __ \_|  | \/\___ \ \  ___/ |  | \/
-  |__|_|  /|____/ |____|    (____  /|__|  /____  > \___  >|__|   
-        \/                       \/            \/      \/        
-  Copyright (C) 2010 Ingo Berg
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy of this 
-  software and associated documentation files (the "Software"), to deal in the Software
-  without restriction, including without limitation the rights to use, copy, modify, 
-  merge, publish, distribute, sublicense, and/or sell copies of the Software, and to 
-  permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in all copies or 
-  substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
-  NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 
-  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
-*/
-#ifndef MU_PARSER_H
-#define MU_PARSER_H
-
-//--- Standard includes ------------------------------------------------------------------------
-#include <vector>
-#include <locale>
-
-//--- Parser includes --------------------------------------------------------------------------
-#include "muParserBase.h"
-
-
-/** \file
-    \brief Definition of the standard floating point parser.
-*/
-
-namespace mu
-{
-  /** \brief Mathematical expressions parser.
-    
-    Standard implementation of the mathematical expressions parser. 
-    Can be used as a reference implementation for subclassing the parser.
-
-    <small>
-    (C) 2010 Ingo Berg<br>
-    muparser(at)gmx.de
-    </small>
-  */
-  class Parser : public ParserBase
-  {
-  public:
-
-    Parser();
-
-    virtual void InitCharSets();
-    virtual void InitFun();
-    virtual void InitConst();
-    virtual void InitOprt();
-    virtual void OnDetectVar(string_type *pExpr, int &nStart, int &nEnd);
-
-    void SetDecSep(char_type cDecSep);
-    void SetThousandsSep(char_type cThousandsSep = 0);
-    void ResetLocale();
-
-    value_type Diff(value_type *a_Var, 
-                    value_type a_fPos, 
-                    value_type a_fEpsilon = 0) const;
-
-  private:
-
-    /** \brief A facet class used to change decimal and thousands separator. */
-    template<class TChar>
-    class change_dec_sep : public std::numpunct<TChar>
-    {
-    public:
-      
-      explicit change_dec_sep(char_type cDecSep, char_type cThousandsSep = 0, int nGroup = 3)
-        :std::numpunct<TChar>()
-        ,m_nGroup(nGroup)
-        ,m_cDecPoint(cDecSep)
-        ,m_cThousandsSep(cThousandsSep)
-      {}
-      
-    protected:
-      
-      virtual char_type do_decimal_point() const
-      {
-        return m_cDecPoint;
-      }
-
-      virtual char_type do_thousands_sep() const
-      {
-        return m_cThousandsSep;
-      }
-
-      virtual std::string do_grouping() const 
-      { 
-        return std::string(1, m_nGroup); 
-      }
-
-    private:
-
-      int m_nGroup;
-      char_type m_cDecPoint;  
-      char_type m_cThousandsSep;
-    };
-     
-    // Trigonometric functions
-    static value_type  Sin(value_type);
-    static value_type  Cos(value_type);
-    static value_type  Tan(value_type);
-    // arcus functions
-    static value_type  ASin(value_type);
-    static value_type  ACos(value_type);
-    static value_type  ATan(value_type);
-    // hyperbolic functions
-    static value_type  Sinh(value_type);
-    static value_type  Cosh(value_type);
-    static value_type  Tanh(value_type);
-    // C99 functions
-    static value_type ACosh(value_type);
-    static value_type ASinh(value_type);
-    static value_type ATanh(value_type);
-    static value_type Cbrt(value_type);
-    static value_type Copysign(value_type, value_type);
-    static value_type Erf(value_type);
-    static value_type Erfc(value_type);
-    static value_type Expm1(value_type);
-    static value_type Hypot(value_type, value_type);
-    static value_type Ilogb(value_type);
-    static value_type Lgamma(value_type);
-    static value_type Log1p(value_type);
-    static value_type Logb(value_type);
-    static value_type Remainder(value_type, value_type);
-    static value_type Rint(value_type);
-    static value_type Gamma(value_type);
-
-    static value_type  Log10(value_type); // Logarithm Base 10
-    static value_type  Ln(value_type);    // Logarithm Base e (natural logarithm)
-    // misc
-    static value_type  Exp(value_type);
-    static value_type  Abs(value_type);
-    static value_type  Sqrt(value_type);
-    static value_type  Sign(value_type);
-    static value_type  Step(value_type);
-    static value_type  Ite(value_type, value_type, value_type);
-
-    // Prefix operators
-    // !!! Unary Minus is a MUST if you want to use negative signs !!!
-    static value_type  UnaryMinus(value_type);
-
-    // Functions with variable number of arguments
-    static value_type Sum(const value_type*, int);  // sum
-    static value_type Avg(const value_type*, int);  // mean value
-    static value_type Min(const value_type*, int);  // minimum
-    static value_type Max(const value_type*, int);  // maximum
-
-    static int IsVal(const char_type* a_szExpr, int *a_iPos, value_type *a_fVal);
-
-    static std::locale s_locale;  ///< The locale used by the parser
-  };
-} // namespace mu
-
-#endif
-
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/include/muParserBase.h
--- a/muParser/include/muParserBase.h	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,291 +0,0 @@
-/*
-                 __________                                      
-    _____   __ __\______   \_____  _______  ______  ____ _______ 
-   /     \ |  |  \|     ___/\__  \ \_  __ \/  ___/_/ __ \\_  __ \
-  |  Y Y  \|  |  /|    |     / __ \_|  | \/\___ \ \  ___/ |  | \/
-  |__|_|  /|____/ |____|    (____  /|__|  /____  > \___  >|__|   
-        \/                       \/            \/      \/        
-  Copyright (C) 2010 Ingo Berg
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy of this 
-  software and associated documentation files (the "Software"), to deal in the Software
-  without restriction, including without limitation the rights to use, copy, modify, 
-  merge, publish, distribute, sublicense, and/or sell copies of the Software, and to 
-  permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in all copies or 
-  substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
-  NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 
-  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
-*/
-#ifndef MU_PARSER_BASE_H
-#define MU_PARSER_BASE_H
-
-//--- Standard includes ------------------------------------------------------------------------
-#include <cmath>
-#include <string>
-#include <iostream>
-#include <map>
-#include <memory>
-
-//--- Parser includes --------------------------------------------------------------------------
-#include "muParserDef.h"
-#include "muParserStack.h"
-#include "muParserTokenReader.h"
-#include "muParserBytecode.h"
-#include "muParserError.h"
-
-
-namespace mu
-{
-/** \file
-    \brief This file contains the class definition of the muparser engine.
-*/
-
-//--------------------------------------------------------------------------------------------------
-/** \brief Mathematical expressions parser (base parser engine).
-    \author (C) 2010 Ingo Berg
-
-  This is the implementation of a bytecode based mathematical expressions parser. 
-  The formula will be parsed from string and converted into a bytecode. 
-  Future calculations will be done with the bytecode instead the formula string
-  resulting in a significant performance increase. 
-  Complementary to a set of internally implemented functions the parser is able to handle 
-  user defined functions and variables. 
-*/
-class ParserBase 
-{
-friend class ParserTokenReader;
-
-private:
-
-    /** \brief Typedef for the parse functions. 
-    
-      The parse function do the actual work. The parser exchanges
-      the function pointer to the parser function depending on 
-      which state it is in. (i.e. bytecode parser vs. string parser)
-    */
-    typedef value_type (ParserBase::*ParseFunction)() const;  
-
-    /** \brief Type used for storing an array of values. */
-    typedef std::vector<value_type> valbuf_type;
-
-    /** \brief Type for a vector of strings. */
-    typedef std::vector<string_type> stringbuf_type;
-
-    /** \brief Typedef for the token reader. */
-    typedef ParserTokenReader token_reader_type;
-    
-    /** \brief Type used for parser tokens. */
-    typedef ParserToken<value_type, string_type> token_type;
-
- public:
-
-    /** \brief Type of the error class. 
-    
-      Included for backwards compatibility.
-    */
-    typedef ParserError exception_type;
-
-    ParserBase(); 
-    ParserBase(const ParserBase &a_Parser);
-    ParserBase& operator=(const ParserBase &a_Parser);
-
-    virtual ~ParserBase();
-    
-    //---------------------------------------------------------------------------
-    /** \brief Calculate the result.
-
-      A note on const correctness: 
-      I consider it important that Calc is a const function.
-      Due to caching operations Calc changes only the state of internal variables with one exception
-      m_UsedVar this is reset during string parsing and accessible from the outside. Instead of making
-      Calc non const GetUsedVar is non const because it explicitely calls Eval() forcing this update. 
-
-      \pre A formula must be set.
-      \pre Variables must have been set (if needed)
-  
-      \sa #m_pParseFormula
-      \return The evaluation result
-      \throw ParseException if no Formula is set or in case of any other error related to the formula.
-    */
-	  inline value_type Eval() const
-    {
-      return (this->*m_pParseFormula)(); 
-    }
-
-    void SetExpr(const string_type &a_sExpr);
-    void SetVarFactory(facfun_type a_pFactory, void *pUserData = NULL);
-
-    void EnableOptimizer(bool a_bIsOn=true);
-    void EnableByteCode(bool a_bIsOn=true);
-    void EnableBuiltInOprt(bool a_bIsOn=true);
-
-    bool HasBuiltInOprt() const;
-    void AddValIdent(identfun_type a_pCallback);
-
-/** \fn void mu::ParserBase::DefineFun(const string_type &a_strName, fun_type0 a_pFun, bool a_bAllowOpt = true) 
-    \brief Define a parser function without arguments.
-    \param a_strName Name of the function
-    \param a_pFun Pointer to the callback function
-    \param a_bAllowOpt A flag indicating this function may be optimized
-*/
-
-#define MUP_DEFINE_FUNC(TYPE)                                                                  \
-    inline void DefineFun(const string_type &a_strName, TYPE a_pFun, bool a_bAllowOpt = true)  \
-    {                                                                                          \
-      AddCallback( a_strName, ParserCallback(a_pFun, a_bAllowOpt),                             \
-                   m_FunDef, ValidNameChars() );                                               \
-    }
-
-    MUP_DEFINE_FUNC(fun_type0)
-    MUP_DEFINE_FUNC(fun_type1)
-    MUP_DEFINE_FUNC(fun_type2)
-    MUP_DEFINE_FUNC(fun_type3)
-    MUP_DEFINE_FUNC(fun_type4)
-    MUP_DEFINE_FUNC(fun_type5)
-    MUP_DEFINE_FUNC(multfun_type)
-    MUP_DEFINE_FUNC(strfun_type1)
-    MUP_DEFINE_FUNC(strfun_type2)
-    MUP_DEFINE_FUNC(strfun_type3)
-#undef MUP_DEFINE_FUNC
-
-    void DefineOprt(const string_type &a_strName, 
-                    fun_type2 a_pFun, 
-                    unsigned a_iPri=0, 
-                    EOprtAssociativity a_eAssociativity = oaLEFT,
-                    bool a_bAllowOpt = false);
-    void DefineConst(const string_type &a_sName, value_type a_fVal);
-    void DefineStrConst(const string_type &a_sName, const string_type &a_strVal);
-//  void DefineArrayVar(const string_type &a_sName, value_type *a_fVar, std::size_t sz);
-    void DefineVar(const string_type &a_sName, value_type *a_fVar);
-    void DefinePostfixOprt(const string_type &a_strFun, fun_type1 a_pOprt, bool a_bAllowOpt=true);
-    void DefineInfixOprt(const string_type &a_strName, fun_type1 a_pOprt, int a_iPrec=prINFIX, bool a_bAllowOpt=true);
-
-    // Clear user defined variables, constants or functions
-    void ClearVar();
-    void ClearFun();
-    void ClearConst();
-    void ClearInfixOprt();
-    void ClearPostfixOprt();
-    void ClearOprt();
-    
-    void RemoveVar(const string_type &a_strVarName);
-    const varmap_type& GetUsedVar() const;
-    const varmap_type& GetVar() const;
-    const valmap_type& GetConst() const;
-    const string_type& GetExpr() const;
-    const funmap_type& GetFunDef() const;
-    string_type GetVersion() const;
-
-    const char_type ** GetOprtDef() const;
-    void DefineNameChars(const char_type *a_szCharset);
-    void DefineOprtChars(const char_type *a_szCharset);
-    void DefineInfixOprtChars(const char_type *a_szCharset);
-
-    const char_type* ValidNameChars() const;
-    const char_type* ValidOprtChars() const;
-    const char_type* ValidInfixOprtChars() const;
-
-    void SetArgSep(char_type cArgSep);
-    char_type GetArgSep() const;
-    
-    void  Error(EErrorCodes a_iErrc, 
-                int a_iPos = (int)mu::string_type::npos, 
-                const string_type &a_strTok = string_type() ) const;
-
- protected:
-	  
-    void Init();
-
-    virtual void InitCharSets() = 0;
-    virtual void InitFun() = 0;
-    virtual void InitConst() = 0;
-    virtual void InitOprt() = 0; 
-
-    virtual void OnDetectVar(string_type *pExpr, int &nStart, int &nEnd);
-    static const char_type *c_DefaultOprt[]; 
-
- private:
-
-    void Assign(const ParserBase &a_Parser);
-    void InitTokenReader();
-    void ReInit() const;
-
-    void AddCallback( const string_type &a_strName, 
-                      const ParserCallback &a_Callback, 
-                      funmap_type &a_Storage,
-                      const char_type *a_szCharSet );
-
-    void ApplyBinOprt(ParserStack<token_type> &a_stOpt,
-                      ParserStack<token_type> &a_stVal) const;
-
-    void ApplyFunc(ParserStack<token_type> &a_stOpt,
-                   ParserStack<token_type> &a_stVal, 
-                   int iArgCount) const; 
-
-    token_type ApplyNumFunc(const token_type &a_FunTok,
-                            const std::vector<token_type> &a_vArg) const;
-
-    token_type ApplyStrFunc(const token_type &a_FunTok,
-                            const std::vector<token_type> &a_vArg) const;
-
-    int GetOprtPrecedence(const token_type &a_Tok) const;
-    EOprtAssociativity GetOprtAssociativity(const token_type &a_Tok) const;
-
-    value_type ParseString() const; 
-    value_type ParseCmdCode() const;
-    value_type ParseValue() const;
-
-    void  ClearFormula();
-    void  CheckName(const string_type &a_strName, const string_type &a_CharSet) const;
-    void  CheckOprt(const string_type &a_sName,
-                    const ParserCallback &a_Callback,
-                    const string_type &a_szCharSet) const;
-
-#if defined(MUP_DUMP_STACK) | defined(MUP_DUMP_CMDCODE)
-    void StackDump(const ParserStack<token_type > &a_stVal, 
-                   const ParserStack<token_type > &a_stOprt) const;
-#endif
-
-    /** \brief Pointer to the parser function. 
-    
-      Eval() calls the function whose address is stored there.
-    */
-    mutable ParseFunction  m_pParseFormula;
-    mutable const bytecode_type *m_pCmdCode; ///< Formula converted to bytecode, points to the data of the bytecode class.
-    mutable ParserByteCode m_vByteCode;   ///< The Bytecode class.
-    mutable stringbuf_type  m_vStringBuf; ///< String buffer, used for storing string function arguments
-    stringbuf_type  m_vStringVarBuf;
-
-    std::auto_ptr<token_reader_type> m_pTokenReader; ///< Managed pointer to the token reader object.
-
-    funmap_type  m_FunDef;        ///< Map of function names and pointers.
-    funmap_type  m_PostOprtDef;   ///< Postfix operator callbacks
-    funmap_type  m_InfixOprtDef;  ///< unary infix operator.
-    funmap_type  m_OprtDef;       ///< Binary operator callbacks
-    valmap_type  m_ConstDef;      ///< user constants.
-    strmap_type  m_StrVarDef;     ///< user defined string constants
-    varmap_type  m_VarDef;        ///< user defind variables.
-
-    bool m_bOptimize;             ///< Flag that indicates if the optimizer is on or off.
-    bool m_bUseByteCode;          ///< Flag that indicates if bytecode parsing is on or off.
-    bool m_bBuiltInOp;            ///< Flag that can be used for switching built in operators on and off
-
-    string_type m_sNameChars;      ///< Charset for names
-    string_type m_sOprtChars;      ///< Charset for postfix/ binary operator tokens
-    string_type m_sInfixOprtChars; ///< Charset for infix operator tokens
-
-    // items merely used for caching state information
-    mutable valbuf_type m_vStackBuffer; ///< This is merely a buffer used for the stack in the cmd parsing routine
-    mutable int m_nFinalResultIdx;
-};
-
-} // namespace mu
-
-#endif
-
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/include/muParserBytecode.h
--- a/muParser/include/muParserBytecode.h	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,149 +0,0 @@
-/*
-                 __________                                      
-    _____   __ __\______   \_____  _______  ______  ____ _______ 
-   /     \ |  |  \|     ___/\__  \ \_  __ \/  ___/_/ __ \\_  __ \
-  |  Y Y  \|  |  /|    |     / __ \_|  | \/\___ \ \  ___/ |  | \/
-  |__|_|  /|____/ |____|    (____  /|__|  /____  > \___  >|__|   
-        \/                       \/            \/      \/        
-  Copyright (C) 2004-2009 Ingo Berg
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy of this 
-  software and associated documentation files (the "Software"), to deal in the Software
-  without restriction, including without limitation the rights to use, copy, modify, 
-  merge, publish, distribute, sublicense, and/or sell copies of the Software, and to 
-  permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in all copies or 
-  substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
-  NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 
-  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
-*/
-#ifndef MU_PARSER_BYTECODE_H
-#define MU_PARSER_BYTECODE_H
-
-#include <cassert>
-#include <string>
-#include <stack>
-#include <vector>
-
-#include "muParserDef.h"
-#include "muParserError.h"
-#include "muParserToken.h"
-
-/** \file
-    \brief Definition of the parser bytecode class.
-*/
-
-
-namespace mu
-{
-
-
-/** \brief Bytecode implementation of the Math Parser.
-
-  The bytecode contains the formula converted to revers polish notation stored in a continious
-  memory area. Associated with this data are operator codes, variable pointers, constant 
-  values and function pointers. Those are necessary in order to calculate the result.
-  All those data items will be casted to the underlying datatype of the bytecode.
-
-  \author (C) 2004-2010 Ingo Berg 
-*/
-class ParserByteCode
-{
-private:
-
-    /** \brief Token type for internal use only. */
-    typedef ParserToken<value_type, string_type> token_type;
-
-    /** \brief Core type of the bytecode. */
-    typedef std::vector<bytecode_type> storage_type;
-
-    /** \brief Position in the Calculation array. */
-    unsigned m_iStackPos;
-
-    /** \brief Maximum size needed for the stack. */
-    std::size_t m_iMaxStackSize;
-
-    /** \brief Core type of the bytecode. */
-    storage_type m_vBase;
-
-    /** \brief Size of a value entry in the bytecode, relative to TMapType size. */
-    const int mc_iSizeVal;
-
-    /** \brief Size of a pointer, relative to size of underlying TMapType.
-       
-        \attention The size is related to the size of TMapType not bytes!
-    */
-    const int mc_iSizePtr;
-
-    /** \brief A value entry requires that much entires in the bytecode. 
-        
-        Value entry consists of:
-        <ul>
-          <li>One entry for Stack index</li>
-          <li>One entry for Token identifier</li>
-          <li>mc_iSizeVal entries for the value</li>
-        <ul>
-
-        \sa AddVal(TBaseData a_fVal)
-    */
-    const int mc_iSizeValEntry;
-
-    void StorePtr(void *a_pAddr);
-
-public:
-
-    ParserByteCode();
-    ParserByteCode(const ParserByteCode &a_ByteCode);
-    ParserByteCode& operator=(const ParserByteCode &a_ByteCode);
-    void Assign(const ParserByteCode &a_ByteCode);
-
-    void AddVar(value_type *a_pVar);
-    void AddVal(value_type a_fVal);
-    void AddOp(ECmdCode a_Oprt);
-    void AddAssignOp(value_type *a_pVar);
-    void AddFun(void *a_pFun, int a_iArgc);
-    void AddStrFun(void *a_pFun, int a_iArgc, int a_iIdx);
-
-    void Finalize();
-    void clear();
-    std::size_t GetMaxStackSize() const;
-    std::size_t GetBufSize() const;
-
-    const bytecode_type* GetRawData() const;
-
-    /** \brief Return size of a value entry. 
-    
-      That many bytecode entries are necessary to store a value.
-
-      \sa mc_iSizeVal
-    */
-    unsigned GetValSize() const 
-    {
-      return mc_iSizeVal;
-    }
-
-    /** \brief Return size of a pointer entry. 
-    
-      That many bytecode entries are necessary to store a pointer.
-
-      \sa mc_iSizePtr
-    */
-    unsigned GetPtrSize() const 
-    {
-      return mc_iSizePtr;
-    }
-
-    void RemoveValEntries(unsigned a_iNumber);
-    void AsciiDump();
-};
-
-} // namespace mu
-
-#endif
-
-
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/include/muParserCallback.h
--- a/muParser/include/muParserCallback.h	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-/*
-                 __________                                      
-    _____   __ __\______   \_____  _______  ______  ____ _______ 
-   /     \ |  |  \|     ___/\__  \ \_  __ \/  ___/_/ __ \\_  __ \
-  |  Y Y  \|  |  /|    |     / __ \_|  | \/\___ \ \  ___/ |  | \/
-  |__|_|  /|____/ |____|    (____  /|__|  /____  > \___  >|__|   
-        \/                       \/            \/      \/        
-  Copyright (C) 2004-2008 Ingo Berg
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy of this 
-  software and associated documentation files (the "Software"), to deal in the Software
-  without restriction, including without limitation the rights to use, copy, modify, 
-  merge, publish, distribute, sublicense, and/or sell copies of the Software, and to 
-  permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in all copies or 
-  substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
-  NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 
-  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
-*/
-
-#ifndef MU_PARSER_CALLBACK_H
-#define MU_PARSER_CALLBACK_H
-
-#include "muParserDef.h"
-
-/** \file
-    \brief Definition of the parser callback class.
-*/
-
-namespace mu
-{
-
-/** \brief Encapsulation of prototypes for a numerical parser function.
-
-    Encapsulates the prototyp for numerical parser functions. The class
-    stores the number of arguments for parser functions as well
-    as additional flags indication the function is non optimizeable.
-    The pointer to the callback function pointer is stored as void* 
-    and needs to be casted according to the argument count.
-    Negative argument counts indicate a parser function with a variable number
-    of arguments. 
-    This class is not used for string function prototyping.
-
-    \author (C) 2004-2007 Ingo Berg
-*/
-class ParserCallback
-{
-public:
-    ParserCallback(fun_type0 a_pFun, bool a_bAllowOpti);
-    ParserCallback(fun_type1 a_pFun, bool a_bAllowOpti, int a_iPrec = -1, ECmdCode a_iCode=cmFUNC);
-    ParserCallback(fun_type2 a_pFun, bool a_bAllowOpti, int a_iPrec, EOprtAssociativity a_eAssociativity);
-    ParserCallback(fun_type2 a_pFun, bool a_bAllowOpti);
-    ParserCallback(fun_type3 a_pFun, bool a_bAllowOpti);
-    ParserCallback(fun_type4 a_pFun, bool a_bAllowOpti);
-    ParserCallback(fun_type5 a_pFun, bool a_bAllowOpti);
-    ParserCallback(multfun_type a_pFun, bool a_bAllowOpti);
-    ParserCallback(strfun_type1 a_pFun, bool a_bAllowOpti);
-    ParserCallback(strfun_type2 a_pFun, bool a_bAllowOpti);
-    ParserCallback(strfun_type3 a_pFun, bool a_bAllowOpti);
-    ParserCallback();
-    ParserCallback(const ParserCallback &a_Fun);
-    
-    ParserCallback* Clone() const;
-
-    bool  IsOptimizable() const;
-    void* GetAddr() const;
-    ECmdCode  GetCode() const;
-    ETypeCode GetType() const;
-    int GetPri()  const;
-    EOprtAssociativity GetAssociativity() const;
-    int GetArgc() const;
-
-private:
-    void *m_pFun;       ///< Pointer to the callback function, casted to void
-    
-    /** \brief Number of numeric function arguments
-    
-        This number is negative for functions with variable number of arguments. in this cases
-        they represent the actual number of arguments found.
-    */
-    int   m_iArgc;      
-    int   m_iPri;                   ///< Valid only for binary and infix operators; Operator precedence.
-    EOprtAssociativity m_eOprtAsct; ///< Operator associativity; Valid only for binary operators 
-    ECmdCode  m_iCode;
-    ETypeCode m_iType;
-    bool  m_bAllowOpti; ///< Flag indication optimizeability 
-};
-
-//------------------------------------------------------------------------------
-/** \brief Container for Callback objects. */
-typedef std::map<string_type, ParserCallback> funmap_type; 
-
-} // namespace mu
-
-#endif
-
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/include/muParserComplex.h
--- a/muParser/include/muParserComplex.h	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-/*
-                 __________                                      
-    _____   __ __\______   \_____  _______  ______  ____ _______ 
-   /     \ |  |  \|     ___/\__  \ \_  __ \/  ___/_/ __ \\_  __ \
-  |  Y Y  \|  |  /|    |     / __ \_|  | \/\___ \ \  ___/ |  | \/
-  |__|_|  /|____/ |____|    (____  /|__|  /____  > \___  >|__|   
-        \/                       \/            \/      \/        
-  Copyright (C) 2010 Ingo Berg
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy of this 
-  software and associated documentation files (the "Software"), to deal in the Software
-  without restriction, including without limitation the rights to use, copy, modify, 
-  merge, publish, distribute, sublicense, and/or sell copies of the Software, and to 
-  permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in all copies or 
-  substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
-  NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 
-  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
-*/
-
-#ifndef MU_PARSER_COMPLEX_H
-#define MU_PARSER_COMPLEX_H
-
-#include "muParserBase.h"
-#include <vector>
-#include <complex>
-
-/** \file 
-    \brief This file contains a definition of a parser using complex numbers.
-*/
-
-
-namespace mu
-{
-  /** \brief Mathematical expressions parser.
-    
-    This version of the parser handles only complex numbers. It disables the built in operators 
-    thus it is slower than muParser. 
-  */
-  class ParserComplex : private ParserBase
-  {
-  public:
-
-    typedef std::complex<float> complex_type;
-
-    ParserComplex();
-
-    using ParserBase::SetExpr;
-
-    complex_type Eval();
-    static complex_type UnpackToComplex(double val);
-    static double PackToDouble(const complex_type &val);
-
-  private:
-
-    // !! The unary Minus is a MUST, otherwise you cant use negative signs !!
-    static value_type  UnaryMinus(value_type);
-    // binary operator callbacks
-    static value_type  Add(value_type v1, value_type v2);
-    static value_type  Sub(value_type v1, value_type v2);
-    static value_type  Mul(value_type v1, value_type v2);
-    static value_type  Div(value_type v1, value_type v2);
-
-    static value_type  Sin(value_type);
-    static value_type  Cos(value_type);
-    static value_type  Tan(value_type);
-    static value_type  Sqrt(value_type);
-
-    static int IsVal(const char_type* a_szExpr, int *a_iPos, value_type *a_iVal);
-
-    virtual void InitOprt();
-    virtual void InitCharSets();
-    virtual void InitFun();
-    virtual void InitConst();
-  };
-} // namespace mu
-
-#endif
\ No newline at end of file
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/include/muParserDLL.h
--- a/muParser/include/muParserDLL.h	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,192 +0,0 @@
-/*
-                 __________                                      
-    _____   __ __\______   \_____  _______  ______  ____ _______ 
-   /     \ |  |  \|     ___/\__  \ \_  __ \/  ___/_/ __ \\_  __ \
-  |  Y Y  \|  |  /|    |     / __ \_|  | \/\___ \ \  ___/ |  | \/
-  |__|_|  /|____/ |____|    (____  /|__|  /____  > \___  >|__|   
-        \/                       \/            \/      \/        
-  Copyright (C) 2010 Ingo Berg
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy of this 
-  software and associated documentation files (the "Software"), to deal in the Software
-  without restriction, including without limitation the rights to use, copy, modify, 
-  merge, publish, distribute, sublicense, and/or sell copies of the Software, and to 
-  permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in all copies or 
-  substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
-  NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 
-  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
-*/
-#ifndef MU_PARSER_DLL_H
-#define MU_PARSER_DLL_H
-
-#if defined(WIN32) || defined(_WIN32)
-    #ifdef MUPARSERLIB_EXPORTS
-        #define API_EXPORT(TYPE) __declspec(dllexport) TYPE __stdcall
-    #else
-        #define API_EXPORT(TYPE) __declspec(dllimport) TYPE __stdcall
-    #endif
-#else
-    #define API_EXPORT(TYPE) TYPE
-#endif
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/** \file 
-    \brief This file contains the DLL interface of muparser.
-*/
-
-// Basic types
-typedef void*  muParserHandle_t;    // parser handle
-typedef char   muChar_t;            // character type
-typedef int    muBool_t;            // boolean type
-typedef int    muInt_t;             // integer type 
-typedef double muFloat_t;           // floating point type
-
-// function types for calculation
-typedef muFloat_t (*muFun0_t)(); 
-typedef muFloat_t (*muFun1_t)(muFloat_t); 
-typedef muFloat_t (*muFun2_t)(muFloat_t, muFloat_t); 
-typedef muFloat_t (*muFun3_t)(muFloat_t, muFloat_t, muFloat_t); 
-typedef muFloat_t (*muFun4_t)(muFloat_t, muFloat_t, muFloat_t, muFloat_t); 
-typedef muFloat_t (*muFun5_t)(muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t); 
-typedef muFloat_t (*muMultFun_t)(const muFloat_t*, muInt_t);
-typedef muFloat_t (*muStrFun1_t)(const muChar_t*);
-typedef muFloat_t (*muStrFun2_t)(const muChar_t*, muFloat_t);
-typedef muFloat_t (*muStrFun3_t)(const muChar_t*, muFloat_t, muFloat_t);
-
-// Functions for parser management
-typedef void (*muErrorHandler_t)(muParserHandle_t a_hParser);           // [optional] callback to an error handler
-typedef muFloat_t* (*muFacFun_t)(const muChar_t*, void*);               // [optional] callback for creating new variables
-typedef muInt_t (*muIdentFun_t)(const muChar_t*, muInt_t*, muFloat_t*); // [optional] value identification callbacks
-
-//-----------------------------------------------------------------------------------------------------
-// Constants
-#if defined(WIN32) || defined(_WIN32)
-__declspec(dllimport) extern int muOPRT_ASCT_LEFT;
-__declspec(dllimport) extern int muOPRT_ASCT_RIGHT;
-#else
-  extern int muOPRT_ASCT_LEFT;
-  extern int muOPRT_ASCT_RIGHT;
-#endif
-
-//-----------------------------------------------------------------------------------------------------
-//
-//
-// muParser C compatible bindings
-//
-//
-//-----------------------------------------------------------------------------------------------------
-
-// Basic operations / initialization  
-API_EXPORT(muParserHandle_t) mupCreate();
-API_EXPORT(void) mupRelease(muParserHandle_t a_hParser);
-API_EXPORT(const muChar_t*) mupGetExpr(muParserHandle_t a_hParser);
-API_EXPORT(void) mupSetExpr(muParserHandle_t a_hParser, const muChar_t *a_szExpr);
-API_EXPORT(void) mupSetVarFactory(muParserHandle_t a_hParser, muFacFun_t a_pFactory, void* pUserData);
-API_EXPORT(const muChar_t*) mupGetVersion(muParserHandle_t a_hParser);
-API_EXPORT(muFloat_t) mupEval(muParserHandle_t a_hParser);
-
-// Defining callbacks / variables / constants
-API_EXPORT(void) mupDefineFun0(muParserHandle_t a_hParser, const muChar_t *a_szName, muFun0_t a_pFun, muBool_t a_bOptimize);
-API_EXPORT(void) mupDefineFun1(muParserHandle_t a_hParser, const muChar_t *a_szName, muFun1_t a_pFun, muBool_t a_bOptimize);
-API_EXPORT(void) mupDefineFun2(muParserHandle_t a_hParser, const muChar_t *a_szName, muFun2_t a_pFun, muBool_t a_bOptimize);
-API_EXPORT(void) mupDefineFun3(muParserHandle_t a_hParser, const muChar_t *a_szName, muFun3_t a_pFun, muBool_t a_bOptimize);
-API_EXPORT(void) mupDefineFun4(muParserHandle_t a_hParser, const muChar_t *a_szName, muFun4_t a_pFun, muBool_t a_bOptimize);
-API_EXPORT(void) mupDefineFun5(muParserHandle_t a_hParser, const muChar_t *a_szName, muFun5_t a_pFun, muBool_t a_bOptimize);
-// string functions
-API_EXPORT(void) mupDefineStrFun1(muParserHandle_t a_hParser, const muChar_t *a_szName, muStrFun1_t a_pFun);
-API_EXPORT(void) mupDefineStrFun2(muParserHandle_t a_hParser, const muChar_t *a_szName, muStrFun2_t a_pFun);
-API_EXPORT(void) mupDefineStrFun3(muParserHandle_t a_hParser, const muChar_t *a_szName, muStrFun3_t a_pFun);
-
-API_EXPORT(void) mupDefineMultFun( muParserHandle_t a_hParser, 
-                                   const muChar_t* a_szName, 
-                                   muMultFun_t a_pFun, 
-                                   muBool_t a_bOptimize);
-
-API_EXPORT(void) mupDefineOprt( muParserHandle_t a_hParser, 
-                                const muChar_t* a_szName, 
-                                muFun2_t a_pFun, 
-                                muInt_t a_nPrec, 
-                                muInt_t a_nOprtAsct,
-                                muBool_t a_bOptimize);
-
-API_EXPORT(void) mupDefineConst( muParserHandle_t a_hParser, 
-                                 const muChar_t* a_szName, 
-                                 muFloat_t a_fVal );
-
-API_EXPORT(void) mupDefineStrConst( muParserHandle_t a_hParser, 
-                                    const muChar_t* a_szName, 
-                                    const muChar_t *a_sVal );
-
-API_EXPORT(void) mupDefineVar( muParserHandle_t a_hParser, 
-                               const muChar_t* a_szName, 
-                               muFloat_t *a_fVar);
-
-API_EXPORT(void) mupDefinePostfixOprt( muParserHandle_t a_hParser, 
-                                       const muChar_t* a_szName, 
-                                       muFun1_t a_pOprt, 
-                                       muBool_t a_bOptimize);
-
-
-API_EXPORT(void) mupDefineInfixOprt( muParserHandle_t a_hParser, 
-                                     const muChar_t* a_szName, 
-                                     muFun1_t a_pOprt, 
-                                     muBool_t a_bOptimize);
-
-// Define character sets for identifiers
-API_EXPORT(void) mupDefineNameChars(muParserHandle_t a_hParser, const muChar_t* a_szCharset);
-API_EXPORT(void) mupDefineOprtChars(muParserHandle_t a_hParser, const muChar_t* a_szCharset);
-API_EXPORT(void) mupDefineInfixOprtChars(muParserHandle_t a_hParser, const muChar_t* a_szCharset);
-
-// Remove all / single variables
-API_EXPORT(void) mupRemoveVar(muParserHandle_t a_hParser, const muChar_t* a_szName);
-API_EXPORT(void) mupClearVar(muParserHandle_t a_hParser);
-API_EXPORT(void) mupClearConst(muParserHandle_t a_hParser);
-API_EXPORT(void) mupClearOprt(muParserHandle_t a_hParser);
-API_EXPORT(void) mupClearFun(muParserHandle_t a_hParser);
-
-// Querying variables / expression variables / constants
-API_EXPORT(int) mupGetExprVarNum(muParserHandle_t a_hParser);
-API_EXPORT(int) mupGetVarNum(muParserHandle_t a_hParser);
-API_EXPORT(int) mupGetConstNum(muParserHandle_t a_hParser);
-API_EXPORT(void) mupGetExprVar(muParserHandle_t a_hParser, unsigned a_iVar, const muChar_t** a_pszName, muFloat_t** a_pVar);
-API_EXPORT(void) mupGetVar(muParserHandle_t a_hParser, unsigned a_iVar, const muChar_t** a_pszName, muFloat_t** a_pVar);
-API_EXPORT(void) mupGetConst(muParserHandle_t a_hParser, unsigned a_iVar, const muChar_t** a_pszName, muFloat_t* a_pVar);
-API_EXPORT(void) mupSetArgSep(muParserHandle_t a_hParser, const muChar_t cArgSep);
-API_EXPORT(void) mupSetDecSep(muParserHandle_t a_hParser, const muChar_t cArgSep);
-API_EXPORT(void) mupSetThousandsSep(muParserHandle_t a_hParser, const muChar_t cArgSep);
-API_EXPORT(void) mupResetLocale(muParserHandle_t a_hParser);
-
-// Add value recognition callbacks
-API_EXPORT(void) mupAddValIdent(muParserHandle_t a_hParser, muIdentFun_t);
-
-// Error handling
-API_EXPORT(muBool_t) mupError(muParserHandle_t a_hParser);
-API_EXPORT(void) mupErrorReset(muParserHandle_t a_hParser);
-API_EXPORT(void) mupSetErrorHandler(muParserHandle_t a_hParser, muErrorHandler_t a_pErrHandler);
-API_EXPORT(const muChar_t*) mupGetErrorMsg(muParserHandle_t a_hParser);
-API_EXPORT(muInt_t) mupGetErrorCode(muParserHandle_t a_hParser);
-API_EXPORT(muInt_t) mupGetErrorPos(muParserHandle_t a_hParser);
-API_EXPORT(const muChar_t*) mupGetErrorToken(muParserHandle_t a_hParser);
-//API_EXPORT(const muChar_t*) mupGetErrorExpr(muParserHandle_t a_hParser);
-
-// This is used for .NET only. It creates a new variable allowing the dll to
-// manage the variable rather than the .NET garbage collector.
-API_EXPORT(muFloat_t*) mupCreateVar();
-API_EXPORT(void) mupReleaseVar(muFloat_t*);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // include guard
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/include/muParserDef.h
--- a/muParser/include/muParserDef.h	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,327 +0,0 @@
-/*
-                 __________                                      
-    _____   __ __\______   \_____  _______  ______  ____ _______ 
-   /     \ |  |  \|     ___/\__  \ \_  __ \/  ___/_/ __ \\_  __ \
-  |  Y Y  \|  |  /|    |     / __ \_|  | \/\___ \ \  ___/ |  | \/
-  |__|_|  /|____/ |____|    (____  /|__|  /____  > \___  >|__|   
-        \/                       \/            \/      \/        
-  Copyright (C) 2010 Ingo Berg
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy of this 
-  software and associated documentation files (the "Software"), to deal in the Software
-  without restriction, including without limitation the rights to use, copy, modify, 
-  merge, publish, distribute, sublicense, and/or sell copies of the Software, and to 
-  permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in all copies or 
-  substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
-  NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 
-  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
-*/
-#ifndef MUP_DEF_H
-#define MUP_DEF_H
-
-#include <iostream>
-#include <string>
-#include <sstream>
-#include <map>
-
-#include "muParserFixes.h"
-
-/** \file
-    \brief This file contains standard definitions used by the parser.
-*/
-
-#define MUP_VERSION _T("1.34")
-
-#define MUP_CHARS _T("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
-
-/** \brief If this macro is defined mathematical exceptions (div by zero) will be thrown as exceptions. */
-//#define MUP_MATH_EXCEPTIONS
-
-/** \brief Define the base datatype for values.
-
-  This datatype must be a built in value type. You can not use custom classes.
-  It has been tested with float, double and long double types, int should
-  work as well.
-*/
-#define MUP_BASETYPE double
-
-/** \brief Definition of the basic bytecode datatype.
-
-  This defines the smalles entity used in the bytecode.
-*/
-#define MUP_BYTECODE_TYPE long
-
-#if defined(_UNICODE)
-  /** \brief Definition of the basic parser string type. */
-  #define MUP_STRING_TYPE std::wstring
-
-  #if !defined(_T)
-    #define _T(x) L##x
-  #endif // not defined _T
-#else
-  #ifndef _T
-  #define _T(x) x
-  #endif
-  
-  /** \brief Definition of the basic parser string type. */
-  #define MUP_STRING_TYPE std::string
-#endif
-
-#if defined(_DEBUG)
-  /** \brief Debug macro to force an abortion of the programm with a certain message.
-  */
-  #define MUP_FAIL(MSG)    \
-          bool MSG=false;  \
-          assert(MSG);
-
-    /** \brief An assertion that does not kill the program.
-
-        This macro is neutralised in UNICODE builds. It's
-        too difficult to translate.
-    */
-    #define MUP_ASSERT(COND)                         \
-            if (!(COND))                             \
-            {                                        \
-              stringstream_type ss;                  \
-              ss << _T("Assertion \"") _T(#COND) _T("\" failed: ") \
-                 << __FILE__ << _T(" line ")         \
-                 << __LINE__ << _T(".");             \
-              throw ParserError( ss.str() );         \
-            }
-#else
-  #define MUP_FAIL(MSG)
-  #define MUP_ASSERT(COND)
-#endif
-
-//------------------------------------------------------------------------------
-//
-// do not change anything beyond this point...
-//
-// !!! This section is devoted to macros that are used for debugging
-// !!! or for features that are not fully implemented yet.
-//
-//#define MUP_DUMP_STACK
-//#define MUP_DUMP_CMDCODE
-
-
-namespace mu
-{
-#if defined(_UNICODE)
-
-  //------------------------------------------------------------------------------
-  /** \brief Encapsulate wcout. */
-  inline std::wostream& console()
-  {
-    return std::wcout;
-  }
-
-  /** \brief Encapsulate cin. */
-  inline std::wistream& console_in()
-  {
-    return std::wcin;
-  }
-
-#else
-
-  /** \brief Encapsulate cout. 
-  
-    Used for supporting UNICODE more easily.
-  */
-  inline std::ostream& console()
-  {
-    return std::cout;
-  }
-
-  /** \brief Encapsulate cin. 
-
-    Used for supporting UNICODE more easily.
-  */
-  inline std::istream& console_in()
-  {
-    return std::cin;
-  }
-
-#endif
-
-  //------------------------------------------------------------------------------
-  /** \brief Bytecode values.
-
-      \attention The order of the operator entries must match the order in ParserBase::c_DefaultOprt!
-  */
-  enum ECmdCode
-  {
-    // The following are codes for built in binary operators
-    // apart from built in operators the user has the opportunity to
-    // add user defined operators.
-    cmLE            = 0,   ///< Operator item:  less or equal
-    cmGE            = 1,   ///< Operator item:  greater or equal
-    cmNEQ           = 2,   ///< Operator item:  not equal
-    cmEQ            = 3,   ///< Operator item:  equals
-    cmLT            = 4,   ///< Operator item:  less than
-    cmGT            = 5,   ///< Operator item:  greater than
-    cmADD           = 6,   ///< Operator item:  add
-    cmSUB           = 7,   ///< Operator item:  subtract
-    cmMUL           = 8,   ///< Operator item:  multiply
-    cmDIV           = 9,   ///< Operator item:  division
-    cmPOW           = 10,  ///< Operator item:  y to the power of ...
-    cmAND           = 11,  ///< Operator item:  logical and
-    cmOR            = 12,  ///< Operator item:  logical or
-    cmXOR           = 13,  ///< Operator item:  logical xor
-    cmASSIGN        = 14,  ///< Operator item:  Assignment operator
-    cmBO            = 15,  ///< Operator item:  opening bracket
-    cmBC            = 16,  ///< Operator item:  closing bracket
-    cmARG_SEP,             ///< function argument separator
-    cmVAR,                 ///< variable item
-    cmVAL,                 ///< value item
-    cmFUNC,                ///< Code for a function item
-    cmFUNC_STR,            ///< Code for a function with a string parameter
-    cmSTRING,              ///< Code for a string token
-    cmOPRT_BIN,            ///< user defined binary operator
-    cmOPRT_POSTFIX,        ///< code for postfix operators
-    cmOPRT_INFIX,          ///< code for infix operators
-    cmEND,                 ///< end of formula
-    cmUNKNOWN,             ///< uninitialized item
-  };
-
-  //------------------------------------------------------------------------------
-  /** \brief Types internally used by the parser.
-  */
-  enum ETypeCode
-  {
-    tpSTR  = 0,     ///< String type (Function arguments and constants only, no string variables)
-    tpDBL  = 1,     ///< Floating point variables
-    tpVOID = 2      ///< Undefined type.
-  };
-
-  //------------------------------------------------------------------------------
-  /** \brief Parser operator precedence values. */
-  enum EOprtAssociativity
-  {
-    oaLEFT  = 0,
-    oaRIGHT = 1,
-    oaNONE  = 2
-  };
-
-  //------------------------------------------------------------------------------
-  /** \brief Parser operator precedence values. */
-  enum EOprtPrecedence
-  {
-    // binary operators
-    prLOGIC    = 1,  ///< logic operators
-    prCMP      = 2,  ///< comparsion operators
-    prADD_SUB  = 3,  ///< addition
-    prMUL_DIV  = 4,  ///< multiplication/division
-    prPOW      = 5,  ///< power operator priority (highest)
-
-    // infix operators
-    prINFIX    = 4, ///< Signs have a higher priority than ADD_SUB, but lower than power operator
-    prPOSTFIX  = 4  ///< Postfix operator priority (currently unused)
-  };
-
-  //------------------------------------------------------------------------------
-  // basic types
-
-  /** \brief The numeric datatype used by the parser. 
-  
-    Normally this is a floating point type either single or double precision.
-  */
-  typedef MUP_BASETYPE value_type;
-
-  /** \brief The stringtype used by the parser. 
-
-    Depends on wether UNICODE is used or not.
-  */
-  typedef MUP_STRING_TYPE string_type;
-
-  /** \brief The bytecode type used by the parser. 
-  
-    The bytecode type depends on the value_type.
-  */
-  typedef MUP_BYTECODE_TYPE bytecode_type;
-
-  /** \brief The character type used by the parser. 
-  
-    Depends on wether UNICODE is used or not.
-  */
-  typedef string_type::value_type char_type;
-
-  /** \brief Typedef for easily using stringstream that respect the parser stringtype. */
-  typedef std::basic_stringstream<char_type,
-                                  std::char_traits<char_type>,
-                                  std::allocator<char_type> > stringstream_type;
-
-  // Data container types
-
-  /** \brief Type used for storing variables. */
-  typedef std::map<string_type, value_type*> varmap_type;
-  
-  /** \brief Type used for storing constants. */
-  typedef std::map<string_type, value_type> valmap_type;
-  
-  /** \brief Type for assigning a string name to an index in the internal string table. */
-  typedef std::map<string_type, std::size_t> strmap_type;
-
-  // Parser callbacks
-  
-  /** \brief Callback type used for functions without arguments. */
-  typedef value_type (*fun_type0)();
-
-  /** \brief Callback type used for functions with a single arguments. */
-  typedef value_type (*fun_type1)(value_type);
-
-  /** \brief Callback type used for functions with two arguments. */
-  typedef value_type (*fun_type2)(value_type, value_type);
-
-  /** \brief Callback type used for functions with three arguments. */
-  typedef value_type (*fun_type3)(value_type, value_type, value_type);
-
-  /** \brief Callback type used for functions with four arguments. */
-  typedef value_type (*fun_type4)(value_type, value_type, value_type, value_type);
-
-  /** \brief Callback type used for functions with five arguments. */
-  typedef value_type (*fun_type5)(value_type, value_type, value_type, value_type, value_type);
-
-  /** \brief Callback type used for functions with a variable argument list. */
-  typedef value_type (*multfun_type)(const value_type*, int);
-
-  /** \brief Callback type used for functions taking a string as an argument. */
-  typedef value_type (*strfun_type1)(const char_type*);
-
-  /** \brief Callback type used for functions taking a string and a value as arguments. */
-  typedef value_type (*strfun_type2)(const char_type*, value_type);
-
-  /** \brief Callback type used for functions taking a string and two values as arguments. */
-  typedef value_type (*strfun_type3)(const char_type*, value_type, value_type);
-
-  /** \brief Callback used for functions that identify values in a string. */
-  typedef int (*identfun_type)(const char_type *sExpr, int *nPos, value_type *fVal);
-
-  /** \brief Callback used for variable creation factory functions. */
-  typedef value_type* (*facfun_type)(const char_type*, void*);
-
-  //------------------------------------------------------------------------------
-  /** \brief Static type checks
-    
-     I took the static assert from boost, but did not want to 
-     add boost as a dependency to this project. For the original go to:
-  
-     http://www.boost.org/doc/html/boost_staticassert.html
-  */
-  template <bool> struct STATIC_ASSERTION_FAILURE;
-  template <> struct STATIC_ASSERTION_FAILURE<true> {};
-
-  /** \brief This is a static typecheck.
-      
-      If you get a compiler error here you tried to use an unsigned bytecode map type!
-  */
-  typedef char MAP_TYPE_CANT_BE_UNSIGNED[ sizeof( STATIC_ASSERTION_FAILURE< bytecode_type(-1)<0 >) ];
-} // end fo namespace
-
-#endif
-
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/include/muParserError.h
--- a/muParser/include/muParserError.h	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,170 +0,0 @@
-/*
-                 __________                                      
-    _____   __ __\______   \_____  _______  ______  ____ _______ 
-   /     \ |  |  \|     ___/\__  \ \_  __ \/  ___/_/ __ \\_  __ \
-  |  Y Y  \|  |  /|    |     / __ \_|  | \/\___ \ \  ___/ |  | \/
-  |__|_|  /|____/ |____|    (____  /|__|  /____  > \___  >|__|   
-        \/                       \/            \/      \/        
-  Copyright (C) 2004-2010 Ingo Berg
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy of this 
-  software and associated documentation files (the "Software"), to deal in the Software
-  without restriction, including without limitation the rights to use, copy, modify, 
-  merge, publish, distribute, sublicense, and/or sell copies of the Software, and to 
-  permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in all copies or 
-  substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
-  NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 
-  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
-*/
-
-#ifndef MU_PARSER_ERROR_H
-#define MU_PARSER_ERROR_H
-
-#include <cassert>
-#include <stdexcept>
-#include <string>
-#include <sstream>
-#include <vector>
-#include <memory>
-
-#include "muParserDef.h"
-
-/** \file 
-    \brief This file defines the error class used by the parser.
-*/
-
-namespace mu
-{
-
-/** \brief Error codes. */
-enum EErrorCodes
-{
-  // Formula syntax errors
-  ecUNEXPECTED_OPERATOR   = 0,  ///< Unexpected binary operator found
-  ecUNASSIGNABLE_TOKEN    = 1,  ///< Token cant be identified.
-  ecUNEXPECTED_EOF        = 2,  ///< Unexpected end of formula. (Example: "2+sin(")
-  ecUNEXPECTED_ARG_SEP    = 3,  ///< An unexpected comma has been found. (Example: "1,23")
-  ecUNEXPECTED_ARG        = 4,  ///< An unexpected argument has been found
-  ecUNEXPECTED_VAL        = 5,  ///< An unexpected value token has been found
-  ecUNEXPECTED_VAR        = 6,  ///< An unexpected variable token has been found
-  ecUNEXPECTED_PARENS     = 7,  ///< Unexpected Parenthesis, opening or closing
-  ecUNEXPECTED_STR        = 8,  ///< A string has been found at an inapropriate position
-  ecSTRING_EXPECTED       = 9,  ///< A string function has been called with a different type of argument
-  ecVAL_EXPECTED          = 10, ///< A numerical function has been called with a non value type of argument
-  ecMISSING_PARENS        = 11, ///< Missing parens. (Example: "3*sin(3")
-  ecUNEXPECTED_FUN        = 12, ///< Unexpected function found. (Example: "sin(8)cos(9)")
-  ecUNTERMINATED_STRING   = 13, ///< unterminated string constant. (Example: "3*valueof("hello)")
-  ecTOO_MANY_PARAMS       = 14, ///< Too many function parameters
-  ecTOO_FEW_PARAMS        = 15, ///< Too few function parameters. (Example: "ite(1<2,2)")
-  ecOPRT_TYPE_CONFLICT    = 16, ///< binary operators may only be applied to value items of the same type
-  ecSTR_RESULT            = 17, ///< result is a string
-
-  // Invalid Parser input Parameters
-  ecINVALID_NAME          = 18, ///< Invalid function, variable or constant name.
-  ecINVALID_BINOP_IDENT   = 19, ///< Invalid binary operator identifier
-  ecINVALID_INFIX_IDENT   = 20, ///< Invalid function, variable or constant name.
-  ecINVALID_POSTFIX_IDENT = 21, ///< Invalid function, variable or constant name.
-
-  ecBUILTIN_OVERLOAD      = 22, ///< Trying to overload builtin operator
-  ecINVALID_FUN_PTR       = 23, ///< Invalid callback function pointer 
-  ecINVALID_VAR_PTR       = 24, ///< Invalid variable pointer 
-  ecEMPTY_EXPRESSION      = 25, ///< The Expression is empty
-  ecNAME_CONFLICT         = 26, ///< Name conflict
-  ecOPT_PRI               = 27, ///< Invalid operator priority
-  // 
-  ecDOMAIN_ERROR          = 28, ///< catch division by zero, sqrt(-1), log(0) (currently unused)
-  ecDIV_BY_ZERO           = 29, ///< Division by zero (currently unused)
-  ecGENERIC               = 30, ///< Generic error
-  ecLOCALE                = 31, ///< Conflict with current locale
-
-  // internal errors
-  ecINTERNAL_ERROR        = 32, ///< Internal error of any kind.
-
-  // The last two are special entries 
-  ecCOUNT,                      ///< This is no error code, It just stores just the total number of error codes
-  ecUNDEFINED             = -1  ///< Undefined message, placeholder to detect unassigned error messages
-};
-
-//---------------------------------------------------------------------------
-/** \brief A class that handles the error messages.
-*/
-class ParserErrorMsg
-{
-public:
-    typedef ParserErrorMsg self_type;
-
-    ParserErrorMsg& operator=(const ParserErrorMsg &);
-    ParserErrorMsg(const ParserErrorMsg&);
-    ParserErrorMsg();
-
-   ~ParserErrorMsg();
-
-    static const ParserErrorMsg& Instance();
-    string_type operator[](unsigned a_iIdx) const;
-
-private:
-    std::vector<string_type>  m_vErrMsg;  ///< A vector with the predefined error messages
-    static const self_type m_Instance;    ///< The instance pointer
-};
-
-//---------------------------------------------------------------------------
-/** \brief Error class of the parser. 
-    \author Ingo Berg
-
-  Part of the math parser package.
-*/
-class ParserError
-{
-private:
-
-    /** \brief Replace all ocuurences of a substring with another string. */
-    void ReplaceSubString( string_type &strSource, 
-                           const string_type &strFind,
-                           const string_type &strReplaceWith);
-    void Reset();
-
-public:
-
-    ParserError();
-    explicit ParserError(EErrorCodes a_iErrc);
-    explicit ParserError(const string_type &sMsg);
-    ParserError( EErrorCodes a_iErrc,
-                 const string_type &sTok,
-                 const string_type &sFormula = string_type(_T("(formula is not available)")),
-                 int a_iPos = -1);
-    ParserError( EErrorCodes a_iErrc, 
-                 int a_iPos, 
-                 const string_type &sTok);
-    ParserError( const char_type *a_szMsg, 
-                 int a_iPos = -1, 
-                 const string_type &sTok = string_type());
-    ParserError(const ParserError &a_Obj);
-    ParserError& operator=(const ParserError &a_Obj);
-   ~ParserError();
-
-    void SetFormula(const string_type &a_strFormula);
-    const string_type& GetExpr() const;
-    const string_type& GetMsg() const;
-    std::size_t GetPos() const;
-    const string_type& GetToken() const;
-    EErrorCodes GetCode() const;
-
-private:
-    string_type m_strMsg;     ///< The message string
-    string_type m_strFormula; ///< Formula string
-    string_type m_strTok;     ///< Token related with the error
-    int m_iPos;               ///< Formula position related to the error 
-    EErrorCodes m_iErrc;      ///< Error code
-    const ParserErrorMsg &m_ErrMsg;
-};		
-
-} // namespace mu
-
-#endif
-
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/include/muParserFixes.h
--- a/muParser/include/muParserFixes.h	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,200 +0,0 @@
-/*
-                 __________                                      
-    _____   __ __\______   \_____  _______  ______  ____ _______ 
-   /     \ |  |  \|     ___/\__  \ \_  __ \/  ___/_/ __ \\_  __ \
-  |  Y Y  \|  |  /|    |     / __ \_|  | \/\___ \ \  ___/ |  | \/
-  |__|_|  /|____/ |____|    (____  /|__|  /____  > \___  >|__|   
-        \/                       \/            \/      \/        
-  Copyright (C) 2010 Ingo Berg
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy of this 
-  software and associated documentation files (the "Software"), to deal in the Software
-  without restriction, including without limitation the rights to use, copy, modify, 
-  merge, publish, distribute, sublicense, and/or sell copies of the Software, and to 
-  permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in all copies or 
-  substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
-  NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 
-  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
-*/
-
-#ifndef MU_PARSER_FIXES_H
-#define MU_PARSER_FIXES_H
-
-/** \file
-    \brief This file contains compatibility fixes for some platforms.
-*/
-
-//
-// Compatibility fixes
-//
-
-//---------------------------------------------------------------------------
-//
-// Intel Compiler
-//
-//---------------------------------------------------------------------------
-
-#ifdef __INTEL_COMPILER
-
-// remark #981: operands are evaluated in unspecified order
-// disabled -> completely pointless if the functions do not have side effects
-//
-#pragma warning(disable:981)
-
-// remark #383: value copied to temporary, reference to temporary used
-#pragma warning(disable:383)
-
-// remark #1572: floating-point equality and inequality comparisons are unreliable
-// disabled -> everyone knows it, the parser passes this problem
-//             deliberately to the user
-#pragma warning(disable:1572)
-
-#endif
-
-
-//---------------------------------------------------------------------------
-//
-// MSVC6
-//
-//---------------------------------------------------------------------------
-
-
-#if defined(_MSC_VER) && _MSC_VER==1200
-
-/** \brief Macro to replace the MSVC6 auto_ptr with the _my_auto_ptr class.
-
-    Hijack auto_ptr and replace it with a version that actually does
-    what an auto_ptr normally does. If you use std::auto_ptr in your other code
-    might either explode or work much better. The original crap created
-    by Microsoft, called auto_ptr and bundled with MSVC6 is not standard compliant.
-*/
-#define auto_ptr _my_auto_ptr
-
-// This is another stupidity that needs to be undone in order to de-pollute
-// the global namespace!
-#undef min
-#undef max
-
-
-namespace std
-{
-  typedef ::size_t size_t;
-
-  //---------------------------------------------------------------------------
-  /** \brief MSVC6 fix: Dummy function to put rand into namespace std.
-
-    This is a hack for MSVC6 only. It's dirty, it's ugly and it works, provided
-    inlining is enabled. Necessary because I will not pollute or change my
-    code in order to adopt it to MSVC6 interpretation of how C++ should look like!
-  */
-  inline int rand(void)
-  {
-    return ::rand();
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief MSVC6 fix: Dummy function to put strlen into namespace std.
-
-    This is a hack for MSVC6 only. It's dirty, it's ugly and it works, provided
-    inlining is enabled. Necessary because I will not pollute or change my
-    code in order to adopt it to MSVC6 interpretation of how C++ should look like!
-  */
-  inline size_t strlen(const char *szMsg)
-  {
-    return ::strlen(szMsg);
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief MSVC6 fix: Dummy function to put strncmp into namespace std.
-
-    This is a hack for MSVC6 only. It's dirty, it's ugly and it works, provided
-    inlining is enabled. Necessary because I will not pollute or change my
-    code in order to adopt it to MSVC6 interpretation of how C++ should look like!
-  */
-  inline int strncmp(const char *a, const char *b, size_t len)
-  {
-    return ::strncmp(a,b,len);
-  }
-
-  //---------------------------------------------------------------------------
-  template<typename T>
-  T max(T a, T b)
-  {
-    return (a>b) ? a : b;
-  }
-
-  //---------------------------------------------------------------------------
-  template<typename T>
-  T min(T a, T b)
-  {
-    return (a<b) ? a : b;
-  }
-
-  //---------------------------------------------------------------------------
-  /** Standard compliant auto_ptr redefinition for MSVC6.
-
-    The code is taken from VS.NET 2003, slightly modified to reduce
-    it's dependencies from other classes.
-  */
-  template<class _Ty>
-  class _my_auto_ptr
-  {
-  public:
-    typedef _Ty element_type;
-
-	  explicit _my_auto_ptr(_Ty *_Ptr = 0)
-	    :_Myptr(_Ptr)
-	  {}
-
-	  _my_auto_ptr(_my_auto_ptr<_Ty>& _Right)
-	    :_Myptr(_Right.release())
-	  {}
-
-	  template<class _Other>
-    operator _my_auto_ptr<_Other>()
-	  {
-      return (_my_auto_ptr<_Other>(*this));
-	  }
-
-	  template<class _Other>
-	  _my_auto_ptr<_Ty>& operator=(_my_auto_ptr<_Other>& _Right)
-	  {
-      reset(_Right.release());
-	    return (*this);
-	  }
-
-	 ~auto_ptr()              { delete _Myptr;    }
-	  _Ty& operator*() const  { return (*_Myptr); }
-	  _Ty *operator->() const	{ return (&**this);	}
-	  _Ty *get() const        { return (_Myptr);	}
-
-    _Ty *release()
-    {
-		  _Ty *_Tmp = _Myptr;
-		  _Myptr = 0;
-		  return (_Tmp);
-		}
-
-	  void reset(_Ty* _Ptr = 0)
-		{
-		  if (_Ptr != _Myptr)
-			  delete _Myptr;
-		  _Myptr = _Ptr;
-    }
-
-  private:
-	    _Ty *_Myptr;
-	}; // class _my_auto_ptr
-} // namespace std
-
-#endif // Microsoft Visual Studio Version 6.0
-
-#endif // include guard
-
-
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/include/muParserInt.h
--- a/muParser/include/muParserInt.h	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-/*
-                 __________                                      
-    _____   __ __\______   \_____  _______  ______  ____ _______ 
-   /     \ |  |  \|     ___/\__  \ \_  __ \/  ___/_/ __ \\_  __ \
-  |  Y Y  \|  |  /|    |     / __ \_|  | \/\___ \ \  ___/ |  | \/
-  |__|_|  /|____/ |____|    (____  /|__|  /____  > \___  >|__|   
-        \/                       \/            \/      \/        
-  Copyright (C) 2004-2008 Ingo Berg
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy of this 
-  software and associated documentation files (the "Software"), to deal in the Software
-  without restriction, including without limitation the rights to use, copy, modify, 
-  merge, publish, distribute, sublicense, and/or sell copies of the Software, and to 
-  permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in all copies or 
-  substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
-  NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 
-  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
-*/
-
-#ifndef MU_PARSER_INT_H
-#define MU_PARSER_INT_H
-
-#include "muParserBase.h"
-#include <vector>
-
-/** \file
-    \brief Definition of a parser using integer value.
-*/
-
-
-namespace mu
-{
-
-/** \brief Mathematical expressions parser.
-  
-  This version of the parser handles only integer numbers. It disables the built in operators thus it is 
-  slower than muParser. Integer values are stored in the double value_type and converted if needed.
-*/
-class ParserInt : public ParserBase
-{
-private:
-    static int  Round(value_type v) { return (int)(v + ((v>=0) ? 0.5 : -0.5) ); };
-  
-    static value_type  Abs(value_type);
-	  static value_type  Sign(value_type);
-    static value_type  Ite(value_type, value_type, value_type);
-    // !! The unary Minus is a MUST, otherwise you cant use negative signs !!
-    static value_type  UnaryMinus(value_type);
-    // Functions with variable number of arguments
-    static value_type  Sum(const value_type* a_afArg, int a_iArgc);  // sum
-    static value_type  Min(const value_type* a_afArg, int a_iArgc);  // minimum
-    static value_type  Max(const value_type* a_afArg, int a_iArgc);  // maximum
-    // binary operator callbacks
-    static value_type  Add(value_type v1, value_type v2);
-    static value_type  Sub(value_type v1, value_type v2);
-    static value_type  Mul(value_type v1, value_type v2);
-    static value_type  Div(value_type v1, value_type v2);
-    static value_type  Mod(value_type v1, value_type v2);
-    static value_type  Pow(value_type v1, value_type v2);
-    static value_type  Shr(value_type v1, value_type v2);
-    static value_type  Shl(value_type v1, value_type v2);
-    static value_type  LogAnd(value_type v1, value_type v2);
-    static value_type  LogOr(value_type v1, value_type v2);
-    static value_type  And(value_type v1, value_type v2);
-    static value_type  Or(value_type v1, value_type v2);
-    static value_type  Xor(value_type v1, value_type v2);
-    static value_type  Less(value_type v1, value_type v2);
-    static value_type  Greater(value_type v1, value_type v2);
-    static value_type  LessEq(value_type v1, value_type v2);
-    static value_type  GreaterEq(value_type v1, value_type v2);
-    static value_type  Equal(value_type v1, value_type v2);
-    static value_type  NotEqual(value_type v1, value_type v2);
-    static value_type  Not(value_type v1);
-
-    static int IsHexVal(const char_type* a_szExpr, int *a_iPos, value_type *a_iVal);
-    static int IsBinVal(const char_type* a_szExpr, int *a_iPos, value_type *a_iVal);
-    static int IsVal   (const char_type* a_szExpr, int *a_iPos, value_type *a_iVal);
-
-public:
-    ParserInt();
-
-    virtual void InitFun();
-	  virtual void InitOprt();
-    virtual void InitConst();
-    virtual void InitCharSets();
-};
-
-} // namespace mu
-
-#endif
-
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/include/muParserStack.h
--- a/muParser/include/muParserStack.h	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,125 +0,0 @@
-/*
-                 __________                                      
-    _____   __ __\______   \_____  _______  ______  ____ _______ 
-   /     \ |  |  \|     ___/\__  \ \_  __ \/  ___/_/ __ \\_  __ \
-  |  Y Y  \|  |  /|    |     / __ \_|  | \/\___ \ \  ___/ |  | \/
-  |__|_|  /|____/ |____|    (____  /|__|  /____  > \___  >|__|   
-        \/                       \/            \/      \/        
-  Copyright (C) 2004-2006 Ingo Berg
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy of this 
-  software and associated documentation files (the "Software"), to deal in the Software
-  without restriction, including without limitation the rights to use, copy, modify, 
-  merge, publish, distribute, sublicense, and/or sell copies of the Software, and to 
-  permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in all copies or 
-  substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
-  NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 
-  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
-*/
-
-#ifndef MU_PARSER_STACK_H
-#define MU_PARSER_STACK_H
-
-#include <cassert>
-#include <string>
-#include <stack>
-#include <vector>
-
-#include "muParserError.h"
-#include "muParserToken.h"
-
-/** \file 
-    \brief This file defines the stack used by muparser.
-*/
-
-namespace mu
-{
-
-  /** \brief Parser stack implementation. 
-
-      Stack implementation based on a std::stack. The behaviour of pop() had been
-      slightly changed in order to get an error code if the stack is empty.
-      The stack is used within the Parser both as a value stack and as an operator stack.
-
-      \author (C) 2004-2008 Ingo Berg 
-  */
-  template <typename TValueType>
-  class ParserStack 
-  {
-    private:
-
-      /** \brief Type of the underlying stack implementation. */
-      typedef std::stack<TValueType, std::vector<TValueType> > impl_type;
-      
-      impl_type m_Stack;  ///< This is the actual stack.
-
-    public:	
-  	 
-      //---------------------------------------------------------------------------
-      ParserStack()
-        :m_Stack()
-      {}
-
-      //---------------------------------------------------------------------------
-      virtual ~ParserStack()
-      {}
-
-      //---------------------------------------------------------------------------
-      /** \brief Pop a value from the stack.
-       
-        Unlike the standard implementation this function will return the value that
-        is going to be taken from the stack.
-
-        \throw ParserException in case the stack is empty.
-        \sa pop(int &a_iErrc)
-      */
-	    TValueType pop()
-      {
-        if (empty())
-          throw ParserError( _T("stack is empty.") );
-
-        TValueType el = top();
-        m_Stack.pop();
-        return el;
-      }
-
-      /** \brief Push an object into the stack. 
-
-          \param a_Val object to push into the stack.
-          \throw nothrow
-      */
-      void push(const TValueType& a_Val) 
-      { 
-        m_Stack.push(a_Val); 
-      }
-
-      /** \brief Return the number of stored elements. */
-      unsigned size() const
-      { 
-        return (unsigned)m_Stack.size(); 
-      }
-
-      /** \brief Returns true if stack is empty false otherwise. */
-      bool empty() const
-      {
-        return m_Stack.size()==0; 
-      }
-       
-      /** \brief Return reference to the top object in the stack. 
-       
-          The top object is the one pushed most recently.
-      */
-      TValueType& top() 
-      { 
-        return m_Stack.top(); 
-      }
-  };
-} // namespace MathUtils
-
-#endif
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/include/muParserTest.h
--- a/muParser/include/muParserTest.h	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,203 +0,0 @@
-/*
-                 __________                                      
-    _____   __ __\______   \_____  _______  ______  ____ _______ 
-   /     \ |  |  \|     ___/\__  \ \_  __ \/  ___/_/ __ \\_  __ \
-  |  Y Y  \|  |  /|    |     / __ \_|  | \/\___ \ \  ___/ |  | \/
-  |__|_|  /|____/ |____|    (____  /|__|  /____  > \___  >|__|   
-        \/                       \/            \/      \/        
-  Copyright (C) 2010 Ingo Berg
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy of this 
-  software and associated documentation files (the "Software"), to deal in the Software
-  without restriction, including without limitation the rights to use, copy, modify, 
-  merge, publish, distribute, sublicense, and/or sell copies of the Software, and to 
-  permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in all copies or 
-  substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
-  NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 
-  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
-*/
-
-#ifndef MU_PARSER_TEST_H
-#define MU_PARSER_TEST_H
-
-#include <string>
-#include <cstdlib>
-#include <numeric> // for accumulate
-#include "muParser.h"
-#include "muParserInt.h"
-
-/** \file
-    \brief This file contains the parser test class.
-*/
-
-namespace mu
-{
-  /** \brief Namespace for test cases. */
-  namespace Test
-  {
-    //------------------------------------------------------------------------------
-    /** \brief Test cases for unit testing.
-
-      (C) 2004-2006 Ingo Berg
-    */
-    class ParserTester // final
-    {
-    private:
-        // Multiarg callbacks
-        static value_type f1of1(value_type v) { return v;};
-      	
-        static value_type f1of2(value_type v, value_type  ) {return v;};
-        static value_type f2of2(value_type  , value_type v) {return v;};
-
-        static value_type f1of3(value_type v, value_type  , value_type  ) {return v;};
-        static value_type f2of3(value_type  , value_type v, value_type  ) {return v;};
-        static value_type f3of3(value_type  , value_type  , value_type v) {return v;};
-      	
-        static value_type f1of4(value_type v, value_type,   value_type  , value_type  ) {return v;}
-        static value_type f2of4(value_type  , value_type v, value_type  , value_type  ) {return v;}
-        static value_type f3of4(value_type  , value_type,   value_type v, value_type  ) {return v;}
-        static value_type f4of4(value_type  , value_type,   value_type  , value_type v) {return v;}
-
-	      static value_type f1of5(value_type v, value_type,   value_type  , value_type  , value_type  ) { return v; }
-	      static value_type f2of5(value_type  , value_type v, value_type  , value_type  , value_type  ) { return v; }
-	      static value_type f3of5(value_type  , value_type,   value_type v, value_type  , value_type  ) { return v; }
-	      static value_type f4of5(value_type  , value_type,   value_type  , value_type v, value_type  ) { return v; }
-	      static value_type f5of5(value_type  , value_type,   value_type  , value_type  , value_type v) { return v; }
-
-        static value_type Min(value_type a_fVal1, value_type a_fVal2) { return (a_fVal1<a_fVal2) ? a_fVal1 : a_fVal2; }
-  	    static value_type Max(value_type a_fVal1, value_type a_fVal2) { return (a_fVal1>a_fVal2) ? a_fVal1 : a_fVal2; }
-
-        static value_type plus2(value_type v1) { return v1+2; }
-        static value_type times3(value_type v1) { return v1*3; }
-        static value_type sqr(value_type v1) { return v1*v1; }
-        static value_type sign(value_type v) { return -v; }
-        static value_type add(value_type v1, value_type v2) { return v1+v2; }
-        
-        static value_type FirstArg(const value_type* a_afArg, int a_iArgc)
-        {
-          if (!a_iArgc)	
-            throw mu::Parser::exception_type( _T("too few arguments for function FirstArg.") );
-
-          return  a_afArg[0];
-        }
-
-        static value_type LastArg(const value_type* a_afArg, int a_iArgc)
-        {
-          if (!a_iArgc)	
-            throw mu::Parser::exception_type( _T("too few arguments for function LastArg.") );
-
-          return  a_afArg[a_iArgc-1];
-        }
-
-        static value_type Sum(const value_type* a_afArg, int a_iArgc)
-        { 
-          if (!a_iArgc)	
-            throw mu::Parser::exception_type( _T("too few arguments for function sum.") );
-
-          value_type fRes=0;
-          for (int i=0; i<a_iArgc; ++i) fRes += a_afArg[i];
-          return fRes;
-        }
-
-        static value_type Rnd(value_type v)
-        {
-          return (value_type)(1+(v*std::rand()/(RAND_MAX+1.0)));
-        }
-
-        static value_type RndWithString(const char_type*)
-        {
-          return (value_type)( 1 + (1000.0f * std::rand() / (RAND_MAX + 1.0) ) );
-        }
-
-        static value_type Ping()
-        { 
-          return 10; 
-        }
-
-        static value_type ValueOf(const char_type*)      
-        { 
-          return 123; 
-        }
-
-        static value_type StrFun1(const char_type* v1)                               
-        { 
-          int val(0);
-          stringstream_type(v1) >> val;
-          return (value_type)val;
-        }
-
-        static value_type StrFun2(const char_type* v1, value_type v2)                
-        { 
-          int val(0);
-          stringstream_type(v1) >> val;
-          return (value_type)(val + v2);
-        }
-        
-        static value_type StrFun3(const char_type* v1, value_type v2, value_type v3) 
-        { 
-          int val(0);
-          stringstream_type(v1) >> val;
-          return val + v2 + v3;
-        }
-
-        static value_type StrToFloat(const char_type* a_szMsg)
-        {
-          value_type val(0);
-          stringstream_type(a_szMsg) >> val;
-          return val;
-
-//          using namespace std; // atof is for some compilers in std for some not... 
-//          return atof(a_szMsg);
-        }
-
-        // postfix operator callback
-        static value_type Mega(value_type a_fVal)  { return a_fVal * (value_type)1e6; }
-        static value_type Micro(value_type a_fVal) { return a_fVal * (value_type)1e-6; }
-        static value_type Milli(value_type a_fVal) { return a_fVal / (value_type)1e3; }
-
-        static int c_iCount;
-
-	      int TestNames();
-	      int TestSyntax();
-	      int TestMultiArg();
-	      int TestVolatile();
-	      int TestPostFix();
-	      int TestExpression();
-	      int TestInfixOprt();
-	      int TestBinOprt();
-	      int TestVarConst();
-	      int TestInterface();
-	      int TestException();
-        int TestStrArg();
-
-        void Abort() const;
-
-    public:
-        typedef int (ParserTester::*testfun_type)();
-
-	      ParserTester();
-	      void Run();
-
-    private:
-        std::vector<testfun_type> m_vTestFun;
-	      void AddTest(testfun_type a_pFun);
-
-        // Test Double Parser
-        int EqnTest(const string_type& a_str, double a_fRes, bool a_fPass);
-        int ThrowTest(const string_type& a_str, int a_iErrc, bool a_bFail = true);
-
-        // Test Int Parser
-        int EqnTestInt(const string_type& a_str, double a_fRes, bool a_fPass);
-    };
-  } // namespace Test
-} // namespace mu
-
-#endif
-
-
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/include/muParserToken.h
--- a/muParser/include/muParserToken.h	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,451 +0,0 @@
-/*
-                 __________                                      
-    _____   __ __\______   \_____  _______  ______  ____ _______ 
-   /     \ |  |  \|     ___/\__  \ \_  __ \/  ___/_/ __ \\_  __ \
-  |  Y Y  \|  |  /|    |     / __ \_|  | \/\___ \ \  ___/ |  | \/
-  |__|_|  /|____/ |____|    (____  /|__|  /____  > \___  >|__|   
-        \/                       \/            \/      \/        
-  Copyright (C) 2004-2008 Ingo Berg
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy of this 
-  software and associated documentation files (the "Software"), to deal in the Software
-  without restriction, including without limitation the rights to use, copy, modify, 
-  merge, publish, distribute, sublicense, and/or sell copies of the Software, and to 
-  permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in all copies or 
-  substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
-  NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 
-  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
-*/
-
-#ifndef MU_PARSER_TOKEN_H
-#define MU_PARSER_TOKEN_H
-
-#include <cassert>
-#include <string>
-#include <stack>
-#include <vector>
-#include <memory>
-
-#include "muParserError.h"
-#include "muParserCallback.h"
-
-/** \file
-    \brief This file contains the parser token definition.
-*/
-
-namespace mu
-{
-  /** \brief Encapsulation of the data for a single formula token. 
-
-    Formula token implementation. Part of the Math Parser Package.
-    Formula tokens can be either one of the following:
-    <ul>
-      <li>value</li>
-      <li>variable</li>
-      <li>function with numerical arguments</li>
-      <li>functions with a string as argument</li>
-      <li>prefix operators</li>
-      <li>infix operators</li>
-	    <li>binary operator</li>
-    </ul>
-
-   \author (C) 2004 Ingo Berg 
-  */
-  template<typename TBase, typename TString>
-  class ParserToken
-  {
-  public:
-
-      /** \brief Additional token flags. */
-      enum ETokFlags
-	    {
-	      flVOLATILE = 1    ///< Mark a token that depends on a variable or a function that is not conservative
-	    };
-
-  private:
-
-      ECmdCode  m_iCode;  ///< Type of the token; The token type is a constant of type #ECmdCode.
-      ETypeCode m_iType;
-      void  *m_pTok;      ///< Stores Token pointer; not applicable for all tokens
-  	  int  m_iFlags;      ///< Additional flags for the token.
-      int  m_iIdx;        ///< An otional index to an external buffer storing the token data
-      TString m_strTok;   ///< Token string
-      TString m_strVal;   ///< Value for string variables
-      value_type m_fVal;
-      std::auto_ptr<ParserCallback> m_pCallback;
-
-  public:
-
-      //---------------------------------------------------------------------------
-      /** \brief Constructor (default).
-        
-          Sets token to an neutral state of type cmUNKNOWN.
-          \throw nothrow
-          \sa ECmdCode
-      */
-      ParserToken()
-        :m_iCode(cmUNKNOWN)
-        ,m_iType(tpVOID)
-        ,m_pTok(0)
-        ,m_iFlags(0)
-        ,m_iIdx(-1)
-        ,m_strTok()
-        ,m_pCallback()
-      {}
-
-      //------------------------------------------------------------------------------
-      /** \brief Create token from another one.
-      
-          Implemented by calling Assign(...)
-          \throw nothrow
-          \post m_iType==cmUNKNOWN
-          \sa #Assign
-      */
-      ParserToken(const ParserToken &a_Tok)
-      {
-        Assign(a_Tok);
-      }
-      
-      //------------------------------------------------------------------------------
-      /** \brief Assignement operator. 
-      
-          Copy token state from another token and return this.
-          Implemented by calling Assign(...).
-          \throw nothrow
-      */
-      ParserToken& operator=(const ParserToken &a_Tok)
-      {
-        Assign(a_Tok);
-        return *this;
-      }
-
-      //------------------------------------------------------------------------------
-      /** \brief Copy token information from argument.
-      
-          \throw nothrow
-      */
-      void Assign(const ParserToken &a_Tok)
-      {
-        m_iCode = a_Tok.m_iCode;
-        m_pTok = a_Tok.m_pTok;
-        m_iFlags = a_Tok.m_iFlags;
-        m_strTok = a_Tok.m_strTok;
-        m_iIdx = a_Tok.m_iIdx;
-        m_strVal = a_Tok.m_strVal;
-        m_iType = a_Tok.m_iType;
-        m_fVal = a_Tok.m_fVal;
-        // create new callback object if a_Tok has one 
-        m_pCallback.reset(a_Tok.m_pCallback.get() ? a_Tok.m_pCallback->Clone() : 0);
-      }
-
-      //------------------------------------------------------------------------------
-      /** \brief Add additional flags to the token. 
-
-          Flags are currently used to mark volatile (non optimizeable) functions.
-          \sa m_iFlags, ETokFlags    
-      */
-      void AddFlags(int a_iFlags)
-      {
-        m_iFlags |= a_iFlags;
-      }
-
-      //------------------------------------------------------------------------------
-      /** \brief Check if a certain flag ist set. 
-
-          \throw nothrow
-      */
-      bool IsFlagSet(int a_iFlags) const
-      {
-        #if defined(_MSC_VER)
-          #pragma warning( disable : 4800 )
-        #endif
-          
-        return (bool)(m_iFlags & a_iFlags);
-
-        #if defined(_MSC_VER)
-          #pragma warning( default : 4800 ) // int: Variable set to boolean value (may degrade performance)
-        #endif
-      }
-
-      //------------------------------------------------------------------------------
-      /** \brief Assign a token type. 
-
-        Token may not be of type value, variable or function. Those have seperate set functions. 
-
-        \pre [assert] a_iType!=cmVAR
-        \pre [assert] a_iType!=cmVAL
-        \pre [assert] a_iType!=cmFUNC
-        \post m_fVal = 0
-        \post m_pTok = 0
-      */
-      ParserToken& Set(ECmdCode a_iType, const TString &a_strTok=TString())
-      {
-        // The following types cant be set this way, they have special Set functions
-        assert(a_iType!=cmVAR);
-        assert(a_iType!=cmVAL);
-        assert(a_iType!=cmFUNC);
-
-        m_iCode = a_iType;
-        m_iType = tpVOID;
-        m_pTok = 0;
-        m_iFlags = 0;
-        m_strTok = a_strTok;
-        m_iIdx = -1;
-
-        return *this;
-      }
-
-      //------------------------------------------------------------------------------
-      /** \brief Set Callback type. */
-      ParserToken& Set(const ParserCallback &a_pCallback, const TString &a_sTok)
-      {
-        assert(a_pCallback.GetAddr());
-
-        m_iCode = a_pCallback.GetCode();
-        m_iType = tpVOID;
-        m_strTok = a_sTok;
-        m_pCallback.reset(new ParserCallback(a_pCallback));
-
-        m_pTok = 0;
-        m_iFlags = 0;
-        m_iIdx = -1;
-        
-        if (!m_pCallback->IsOptimizable())
-          AddFlags(flVOLATILE);
-
-        return *this;
-      }
-
-      //------------------------------------------------------------------------------
-      /** \brief Make this token a value token. 
-      
-          Member variables not necessary for value tokens will be invalidated.
-          \throw nothrow
-      */
-      ParserToken& SetVal(TBase a_fVal, const TString &a_strTok=TString())
-      {
-        m_iCode = cmVAL;
-        m_iType = tpDBL;
-        m_fVal = a_fVal;
-        m_iFlags = 0;
-        m_strTok = a_strTok;
-        m_iIdx = -1;
-        
-        m_pTok = 0;
-        m_pCallback.reset(0);
-
-        return *this;
-      }
-
-      //------------------------------------------------------------------------------
-      /** \brief make this token a variable token. 
-      
-          Member variables not necessary for variable tokens will be invalidated.
-          \throw nothrow
-      */
-      ParserToken& SetVar(TBase *a_pVar, const TString &a_strTok)
-      {
-        m_iCode = cmVAR;
-        m_iType = tpDBL;
-        m_iFlags = 0;
-        m_strTok = a_strTok;
-        m_iIdx = -1;
-        m_pTok = (void*)a_pVar;
-        m_pCallback.reset(0);
-
-        AddFlags(ParserToken::flVOLATILE);
-        return *this;
-      }
-
-      //------------------------------------------------------------------------------
-      /** \brief Make this token a variable token. 
-      
-          Member variables not necessary for variable tokens will be invalidated.
-          \throw nothrow
-      */
-      ParserToken& SetString(const TString &a_strTok, std::size_t a_iSize)
-      {
-        m_iCode = cmSTRING;
-        m_iType = tpSTR;
-        m_iFlags = 0;
-        m_strTok = a_strTok;
-        m_iIdx = static_cast<int>(a_iSize);
-
-        m_pTok = 0;
-        m_pCallback.reset(0);
-
-        AddFlags(ParserToken::flVOLATILE);
-        return *this;
-      }
-
-      //------------------------------------------------------------------------------
-      /** \brief Set an index associated with the token related data. 
-      
-          In cmSTRFUNC - This is the index to a string table in the main parser.
-          \param a_iIdx The index the string function result will take in the bytecode parser.
-          \throw exception_type if #a_iIdx<0 or #m_iType!=cmSTRING
-      */
-      void SetIdx(int a_iIdx)
-      {
-        if (m_iCode!=cmSTRING || a_iIdx<0)
-	        throw ParserError(ecINTERNAL_ERROR);
-        
-        m_iIdx = a_iIdx;
-      }
-
-      //------------------------------------------------------------------------------
-      /** \brief Return Index associated with the token related data. 
-      
-          In cmSTRFUNC - This is the index to a string table in the main parser.
-
-          \throw exception_type if #m_iIdx<0 or #m_iType!=cmSTRING
-          \return The index the result will take in the Bytecode calculatin array (#m_iIdx).
-      */
-      int GetIdx() const
-      {
-        if (m_iIdx<0 || m_iCode!=cmSTRING )
-          throw ParserError(ecINTERNAL_ERROR);
-
-        return m_iIdx;
-      }
-
-      //------------------------------------------------------------------------------
-      /** \brief Return the token type.
-      
-          \return #m_iType
-          \throw nothrow
-      */
-      ECmdCode GetCode() const
-      {
-        if (m_pCallback.get())
-        {
-          return m_pCallback->GetCode();
-        }
-        else
-        {
-          return m_iCode;
-        }
-      }
-
-      //------------------------------------------------------------------------------
-      ETypeCode GetType() const
-      {
-        if (m_pCallback.get())
-        {
-          return m_pCallback->GetType();
-        }
-        else
-        {
-          return m_iType;
-        }
-      }
-      
-      //------------------------------------------------------------------------------
-      int GetPri() const
-      {
-        if ( !m_pCallback.get())
-	        throw ParserError(ecINTERNAL_ERROR);
-            
-        if ( m_pCallback->GetCode()!=cmOPRT_BIN && m_pCallback->GetCode()!=cmOPRT_INFIX)
-	        throw ParserError(ecINTERNAL_ERROR);
-
-        return m_pCallback->GetPri();
-      }
-
-      //------------------------------------------------------------------------------
-      EOprtAssociativity GetAssociativity() const
-      {
-        if (m_pCallback.get()==NULL || m_pCallback->GetCode()!=cmOPRT_BIN)
-	        throw ParserError(ecINTERNAL_ERROR);
-
-        return m_pCallback->GetAssociativity();
-      }
-
-      //------------------------------------------------------------------------------
-      /** \brief Return the address of the callback function assoziated with
-                 function and operator tokens.
-
-          \return The pointer stored in #m_pTok.
-          \throw exception_type if token type is non of:
-                 <ul>
-                   <li>cmFUNC</li>
-                   <li>cmSTRFUNC</li>
-                   <li>cmPOSTOP</li>
-                   <li>cmINFIXOP</li>
-                   <li>cmOPRT_BIN</li>
-                 </ul>
-          \sa ECmdCode
-      */
-      void* GetFuncAddr() const
-      {
-        return (m_pCallback.get()) ? m_pCallback->GetAddr() : 0;
-      }
-
-      //------------------------------------------------------------------------------
-      /** \biref Get value of the token.
-        
-          Only applicable to variable and value tokens.
-          \throw exception_type if token is no value/variable token.
-      */
-      TBase GetVal() const
-      {
-        switch (m_iCode)
-        {
-          case cmVAL:  return m_fVal;
-          case cmVAR:  return *((TBase*)m_pTok);
-          default:     throw ParserError(ecVAL_EXPECTED);
-        }
-      }
-
-      //------------------------------------------------------------------------------
-      /** \brief Get address of a variable token.
-
-        Valid only if m_iType==CmdVar.
-        \throw exception_type if token is no variable token.
-      */
-      TBase* GetVar() const
-      {
-        if (m_iCode!=cmVAR)
-	        throw ParserError(ecINTERNAL_ERROR);
-
-        return (TBase*)m_pTok;
-      }
-
-      //------------------------------------------------------------------------------
-      /** \brief Return the number of function arguments. 
-
-        Valid only if m_iType==CmdFUNC.
-      */
-      int GetArgCount() const
-      {
-        assert(m_pCallback.get());
-
-        if (!m_pCallback->GetAddr())
-	        throw ParserError(ecINTERNAL_ERROR);
-
-        return m_pCallback->GetArgc();
-      }
-
-      //------------------------------------------------------------------------------
-      /** \brief Return the token identifier. 
-          
-          If #m_iType is cmSTRING the token identifier is the value of the string argument
-          for a string function.
-          \return #m_strTok
-          \throw nothrow
-          \sa m_strTok
-      */
-      const TString& GetAsString() const
-      {
-        return m_strTok;
-      }
-  };
-} // namespace mu
-
-#endif
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/include/muParserTokenReader.h
--- a/muParser/include/muParserTokenReader.h	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,157 +0,0 @@
-/*
-                 __________                                      
-    _____   __ __\______   \_____  _______  ______  ____ _______ 
-   /     \ |  |  \|     ___/\__  \ \_  __ \/  ___/_/ __ \\_  __ \
-  |  Y Y  \|  |  /|    |     / __ \_|  | \/\___ \ \  ___/ |  | \/
-  |__|_|  /|____/ |____|    (____  /|__|  /____  > \___  >|__|   
-        \/                       \/            \/      \/        
-  Copyright (C) 2004-2010 Ingo Berg
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy of this 
-  software and associated documentation files (the "Software"), to deal in the Software
-  without restriction, including without limitation the rights to use, copy, modify, 
-  merge, publish, distribute, sublicense, and/or sell copies of the Software, and to 
-  permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in all copies or 
-  substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
-  NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 
-  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
-*/
-
-#ifndef MU_PARSER_TOKEN_READER_H
-#define MU_PARSER_TOKEN_READER_H
-
-#include <cassert>
-#include <cstdio>
-#include <cstring>
-#include <map>
-#include <memory>
-#include <stack>
-#include <string>
-
-#include "muParserDef.h"
-#include "muParserToken.h"
-
-/** \file
-    \brief This file contains the parser token reader definition.
-*/
-
-
-namespace mu
-{
-  // Forward declaration
-  class ParserBase;
-
-  /** \brief Token reader for the ParserBase class.
-
-  */
-  class ParserTokenReader 
-  {
-  private:
-
-      typedef ParserToken<value_type, string_type> token_type;
-
-  public:
-
-      ParserTokenReader(ParserBase *a_pParent);
-      ParserTokenReader* Clone(ParserBase *a_pParent) const;
-
-      void AddValIdent(identfun_type a_pCallback);
-      void SetVarCreator(facfun_type a_pFactory, void *pUserData);
-      void SetFormula(const string_type &a_strFormula);
-      void SetArgSep(char_type cArgSep);
-
-      int GetPos() const;
-      const string_type& GetExpr() const;
-      const varmap_type& GetUsedVar() const;
-      char_type GetArgSep() const;
-
-      void IgnoreUndefVar(bool bIgnore);
-      void ReInit();
-      token_type ReadNextToken();
-
-  private:
-
-      /** \brief Syntax codes. 
-  	
-	        The syntax codes control the syntax check done during the first time parsing of 
-          the expression string. They are flags that indicate which tokens are allowed next
-          if certain tokens are identified.
-  	  */
-      enum ESynCodes
-      {
-        noBO      = 1 << 0,  ///< to avoid i.e. "cos(7)(" 
-        noBC      = 1 << 1,  ///< to avoid i.e. "sin)" or "()"
-        noVAL     = 1 << 2,  ///< to avoid i.e. "tan 2" or "sin(8)3.14"
-        noVAR     = 1 << 3,  ///< to avoid i.e. "sin a" or "sin(8)a"
-        noARG_SEP = 1 << 4,  ///< to avoid i.e. ",," or "+," ...
-        noFUN     = 1 << 5,  ///< to avoid i.e. "sqrt cos" or "(1)sin"	
-        noOPT     = 1 << 6,  ///< to avoid i.e. "(+)"
-        noPOSTOP  = 1 << 7,  ///< to avoid i.e. "(5!!)" "sin!"
-	      noINFIXOP = 1 << 8,  ///< to avoid i.e. "++4" "!!4"
-        noEND     = 1 << 9,  ///< to avoid unexpected end of formula
-        noSTR     = 1 << 10, ///< to block numeric arguments on string functions
-        noASSIGN  = 1 << 11, ///< to block assignement to constant i.e. "4=7"
-        noANY     = ~0       ///< All of he above flags set
-      };	
-
-      ParserTokenReader(const ParserTokenReader &a_Reader);
-      ParserTokenReader& operator=(const ParserTokenReader &a_Reader);
-      void Assign(const ParserTokenReader &a_Reader);
-
-      void SetParent(ParserBase *a_pParent);
-      int ExtractToken(const char_type *a_szCharSet, 
-                       string_type &a_strTok, 
-                       int a_iPos) const;
-      int ExtractOperatorToken(string_type &a_sTok, int a_iPos) const;
-
-      bool IsBuiltIn(token_type &a_Tok);
-      bool IsArgSep(token_type &a_Tok);
-      bool IsEOF(token_type &a_Tok);
-      bool IsInfixOpTok(token_type &a_Tok);
-      bool IsFunTok(token_type &a_Tok);
-      bool IsPostOpTok(token_type &a_Tok);
-      bool IsOprt(token_type &a_Tok);
-      bool IsValTok(token_type &a_Tok);
-      bool IsVarTok(token_type &a_Tok);
-      bool IsStrVarTok(token_type &a_Tok);
-      bool IsUndefVarTok(token_type &a_Tok);
-      bool IsString(token_type &a_Tok);
-      void Error(EErrorCodes a_iErrc, 
-                 int a_iPos = -1, 
-                 const string_type &a_sTok = string_type() ) const;
-
-      token_type& SaveBeforeReturn(const token_type &tok);
-
-      ParserBase *m_pParser;
-      string_type m_strFormula;
-      int  m_iPos;
-      int  m_iSynFlags;
-      bool m_bIgnoreUndefVar;
-
-      const funmap_type *m_pFunDef;
-      const funmap_type *m_pPostOprtDef;
-      const funmap_type *m_pInfixOprtDef;
-      const funmap_type *m_pOprtDef;
-      const valmap_type *m_pConstDef;
-      const strmap_type *m_pStrVarDef;
-      varmap_type *m_pVarDef;  ///< The only non const pointer to parser internals
-      facfun_type m_pFactory;
-      void *m_pFactoryData;
-      std::vector<identfun_type> m_vIdentFun; ///< Value token identification function
-      varmap_type m_UsedVar;
-      value_type m_fZero;      ///< Dummy value of zero, referenced by undefined variables
-      int m_iBrackets;
-      token_type m_lastTok;
-      char_type m_cArgSep;     ///< The character used for separating function arguments
-  };
-} // namespace mu
-
-#endif
-
-
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/lib/Readme.txt
--- a/muParser/lib/Readme.txt	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-Here goes the libraries (both static and shared) for this component.
\ No newline at end of file
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/samples/example1/Example1.cpp
--- a/muParser/samples/example1/Example1.cpp	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,467 +0,0 @@
-//---------------------------------------------------------------------------
-//
-//                 __________                                      
-//    _____   __ __\______   \_____  _______  ______  ____ _______ 
-//   /     \ |  |  \|     ___/\__  \ \_  __ \/  ___/_/ __ \\_  __ \ 
-//  |  Y Y  \|  |  /|    |     / __ \_|  | \/\___ \ \  ___/ |  | \/
-//  |__|_|  /|____/ |____|    (____  /|__|  /____  > \___  >|__|   
-//        \/                       \/            \/      \/        
-//  (C) 2010 Ingo Berg
-//
-//  example1.cpp - using the parser as a static library
-//
-//---------------------------------------------------------------------------
-
-#include "muParserTest.h"
-
-#if defined(_WIN32) && defined(_DEBUG)
-  #define _CRTDBG_MAP_ALLOC
-  #include <stdlib.h>
-  #include <crtdbg.h>
-  #define CREATE_LEAKAGE_REPORT
-#endif
-
-/** \brief This macro will enable mathematical constants like M_PI. */
-#define _USE_MATH_DEFINES		
-
-#include <cstdlib>
-#include <cstring>
-#include <cmath>
-#include <string>
-#include <iostream>
-#include <locale>
-#include <limits>
-#include <ios> 
-#include <iomanip>
-
-#include "muParser.h"
-#include "muParserInt.h"
-//#include "muParserComplex.h"
-
-#if defined( USINGDLL ) && defined( _WIN32 )
-#error This sample can be used only with STATIC builds of muParser (on win32)
-#endif
-
-using namespace std;
-using namespace mu;
-
-
-#if defined(CREATE_LEAKAGE_REPORT)
-
-// Dumping memory leaks in the destructor of the static guard
-// guarantees i won't get false positives from the ParserErrorMsg 
-// class wich is a singleton with a static instance.
-struct DumpLeaks
-{
- ~DumpLeaks()
-  {
-    _CrtDumpMemoryLeaks();
-  }
-} static LeakDumper;
-
-#endif
-
-// Operator callback functions
-value_type Milli(value_type a_fVal) { return a_fVal * (value_type)1e-3; }
-value_type Rnd(value_type v) { return v*std::rand()/(value_type)(RAND_MAX+1.0); }
-value_type Not(value_type v) { return v==0; }
-value_type Add(value_type v1, value_type v2) { return v1+v2; }
-value_type Mul(value_type v1, value_type v2) { return v1*v2; }
-value_type Noop(value_type) { return 0; }
-
-//---------------------------------------------------------------------------
-value_type Or(value_type v1, value_type v2)
-{
-  return v1!=1 || v2!=1;
-}
-
-//---------------------------------------------------------------------------
-value_type StrFun2(const char_type *v1, value_type v2,value_type v3) 
-{ 
-  mu::console() << v1 << std::endl;
-  return v2+v3; 
-}
-
-//---------------------------------------------------------------------------
-value_type Ping() 
-{ 
-  mu::console() << "ping\n"; return 0; 
-}
-
-//---------------------------------------------------------------------------
-mu::value_type SampleQuery(const char_type *szMsg) 
-{
-  if (szMsg) 
-    mu::console() << szMsg << std::endl;
-
-  return 999;
-};
-
-//---------------------------------------------------------------------------
-// Factory function for creating new parser variables
-// This could as well be a function performing database queries.
-value_type* AddVariable(const char_type *a_szName, void *a_pUserData)
-{
-  // I don't want dynamic allocation here, so i used this static buffer
-  // If you want dynamic allocation you must allocate all variables dynamically
-  // in order to delete them later on. Or you find other ways to keep track of 
-  // variables that have been created implicitely.
-  static value_type afValBuf[100];  
-  static int iVal = 0;          
-
-  mu::console() << _T("Generating new variable \"") 
-                << a_szName << _T("\" (slots left: ")
-                << 99-iVal << _T(")")
-                << _T(" User data pointer is:") 
-                << std::hex << a_pUserData <<endl;
-
-  afValBuf[iVal] = 0;
-  if (iVal>=99)
-    throw mu::ParserError( _T("Variable buffer overflow.") );
-
-  return &afValBuf[iVal++];
-}
-
-//---------------------------------------------------------------------------
-void Splash()
-{
-  mu::console() << _T("                 __________                                       \n");
-  mu::console() << _T("    _____   __ __\\______   \\_____  _______  ______  ____ _______\n");
-  mu::console() << _T("   /     \\ |  |  \\|     ___/\\__  \\ \\_  __ \\/  ___/_/ __ \\\\_  __ \\ \n");
-  mu::console() << _T("  |  Y Y  \\|  |  /|    |     / __ \\_|  | \\/\\___ \\ \\  ___/ |  | \\/ \n");
-  mu::console() << _T("  |__|_|  /|____/ |____|    (____  /|__|  /____  > \\___  >|__|    \n");
-  mu::console() << _T("        \\/                       \\/            \\/      \\/         \n");
-  mu::console() << _T("  Version ") << Parser().GetVersion() << _T("\n");
-  mu::console() << _T("  (C) 2010 Ingo Berg\n");
-}
-
-//---------------------------------------------------------------------------
-void SelfTest()
-{
-  mu::console() << _T( "-----------------------------------------------------------\n");
-  mu::console() << _T( "Configuration:\n\n");
-
-#if defined(MUP_MATH_EXCEPTIONS)
-  mu::console() << _T( "- Math exceptions enabled\n");
-#else
-  mu::console() << _T( "- Math exceptions disabled\n");
-#endif
-#if defined(_DEBUG)
-  mu::console() << _T( "- DEBUG build\n");
-#else
-  mu::console() << _T( "- RELEASE build\n");
-#endif
-
-#if defined(_UNICODE)
-  mu::console() << _T( "- UNICODE build\n");
-#else  
-  mu::console() << _T( "- ASCII build\n");
-#endif
-
-  mu::console() << _T( "-----------------------------------------------------------\n");
-  mu::console() << _T( "Running test suite:\n\n");
-
-#if !defined(MUP_DUMP_STACK) && !defined(MUP_DUMP_CMDCODE)
-  mu::Test::ParserTester pt;
-  pt.Run();
-#endif
-
-  mu::console() << _T( "-----------------------------------------------------------\n");
-  mu::console() << _T( "Commands:\n\n");
-  mu::console() << _T( "  list var     - list parser variables\n");
-  mu::console() << _T( "  list exprvar - list expression variables\n");
-  mu::console() << _T( "  list const   - list all numeric parser constants\n");
-  mu::console() << _T( "  locale de    - switch to german locale\n");
-  mu::console() << _T( "  locale en    - switch to english locale\n");
-  mu::console() << _T( "  locale reset - reset locale\n");
-  mu::console() << _T( "  quit         - exits the parser\n");
-  mu::console() << _T( "\nConstants:\n\n");
-  mu::console() << _T( "  \"_e\"   2.718281828459045235360287\n");
-  mu::console() << _T( "  \"_pi\"  3.141592653589793238462643\n");
-  mu::console() << _T( "-----------------------------------------------------------\n");
-}
-
-////---------------------------------------------------------------------------
-//void CheckLocale()
-//{
-//  // Local names:
-//  // "C" - the classic C locale
-//  // "de_DE" - not for Windows?
-//  // "en_US" - not for Windows?
-//  // "German_germany" - For MSVC8
-//  try
-//  {
-//    std::locale loc("German_germany");
-//    console() << _T("Locale settings:\n");
-//    console() << _T("  Decimal point:  '") << std::use_facet<numpunct<char_type> >(loc).decimal_point() << "'\n"; 
-//    console() << _T("  Thousands sep:  '") << std::use_facet<numpunct<char_type> >(loc).thousands_sep() << "'\n"; 
-//    console() << _T("  Grouping:       \"") << std::use_facet<numpunct<char_type> >(loc).grouping() << "\"\n"; 
-//    console() << _T("  True is named:  \"") << std::use_facet<numpunct<char_type> >(loc).truename() << "\"\n"; 
-//    console() << _T("  False is named: \"") << std::use_facet<numpunct<char_type> >(loc).falsename() << "\"\n"; 
-//    console() << _T("-----------------------------------------------------------\n");
-//  }
-//  catch(...)
-//  {
-//    console() << _T("Locale settings:\n");
-//    console() << _T("  invalid locale name\n");
-//    console() << _T("-----------------------------------------------------------\n");
-//  }
-//}
-
-//---------------------------------------------------------------------------
-void ListVar(const mu::ParserBase &parser)
-{
-  // Query the used variables (must be done after calc)
-  mu::varmap_type variables = parser.GetVar();
-  if (!variables.size())
-    return;
-
-  cout << "\nParser variables:\n";
-  cout <<   "-----------------\n";
-  cout << "Number: " << (int)variables.size() << "\n";
-  varmap_type::const_iterator item = variables.begin();
-  for (; item!=variables.end(); ++item)
-    mu::console() << _T("Name: ") << item->first << _T("   Address: [0x") << item->second << _T("]\n");
-}
-
-//---------------------------------------------------------------------------
-void ListConst(const mu::ParserBase &parser)
-{
-  mu::console() << _T("\nParser constants:\n");
-  mu::console() << _T("-----------------\n");
-
-  mu::valmap_type cmap = parser.GetConst();
-  if (!cmap.size())
-  {
-    mu::console() << _T("Expression does not contain constants\n");
-  }
-  else
-  {
-    valmap_type::const_iterator item = cmap.begin();
-    for (; item!=cmap.end(); ++item)
-      mu::console() << _T("  ") << item->first << _T(" =  ") << item->second << _T("\n");
-  }
-}
-
-//---------------------------------------------------------------------------
-void ListExprVar(const mu::ParserBase &parser)
-{
-  string_type sExpr = parser.GetExpr();
-  if (sExpr.length()==0)
-  {
-    cout << _T("Expression string is empty\n");
-    return;
-  }
-
-  // Query the used variables (must be done after calc)
-  mu::console() << _T("\nExpression variables:\n");
-  mu::console() <<   _T("---------------------\n");
-  mu::console() << _T("Expression: ") << parser.GetExpr() << _T("\n");
-
-  varmap_type variables = parser.GetUsedVar();
-  if (!variables.size())
-  {
-    mu::console() << _T("Expression does not contain variables\n");
-  }
-  else
-  {
-    mu::console() << _T("Number: ") << (int)variables.size() << _T("\n");
-    mu::varmap_type::const_iterator item = variables.begin();
-    for (; item!=variables.end(); ++item)
-      mu::console() << _T("Name: ") << item->first << _T("   Address: [0x") << item->second << _T("]\n");
-  }
-}
-
-//---------------------------------------------------------------------------
-/** \brief Check for external keywords.
-*/
-int CheckKeywords(const mu::char_type *a_szLine, mu::Parser &a_Parser)
-{
-  string_type sLine(a_szLine);
-
-  if ( sLine == _T("quit") )
-  {
-    return -1;
-  }
-  else if ( sLine == _T("list var") )
-  {
-    ListVar(a_Parser);
-    return 1;
-  }
-  else if ( sLine == _T("list const") )
-  {
-    ListConst(a_Parser);
-    return 1;
-  }
-  else if ( sLine == _T("list exprvar") )
-  {
-    ListExprVar(a_Parser);
-    return 1;
-  }
-  else if ( sLine == _T("list const") )
-  {
-    ListConst(a_Parser);
-    return 1;
-  }
-  else if ( sLine == _T("locale de") )
-  {
-    mu::console() << _T("Setting german locale: ArgSep=';' DecSep=',' ThousandsSep='.'\n");
-    a_Parser.SetArgSep(';');
-    a_Parser.SetDecSep(',');
-    a_Parser.SetThousandsSep('.');
-    return 1;
-  }
-  else if ( sLine == _T("locale en") )
-  {
-    mu::console() << _T("Setting english locale: ArgSep=',' DecSep='.' ThousandsSep=''\n");
-    a_Parser.SetArgSep(',');
-    a_Parser.SetDecSep('.');
-    a_Parser.SetThousandsSep();
-    return 1;
-  }
-  else if ( sLine == _T("locale reset") )
-  {
-    mu::console() << _T("Resetting locale\n");
-    a_Parser.ResetLocale();
-    return 1;
-  }
-
-  return 0;
-}
-
-//---------------------------------------------------------------------------
-void Calc()
-{
-  mu::Parser  parser;
-  mu::ParserInt int_parser;
-//  mu::ParserComplex cmplx_parser;
-
-  // Change locale settings if necessary
-  // function argument separator:   sum(2;3;4) vs. sum(2,3,4)
-  // decimal separator:             3,14       vs. 3.14
-  // thousands separator:           1000000    vs 1.000.000
-//#define USE_GERMAN_LOCALE
-#ifdef  USE_GERMAN_LOCALE
-  parser.SetArgSep(';');
-  parser.SetDecSep(',');
-  parser.SetThousandsSep('.');
-#else
-  // this is the default, so i it's commented:
-  //parser.SetArgSep(',');
-  //parser.SetDecSep('.');
-  //parser.SetThousandsSep('');
-#endif
-
-  // Add some variables
-  value_type  vVarVal[] = { 1, 2 }; // Values of the parser variables
-//  parser.DefineArrayVar(_T("va"), vVarVal, 2);
-  parser.DefineVar(_T("a"), &vVarVal[0]);  // Assign Variable names and bind them to the C++ variables
-  parser.DefineVar(_T("b"), &vVarVal[1]);
-  parser.DefineStrConst(_T("strBuf"), _T("hello world") );
-
-  // Add user defined unary operators
-  parser.DefinePostfixOprt(_T("{m}"), Milli);
-  parser.DefineInfixOprt(_T("!"), Not);
-
-  parser.DefineFun(_T("query"), SampleQuery, false);
-  parser.DefineFun(_T("rnd"), Rnd, false);     // Add an unoptimizeable function
-  parser.DefineFun(_T("strfun2"), StrFun2, false); // Add an unoptimizeable function
-  parser.DefineFun(_T("ping"), Ping, false);
-
-  parser.DefineOprt(_T("add"), Add, 0);
-  parser.DefineOprt(_T("mul"), Mul, 1);
-
-#ifdef _DEBUG
-  parser.EnableOptimizer(false);
-#endif
-
-  // Define the variable factory
-  parser.SetVarFactory(AddVariable, &parser);
-
-  for(;;)
-  {
-    try
-    {
-      string_type sLine;
-      std::getline(mu::console_in(), sLine);
-
-      switch (CheckKeywords(sLine.c_str(), parser))
-      {
-      case  0: break;
-      case  1: continue;
-      case -1: return;
-      }
-
-//#define MUP_EXAMPLE_INT_PARSER
-//#define MUP_EXAMPLE_COMPLEX_PARSER
-#ifdef MUP_EXAMPLE_INT_PARSER
-      int_parser.SetExpr(sLine);
-      mu::console() << int_parser.Eval() << "\n";
-      mu::console() << int_parser.Eval() << "\n";
-#elif defined MUP_EXAMPLE_COMPLEX_PARSER
-      cmplx_parser.SetExpr(sLine);
-      mu::console() << cmplx_parser.Eval() << "\n";
-#else
-
-      if (!sLine.length())
-        continue;
-
-      parser.SetExpr(sLine);
-
-      mu::console() << std::setprecision(12);
-
-      // The first call to eval implicitely creates the bytecode, and resets
-      // an internal pointer to the bytecode parsing function. Next time you call Eval
-      // the bytecode is used automatically!
-      mu::console() << "Parsing from string (slow):   " << parser.Eval() << "\n";
-
-      // the second call automatically uses the bytecode for calculation, no interaction needed
-      mu::console() << "Parsing from bytecode (fast): " << parser.Eval() << "\n";
-//      mu::console() << parser.GetExpr() << "\n";
-#endif
-    }
-    catch(mu::Parser::exception_type &e)
-    {
-      mu::console() << _T("\nError:\n");
-      mu::console() << _T("------\n");
-      mu::console() << _T("Message:     ")   << e.GetMsg()   << _T("\n");
-      mu::console() << _T("Expression:  \"") << e.GetExpr()  << _T("\"\n");
-      mu::console() << _T("Token:       \"") << e.GetToken()    << _T("\"\n");
-      mu::console() << _T("Position:    ")   << (int)e.GetPos() << _T("\n");
-      mu::console() << _T("Errc:        ")   << std::dec << e.GetCode() << _T("\n");
-    }
-  } // while running
-}
-
-//---------------------------------------------------------------------------
-int main(int, char**)
-{
-  Splash();
-  SelfTest();
-//  CheckLocale();
-//  CheckDiff();
-
-  mu::console() << _T("Enter an expression or a command:\n");
-
-  try
-  {
-    Calc();
-  }
-  catch(Parser::exception_type &e)
-  {
-    // Only erros raised during the initialization will end up here
-    // formula related errors are treated in Calc()
-    console() << _T("Initialization error:  ") << e.GetMsg() << endl;
-    console() << _T("aborting...") << endl;
-    string_type sBuf;
-    console_in() >> sBuf;
-  }
-  catch(std::exception & /*exc*/)
-  {
-    // there is no unicode compliant way to query exc.what()
-    // so i'll leave it for this example.
-    console() << _T("aborting...\n");
-  }
-
-  return 0;
-}
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/samples/example2/Readme.txt
--- a/muParser/samples/example2/Readme.txt	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-
-                 __________
-    _____   __ __\______   \_____  _______  ______  ____ _______
-   /     \ |  |  \|     ___/\__  \ \_  __ \/  ___/_/ __ \\_  __ \
-  |  Y Y  \|  |  /|    |     / __ \_|  | \/\___ \ \  ___/ |  | \/
-  |__|_|  /|____/ |____|    (____  /|__|  /____  > \___  >|__|
-        \/                       \/            \/      \/
-
-  Copyright (C) 2010
-  Ingo Berg
-
-
-This sample demonstrates using muParsers C-interface. The C-Interface
-is usefull when interfacing muParser from different languages such
-as C#. This sample is intended for use with the MS-Windows OS.
-
-You may need to copy the muparser.dll file from the ..\..\lib 
-folder in this directory in order to run this sample.
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/samples/example2/example2.c
--- a/muParser/samples/example2/example2.c	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,355 +0,0 @@
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "muParserDLL.h"
-
-#define PARSER_CONST_PI  3.141592653589793238462643
-#define PARSER_CONST_E   2.718281828459045235360287
-#define PARSER_MAXVARS		10
-
-
-//---------------------------------------------------------------------------
-// Callbacks for postfix operators
-double Mega(double a_fVal) 
-{ 
-  return a_fVal * 1.0e6; 
-}
-
-double Milli(double a_fVal) 
-{
-  return a_fVal / 1.0e3; 
-}
-
-double ZeroArg()
-{
-  printf("i'm a function without arguments.\n");
-  return 123;
-}
-
-//---------------------------------------------------------------------------
-// Callbacks for infix operators
-double Not(double v) { return v==0; }
-
-//---------------------------------------------------------------------------
-// Function callbacks
-double Rnd(double v) { return v * rand() / (double)(RAND_MAX+1.0); }
-
-double SampleQuery(const char *szMsg) 
-{
-  if (szMsg) 
-    printf("%s\n", szMsg);
-
-  return 999;
-}
-
-double Sum(const double *a_afArg, int a_iArgc)
-{ 
-  double fRes=0;
-  int i=0;
-
-  for (i=0; i<a_iArgc; ++i) 
-    fRes += a_afArg[i];
-
-  return fRes;
-}
-
-//---------------------------------------------------------------------------
-// Binarty operator callbacks
-muFloat_t Add(muFloat_t v1, muFloat_t v2) 
-{ 
-  return v1+v2; 
-}
-
-muFloat_t Mul(muFloat_t v1, muFloat_t v2) 
-{ 
-  return v1*v2; 
-}
-
-//---------------------------------------------------------------------------
-// Factory function for creating new parser variables
-// This could as well be a function performing database queries.
-muFloat_t* AddVariable(const muChar_t* a_szName, void *pUserData)
-{
-  static double afValBuf[PARSER_MAXVARS];  // I don't want dynamic allocation here
-  static int iVal = 0;                     // so i used this buffer
-
-  printf("Generating new variable \"%s\" (slots left: %d)\n", a_szName, PARSER_MAXVARS-iVal);
-
-  afValBuf[iVal] = 0;
-  if (iVal>=PARSER_MAXVARS-1) 
-  {
-     printf("Variable buffer overflow.");
-     return NULL;
-  }
-
-  return &afValBuf[iVal++];
-}
-
-//---------------------------------------------------------------------------
-void Intro(muParserHandle_t hParser)
-{
-  printf("                 __________                                       \n");
-  printf("    _____   __ __\\______   \\_____  _______  ______  ____ _______\n");
-  printf("   /     \\ |  |  \\|     ___/\\__  \\ \\_  __ \\/  ___/_/ __ \\\\_  __ \\ \n");
-  printf("  |  Y Y  \\|  |  /|    |     / __ \\_|  | \\/\\___ \\ \\  ___/ |  | \\/ \n");
-  printf("  |__|_|  /|____/ |____|    (____  /|__|  /____  > \\___  >|__|    \n");
-  printf("        \\/                       \\/            \\/      \\/         \n");
-  printf("  Version %s (DLL)\n", mupGetVersion(hParser));
-  printf("  (C) 2010 Ingo Berg\n");
-  printf("---------------------------------------\n");
-  printf("Commands:\n");
-  printf("  list var     - list parser variables\n");
-  printf("  list exprvar - list expression variables\n");
-  printf("  list const   - list all numeric parser constants\n");
-  printf("  locale de    - switch to german locale\n");
-  printf("  locale en    - switch to english locale\n");
-  printf("  locale reset - reset locale\n");
-  printf("  quit         - exits the parser\n\n");
-  printf("Constants:\n");
-  printf("  \"_e\"   2.718281828459045235360287\n");
-  printf("  \"_pi\"  3.141592653589793238462643\n");
-  printf("---------------------------------------\n");
-  printf("Please enter a formula:\n");
-}
-
-//---------------------------------------------------------------------------
-// Callback function for parser errors
-void OnError(muParserHandle_t hParser)
-{
-  printf("\nError:\n");
-  printf("------\n");
-  printf("Message:  \"%s\"\n", mupGetErrorMsg(hParser));
-  printf("Token:    \"%s\"\n", mupGetErrorToken(hParser));
-  printf("Position: %d\n", mupGetErrorPos(hParser));
-  printf("Errc:     %d\n", mupGetErrorCode(hParser));
-}
-
-//---------------------------------------------------------------------------
-void ListVar(muParserHandle_t a_hParser)
-{
-  int iNumVar = mupGetVarNum(a_hParser);
-  int i = 0;
-
-  if (iNumVar==0)
-  {
-    printf("No variables defined\n");
-    return;
-  }
-
-  printf("\nExpression variables:\n");
-  printf("---------------------\n");
-  printf("Number: %d\n", iNumVar);
-  
-  for (i=0; i<iNumVar; ++i)
-  {
-    const muChar_t* szName = 0;
-    muFloat_t* pVar = 0;
-
-    mupGetVar(a_hParser, i, &szName, &pVar);
-    printf("Name: %s    Address: [0x%x]\n", szName, (long long)pVar);
-  }
-}
-
-//---------------------------------------------------------------------------
-void ListExprVar(muParserHandle_t a_hParser)
-{
-  muInt_t iNumVar = mupGetExprVarNum(a_hParser),
-          i = 0;
-
-  if (iNumVar==0)
-  {
-    printf("Expression dos not contain variables\n");
-    return;
-  }
-
-  printf("\nExpression variables:\n");
-  printf("---------------------\n");
-  printf("Expression: %s\n", mupGetExpr(a_hParser) );
-  printf("Number: %d\n", iNumVar);
-  
-  for (i=0; i<iNumVar; ++i)
-  {
-    const muChar_t* szName = 0;
-    muFloat_t* pVar = 0;
-
-    mupGetExprVar(a_hParser, i, &szName, &pVar);
-    printf("Name: %s   Address: [0x%x]\n", szName, (long long)pVar);
-  }
-}
-
-//---------------------------------------------------------------------------
-void ListConst(muParserHandle_t a_hParser)
-{
-  muInt_t iNumVar = mupGetConstNum(a_hParser),
-          i = 0;
-
-  if (iNumVar==0)
-  {
-    printf("No constants defined\n");
-    return;
-  }
-
-  printf("\nParser constants:\n");
-  printf("---------------------\n");
-  printf("Number: %d", iNumVar);
-
-  for (i=0; i<iNumVar; ++i)
-  {
-    const muChar_t* szName = 0;
-    muFloat_t fVal = 0;
-
-    mupGetConst(a_hParser, i, &szName, &fVal);
-    printf("  %s = %f\n", szName, fVal);
-  }
-}
-
-//---------------------------------------------------------------------------
-/** \brief Check for external keywords.
-*/
-int CheckKeywords(const char *a_szLine, muParserHandle_t a_hParser)
-{
-  if (!strcmp(a_szLine, "quit"))
-  {
-    return -1;
-  }
-  else if (!strcmp(a_szLine,"list var"))
-  {
-    ListVar(a_hParser);
-    return 1;
-  }
-  else if (!strcmp(a_szLine, "list exprvar"))
-  {
-    ListExprVar(a_hParser);
-    return 1;
-  }
-  else if (!strcmp(a_szLine, "list const"))
-  {
-    ListConst(a_hParser);
-    return 1;
-  }
-  else if (!strcmp(a_szLine, "locale de"))
-  {
-    printf("Setting german locale: ArgSep=';' DecSep=',' ThousandsSep='.'\n");
-    mupSetArgSep(a_hParser, ';');
-    mupSetDecSep(a_hParser, ',');
-    mupSetThousandsSep(a_hParser, '.');
-    return 1;
-  }
-  else if (!strcmp(a_szLine, "locale en"))
-  {
-    printf("Setting english locale: ArgSep=',' DecSep='.' ThousandsSep=''\n");
-    mupSetArgSep(a_hParser, ',');
-    mupSetDecSep(a_hParser, '.');
-    mupSetThousandsSep(a_hParser, 0);
-    return 1;
-  }
-  else if (!strcmp(a_szLine, "locale reset"))
-  {
-    printf("Resetting locale\n");
-    mupResetLocale(a_hParser);
-    return 1;
-  }
-
-  return 0;
-}
-
-//---------------------------------------------------------------------------
-void Calc()
-{
-  muChar_t szLine[100];
-  muFloat_t fVal = 0,
-            afVarVal[] = { 1, 2 }; // Values of the parser variables
-  muParserHandle_t hParser;
-
-  hParser = mupCreate();              // initialize the parser
-  Intro(hParser);
-
-  // Set an error handler [optional]
-  // the only function that does not take a parser instance handle
-  mupSetErrorHandler(hParser, OnError);
-
-//#define GERMAN_LOCALS
-#ifdef GERMAN_LOCALS
-  mupSetArgSep(hParser, ';');
-  mupSetDecSep(hParser, ',');
-  mupSetThousandsSep(hParser, '.');
-#else
-  mupSetArgSep(hParser, ',');
-  mupSetDecSep(hParser, '.');
-#endif
-
-  // Set a variable factory
-  mupSetVarFactory(hParser, AddVariable, NULL);
-
-  // Define parser variables and bind them to C++ variables [optional]
-  mupDefineConst(hParser, "const1", 1);  
-  mupDefineConst(hParser, "const2", 2);
-  mupDefineStrConst(hParser, "strBuf", "Hallo welt");
-
-  // Define parser variables and bind them to C++ variables [optional]
-  mupDefineVar(hParser, "a", &afVarVal[0]);  
-  mupDefineVar(hParser, "b", &afVarVal[1]);
-
-  // Define postfix operators [optional]
-  mupDefinePostfixOprt(hParser, "M", Mega, 0);
-  mupDefinePostfixOprt(hParser, "m", Milli, 0);
-
-  // Define infix operator [optional]
-  mupDefineInfixOprt(hParser, "!", Not, 0);
-
-  // Define functions [optional]
-//  mupDefineStrFun(hParser, "query", SampleQuery, 0); // Add an unoptimizeable function 
-  mupDefineFun0(hParser, "zero", ZeroArg, 0);
-  mupDefineFun1(hParser, "rnd", Rnd, 0);             // Add an unoptimizeable function
-  mupDefineFun1(hParser, "rnd2", Rnd, 1); 
-  mupDefineMultFun(hParser, "_sum", Sum, 0);  // "sum" is already a default function
-
-  // Define binary operators [optional]
-  mupDefineOprt(hParser, "add", Add, 0, muOPRT_ASCT_LEFT, 0);
-  mupDefineOprt(hParser, "mul", Mul, 1, muOPRT_ASCT_LEFT, 0);
-
-  while ( fgets(szLine, 99, stdin) )
-  {
-    szLine[strlen(szLine)-1] = 0; // overwrite the newline
-
-    switch(CheckKeywords(szLine, hParser))
-    {
-    case  0:  break;       // no keyword found; parse the line
-    case  1:  continue;    // A Keyword was found do not parse the line
-    case -1:  return;      // abort the application
-    }
-
-    mupSetExpr(hParser, szLine);
-
-    fVal = mupEval(hParser);
-
-  
-    // Without an Error handler function 
-    // you must use this for error treatment:
-    //if (mupError(hParser))
-    //{
-    //  printf("\nError:\n");
-    //  printf("------\n");
-    //  printf("Message:  %s\n", mupGetErrorMsg(hParser) );
-    //  printf("Token:    %s\n", mupGetErrorToken(hParser) );
-    //  printf("Position: %s\n", mupGetErrorPos(hParser) );
-    //  printf("Errc:     %s\n", mupGetErrorCode(hParser) );
-    //  continue;
-    //}
-
-    if (!mupError(hParser))
-      printf("%f\n", fVal);
-
-  } // while 
-
-  // finalle free the parser ressources
-  mupRelease(hParser);
-}
-
-//---------------------------------------------------------------------------
-int main(int argc, char *argv[])
-{
-  Calc();
-  printf("done...");
-}
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/src/muParser.cpp
--- a/muParser/src/muParser.cpp	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,420 +0,0 @@
-/* 
-                 __________                                      
-    _____   __ __\______   \_____  _______  ______  ____ _______ 
-   /     \ |  |  \|     ___/\__  \ \_  __ \/  ___/_/ __ \\_  __ \
-  |  Y Y  \|  |  /|    |     / __ \_|  | \/\___ \ \  ___/ |  | \/
-  |__|_|  /|____/ |____|    (____  /|__|  /____  > \___  >|__|   
-        \/                       \/            \/      \/        
-
-  Copyright (C) 2010 Ingo Berg
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy of this 
-  software and associated documentation files (the "Software"), to deal in the Software
-  without restriction, including without limitation the rights to use, copy, modify, 
-  merge, publish, distribute, sublicense, and/or sell copies of the Software, and to 
-  permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in all copies or 
-  substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
-  NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 
-  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
-*/
-#include "muParser.h"
-
-//--- Standard includes ------------------------------------------------------------------------
-#include <cmath>
-#include <algorithm>
-#include <numeric>
-
-/** \brief Pi (what else?). */
-#define PARSER_CONST_PI  3.141592653589793238462643
-
-/** \brief The eulerian number. */
-#define PARSER_CONST_E   2.718281828459045235360287
-
-using namespace std;
-
-/** \file
-    \brief Implementation of the standard floating point parser.
-*/
-
-
-/** \brief Namespace for mathematical applications. */
-namespace mu
-{
-  std::locale Parser::s_locale;
-
-  //---------------------------------------------------------------------------
-  // Trigonometric function
-  value_type Parser::Sin(value_type v)   { return sin(v);  }
-  value_type Parser::Cos(value_type v)   { return cos(v);  }
-  value_type Parser::Tan(value_type v)   { return tan(v);  }
-  value_type Parser::ASin(value_type v)  { return asin(v); }
-  value_type Parser::ACos(value_type v)  { return acos(v); }
-  value_type Parser::ATan(value_type v)  { return atan(v); }
-  value_type Parser::Sinh(value_type v)  { return sinh(v); }
-  value_type Parser::Cosh(value_type v)  { return cosh(v); }
-  value_type Parser::Tanh(value_type v)  { return tanh(v); }
-
-  // C99 functions
-  value_type Parser::ACosh(value_type v) { return acosh(v); }
-  value_type Parser::ASinh(value_type v) { return asinh(v); }
-  value_type Parser::ATanh(value_type v) { return atanh(v); }
-  value_type Parser::Cbrt(value_type v)  { return cbrt(v); }
-  value_type Parser::Copysign(value_type v1, value_type v2)  { return copysign(v1,v2); }
-  value_type Parser::Erf(value_type v)   { return erf(v); }
-  value_type Parser::Erfc(value_type v)  { return erfc(v); }
-  value_type Parser::Expm1(value_type v)  { return expm1(v); }
-  value_type Parser::Hypot(value_type v1, value_type v2)  { return hypot(v1, v2); }
-  value_type Parser::Ilogb(value_type v)  { return ilogb(v); }
-  value_type Parser::Lgamma(value_type v)  { return lgamma(v); }
-  value_type Parser::Log1p(value_type v)  { return log1p(v); }
-  value_type Parser::Logb(value_type v)  { return logb(v); }
-  value_type Parser::Remainder(value_type v1, value_type v2)  { return remainder(v1, v2); }
-  value_type Parser::Rint(value_type v) { return rint(v); }
-  value_type Parser::Gamma(value_type v)  { return tgamma(v); }
-
-  //---------------------------------------------------------------------------
-  // Logarithm functions
-  value_type Parser::Log10(value_type v) { return log10(v); } // Logarithm base 10
-  value_type Parser::Ln(value_type v)    { return log(v);   } // Logarithm base e (natural logarithm)
-
-  //---------------------------------------------------------------------------
-  //  misc
-  value_type Parser::Exp(value_type v)  { return exp(v);   }
-  value_type Parser::Abs(value_type v)  { return fabs(v);  }
-  value_type Parser::Sqrt(value_type v) { return sqrt(v);  }
-  value_type Parser::Sign(value_type v) { return (value_type)((v<0) ? -1 : (v>0) ? 1 : 0); }
-  value_type Parser::Step(value_type v) { return (value_type)((v<0) ? 0 : 1); }
-
-  //---------------------------------------------------------------------------
-  /** \brief Conditional (if then else).
-      \param v1 Condition
-      \param v2 First value
-      \param v3 Second value
-      \return v2 if v1!=0 v3 otherwise.
-  */
-  value_type Parser::Ite(value_type v1, value_type v2, value_type v3) 
-  { 
-    return (v1) ? v2 : v3; 
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Callback for the unary minus operator.
-      \param v The value to negate
-      \return -v
-  */
-  value_type Parser::UnaryMinus(value_type v) 
-  { 
-    return -v; 
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Callback for adding multiple values. 
-      \param [in] a_afArg Vector with the function arguments
-      \param [in] a_iArgc The size of a_afArg
-  */
-  value_type Parser::Sum(const value_type *a_afArg, int a_iArgc)
-  { 
-    if (!a_iArgc)	
-      throw exception_type(_T("too few arguments for function sum."));
-
-    value_type fRes=0;
-    for (int i=0; i<a_iArgc; ++i) fRes += a_afArg[i];
-    return fRes;
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Callback for averaging multiple values. 
-      \param [in] a_afArg Vector with the function arguments
-      \param [in] a_iArgc The size of a_afArg
-  */
-  value_type Parser::Avg(const value_type *a_afArg, int a_iArgc)
-  { 
-    if (!a_iArgc)	
-      throw exception_type(_T("too few arguments for function sum."));
-
-    value_type fRes=0;
-    for (int i=0; i<a_iArgc; ++i) fRes += a_afArg[i];
-    return fRes/(value_type)a_iArgc;
-  }
-
-
-  //---------------------------------------------------------------------------
-  /** \brief Callback for determining the minimum value out of a vector. 
-      \param [in] a_afArg Vector with the function arguments
-      \param [in] a_iArgc The size of a_afArg
-  */
-  value_type Parser::Min(const value_type *a_afArg, int a_iArgc)
-  { 
-      if (!a_iArgc)	
-          throw exception_type(_T("too few arguments for function min."));
-
-      value_type fRes=a_afArg[0];
-      for (int i=0; i<a_iArgc; ++i) fRes = std::min(fRes, a_afArg[i]);
-
-      return fRes;
-  }
-
-
-  //---------------------------------------------------------------------------
-  /** \brief Callback for determining the maximum value out of a vector. 
-      \param [in] a_afArg Vector with the function arguments
-      \param [in] a_iArgc The size of a_afArg
-  */
-  value_type Parser::Max(const value_type *a_afArg, int a_iArgc)
-  { 
-    if (!a_iArgc)	
-      throw exception_type(_T("too few arguments for function min."));
-
-    value_type fRes=a_afArg[0];
-    for (int i=0; i<a_iArgc; ++i) fRes = std::max(fRes, a_afArg[i]);
-
-    return fRes;
-  }
-
-
-  //---------------------------------------------------------------------------
-  /** \brief Default value recognition callback. 
-      \param [in] a_szExpr Pointer to the expression
-      \param [in, out] a_iPos Pointer to an index storing the current position within the expression
-      \param [out] a_fVal Pointer where the value should be stored in case one is found.
-      \return 1 if a value was found 0 otherwise.
-  */
-  int Parser::IsVal(const char_type* a_szExpr, int *a_iPos, value_type *a_fVal)
-  {
-    value_type fVal(0);
-
-    stringstream_type stream(a_szExpr);
-    stream.seekg(0);        // todo:  check if this really is necessary
-    stream.imbue(Parser::s_locale);
-    stream >> fVal;
-    stringstream_type::pos_type iEnd = stream.tellg(); // Position after reading
-
-    if (iEnd==(stringstream_type::pos_type)-1)
-      return 0;
-
-    *a_iPos += (int)iEnd;
-    *a_fVal = fVal;
-    return 1;
-  }
-
-
-  //---------------------------------------------------------------------------
-  /** \brief Constructor. 
-
-    Call ParserBase class constructor and trigger Function, Operator and Constant initialization.
-  */
-  Parser::Parser()
-    :ParserBase()
-  {
-    // For some reason locale initialization in the dll fails when done in the static
-    // constructor. I have to do it here
-    static bool bInitLocale = true;
-    if (bInitLocale)
-    {
-      Parser::s_locale = std::locale(std::locale::classic(), new change_dec_sep<char_type>('.'));
-      bInitLocale = false;
-    }
-
-    AddValIdent(IsVal);
-
-    InitCharSets();
-    InitFun();
-    InitConst();
-    InitOprt();
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Define the character sets. 
-      \sa DefineNameChars, DefineOprtChars, DefineInfixOprtChars
-    
-    This function is used for initializing the default character sets that define
-    the characters to be useable in function and variable names and operators.
-  */
-  void Parser::InitCharSets()
-  {
-    DefineNameChars( _T("0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") );
-    DefineOprtChars( _T("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+-*^/?<>=#!$%&|~'_{}") );
-    DefineInfixOprtChars( _T("/+-*^?<>=#!$%&|~'_") );
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Initialize the default functions. */
-  void Parser::InitFun()
-  {
-    // trigonometric functions
-    DefineFun(_T("sin"), Sin);
-    DefineFun(_T("cos"), Cos);
-    DefineFun(_T("tan"), Tan);
-    // arcus functions
-    DefineFun(_T("asin"), ASin);
-    DefineFun(_T("acos"), ACos);
-    DefineFun(_T("atan"), ATan);
-    // hyperbolic functions
-    DefineFun(_T("sinh"), Sinh);
-    DefineFun(_T("cosh"), Cosh);
-    DefineFun(_T("tanh"), Tanh);
-    // C99 functions
-    DefineFun(_T("acosh"), ACosh);
-    DefineFun(_T("asinh"), ASinh);
-    DefineFun(_T("atanh"), ATanh);
-    DefineFun(_T("cbrt"), Cbrt);
-    DefineFun(_T("copysign"), Copysign);
-    DefineFun(_T("erf"), Erf);
-    DefineFun(_T("erfc"), Erfc);
-    DefineFun(_T("expm1"), Expm1);
-    DefineFun(_T("hypot"), Hypot);
-    DefineFun(_T("ilogb"), Ilogb);
-    DefineFun(_T("lgamma"), Lgamma);
-    DefineFun(_T("log1p"), Log1p);
-    DefineFun(_T("logb"), Logb);
-    DefineFun(_T("remainder"), Remainder);
-    DefineFun(_T("rint"), Rint);
-    DefineFun(_T("gamma"), Gamma);
-
-    // Logarithm functions
-    DefineFun(_T("log10"), Log10);
-    DefineFun(_T("ln"), Ln);
-    // misc
-    DefineFun(_T("exp"), Exp);
-    DefineFun(_T("sqrt"), Sqrt);
-    DefineFun(_T("sign"), Sign);
-    DefineFun(_T("step"), Step);
-    DefineFun(_T("abs"), Abs);
-    DefineFun(_T("if"), Ite);
-    // Functions with variable number of arguments
-    DefineFun(_T("sum"), Sum);
-    DefineFun(_T("avg"), Avg);
-    DefineFun(_T("min"), Min);
-    DefineFun(_T("max"), Max);
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Initialize constants.
-  
-    By default the parser recognizes two constants. Pi ("pi") and the eulerian
-    number ("_e").
-  */
-  void Parser::InitConst()
-  {
-    DefineConst(_T("_pi"), (value_type)PARSER_CONST_PI);
-    DefineConst(_T("_e"), (value_type)PARSER_CONST_E);
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Set the decimal separator.
-      \param cDecSep Decimal separator as a character value.
-      \sa SetThousandsSep
-
-      By default muparser uses the "C" locale. The decimal separator of this
-      locale is overwritten by the one provided here.
-  */
-  void Parser::SetDecSep(char_type cDecSep)
-  {
-    char_type cThousandsSep = std::use_facet< change_dec_sep<char_type> >(s_locale).thousands_sep();
-    s_locale = std::locale(std::locale("C"), new change_dec_sep<char_type>(cDecSep, cThousandsSep));
-  }
-  
-  //---------------------------------------------------------------------------
-  /** \brief Sets the thousands operator. 
-      \param cThousandsSep The thousands separator as a character
-      \sa SetDecSep
-
-      By default muparser uses the "C" locale. The thousands separator of this
-      locale is overwritten by the one provided here.
-  */
-  void Parser::SetThousandsSep(char_type cThousandsSep)
-  {
-    char_type cDecSep = std::use_facet< change_dec_sep<char_type> >(s_locale).decimal_point();
-    s_locale = std::locale(std::locale("C"), new change_dec_sep<char_type>(cDecSep, cThousandsSep));
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Resets the locale. 
-
-    The default locale used "." as decimal separator, no thousands separator and
-    "," as function argument separator.
-  */
-  void Parser::ResetLocale()
-  {
-    s_locale = std::locale(std::locale("C"), new change_dec_sep<char_type>('.'));
-    SetArgSep(',');
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Initialize operators. 
-  
-    By default only the unary minus operator is added.
-  */
-  void Parser::InitOprt()
-  {
-    DefineInfixOprt(_T("-"), UnaryMinus);
-  }
-
-  //---------------------------------------------------------------------------
-  void Parser::OnDetectVar(string_type * /*pExpr*/, int & /*nStart*/, int & /*nEnd*/)
-  {
-    // this is just sample code to illustrate modifying variable names on the fly.
-    // I'm not sure anyone really needs such a feature...
-    /*
-
-
-    string sVar(pExpr->begin()+nStart, pExpr->begin()+nEnd);
-    string sRepl = std::string("_") + sVar + "_";
-  
-    int nOrigVarEnd = nEnd;
-    cout << "variable detected!\n";
-    cout << "  Expr: " << *pExpr << "\n";
-    cout << "  Start: " << nStart << "\n";
-    cout << "  End: " << nEnd << "\n";
-    cout << "  Var: \"" << sVar << "\"\n";
-    cout << "  Repl: \"" << sRepl << "\"\n";
-    nEnd = nStart + sRepl.length();
-    cout << "  End: " << nEnd << "\n";
-    pExpr->replace(pExpr->begin()+nStart, pExpr->begin()+nOrigVarEnd, sRepl);
-    cout << "  New expr: " << *pExpr << "\n";
-    */
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Numerically differentiate with regard to a variable. 
-      \param [in] a_Var Pointer to the differentiation variable.
-      \param [in] a_fPos Position at which the differentiation should take place.
-      \param [in] a_fEpsilon Epsilon used for the numerical differentiation.
-
-    Numerical differentiation uses a 5 point operator yielding a 4th order 
-    formula. The default value for epsilon is 0.00074 which is
-    numerical_limits<double>::epsilon() ^ (1/5) as suggested in the muparser
-    forum:
-
-    http://sourceforge.net/forum/forum.php?thread_id=1994611&forum_id=462843
-  */
-  value_type Parser::Diff(value_type *a_Var, 
-                          value_type  a_fPos, 
-                          value_type  a_fEpsilon) const
-  {
-    value_type fRes(0), 
-               fBuf(*a_Var),
-               f[4] = {0,0,0,0},
-               fEpsilon(a_fEpsilon);
-
-    // Backwards compatible calculation of epsilon inc case the user doesnt provide
-    // his own epsilon
-    if (fEpsilon==0)
-      fEpsilon = (a_fPos==0) ? (value_type)1e-10 : (value_type)1e-7 * a_fPos;
-
-    *a_Var = a_fPos+2 * fEpsilon;  f[0] = Eval();
-    *a_Var = a_fPos+1 * fEpsilon;  f[1] = Eval();
-    *a_Var = a_fPos-1 * fEpsilon;  f[2] = Eval();
-    *a_Var = a_fPos-2 * fEpsilon;  f[3] = Eval();
-    *a_Var = fBuf; // restore variable
-
-    fRes = (-f[0] + 8*f[1] - 8*f[2] + f[3]) / (12*fEpsilon);
-    return fRes;
-  }
-} // namespace mu
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/src/muParserBase.cpp
--- a/muParser/src/muParserBase.cpp	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1632 +0,0 @@
-/*
-                 __________                                      
-    _____   __ __\______   \_____  _______  ______  ____ _______ 
-   /     \ |  |  \|     ___/\__  \ \_  __ \/  ___/_/ __ \\_  __ \
-  |  Y Y  \|  |  /|    |     / __ \_|  | \/\___ \ \  ___/ |  | \/
-  |__|_|  /|____/ |____|    (____  /|__|  /____  > \___  >|__|   
-        \/                       \/            \/      \/        
-  Copyright (C) 2010 Ingo Berg
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy of this 
-  software and associated documentation files (the "Software"), to deal in the Software
-  without restriction, including without limitation the rights to use, copy, modify, 
-  merge, publish, distribute, sublicense, and/or sell copies of the Software, and to 
-  permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in all copies or 
-  substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
-  NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 
-  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
-*/
-
-#include "muParserBase.h"
-
-//--- Standard includes ------------------------------------------------------------------------
-#include <cassert>
-#include <cmath>
-#include <memory>
-#include <vector>
-#include <deque>
-#include <sstream>
-#include <locale>
-
-using namespace std;
-
-/** \file
-    \brief This file contains the basic implementation of the muparser engine.
-*/
-
-namespace mu
-{
-  //------------------------------------------------------------------------------
-  /** \brief Identifiers for built in binary operators. 
-
-      When defining custom binary operators with #AddOprt(...) make sure not to choose 
-      names conflicting with these definitions. 
-  */
-  const char_type* ParserBase::c_DefaultOprt[] = 
-  { 
-    _T("<="), _T(">="),  _T("!="), 
-    _T("=="), _T("<"),   _T(">"), 
-    _T("+"),  _T("-"),   _T("*"), 
-    _T("/"),  _T("^"),   _T("and"), 
-    _T("or"), _T("xor"), _T("="), 
-    _T("("),  _T(")"), 0 
-  };
-
-  //------------------------------------------------------------------------------
-  /** \brief Constructor.
-      \param a_szFormula the formula to interpret.
-      \throw ParserException if a_szFormula is null.
-  */
-  ParserBase::ParserBase()
-    :m_pParseFormula(&ParserBase::ParseString)
-    ,m_pCmdCode(0)
-    ,m_vByteCode()
-    ,m_vStringBuf()
-    ,m_pTokenReader()
-    ,m_FunDef()
-    ,m_PostOprtDef()
-    ,m_InfixOprtDef()
-    ,m_OprtDef()
-    ,m_ConstDef()
-    ,m_StrVarDef()
-    ,m_VarDef()
-    ,m_bOptimize(true)
-    ,m_bUseByteCode(true)
-    ,m_bBuiltInOp(true)
-    ,m_sNameChars()
-    ,m_sOprtChars()
-    ,m_sInfixOprtChars()
-    ,m_vStackBuffer()
-    ,m_nFinalResultIdx(0)
-  {
-    InitTokenReader();
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Copy constructor. 
-
-    Tha parser can be safely copy constructed but the bytecode is reset during
-    copy construction.
-  */
-  ParserBase::ParserBase(const ParserBase &a_Parser)
-    :m_pParseFormula(&ParserBase::ParseString)
-    ,m_pCmdCode(0)
-    ,m_vByteCode()
-    ,m_vStringBuf()
-    ,m_pTokenReader()
-    ,m_FunDef()
-    ,m_PostOprtDef()
-    ,m_InfixOprtDef()
-    ,m_OprtDef()
-    ,m_ConstDef()
-    ,m_StrVarDef()
-    ,m_VarDef()
-    ,m_bOptimize(true)
-    ,m_bUseByteCode(true)
-    ,m_bBuiltInOp(true)
-  {
-    m_pTokenReader.reset(new token_reader_type(this));
-    Assign(a_Parser);
-  }
-
-  //---------------------------------------------------------------------------
-  ParserBase::~ParserBase()
-  {}
-
-  //---------------------------------------------------------------------------
-  /** \brief Assignement operator. 
-
-    Implemented by calling Assign(a_Parser). Self assignement is suppressed.
-    \param a_Parser Object to copy to this.
-    \return *this
-    \throw nothrow
-  */
-  ParserBase& ParserBase::operator=(const ParserBase &a_Parser)
-  {
-    Assign(a_Parser);
-    return *this;
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Copy state of a parser object to this. 
-
-    Clears Variables and Functions of this parser.
-    Copies the states of all internal variables.
-    Resets parse function to string parse mode.
-
-    \param a_Parser the source object.
-  */
-  void ParserBase::Assign(const ParserBase &a_Parser)
-  {
-    if (&a_Parser==this)
-      return;
-
-    // Don't copy bytecode instead cause the parser to create new bytecode
-    // by resetting the parse function.
-    ReInit();
-
-    m_ConstDef      = a_Parser.m_ConstDef;         // Copy user define constants
-    m_VarDef        = a_Parser.m_VarDef;           // Copy user defined variables
-    m_bOptimize     = a_Parser.m_bOptimize;
-    m_bUseByteCode  = a_Parser.m_bUseByteCode;
-    m_bBuiltInOp    = a_Parser.m_bBuiltInOp;
-    m_vStringBuf    = a_Parser.m_vStringBuf;
-    m_vStackBuffer  = a_Parser.m_vStackBuffer;
-    m_nFinalResultIdx = a_Parser.m_nFinalResultIdx;
-    m_StrVarDef     = a_Parser.m_StrVarDef;
-    m_vStringVarBuf = a_Parser.m_vStringVarBuf;
-    m_pTokenReader.reset(a_Parser.m_pTokenReader->Clone(this));
-
-    // Copy function and operator callbacks
-    m_FunDef = a_Parser.m_FunDef;             // Copy function definitions
-    m_PostOprtDef = a_Parser.m_PostOprtDef;   // post value unary operators
-    m_InfixOprtDef = a_Parser.m_InfixOprtDef; // unary operators for infix notation
-    m_OprtDef = a_Parser.m_OprtDef;           // binary operators
-
-    m_sNameChars = a_Parser.m_sNameChars;
-    m_sOprtChars = a_Parser.m_sOprtChars;
-    m_sInfixOprtChars = a_Parser.m_sInfixOprtChars;
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Initialize the token reader. 
-
-    Create new token reader object and submit pointers to function, operator,
-    constant and variable definitions.
-
-    \post m_pTokenReader.get()!=0
-    \throw nothrow
-  */
-  void ParserBase::InitTokenReader()
-  {
-    m_pTokenReader.reset(new token_reader_type(this));
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Reset parser to string parsing mode and clear internal buffers.
-
-      Clear bytecode, reset the token reader.
-      \throw nothrow
-  */
-  void ParserBase::ReInit() const
-  {
-    m_pParseFormula = &ParserBase::ParseString;
-    m_vStringBuf.clear();
-    m_vByteCode.clear();
-    m_pTokenReader->ReInit();
-  }
-
-  //---------------------------------------------------------------------------
-  void ParserBase::OnDetectVar(string_type * /*pExpr*/, int & /*nStart*/, int & /*nEnd*/)
-  {}
-
-  //---------------------------------------------------------------------------
-  /** \brief Returns the version of muparser. 
-  
-    Format is as follows: "MAJOR.MINOR (OPTIONAL TEXT)"
-  */
-  string_type ParserBase::GetVersion() const
-  {
-    return MUP_VERSION;
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Add a value parsing function. 
-      
-      When parsing an expression muParser tries to detect values in the expression
-      string using different valident callbacks. Thuis it's possible to parse
-      for hex values, binary values and floating point values. 
-  */
-  void ParserBase::AddValIdent(identfun_type a_pCallback)
-  {
-    m_pTokenReader->AddValIdent(a_pCallback);
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Set a function that can create variable pointer for unknown expression variables. 
-      \param a_pFactory A pointer to the variable factory.
-      \param pUserData A user defined context pointer.
-  */
-  void ParserBase::SetVarFactory(facfun_type a_pFactory, void *pUserData)
-  {
-    m_pTokenReader->SetVarCreator(a_pFactory, pUserData);  
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Add a function or operator callback to the parser. */
-  void ParserBase::AddCallback( const string_type &a_strName,
-                                const ParserCallback &a_Callback, 
-                                funmap_type &a_Storage,
-                                const char_type *a_szCharSet )
-  {
-    if (a_Callback.GetAddr()==0)
-        Error(ecINVALID_FUN_PTR);
-
-    const funmap_type *pFunMap = &a_Storage;
-
-    // Check for conflicting operator or function names
-    if ( pFunMap!=&m_FunDef && m_FunDef.find(a_strName)!=m_FunDef.end() )
-      Error(ecNAME_CONFLICT);
-
-    if ( pFunMap!=&m_PostOprtDef && m_PostOprtDef.find(a_strName)!=m_PostOprtDef.end() )
-      Error(ecNAME_CONFLICT);
-
-    if ( pFunMap!=&m_InfixOprtDef && pFunMap!=&m_OprtDef && m_InfixOprtDef.find(a_strName)!=m_InfixOprtDef.end() )
-      Error(ecNAME_CONFLICT);
-
-    if ( pFunMap!=&m_InfixOprtDef && pFunMap!=&m_OprtDef && m_OprtDef.find(a_strName)!=m_OprtDef.end() )
-      Error(ecNAME_CONFLICT);
-
-    CheckOprt(a_strName, a_Callback, a_szCharSet);
-    a_Storage[a_strName] = a_Callback;
-    ReInit();
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Check if a name contains invalid characters. 
-
-      \throw ParserException if the name contains invalid charakters.
-  */
-  void ParserBase::CheckOprt(const string_type &a_sName,
-                             const ParserCallback &a_Callback,
-                             const string_type &a_szCharSet) const
-  {
-    if ( !a_sName.length() ||
-        (a_sName.find_first_not_of(a_szCharSet)!=string_type::npos) ||
-        (a_sName[0]>='0' && a_sName[0]<='9'))
-    {
-      switch(a_Callback.GetCode())
-      {
-      case cmOPRT_POSTFIX: Error(ecINVALID_POSTFIX_IDENT, -1, a_sName);
-      case cmOPRT_INFIX:   Error(ecINVALID_INFIX_IDENT, -1, a_sName);
-      default:             Error(ecINVALID_NAME, -1, a_sName);
-      }
-    }
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Check if a name contains invalid characters. 
-
-      \throw ParserException if the name contains invalid charakters.
-  */
-  void ParserBase::CheckName(const string_type &a_sName,
-                             const string_type &a_szCharSet) const
-  {
-    if ( !a_sName.length() ||
-        (a_sName.find_first_not_of(a_szCharSet)!=string_type::npos) ||
-        (a_sName[0]>='0' && a_sName[0]<='9'))
-    {
-      Error(ecINVALID_NAME);
-    }
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Set the formula. 
-      \param a_strFormula Formula as string_type
-      \throw ParserException in case of syntax errors.
-
-      Triggers first time calculation thus the creation of the bytecode and
-      scanning of used variables.
-  */
-  void ParserBase::SetExpr(const string_type &a_sExpr)
-  {
-    // Check locale compatibility
-    std::locale loc;
-    if (m_pTokenReader->GetArgSep()==std::use_facet<numpunct<char_type> >(loc).decimal_point())
-      Error(ecLOCALE);
-
-    // <ibg> 20060222: Bugfix for Borland-Kylix:
-    // adding a space to the expression will keep Borlands KYLIX from going wild
-    // when calling tellg on a stringstream created from the expression after 
-    // reading a value at the end of an expression. (mu::Parser::IsVal function)
-    // (tellg returns -1 otherwise causing the parser to ignore the value)
-    string_type sBuf(a_sExpr + _T(" ") );
-    m_pTokenReader->SetFormula(sBuf);
-    ReInit();
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Get the default symbols used for the built in operators. 
-      \sa c_DefaultOprt
-  */
-  const char_type** ParserBase::GetOprtDef() const
-  {
-    return (const char_type **)(&c_DefaultOprt[0]);
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Define the set of valid characters to be used in names of
-             functions, variables, constants.
-  */
-  void ParserBase::DefineNameChars(const char_type *a_szCharset)
-  {
-    m_sNameChars = a_szCharset;
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Define the set of valid characters to be used in names of
-             binary operators and postfix operators.
-  */
-  void ParserBase::DefineOprtChars(const char_type *a_szCharset)
-  {
-    m_sOprtChars = a_szCharset;
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Define the set of valid characters to be used in names of
-             infix operators.
-  */
-  void ParserBase::DefineInfixOprtChars(const char_type *a_szCharset)
-  {
-    m_sInfixOprtChars = a_szCharset;
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Virtual function that defines the characters allowed in name identifiers. 
-      \sa #ValidOprtChars, #ValidPrefixOprtChars
-  */ 
-  const char_type* ParserBase::ValidNameChars() const
-  {
-    assert(m_sNameChars.size());
-    return m_sNameChars.c_str();
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Virtual function that defines the characters allowed in operator definitions. 
-      \sa #ValidNameChars, #ValidPrefixOprtChars
-  */
-  const char_type* ParserBase::ValidOprtChars() const
-  {
-    assert(m_sOprtChars.size());
-    return m_sOprtChars.c_str();
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Virtual function that defines the characters allowed in infix operator definitions.
-      \sa #ValidNameChars, #ValidOprtChars
-  */
-  const char_type* ParserBase::ValidInfixOprtChars() const
-  {
-    assert(m_sInfixOprtChars.size());
-    return m_sInfixOprtChars.c_str();
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Add a user defined operator. 
-      \post Will reset the Parser to string parsing mode.
-  */
-  void ParserBase::DefinePostfixOprt(const string_type &a_sName, 
-                                     fun_type1 a_pFun,
-                                     bool a_bAllowOpt)
-  {
-    AddCallback(a_sName, 
-                ParserCallback(a_pFun, a_bAllowOpt, prPOSTFIX, cmOPRT_POSTFIX),
-                m_PostOprtDef, 
-                ValidOprtChars() );
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Initialize user defined functions. 
-   
-    Calls the virtual functions InitFun(), InitConst() and InitOprt().
-  */
-  void ParserBase::Init()
-  {
-    InitCharSets();
-    InitFun();
-    InitConst();
-    InitOprt();
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Add a user defined operator. 
-      \post Will reset the Parser to string parsing mode.
-      \param [in] a_sName  operator Identifier 
-      \param [in] a_pFun  Operator callback function
-      \param [in] a_iPrec  Operator Precedence (default=prSIGN)
-      \param [in] a_bAllowOpt  True if operator is volatile (default=false)
-      \sa EPrec
-  */
-  void ParserBase::DefineInfixOprt(const string_type &a_sName, 
-                                  fun_type1 a_pFun, 
-                                  int a_iPrec, 
-                                  bool a_bAllowOpt)
-  {
-    AddCallback(a_sName, 
-                ParserCallback(a_pFun, a_bAllowOpt, a_iPrec, cmOPRT_INFIX), 
-                m_InfixOprtDef, 
-                ValidInfixOprtChars() );
-  }
-
-
-  //---------------------------------------------------------------------------
-  /** \brief Define a binary operator. 
-      \param [in] a_pFun Pointer to the callback function.
-      \param [in] a_iPrec Precedence of the operator.
-      \param [in] a_bAllowOpt If this is true the operator may be optimized away.
-  */
-  void ParserBase::DefineOprt( const string_type &a_sName, 
-                               fun_type2 a_pFun, 
-                               unsigned a_iPrec, 
-                               EOprtAssociativity a_eAssociativity,
-                               bool a_bAllowOpt )
-  {
-    // Check for conflicts with built in operator names
-    for (int i=0; m_bBuiltInOp && i<cmARG_SEP; ++i)
-      if (a_sName == string_type(c_DefaultOprt[i]))
-        Error(ecBUILTIN_OVERLOAD, -1, a_sName);
-
-    AddCallback(a_sName, 
-                ParserCallback(a_pFun, a_bAllowOpt, a_iPrec, a_eAssociativity), 
-                m_OprtDef, 
-                ValidOprtChars() );
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Define a new string constant.
-      \param [in] a_strName The name of the constant.
-      \param [in] a_strVal the value of the constant. 
-  */
-  void ParserBase::DefineStrConst(const string_type &a_strName, const string_type &a_strVal)
-  {
-    // Test if a constant with that names already exists
-    if (m_StrVarDef.find(a_strName)!=m_StrVarDef.end())
-      Error(ecNAME_CONFLICT);
-
-    CheckName(a_strName, ValidNameChars());
-    
-    m_vStringVarBuf.push_back(a_strVal);           // Store variable string in internal buffer
-    m_StrVarDef[a_strName] = m_vStringBuf.size();  // bind buffer index to variable name
-
-    ReInit();
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Add a user defined variable. 
-      \param [in] a_sName the variable name
-      \param [in] a_pVar A pointer to the variable vaule.
-      \post Will reset the Parser to string parsing mode.
-      \pre [assert] a_fVar!=0
-      \throw ParserException in case the name contains invalid signs.
-  */
-  void ParserBase::DefineVar(const string_type &a_sName, value_type *a_pVar)
-  {
-    if (a_pVar==0)
-      Error(ecINVALID_VAR_PTR);
-
-    // Test if a constant with that names already exists
-    if (m_ConstDef.find(a_sName)!=m_ConstDef.end())
-      Error(ecNAME_CONFLICT);
-
-    CheckName(a_sName, ValidNameChars());
-    m_VarDef[a_sName] = a_pVar;
-    ReInit();
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Add a user defined constant. 
-      \param [in] a_sName The name of the constant.
-      \param [in] a_fVal the value of the constant.
-      \post Will reset the Parser to string parsing mode.
-      \throw ParserException in case the name contains invalid signs.
-  */
-  void ParserBase::DefineConst(const string_type &a_sName, value_type a_fVal)
-  {
-    CheckName(a_sName, ValidNameChars());
-    m_ConstDef[a_sName] = a_fVal;
-    ReInit();
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Get operator priority.
-      \throw ParserException if a_Oprt is no operator code
-  */
-  int ParserBase::GetOprtPrecedence(const token_type &a_Tok) const
-  {
-    switch (a_Tok.GetCode())
-    {
-    // built in operators
-    case cmEND:      return -5;
-    case cmARG_SEP:  return -4;
-    case cmBO :	
-    case cmBC :      return -2;
-    case cmASSIGN:   return -1;               
-    case cmAND:
-    case cmXOR:
-    case cmOR:       return  prLOGIC;  
-    case cmLT:
-    case cmGT:
-    case cmLE:
-    case cmGE:
-    case cmNEQ:
-    case cmEQ:       return  prCMP; 
-    case cmADD:
-    case cmSUB:      return  prADD_SUB;
-    case cmMUL:
-    case cmDIV:      return  prMUL_DIV;
-    case cmPOW:      return  prPOW;
-
-    // user defined binary operators
-    case cmOPRT_INFIX: 
-    case cmOPRT_BIN: return a_Tok.GetPri();
-    default:  Error(ecINTERNAL_ERROR, 5);
-              return 999;
-    }  
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Get operator priority.
-      \throw ParserException if a_Oprt is no operator code
-  */
-  EOprtAssociativity ParserBase::GetOprtAssociativity(const token_type &a_Tok) const
-  {
-    switch (a_Tok.GetCode())
-    {
-    case cmASSIGN:
-    case cmAND:
-    case cmXOR:
-    case cmOR: 
-    case cmLT:
-    case cmGT:
-    case cmLE:
-    case cmGE:
-    case cmNEQ:
-    case cmEQ: 
-    case cmADD:
-    case cmSUB:
-    case cmMUL:
-    case cmDIV:      return oaLEFT;
-    case cmPOW:      return oaRIGHT;
-    case cmOPRT_BIN: return a_Tok.GetAssociativity();
-    default:         return oaNONE;
-    }  
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Return a map containing the used variables only. */
-  const varmap_type& ParserBase::GetUsedVar() const
-  {
-    try
-    {
-      m_pTokenReader->IgnoreUndefVar(true);
-      ParseString(); // implicitely create or update the map with the
-                     // used variables stored in the token reader if not already done
-      m_pTokenReader->IgnoreUndefVar(false);
-    }
-    catch(exception_type &e)
-    {
-      m_pTokenReader->IgnoreUndefVar(false);
-      throw e;
-    }
-    
-    // Make sure to stay in string parse mode, dont call ReInit()
-    // because it deletes the array with the used variables
-    m_pParseFormula = &ParserBase::ParseString;
-    
-    return m_pTokenReader->GetUsedVar();
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Return a map containing the used variables only. */
-  const varmap_type& ParserBase::GetVar() const
-  {
-    return m_VarDef;
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Return a map containing all parser constants. */
-  const valmap_type& ParserBase::GetConst() const
-  {
-    return m_ConstDef;
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Return prototypes of all parser functions.
-      \return #m_FunDef
-      \sa FunProt
-      \throw nothrow
-      
-      The return type is a map of the public type #funmap_type containing the prototype
-      definitions for all numerical parser functions. String functions are not part of 
-      this map. The Prototype definition is encapsulated in objects of the class FunProt
-      one per parser function each associated with function names via a map construct.
-  */
-  const funmap_type& ParserBase::GetFunDef() const
-  {
-    return m_FunDef;
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Retrieve the formula. */
-  const string_type& ParserBase::GetExpr() const
-  {
-    return m_pTokenReader->GetExpr();
-  }
-
-  //---------------------------------------------------------------------------
-  ParserBase::token_type ParserBase::ApplyNumFunc(const token_type &a_FunTok,
-                                                  const std::vector<token_type> &a_vArg) const
-  {
-    token_type  valTok;
-    int  iArgCount = (unsigned)a_vArg.size();
-    void  *pFunc = a_FunTok.GetFuncAddr();
-    assert(pFunc);
-
-    // Collect the function arguments from the value stack
-    switch(a_FunTok.GetArgCount())
-    {
-      case -1:
-            // Function with variable argument count
-            // copy arguments into a vector<value_type> 
-            {
-              if (iArgCount==0)
-                Error(ecTOO_FEW_PARAMS, m_pTokenReader->GetPos(), a_FunTok.GetAsString());
-
-              std::vector<value_type> vArg(iArgCount);
-              for (int i=0; i<iArgCount; ++i)
-                vArg[iArgCount-(i+1)] = a_vArg[i].GetVal();
-
-              valTok.SetVal( ((multfun_type)a_FunTok.GetFuncAddr())(&vArg[0], (int)vArg.size()) );  
-            }
-            break;
-
-      case 0: valTok.SetVal( ((fun_type0)pFunc)() );  break;
-      case 1: valTok.SetVal( ((fun_type1)pFunc)(a_vArg[0].GetVal()) );  break;
-      case 2: valTok.SetVal( ((fun_type2)pFunc)(a_vArg[1].GetVal(),
-                                                a_vArg[0].GetVal()) );  break;
-      case 3: valTok.SetVal( ((fun_type3)pFunc)(a_vArg[2].GetVal(), 
-                                                a_vArg[1].GetVal(), 
-                                                a_vArg[0].GetVal()) ); break;
-      case 4: valTok.SetVal( ((fun_type4)pFunc)(a_vArg[3].GetVal(),
-                                                a_vArg[2].GetVal(), 
-                                                a_vArg[1].GetVal(),
-                                                a_vArg[0].GetVal()) );  break;
-      case 5: valTok.SetVal( ((fun_type5)pFunc)(a_vArg[4].GetVal(), 
-                                                a_vArg[3].GetVal(), 
-                                                a_vArg[2].GetVal(), 
-                                                a_vArg[1].GetVal(),
-                                                a_vArg[0].GetVal()) );  break;
-      default: Error(ecINTERNAL_ERROR, 6);
-    }
-
-    // Find out if the result will depend on a variable
-    /** \todo remove this loop, put content in the loop that takes the argument values.
-      
-        (Attention: SetVal will reset Flags.)
-    */
-    bool bVolatile = a_FunTok.IsFlagSet(token_type::flVOLATILE);
-    for (int i=0; (bVolatile==false) && (i<iArgCount); ++i)
-      bVolatile |= a_vArg[i].IsFlagSet(token_type::flVOLATILE);
-
-    if (bVolatile)
-      valTok.AddFlags(token_type::flVOLATILE);
-
-  #if defined(_MSC_VER)
-    #pragma warning( disable : 4311 ) 
-  #endif
-
-    // Formula optimization
-    if ( m_bOptimize && 
-        !valTok.IsFlagSet(token_type::flVOLATILE) &&
-        !a_FunTok.IsFlagSet(token_type::flVOLATILE) ) 
-    {
-      m_vByteCode.RemoveValEntries(iArgCount);
-      m_vByteCode.AddVal( valTok.GetVal() );
-    }
-    else 
-    { 
-      // operation dosnt depends on a variable or the function is flagged unoptimizeable
-      // we cant optimize here...
-      m_vByteCode.AddFun(pFunc, (a_FunTok.GetArgCount()==-1) ? -iArgCount : iArgCount);
-    }
-
-    return valTok;
-
-  #if defined(_MSC_VER)
-    #pragma warning( default : 4311 )
-  #endif
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Execute a function that takes a single string argument.
-      \param a_FunTok Function token.
-      \throw exception_type If the function token is not a string function
-  */
-  ParserBase::token_type ParserBase::ApplyStrFunc(const token_type &a_FunTok,
-                                                  const std::vector<token_type> &a_vArg) const
-  {
-    if (a_vArg.back().GetCode()!=cmSTRING)
-      Error(ecSTRING_EXPECTED, m_pTokenReader->GetPos(), a_FunTok.GetAsString());
-
-    token_type  valTok;
-    int  iArgCount = (unsigned)a_vArg.size();
-    void  *pFunc = a_FunTok.GetFuncAddr();
-    assert(pFunc);
-
-    try
-    {
-      // Collect the function arguments from the value stack
-      switch(a_FunTok.GetArgCount())
-      {
-      case 0: valTok.SetVal( ((strfun_type1)pFunc)(a_vArg[0].GetAsString().c_str()) );  break;
-      case 1: valTok.SetVal( ((strfun_type2)pFunc)(a_vArg[1].GetAsString().c_str(),
-                                                   a_vArg[0].GetVal()) );  break;
-      case 2: valTok.SetVal( ((strfun_type3)pFunc)(a_vArg[2].GetAsString().c_str(), 
-                                                   a_vArg[1].GetVal(), 
-                                                   a_vArg[0].GetVal()) );  break;
-      default: Error(ecINTERNAL_ERROR);
-      }
-    }
-    catch(ParserError& /*e*/)
-    {
-      Error(ecVAL_EXPECTED, m_pTokenReader->GetPos(), a_FunTok.GetAsString());
-    }
-
-    // Find out if the result will depend on a variable
-    /** \todo remove this loop, put content in the loop that takes the argument values.
-      
-        (Attention: SetVal will reset Flags.)
-    */
-    bool bVolatile = a_FunTok.IsFlagSet(token_type::flVOLATILE);
-    for (int i=0; (bVolatile==false) && (i<iArgCount); ++i)
-      bVolatile |= a_vArg[i].IsFlagSet(token_type::flVOLATILE);
-
-    if (bVolatile)
-      valTok.AddFlags(token_type::flVOLATILE);
-
-    // string functions won't be optimized
-    m_vByteCode.AddStrFun((void*)pFunc, a_FunTok.GetArgCount(), a_vArg.back().GetIdx());
-    
-    return valTok;
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Apply a function token. 
-      \param iArgCount Number of Arguments actually gathered used only for multiarg functions.
-      \post The result is pushed to the value stack
-      \post The function token is removed from the stack
-      \throw exception_type if Argument count does not mach function requirements.
-  */
-  void ParserBase::ApplyFunc( ParserStack<token_type> &a_stOpt,
-                              ParserStack<token_type> &a_stVal, 
-                              int a_iArgCount) const
-  { 
-    assert(m_pTokenReader.get());
-
-    // Operator stack empty or does not contain tokens with callback functions
-    if (a_stOpt.empty() || a_stOpt.top().GetFuncAddr()==0 )
-      return;
-
-    token_type funTok = a_stOpt.pop();
-    assert(funTok.GetFuncAddr());
-
-    // Binary operators must rely on their internal operator number
-    // since counting of operators relies on commas for function arguments
-    // binary operators do not have commas in their expression
-    int iArgCount = (funTok.GetCode()==cmOPRT_BIN) ? funTok.GetArgCount() : a_iArgCount;
-
-    // determine how many parameters the function needs. To remember iArgCount includes the 
-    // string parameter whilst GetArgCount() counts only numeric parameters.
-    int iArgRequired = funTok.GetArgCount() + ((funTok.GetType()==tpSTR) ? 1 : 0);
-
-    // Thats the number of numerical parameters
-    int iArgNumerical = iArgCount - ((funTok.GetType()==tpSTR) ? 1 : 0);
-
-    if (funTok.GetCode()==cmFUNC_STR && iArgCount-iArgNumerical>1)
-      Error(ecINTERNAL_ERROR);
-
-    if (funTok.GetArgCount()>=0 && iArgCount>iArgRequired) 
-      Error(ecTOO_MANY_PARAMS, m_pTokenReader->GetPos()-1, funTok.GetAsString());
-
-    if (funTok.GetCode()!=cmOPRT_BIN && iArgCount<iArgRequired )
-      Error(ecTOO_FEW_PARAMS, m_pTokenReader->GetPos()-1, funTok.GetAsString());
-
-    if (funTok.GetCode()==cmFUNC_STR && iArgCount>iArgRequired )
-      Error(ecTOO_MANY_PARAMS, m_pTokenReader->GetPos()-1, funTok.GetAsString());
-
-    // Collect the numeric function arguments from the value stack and store them
-    // in a vector
-    std::vector<token_type> stArg;  
-    for (int i=0; i<iArgNumerical; ++i)
-    {
-      stArg.push_back( a_stVal.pop() );
-      if ( stArg.back().GetType()==tpSTR && funTok.GetType()!=tpSTR )
-        Error(ecVAL_EXPECTED, m_pTokenReader->GetPos(), funTok.GetAsString());
-    }
-
-    // for string functions add the string argument
-    if (funTok.GetCode()==cmFUNC_STR)
-    {
-      stArg.push_back( a_stVal.pop() );
-      if ( stArg.back().GetType()==tpSTR && funTok.GetType()!=tpSTR )
-        Error(ecVAL_EXPECTED, m_pTokenReader->GetPos(), funTok.GetAsString());
-    }
-
-    // String functions accept only one parameter
-    if (funTok.GetType()==tpSTR)
-    {
-      token_type token( ApplyStrFunc(funTok, stArg)  );
-      a_stVal.push( token );
-    }
-    else
-    {
-      token_type token( ApplyNumFunc(funTok, stArg) );
-      a_stVal.push( token );
-    }
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Apply a binary operator. 
-      \param a_stOpt The operator stack
-      \param a_stVal The value stack
-  */
-  void ParserBase::ApplyBinOprt( ParserStack<token_type> &a_stOpt,
-                                 ParserStack<token_type> &a_stVal) const
-  {
-    assert(a_stOpt.size());
-
-    // user defined binary operator
-    if (a_stOpt.top().GetCode()==cmOPRT_BIN)
-    {
-      ApplyFunc(a_stOpt, a_stVal, 2);
-    }
-    else
-    {
-      // internal binary operator
-      MUP_ASSERT(a_stVal.size()>=2);
-
-      token_type valTok1 = a_stVal.pop(),
-                 valTok2 = a_stVal.pop(),
-                 optTok = a_stOpt.pop(),
-                 resTok; 
-
-      if ( valTok1.GetType()!=valTok2.GetType() || 
-          (valTok1.GetType()==tpSTR && valTok2.GetType()==tpSTR) )
-        Error(ecOPRT_TYPE_CONFLICT, m_pTokenReader->GetPos(), optTok.GetAsString());
-
-      value_type x = valTok2.GetVal(),
-                 y = valTok1.GetVal();
-
-      switch (optTok.GetCode())
-      {
-        // built in binary operators
-        case cmAND: resTok.SetVal( (int)x & (int)y ); break;
-        case cmOR:  resTok.SetVal( (int)x | (int)y ); break;
-        case cmXOR: resTok.SetVal( (int)x ^ (int)y ); break;
-        case cmLT:  resTok.SetVal( x < y );   break;
-        case cmGT:  resTok.SetVal( x > y );   break;
-        case cmLE:  resTok.SetVal( x <= y );  break;
-        case cmGE:  resTok.SetVal( x >= y );  break;
-        case cmNEQ: resTok.SetVal( x != y );  break;
-        case cmEQ:  resTok.SetVal( x == y );  break;
-        case cmADD: resTok.SetVal( x + y );   break;
-        case cmSUB: resTok.SetVal( x - y );   break;
-        case cmMUL: resTok.SetVal( x * y );   break;
-        case cmDIV: 
-#if defined(MUP_MATH_EXCEPTIONS)
-                    if (y==0)
-                    {
-                      Error(ecDIV_BY_ZERO);
-                    }
-#endif
-                    resTok.SetVal( x / y );   
-                    break;
-        case cmPOW: resTok.SetVal(pow(x, y)); break;
-
-        case cmASSIGN: 
-                  // The assignement operator needs special treatment
-                  // it uses a different format when stored in the bytecode!
-                  {
-                    if (valTok2.GetCode()!=cmVAR)
-                      Error(ecUNEXPECTED_OPERATOR, -1 /* m_pTokenReader->GetPos() */, _T("="));
-                      
-                    value_type *pVar = valTok2.GetVar();
-                    resTok.SetVal( *pVar = y );
-                    resTok.AddFlags(token_type::flVOLATILE);
-                    a_stVal.push( resTok );
-
-                    m_vByteCode.AddAssignOp(pVar);
-                    return;  // we must return since the following 
-                             // stuff does not apply
-                  }
-
-        default:  Error(ecINTERNAL_ERROR, 8);
-      }
-
-      // Create the bytecode entries
-      if (!m_bOptimize)
-      {
-        // Optimization flag is not set
-        m_vByteCode.AddOp(optTok.GetCode());
-      }
-      else if ( valTok1.IsFlagSet(token_type::flVOLATILE) || 
-                valTok2.IsFlagSet(token_type::flVOLATILE) )
-      {
-        // Optimization flag is not set, but one of the value
-        // depends on a variable
-        m_vByteCode.AddOp(optTok.GetCode());
-        resTok.AddFlags(token_type::flVOLATILE);
-      }
-      else
-      {
-        // operator call can be optimized; If optimization is possible 
-        // the two previous tokens must be value tokens / they will be removed
-        // and replaced with the result of the pending operation.
-        m_vByteCode.RemoveValEntries(2);
-        m_vByteCode.AddVal(resTok.GetVal());
-      }
-
-      a_stVal.push( resTok );
-    }
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Parse the command code.
-      \sa ParseString(), ParseValue()
-
-      Command code contains precalculated stack positions of the values and the
-      associated operators. The Stack is filled beginning from index one the 
-      value at index zero is not used at all.
-  */
-  value_type ParserBase::ParseCmdCode() const
-  {
-  #if defined(_MSC_VER)
-    #pragma warning( disable : 4312 )
-  #endif
-
-    value_type *Stack = &m_vStackBuffer[0];
-    ECmdCode iCode;
-    bytecode_type idx(0);
-    int i(0);
-
-    __start:
-
-    idx = m_pCmdCode[i];
-    iCode = (ECmdCode)m_pCmdCode[i+1];
-    i += 2;
-
-#ifdef _DEBUG
-    // Die Formelendkennung ist Wert 26 dreimal hintereinander geschrieben
-    // Ich muss für den Test das Formelende filtern.
-    if (idx>=(int)m_vStackBuffer.size() && iCode!=cmEND)
-      throw exception_type(ecGENERIC, _T(""), m_pTokenReader->GetExpr(), -1);
-#endif
-
-    switch (iCode)
-    {
-      // built in binary operators
-      case cmAND: Stack[idx]  = (int)Stack[idx] & (int)Stack[idx+1]; goto __start;
-      case cmOR:  Stack[idx]  = (int)Stack[idx] | (int)Stack[idx+1]; goto __start;
-      case cmXOR: Stack[idx]  = (int)Stack[idx] ^ (int)Stack[idx+1]; goto __start;
-      case cmLE:  Stack[idx]  = Stack[idx] <= Stack[idx+1]; goto __start;
-      case cmGE:  Stack[idx]  = Stack[idx] >= Stack[idx+1]; goto __start;
-      case cmNEQ: Stack[idx]  = Stack[idx] != Stack[idx+1]; goto __start;
-      case cmEQ:  Stack[idx]  = Stack[idx] == Stack[idx+1]; goto __start;
-      case cmLT:  Stack[idx]  = Stack[idx] < Stack[idx+1];  goto __start;
-      case cmGT:  Stack[idx]  = Stack[idx] > Stack[idx+1];  goto __start;
-      case cmADD: Stack[idx] += Stack[1+idx]; goto __start;
-      case cmSUB: Stack[idx] -= Stack[1+idx]; goto __start;
-      case cmMUL: Stack[idx] *= Stack[1+idx]; goto __start;
-      case cmDIV: 
-
-#if defined(MUP_MATH_EXCEPTIONS)
-                    if (Stack[1+idx]==0)
-                      Error(ecDIV_BY_ZERO);
-#endif
-                  Stack[idx] /= Stack[1+idx]; 
-                  goto __start;
-      case cmPOW: 
-           {
-             // The int overload of pow is significantly faster
-             // use it if applicable
-             value_type p = Stack[1+idx];
-             if ((value_type)(int)p==p)
-               Stack[idx]  = pow(Stack[idx], (int)p); 
-             else
-               Stack[idx]  = pow(Stack[idx], p); 
-           }
-           goto __start;
-
-      // Assignement needs special treatment
-      case  cmASSIGN:
-            {
-              // next is a pointer to the target
-              value_type **pDest = (value_type**)(&m_pCmdCode[i]);
-
-              // advance index according to pointer size
-              i += m_vByteCode.GetPtrSize();
-              // assign the value
-              Stack[idx] = **pDest = Stack[idx+1];
-            }
-            goto __start;
-
-      // user defined binary operators
-      case  cmOPRT_BIN:
-            Stack[idx] = (**(fun_type2**)(&m_pCmdCode[i]))(Stack[idx], Stack[idx+1]);
-            ++i;
-            goto __start;
-
-      // variable tokens
-      case  cmVAR:
-            Stack[idx] = **(value_type**)(&m_pCmdCode[i]);
-            i += m_vByteCode.GetValSize();
-            goto __start;
-
-      // value tokens
-      case  cmVAL:
-            Stack[idx] = *(value_type*)(&m_pCmdCode[i]);
-            i += m_vByteCode.GetValSize();
-            goto __start;
-
-      // Next is treatment of string functions
-      case  cmFUNC_STR:
-            {
-              // The function argument count
-              int iArgCount = (int)m_pCmdCode[ i++ ];  
-
-              // The index of the string argument in the string table
-              int iIdxStack = (int)m_pCmdCode[ i++ ];  
-              MUP_ASSERT( iIdxStack>=0 && iIdxStack<(int)m_vStringBuf.size() );
-
-              switch(iArgCount)  // switch according to argument count
-              {
-              case 0: Stack[idx] = (*(strfun_type1*)(&m_pCmdCode[i]))(m_vStringBuf[iIdxStack].c_str()); break;
-              case 1: Stack[idx] = (*(strfun_type2*)(&m_pCmdCode[i]))(m_vStringBuf[iIdxStack].c_str(), Stack[idx]); break;
-	            case 2: Stack[idx] = (*(strfun_type3*)(&m_pCmdCode[i]))(m_vStringBuf[iIdxStack].c_str(), Stack[idx], Stack[idx+1]); break;
-              }
-              i += m_vByteCode.GetPtrSize();
-            }
-            goto __start;
-
-      // Next is treatment of numeric functions
-      case  cmFUNC:
-            {
-              int iArgCount = (int)m_pCmdCode[i++];
-
-              // switch according to argument count
-              switch(iArgCount)  
-              {
-              case 0: Stack[idx] = (*(fun_type0*)(&m_pCmdCode[i]))(); break;
-              case 1: Stack[idx] = (*(fun_type1*)(&m_pCmdCode[i]))(Stack[idx]); break;
-              case 2: Stack[idx] = (*(fun_type2*)(&m_pCmdCode[i]))(Stack[idx], Stack[idx+1]); break;
-              case 3: Stack[idx] = (*(fun_type3*)(&m_pCmdCode[i]))(Stack[idx], Stack[idx+1], Stack[idx+2]); break;
-              case 4: Stack[idx] = (*(fun_type4*)(&m_pCmdCode[i]))(Stack[idx], Stack[idx+1], Stack[idx+2], Stack[idx+3]); break;
-              case 5: Stack[idx] = (*(fun_type5*)(&m_pCmdCode[i]))(Stack[idx], Stack[idx+1], Stack[idx+2], Stack[idx+3], Stack[idx+4]); break;
-              default:
-                if (iArgCount>0) // function with variable arguments store the number as a negative value
-                  Error(ecINTERNAL_ERROR, 1);
-
-               Stack[idx] =(*(multfun_type*)(&m_pCmdCode[i]))(&Stack[idx], -iArgCount);
-               break;
-              }
-              i += m_vByteCode.GetPtrSize();
-            }
-            goto __start;
-
-	    case  cmEND:
-	          return Stack[m_nFinalResultIdx];
-
-	    default:
-            Error(ecINTERNAL_ERROR, 2);
-            return 0;
-    }
-
-  #if defined(_MSC_VER)
-    #pragma warning( default : 4312 )
-  #endif
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Return result for constant functions.
-
-    Seems pointless, but for parser functions that are made up of only a value, which occur
-    in real world applications, this speeds up things by removing the parser overhead almost
-    completely.
-  */
-  value_type ParserBase::ParseValue() const
-  {
-    return *(value_type*)(&m_pCmdCode[2]);
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief One of the two main parse functions.
-
-  Parse expression from input string. Perform syntax checking and create bytecode.
-  After parsing the string and creating the bytecode the function pointer 
-  #m_pParseFormula will be changed to the second parse routine the uses bytecode instead of string parsing.
-
-  \sa ParseCmdCode(), ParseValue()
-  */
-  value_type ParserBase::ParseString() const
-  {
-  #if defined(_MSC_VER)
-    #pragma warning( disable : 4311 )
-  #endif
-    if (!m_pTokenReader->GetExpr().length())
-        Error(ecUNEXPECTED_EOF, 0);
-
-    ParserStack<token_type> stOpt, stVal;
-    ParserStack<int> stArgCount;
-    token_type opta, opt;  // for storing operators
-    token_type val, tval;  // for storing value
-    string_type strBuf;    // buffer for string function arguments
-
-    ReInit();
-    
-    // The outermost counter counts the number of seperated items
-    // such as in "a=10,b=20,c=c+a"
-    stArgCount.push(1);
-    
-    for(;;)
-    {
-      opt = m_pTokenReader->ReadNextToken();
-
-      switch (opt.GetCode())
-      {
-        //
-        // Next three are different kind of value entries
-        //
-        case cmSTRING:
-                opt.SetIdx((int)m_vStringBuf.size());      // Assign buffer index to token 
-                stVal.push(opt);
-		            m_vStringBuf.push_back(opt.GetAsString()); // Store string in internal buffer
-                break;
-   
-        case cmVAR:
-                stVal.push(opt);
-                m_vByteCode.AddVar( static_cast<value_type*>(opt.GetVar()) );
-                break;
-
-        case cmVAL:
-		            stVal.push(opt);
-                m_vByteCode.AddVal( opt.GetVal() );
-                break;
-
-        case cmARG_SEP:
-                if (stArgCount.empty())
-                  Error(ecUNEXPECTED_ARG_SEP, m_pTokenReader->GetPos());
-
-                ++stArgCount.top();
-                // fall through...
-
-        case cmEND:
-        case cmBC:
-                {
-                  // The argument count for parameterless functions is zero
-                  // by default an opening bracket sets parameter count to 1
-                  // in preparation of arguments to come. If the last token
-                  // was an opening bracket we know better...
-                  if (opta.GetCode()==cmBO)
-                    --stArgCount.top();
-
-                  while ( stOpt.size() && stOpt.top().GetCode() != cmBO)
-                  {
-                    if (stOpt.top().GetCode()==cmOPRT_INFIX)
-                      ApplyFunc(stOpt, stVal, 1);  // infix operator
-                    else
-                      ApplyBinOprt(stOpt, stVal);
-                  }
-
-                  // <ibg> 20060218 infix operator treatment moved here
-                  if (stOpt.size() && stOpt.top().GetCode()==cmOPRT_INFIX) 
-                    ApplyFunc(stOpt, stVal, 1);  // infix operator
-
-                  if ( opt.GetCode()!=cmBC || stOpt.size()==0 || stOpt.top().GetCode()!=cmBO )
-                    break;
-
-                  // if opt is ")" and opta is "(" the bracket has been evaluated, now its time to check
-			            // if there is either a function or a sign pending
-		   	          // neither the opening nor the closing bracket will be pushed back to
-			            // the operator stack
-			            // Check if a function is standing in front of the opening bracket, 
-                  // if yes evaluate it afterwards check for infix operators
-			            assert(stArgCount.size());
-			            int iArgCount = stArgCount.pop();
-                  
-                  stOpt.pop(); // Take opening bracket from stack
-
-                  if (iArgCount>1 && ( stOpt.size()==0 || 
-                                      (stOpt.top().GetCode()!=cmFUNC && 
-                                      stOpt.top().GetCode()!=cmFUNC_STR) ) )
-                    Error(ecUNEXPECTED_ARG, m_pTokenReader->GetPos());
-                  
-                  // The openin bracket was popped from the stack now check if there
-                  // was a function before this bracket
-                  if (stOpt.size() && 
-                      stOpt.top().GetCode()!=cmOPRT_INFIX && 
-                      stOpt.top().GetCode()!=cmOPRT_BIN && 
-                      stOpt.top().GetFuncAddr()!=0)
-                  {
-                    ApplyFunc(stOpt, stVal, iArgCount);
-                  }
-                } // if bracket content is evaluated
-                break;
-
-        //
-        // Next are the binary operator entries
-        //
-        case cmAND:   // built in binary operators
-        case cmOR:
-        case cmXOR:
-        case cmLT:
-        case cmGT:
-        case cmLE:
-        case cmGE:
-        case cmNEQ:
-        case cmEQ:
-        case cmADD:
-        case cmSUB:
-        case cmMUL:
-        case cmDIV:
-        case cmPOW:
-        case cmASSIGN:
-        case cmOPRT_BIN:
-                // A binary operator (user defined or built in) has been found. 
-                while ( stOpt.size() && stOpt.top().GetCode() != cmBO)
-                {
-                  int nPrec1 = GetOprtPrecedence(stOpt.top()),
-                      nPrec2 = GetOprtPrecedence(opt);
-
-                  if (stOpt.top().GetCode()==opt.GetCode())
-                  {
-
-                    // Deal with operator associativity
-                    EOprtAssociativity eOprtAsct = GetOprtAssociativity(opt);
-                    if ( (eOprtAsct==oaRIGHT && (nPrec1 <= nPrec2)) || 
-                         (eOprtAsct==oaLEFT  && (nPrec1 <  nPrec2)) )
-                    {
-                      break;
-                    }
-                  }
-                  else if (nPrec1 < nPrec2)
-                  {
-                    // In case the operators are not equal the precedence decides alone...
-                    break;
-                  }
-
-
-                  if (stOpt.top().GetCode()==cmOPRT_INFIX)
-                    ApplyFunc(stOpt, stVal, 1);  // infix operator
-                  else
-                    ApplyBinOprt(stOpt, stVal);
-                } // while ( ... )
-
-    			      // The operator can't be evaluated right now, push back to the operator stack
-                stOpt.push(opt);
-                break;
-
-        //
-        // Last section contains functions and operators implicitely mapped to functions
-        //
-        case cmBO:
-                stArgCount.push(1);
-                stOpt.push(opt);
-                break;
-
-        case cmFUNC:
-        case cmOPRT_INFIX:
-        case cmFUNC_STR:  
-                stOpt.push(opt);
-                break;
-
-        case cmOPRT_POSTFIX:
-                stOpt.push(opt);
-                ApplyFunc(stOpt, stVal, 1);  // this is the postfix operator
-                break;
-
-        default:  Error(ecINTERNAL_ERROR, 3);
-      } // end of switch operator-token
-
-      opta = opt;
-
-      if ( opt.GetCode() == cmEND )
-      {
-        m_vByteCode.Finalize();
-        break;
-      }
-
-      //if (stArgCount.size())
-      //  cout << "Arguments: " << stArgCount.top() << "\n";
-
-  #if defined(MUP_DUMP_STACK)
-
-      StackDump(stVal, stOpt);
-      m_vByteCode.AsciiDump();
-  #endif
-    } // while (true)
-
-    // Store pointer to start of bytecode
-    m_pCmdCode = m_vByteCode.GetRawData();
-
-  #if defined(MUP_DUMP_CMDCODE)
-    m_vByteCode.AsciiDump();
-  #endif
-
-    // get the last value (= final result) from the stack
-    MUP_ASSERT(stArgCount.size()==1);
-    m_nFinalResultIdx = stArgCount.top();
-
-    if (stVal.size()==0)
-      Error(ecEMPTY_EXPRESSION);
-
-    if (stVal.top().GetType()!=tpDBL)
-      Error(ecSTR_RESULT);
-
-    // no error, so change the function pointer for the main parse routine
-    value_type fVal = stVal.top().GetVal();   // Result from String parsing
-
-    if (m_bUseByteCode)
-    {
-      // (n is a double requires if it is stored in the bytecode)
-      // pos 0:      stack index must be 0 for the final result
-      // pos 1:      code signaling the next entry is a value (cmVal==20)
-      // pos 2..2+n: the final result
-      // pos 2+n+1:  the bytecode end marker
-      // 
-      // Check if the bytecode contains only a single constant, if so parsing is no longer necessary.
-      std::size_t checkEnd = 2 + m_vByteCode.GetValSize();  // 
-      m_pParseFormula = (m_pCmdCode[1]==cmVAL && checkEnd<m_vByteCode.GetBufSize() && m_pCmdCode[checkEnd]==cmEND) ? 
-                              &ParserBase::ParseValue :
-                              &ParserBase::ParseCmdCode;
-      m_vStackBuffer.resize(m_vByteCode.GetMaxStackSize());
-    }
-
-    return fVal;
-
-  #if defined(_MSC_VER)
-    #pragma warning( default : 4311 )
-  #endif
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Create an error containing the parse error position.
-
-    This function will create an Parser Exception object containing the error text and
-    its position.
-
-    \param a_iErrc [in] The error code of type #EErrorCodes.
-    \param a_iPos [in] The position where the error was detected.
-    \param a_strTok [in] The token string representation associated with the error.
-    \throw ParserException always throws thats the only purpose of this function.
-  */
-  void  ParserBase::Error(EErrorCodes a_iErrc, int a_iPos, const string_type &a_sTok) const
-  {
-    throw exception_type(a_iErrc, a_sTok, m_pTokenReader->GetExpr(), a_iPos);
-  }
-
-  //------------------------------------------------------------------------------
-  /** \brief Clear all user defined variables.
-      \throw nothrow
-
-      Resets the parser to string parsing mode by calling #ReInit.
-  */
-  void ParserBase::ClearVar()
-  {
-    m_VarDef.clear();
-    ReInit();
-  }
-
-  //------------------------------------------------------------------------------
-  /** \brief Remove a variable from internal storage.
-      \throw nothrow
-
-      Removes a variable if it exists. If the Variable does not exist nothing will be done.
-  */
-  void ParserBase::RemoveVar(const string_type &a_strVarName)
-  {
-    varmap_type::iterator item = m_VarDef.find(a_strVarName);
-    if (item!=m_VarDef.end())
-    {
-      m_VarDef.erase(item);
-      ReInit();
-    }
-  }
-
-  //------------------------------------------------------------------------------
-  /** \brief Clear the formula. 
-      \post Resets the parser to string parsing mode.
-      \throw nothrow
-
-      Clear the formula and existing bytecode.
-  */
-  void ParserBase::ClearFormula()
-  {
-    m_vByteCode.clear();
-    m_pCmdCode = 0;
-    m_pTokenReader->SetFormula(_T(""));
-    ReInit();
-  }
-
-  //------------------------------------------------------------------------------
-  /** \brief Clear all functions.
-      \post Resets the parser to string parsing mode.
-      \throw nothrow
-  */
-  void ParserBase::ClearFun()
-  {
-    m_FunDef.clear();
-    ReInit();
-  }
-
-  //------------------------------------------------------------------------------
-  /** \brief Clear all user defined constants.
-
-      Both numeric and string constants will be removed from the internal storage.
-      \post Resets the parser to string parsing mode.
-      \throw nothrow
-  */
-  void ParserBase::ClearConst()
-  {
-    m_ConstDef.clear();
-    m_StrVarDef.clear();
-    ReInit();
-  }
-
-  //------------------------------------------------------------------------------
-  /** \brief Clear all user defined postfix operators.
-      \post Resets the parser to string parsing mode.
-      \throw nothrow
-  */
-  void ParserBase::ClearPostfixOprt()
-  {
-    m_PostOprtDef.clear();
-    ReInit();
-  }
-
-  //------------------------------------------------------------------------------
-  /** \brief Clear all user defined binary operators.
-      \post Resets the parser to string parsing mode.
-      \throw nothrow
-  */
-  void ParserBase::ClearOprt()
-  {
-    m_OprtDef.clear();
-    ReInit();
-  }
-
-  //------------------------------------------------------------------------------
-  /** \brief Clear the user defined Prefix operators. 
-      \post Resets the parser to string parser mode.
-      \throw nothrow
-  */
-  void ParserBase::ClearInfixOprt()
-  {
-    m_InfixOprtDef.clear();
-    ReInit();
-  }
-
-  //------------------------------------------------------------------------------
-  /** \brief Enable or disable the formula optimization feature. 
-      \post Resets the parser to string parser mode.
-      \throw nothrow
-  */
-  void ParserBase::EnableOptimizer(bool a_bIsOn)
-  {
-    m_bOptimize = a_bIsOn;
-    ReInit();
-  }
-
-  //------------------------------------------------------------------------------
-  /** \brief Enable or disable parsing from Bytecode. 
-
-      \attention There is no reason to disable bytecode. It will 
-                drastically decrease parsing speed.
-  */
-  void ParserBase::EnableByteCode(bool a_bIsOn)
-  {
-    m_bUseByteCode = a_bIsOn;
-    if (!a_bIsOn)
-      ReInit();
-  }
-
-  //------------------------------------------------------------------------------
-  /** \brief Enable or disable the built in binary operators.
-      \throw nothrow
-      \sa m_bBuiltInOp, ReInit()
-
-    If you disable the built in binary operators there will be no binary operators
-    defined. Thus you must add them manually one by one. It is not possible to
-    disable built in operators selectively. This function will Reinitialize the
-    parser by calling ReInit().
-  */
-  void ParserBase::EnableBuiltInOprt(bool a_bIsOn)
-  {
-    m_bBuiltInOp = a_bIsOn;
-    ReInit();
-  }
-
-  //------------------------------------------------------------------------------
-  /** \brief Query status of built in variables.
-      \return #m_bBuiltInOp; true if built in operators are enabled.
-      \throw nothrow
-  */
-  bool ParserBase::HasBuiltInOprt() const
-  {
-    return m_bBuiltInOp;
-  }
-
-  //------------------------------------------------------------------------------
-  /** \brief Get the argument separator character. 
-  */
-  char_type ParserBase::GetArgSep() const
-  {
-    return m_pTokenReader->GetArgSep();
-  }
-
-  //------------------------------------------------------------------------------
-  /** \brief Set argument separator. 
-      \param cArgSep the argument separator character.
-  */
-  void ParserBase::SetArgSep(char_type cArgSep)
-  {
-    m_pTokenReader->SetArgSep(cArgSep);
-  }
-
-#if defined(MUP_DUMP_STACK) | defined(MUP_DUMP_CMDCODE)
-  //------------------------------------------------------------------------------
-  /** \brief Dump stack content. 
-
-      This function is used for debugging only.
-  */
-  void ParserBase::StackDump(const ParserStack<token_type> &a_stVal, 
-                             const ParserStack<token_type> &a_stOprt) const
-  {
-    ParserStack<token_type> stOprt(a_stOprt), 
-                            stVal(a_stVal);
-
-    mu::console() << _T("\nValue stack:\n");
-    while ( !stVal.empty() ) 
-    {
-      token_type val = stVal.pop();
-      if (val.GetType()==tpSTR)
-        mu::console() << _T(" \"") << val.GetAsString() << _T("\" ");
-      else
-        mu::console() << _T(" ") << val.GetVal() << _T(" ");
-    }
-    mu::console() << "\nOperator stack:\n";
-
-    while ( !stOprt.empty() )
-    {
-      if (stOprt.top().GetCode()<=cmASSIGN) 
-      {
-        mu::console() << _T("OPRT_INTRNL \"")
-                      << ParserBase::c_DefaultOprt[stOprt.top().GetCode()] 
-                      << _T("\" \n");
-      }
-      else
-      {
-        switch(stOprt.top().GetCode())
-        {
-        case cmVAR:   mu::console() << _T("VAR\n");  break;
-        case cmVAL:   mu::console() << _T("VAL\n");  break;
-        case cmFUNC:  mu::console() << _T("FUNC_NUM \"") 
-                                    << stOprt.top().GetAsString() 
-                                    << _T("\"\n");   break;
-        case cmOPRT_INFIX: mu::console() << _T("OPRT_INFIX \"")
-                                         << stOprt.top().GetAsString() 
-                                         << _T("\"\n");      break;
-        case cmOPRT_BIN:   mu::console() << _T("OPRT_BIN \"") 
-                                         << stOprt.top().GetAsString() 
-                                         << _T("\"\n");           break;
-        case cmFUNC_STR: mu::console() << _T("FUNC_STR\n");       break;
-        case cmEND:      mu::console() << _T("END\n");            break;
-        case cmUNKNOWN:  mu::console() << _T("UNKNOWN\n");        break;
-        case cmBO:       mu::console() << _T("BRACKET \"(\"\n");  break;
-        case cmBC:       mu::console() << _T("BRACKET \")\"\n");  break;
-        default:         mu::console() << stOprt.top().GetType() << _T(" ");  break;
-        }
-      }	
-      stOprt.pop();
-    }
-
-    mu::console() << dec << endl;
-  }
-
-#endif // defined(MUP_DUMP_STACK) | defined(MUP_DUMP_CMDCODE)
-} // namespace mu
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/src/muParserBytecode.cpp
--- a/muParser/src/muParserBytecode.cpp	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,407 +0,0 @@
-/*
-                 __________                                      
-    _____   __ __\______   \_____  _______  ______  ____ _______ 
-   /     \ |  |  \|     ___/\__  \ \_  __ \/  ___/_/ __ \\_  __ \
-  |  Y Y  \|  |  /|    |     / __ \_|  | \/\___ \ \  ___/ |  | \/
-  |__|_|  /|____/ |____|    (____  /|__|  /____  > \___  >|__|   
-        \/                       \/            \/      \/        
-  Copyright (C) 2010 Ingo Berg
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy of this 
-  software and associated documentation files (the "Software"), to deal in the Software
-  without restriction, including without limitation the rights to use, copy, modify, 
-  merge, publish, distribute, sublicense, and/or sell copies of the Software, and to 
-  permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in all copies or 
-  substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
-  NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 
-  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
-*/
-
-#include "muParserBytecode.h"
-
-#include <cassert>
-#include <string>
-#include <stack>
-#include <vector>
-#include <iostream>
-
-#include "muParserDef.h"
-#include "muParserError.h"
-#include "muParserToken.h"
-
-/** \file
-    \brief Implementation of the parser bytecode class.
-*/
-
-
-namespace mu
-{
-  //---------------------------------------------------------------------------
-  /** Bytecode default constructor. */
-  ParserByteCode::ParserByteCode()
-    :m_iStackPos(0)
-    ,m_iMaxStackSize(0)
-    ,m_vBase()
-    ,mc_iSizeVal( std::max( (int)sizeof(value_type)  / (int)sizeof(bytecode_type), 1 ) )
-    ,mc_iSizePtr( std::max( (int)sizeof(value_type*) / (int)sizeof(bytecode_type), 1 ) )
-    ,mc_iSizeValEntry( 2 + mc_iSizeVal)
-  {
-    m_vBase.reserve(1000);
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Copy constructor. 
-    
-      Implemented in Terms of Assign(const ParserByteCode &a_ByteCode)
-  */
-  ParserByteCode::ParserByteCode(const ParserByteCode &a_ByteCode)
-    :mc_iSizeVal( sizeof(value_type)/sizeof(bytecode_type) )
-    ,mc_iSizePtr( sizeof(value_type*)/sizeof(bytecode_type) )
-    ,mc_iSizeValEntry( 2 + mc_iSizeVal)
-  {
-    Assign(a_ByteCode);
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Assignment operator.
-    
-      Implemented in Terms of Assign(const ParserByteCode &a_ByteCode)
-  */
-  ParserByteCode& ParserByteCode::operator=(const ParserByteCode &a_ByteCode)
-  {
-    Assign(a_ByteCode);
-    return *this;
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Store an address in bytecode.
-  
-      \param a_pAddr Address to be stored.
-      \throw nothrow
-  */
-  void ParserByteCode::StorePtr(void *a_pAddr)
-  {
-#if defined(_MSC_VER)
-    #pragma warning( disable : 4311 )
-#endif
-
-    // demo code for packing / unpacking pointers into bytecode
-//    void *ptr(NULL);
-//    double **pVal;
-//    double fVal;
-//    map_type dbg[2]; 
-//    dbg[0] = *( reinterpret_cast<map_type*>(&a_pAddr) ), 
-//    dbg[1] = *( reinterpret_cast<map_type*>(&a_pAddr) + 1 );     
-// Version 1:
-//    *( (map_type*)&ptr+0) = dbg[0];
-//    *( (map_type*)&ptr+1) = dbg[1];
-// Version 2:
-//    memcpy(&ptr, dbg, sizeof(dbg));
-// Version 3:    
-//    pVal = (double**)dbg;
-//    fVal = **(double**)dbg;
-
-    for (int i=0; i<mc_iSizePtr; ++i)
-      m_vBase.push_back( *( reinterpret_cast<bytecode_type*>(&a_pAddr) + i ) );
-
-#if defined(_MSC_VER)
-    #pragma warning( default : 4311 )
-#endif
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Copy state of another object to this. 
-    
-      \throw nowthrow
-  */
-  void ParserByteCode::Assign(const ParserByteCode &a_ByteCode)
-  {
-    if (this==&a_ByteCode)    
-      return;
-
-    m_iStackPos = a_ByteCode.m_iStackPos;
-    m_vBase = a_ByteCode.m_vBase;
-    m_iMaxStackSize = a_ByteCode.m_iMaxStackSize;
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Add a Variable pointer to bytecode. 
-      \param a_pVar Pointer to be added.
-      \throw nothrow
-  */
-  void ParserByteCode::AddVar(value_type *a_pVar)
-  {
-    m_vBase.push_back( ++m_iStackPos );
-    m_vBase.push_back( cmVAR );
-
-    m_iMaxStackSize = std::max(m_iMaxStackSize, (size_t)m_iStackPos);
-
-    StorePtr(a_pVar);
-
-    const int iSize = mc_iSizeVal - mc_iSizePtr;
-    assert(iSize>=0);
-
-    // Make sure variable entries have the same size as value entries.
-    // (necessary for optimization; fill with zeros)
-    for (int i=0; i<iSize; ++i)
-      m_vBase.push_back(0);
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Add a Variable pointer to bytecode. 
-
-      Value entries in byte code consist of:
-      <ul>
-        <li>value array position of the value</li>
-        <li>the operator code according to ParserToken::cmVAL</li>
-        <li>the value stored in #mc_iSizeVal number of bytecode entries.</li>
-      </ul>
-
-      \param a_pVal Value to be added.
-      \throw nothrow
-  */
-  void ParserByteCode::AddVal(value_type a_fVal)
-  {
-    m_vBase.push_back( ++m_iStackPos );
-    m_vBase.push_back( cmVAL );
-    m_iMaxStackSize = std::max(m_iMaxStackSize, (size_t)m_iStackPos);
-
-    for (int i=0; i<mc_iSizeVal; ++i)
-      m_vBase.push_back( *(reinterpret_cast<bytecode_type*>(&a_fVal) + i) );
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Add an operator identifier to bytecode. 
-    
-      Operator entries in byte code consist of:
-      <ul>
-        <li>value array position of the result</li>
-        <li>the operator code according to ParserToken::ECmdCode</li>
-      </ul>
-
-      \sa  ParserToken::ECmdCode
-  */
-  void ParserByteCode::AddOp(ECmdCode a_Oprt)
-  {
-    m_vBase.push_back(--m_iStackPos);
-    m_vBase.push_back(a_Oprt);
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Add an assignement operator
-    
-      Operator entries in byte code consist of:
-      <ul>
-        <li>cmASSIGN code</li>
-        <li>the pointer of the destination variable</li>
-      </ul>
-
-      \sa  ParserToken::ECmdCode
-  */
-  void ParserByteCode::AddAssignOp(value_type *a_pVar)
-  {
-    m_vBase.push_back(--m_iStackPos);
-    m_vBase.push_back(cmASSIGN);
-    StorePtr(a_pVar);
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Add function to bytecode. 
-
-      \param a_iArgc Number of arguments, negative numbers indicate multiarg functions.
-      \param a_pFun Pointer to function callback.
-  */
-  void ParserByteCode::AddFun(void *a_pFun, int a_iArgc)
-  {
-    if (a_iArgc>=0)
-    {
-      m_iStackPos = m_iStackPos - a_iArgc + 1; 
-    }
-    else
-    {
-      m_iStackPos = m_iStackPos + a_iArgc + 1; 
-    }
-    m_iMaxStackSize = std::max(m_iMaxStackSize, (size_t)m_iStackPos);
-
-    m_vBase.push_back(m_iStackPos);
-    m_vBase.push_back(cmFUNC);
-    m_vBase.push_back(a_iArgc);
-
-    StorePtr(a_pFun);
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Add Strung function entry to the parser bytecode. 
-      \throw nothrow
-
-      A string function entry consists of the stack position of the return value,
-      followed by a cmSTRFUNC code, the function pointer and an index into the 
-      string buffer maintained by the parser.
-  */
-  void ParserByteCode::AddStrFun(void *a_pFun, int a_iArgc, int a_iIdx)
-  {
-    m_iStackPos = m_iStackPos - a_iArgc + 1;
-    m_vBase.push_back(m_iStackPos);
-    m_vBase.push_back(cmFUNC_STR);
-    m_vBase.push_back(a_iArgc);
-    m_vBase.push_back(a_iIdx);
-
-    m_iMaxStackSize = std::max(m_iMaxStackSize, (size_t)m_iStackPos);
-
-    StorePtr(a_pFun);
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Add end marker to bytecode.
-      
-      \throw nothrow 
-  */
-  void ParserByteCode::Finalize()
-  {
-    m_vBase.push_back(cmEND);	
-    m_vBase.push_back(cmEND);	
-//    m_vBase.push_back(cmEND);	
-
-    // shrink bytecode vector to fit
-    storage_type(m_vBase).swap(m_vBase);
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Get Pointer to bytecode data storage. */
-  const bytecode_type* ParserByteCode::GetRawData() const
-  {
-    assert(m_vBase.size());
-    return &m_vBase[0];
-  }
-
-
-  //---------------------------------------------------------------------------
-  std::size_t ParserByteCode::GetMaxStackSize() const
-  {
-    return m_iMaxStackSize+1;
-  }
-
-  //---------------------------------------------------------------------------
-  std::size_t ParserByteCode::GetBufSize() const
-  {
-    return m_vBase.size();
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Delete the bytecode. 
-  
-      \throw nothrow
-
-      The name of this function is a violation of my own coding guidelines
-      but this way it's more in line with the STL functions thus more 
-      intuitive.
-  */
-  void ParserByteCode::clear()
-  {
-    m_vBase.clear();
-    m_iStackPos = 0;
-    m_iMaxStackSize = 0;
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Remove a value number of entries from the bytecode. 
-    
-      \attention Currently I don't test if the entries are really value entries.
-  */
-  void ParserByteCode::RemoveValEntries(unsigned a_iNumber)
-  {
-    unsigned iSize = a_iNumber * mc_iSizeValEntry;   
-    assert( m_vBase.size() >= iSize );
-    m_vBase.resize(m_vBase.size()-iSize);
-
-    assert(m_iStackPos >= a_iNumber);
-    m_iStackPos -= (a_iNumber);
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Dump bytecode (for debugging only!). */
-  void ParserByteCode::AsciiDump()
-  {
-    if (!m_vBase.size()) 
-    {
-      std::cout << "No bytecode available\n";
-      return;
-    }
-
-    std::cout << "Entries:" << (int)m_vBase.size() 
-              << " (ValSize:" << mc_iSizeVal 
-              << " entries, PtrSize:" << mc_iSizePtr 
-              << " entries, MapSize:" << sizeof(bytecode_type) 
-              << " byte)\n";
-    int i = 0;
-
-    while ( i<(int)m_vBase.size() && m_vBase[i] != cmEND)
-    {
-      std::cout << "IDX[" << (int)m_vBase[i++] << "]\t";
-      switch (m_vBase[i])
-      {
-        case cmVAL: std::cout << "VAL "; ++i;
-                    std::cout << "[" << *( reinterpret_cast<double*>(&m_vBase[i]) ) << "]\n";
-                    i += mc_iSizeVal;
-                    break;
-
-        case cmVAR: std::cout << "VAR "; ++i;
-  	                std::cout << "[ADDR: 0x" << std::hex << *(value_type**)&m_vBase[i] << "]\n"; 
-                    i += mc_iSizePtr;
-
-                    // Variable entries have the same size like value entries
-                    // the remaining spave must be skipped
-                    i+= std::max(mc_iSizeVal - mc_iSizePtr, 0);
-                    break;
-      			
-        case cmFUNC:
-                    std::cout << "CALL\t"; ++i;
-                    std::cout << "[ARG:" << std::dec << (int)m_vBase[i] << "]"; ++i;
-	                  std::cout << "[ADDR: 0x" << std::hex << *(value_type**)&m_vBase[i] << "]\n"; 
-                    i += mc_iSizePtr;
-                    break;
-
-        case cmFUNC_STR:
-                    std::cout << "CALL STRFUNC\t"; ++i;
-                    std::cout << "[ARG:" << std::dec << (int)m_vBase[i] << "]"; ++i;
-                    std::cout << "[IDX:" << std::dec << (int)m_vBase[i] << "]"; ++i;
-                    std::cout << "[ADDR: 0x" << *(value_type**)&m_vBase[i] << "]\n"; 
-                    i += mc_iSizePtr;
-                    break;
-
-        case cmLT:  std::cout << "LT\n"; ++i; break;
-        case cmGT:  std::cout << "GT\n"; ++i; break;
-        case cmLE:  std::cout << "LE\n"; ++i; break;
-        case cmGE:  std::cout << "GE\n"; ++i; break;
-        case cmEQ:  std::cout << "EQ\n"; ++i; break;
-        case cmNEQ: std::cout << "NEQ\n"; ++i; break;
-        case cmADD: std::cout << "ADD\n"; ++i; break;
-        case cmAND: std::cout << "AND\n"; ++i; break;
-        case cmOR:  std::cout << "OR\n";  ++i; break;
-        case cmXOR: std::cout << "XOR\n"; ++i; break;
-        case cmSUB: std::cout << "SUB\n"; ++i; break;
-        case cmMUL: std::cout << "MUL\n"; ++i; break;
-        case cmDIV: std::cout << "DIV\n"; ++i; break;
-        case cmPOW: std::cout << "POW\n"; ++i; break;
-
-        case cmASSIGN: 
-                    std::cout << "ASSIGN\t"; ++i; 
-                    std::cout << "[ADDR: 0x" << *(value_type**)&m_vBase[i] << "]\n"; 
-                    i += mc_iSizePtr;
-                    break; 
-
-        default:    std::cout << "(unknown code: " << (int)m_vBase[i] << ")\n"; 
-                    ++i;	
-                    break;
-      } // switch cmdCode
-    } // while bytecode
-
-    std::cout << "END" << std::endl;
-  }
-} // namespace mu
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/src/muParserCallback.cpp
--- a/muParser/src/muParserCallback.cpp	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,281 +0,0 @@
-/*
-                 __________                                      
-    _____   __ __\______   \_____  _______  ______  ____ _______ 
-   /     \ |  |  \|     ___/\__  \ \_  __ \/  ___/_/ __ \\_  __ \
-  |  Y Y  \|  |  /|    |     / __ \_|  | \/\___ \ \  ___/ |  | \/
-  |__|_|  /|____/ |____|    (____  /|__|  /____  > \___  >|__|   
-        \/                       \/            \/      \/        
-  Copyright (C) 2004-2008 Ingo Berg
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy of this 
-  software and associated documentation files (the "Software"), to deal in the Software
-  without restriction, including without limitation the rights to use, copy, modify, 
-  merge, publish, distribute, sublicense, and/or sell copies of the Software, and to 
-  permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in all copies or 
-  substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
-  NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 
-  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
-*/
-
-#include "muParserCallback.h"
-
-/** \file
-    \brief Implementation of the parser callback class.
-*/
-
-
-namespace mu
-{
-  //---------------------------------------------------------------------------
-  ParserCallback::ParserCallback(fun_type0 a_pFun, bool a_bAllowOpti)
-    :m_pFun((void*)a_pFun)
-    ,m_iArgc(0)
-    ,m_iPri(-1)
-    ,m_eOprtAsct(oaNONE)
-    ,m_iCode(cmFUNC)
-    ,m_iType(tpDBL)
-    ,m_bAllowOpti(a_bAllowOpti)
-  {}
-
-  //---------------------------------------------------------------------------
-  ParserCallback::ParserCallback(fun_type1 a_pFun, bool a_bAllowOpti, int a_iPrec, ECmdCode a_iCode)
-    :m_pFun((void*)a_pFun)
-    ,m_iArgc(1)
-    ,m_iPri(a_iPrec)
-    ,m_eOprtAsct(oaNONE)
-    ,m_iCode(a_iCode)
-    ,m_iType(tpDBL)
-    ,m_bAllowOpti(a_bAllowOpti)
-  {}
-
-
-  //---------------------------------------------------------------------------
-  /** \brief Constructor for constructing funcstion callbacks taking two arguments. 
-      \throw nothrow
-  */
-  ParserCallback::ParserCallback(fun_type2 a_pFun, bool a_bAllowOpti)
-    :m_pFun((void*)a_pFun)
-    ,m_iArgc(2)
-    ,m_iPri(-1)
-    ,m_eOprtAsct(oaNONE)
-    ,m_iCode(cmFUNC)
-    ,m_iType(tpDBL)
-    ,m_bAllowOpti(a_bAllowOpti)
-  {}
-
-  //---------------------------------------------------------------------------
-  /** \brief Constructor for constructing binary operator callbacks. 
-      \param a_pFun Pointer to a static function taking two arguments
-      \param a_bAllowOpti A flag indicating this funcation can be optimized
-      \param a_iPrec The operator precedence
-      \param a_eOprtAsct The operators associativity
-      \throw nothrow
-  */
-  ParserCallback::ParserCallback(fun_type2 a_pFun, 
-                                 bool a_bAllowOpti, 
-                                 int a_iPrec, 
-                                 EOprtAssociativity a_eOprtAsct)
-    :m_pFun((void*)a_pFun)
-    ,m_iArgc(2)
-    ,m_iPri(a_iPrec)
-    ,m_eOprtAsct(a_eOprtAsct)
-    ,m_iCode(cmOPRT_BIN)
-    ,m_iType(tpDBL)
-    ,m_bAllowOpti(a_bAllowOpti)
-  {}
-
-  //---------------------------------------------------------------------------
-  ParserCallback::ParserCallback(fun_type3 a_pFun, bool a_bAllowOpti)
-    :m_pFun((void*)a_pFun)
-    ,m_iArgc(3)
-    ,m_iPri(-1)
-    ,m_eOprtAsct(oaNONE)
-    ,m_iCode(cmFUNC)
-    ,m_iType(tpDBL)
-    ,m_bAllowOpti(a_bAllowOpti)
-  {}
-
-
-  //---------------------------------------------------------------------------
-  ParserCallback::ParserCallback(fun_type4 a_pFun, bool a_bAllowOpti)
-    :m_pFun((void*)a_pFun)
-    ,m_iArgc(4)
-    ,m_iPri(-1)
-    ,m_eOprtAsct(oaNONE)
-    ,m_iCode(cmFUNC)
-    ,m_iType(tpDBL)
-    ,m_bAllowOpti(a_bAllowOpti)
-  {}
-
-
-  //---------------------------------------------------------------------------
-  ParserCallback::ParserCallback(fun_type5 a_pFun, bool a_bAllowOpti)
-    :m_pFun((void*)a_pFun)
-    ,m_iArgc(5)
-    ,m_iPri(-1)
-    ,m_eOprtAsct(oaNONE)
-    ,m_iCode(cmFUNC)
-    ,m_iType(tpDBL)
-    ,m_bAllowOpti(a_bAllowOpti)
-  {}
-
-
-  //---------------------------------------------------------------------------
-  ParserCallback::ParserCallback(multfun_type a_pFun, bool a_bAllowOpti)
-    :m_pFun((void*)a_pFun)
-    ,m_iArgc(-1)
-    ,m_iPri(-1)
-    ,m_eOprtAsct(oaNONE)
-    ,m_iCode(cmFUNC)
-    ,m_iType(tpDBL)
-    ,m_bAllowOpti(a_bAllowOpti)
-  {}
-
-
-  //---------------------------------------------------------------------------
-  ParserCallback::ParserCallback(strfun_type1 a_pFun, bool a_bAllowOpti)
-    :m_pFun((void*)a_pFun)
-    ,m_iArgc(0)
-    ,m_iPri(-1)
-    ,m_eOprtAsct(oaNONE)
-    ,m_iCode(cmFUNC_STR)
-    ,m_iType(tpSTR)
-    ,m_bAllowOpti(a_bAllowOpti)
-  {}
-
-
-  //---------------------------------------------------------------------------
-  ParserCallback::ParserCallback(strfun_type2 a_pFun, bool a_bAllowOpti)
-    :m_pFun((void*)a_pFun)
-    ,m_iArgc(1)
-    ,m_iPri(-1)
-    ,m_eOprtAsct(oaNONE)
-    ,m_iCode(cmFUNC_STR)
-    ,m_iType(tpSTR)
-    ,m_bAllowOpti(a_bAllowOpti)
-  {}
-
-
-  //---------------------------------------------------------------------------
-  ParserCallback::ParserCallback(strfun_type3 a_pFun, bool a_bAllowOpti)
-    :m_pFun((void*)a_pFun)
-    ,m_iArgc(2)
-    ,m_iPri(-1)
-    ,m_eOprtAsct(oaNONE)
-    ,m_iCode(cmFUNC_STR)
-    ,m_iType(tpSTR)
-    ,m_bAllowOpti(a_bAllowOpti)
-  {}
-
-
-  //---------------------------------------------------------------------------
-  /** \brief Default constructor. 
-      \throw nothrow
-  */
-  ParserCallback::ParserCallback()
-    :m_pFun(0)
-    ,m_iArgc(0)
-    ,m_iPri(-1)
-    ,m_eOprtAsct(oaNONE)
-    ,m_iCode(cmUNKNOWN)
-    ,m_iType(tpVOID)
-    ,m_bAllowOpti(0)
-  {}
-
-
-  //---------------------------------------------------------------------------
-  /** \brief Copy constructor. 
-      \throw nothrow
-  */
-  ParserCallback::ParserCallback(const ParserCallback &ref)
-  {
-    m_pFun       = ref.m_pFun;
-    m_iArgc      = ref.m_iArgc;
-    m_bAllowOpti = ref.m_bAllowOpti;
-    m_iCode      = ref.m_iCode;
-    m_iType      = ref.m_iType;
-    m_iPri       = ref.m_iPri;
-    m_eOprtAsct  = ref.m_eOprtAsct;
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Clone this instance and return a pointer to the new instance. */
-  ParserCallback* ParserCallback::Clone() const
-  {
-    return new ParserCallback(*this);
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Return tru if the function is conservative.
-
-      Conservative functions return always the same result for the same argument.
-      \throw nothrow
-  */
-  bool ParserCallback::IsOptimizable() const  
-  { 
-    return m_bAllowOpti; 
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Get the callback address for the parser function. 
-  
-      The type of the address is void. It needs to be recasted according to the
-      argument number to the right type.
-
-      \throw nothrow
-      \return #pFun
-  */
-  void* ParserCallback::GetAddr() const 
-  { 
-    return m_pFun;  
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Return the callback code. */
-  ECmdCode  ParserCallback::GetCode() const 
-  { 
-    return m_iCode; 
-  }
-  
-  //---------------------------------------------------------------------------
-  ETypeCode ParserCallback::GetType() const 
-  { 
-    return m_iType; 
-  }
-
-
-  //---------------------------------------------------------------------------
-  /** \brief Return the operator precedence. 
-      \throw nothrown
-
-     Only valid if the callback token is an operator token (binary or infix).
-  */
-  int ParserCallback::GetPri()  const 
-  { 
-    return m_iPri;  
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Return the operators associativity. 
-      \throw nothrown
-
-     Only valid if the callback token is a binary operator token.
-  */
-  EOprtAssociativity ParserCallback::GetAssociativity() const
-  {
-    return m_eOprtAsct;
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Returns the number of function Arguments. */
-  int ParserCallback::GetArgc() const 
-  { 
-    return m_iArgc; 
-  }
-} // namespace mu
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/src/muParserComplex.cpp
--- a/muParser/src/muParserComplex.cpp	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,218 +0,0 @@
-/*
-                 __________                                      
-    _____   __ __\______   \_____  _______  ______  ____ _______ 
-   /     \ |  |  \|     ___/\__  \ \_  __ \/  ___/_/ __ \\_  __ \
-  |  Y Y  \|  |  /|    |     / __ \_|  | \/\___ \ \  ___/ |  | \/
-  |__|_|  /|____/ |____|    (____  /|__|  /____  > \___  >|__|   
-        \/                       \/            \/      \/        
-  Copyright (C) 2010 Ingo Berg
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy of this 
-  software and associated documentation files (the "Software"), to deal in the Software
-  without restriction, including without limitation the rights to use, copy, modify, 
-  merge, publish, distribute, sublicense, and/or sell copies of the Software, and to 
-  permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in all copies or 
-  substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
-  NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 
-  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
-*/
-
-#include "muParserComplex.h"
-#include "muParserFixes.h"
-
-#include <cmath>
-#include <complex>
-#include <algorithm>
-#include <numeric>
-
-using namespace std;
-
-/** \file 
-    \brief This file contains the implementation of a parser using complex numbers.
-*/
-
-
-/** \brief Namespace for mathematical applications. */
-namespace mu
-{
-  //---------------------------------------------------------------------------
-  value_type ParserComplex::Sin(value_type v)
-  {
-    complex_type c = UnpackToComplex(v);
-    return (value_type)PackToDouble(sin(c));
-  }
-
-  //---------------------------------------------------------------------------
-  value_type ParserComplex::Cos(value_type v)
-  {
-    complex_type c = UnpackToComplex(v);
-    return (value_type)PackToDouble(cos(c));
-  }
-
-  //---------------------------------------------------------------------------
-  value_type ParserComplex::Tan(value_type v)
-  {
-    complex_type c = UnpackToComplex(v);
-    return (value_type)PackToDouble(tan(c));
-  }
-
-  //---------------------------------------------------------------------------
-  value_type ParserComplex::Sqrt(value_type v)
-  {
-    complex_type c = UnpackToComplex(v);
-    return (value_type)PackToDouble(sqrt(c));
-  }
-
-  //---------------------------------------------------------------------------
-  value_type ParserComplex::Add(value_type v1, value_type v2) 
-  { 
-    complex_type c1 = UnpackToComplex(v1), 
-                 c2 = UnpackToComplex(v2);
-    return (value_type)PackToDouble(c1+c2); 
-  }
-
-  //---------------------------------------------------------------------------
-  value_type ParserComplex::Sub(value_type v1, value_type v2) 
-  { 
-    complex_type c1 = UnpackToComplex(v1), 
-                 c2 = UnpackToComplex(v2);
-    return (value_type)PackToDouble(c1-c2); 
-  }
-
-  //---------------------------------------------------------------------------
-  value_type ParserComplex::Mul(value_type v1, value_type v2) 
-  { 
-    complex_type c1 = UnpackToComplex(v1), 
-                 c2 = UnpackToComplex(v2);
-    return (value_type)PackToDouble(c1*c2); 
-  }
-
-  //---------------------------------------------------------------------------
-  value_type ParserComplex::Div(value_type v1, value_type v2) 
-  { 
-    complex_type c1 = UnpackToComplex(v1), 
-                 c2 = UnpackToComplex(v2);
-    return (value_type)PackToDouble(c1/c2); 
-  }
-
-  //---------------------------------------------------------------------------
-  // Unary operator Callbacks: Infix operators
-  value_type ParserComplex::UnaryMinus(value_type v) 
-  { 
-    return -v; 
-  }
-
-  //---------------------------------------------------------------------------
-  // Default value recognition callback
-  int ParserComplex::IsVal(const char_type *a_szExpr, int *a_iPos, value_type *a_fVal)
-  {
-    string_type buf(a_szExpr);
-
-    float real, imag;
-    int stat, len;
-
-#if defined (_UNICODE)
-    stat = swscanf(buf.c_str(), _T("{%f,%f}%n"), &real, &imag, &len);
-#else
-    stat = sscanf(buf.c_str(), "{%f,%f}%n", &real, &imag, &len);
-#endif
-
-    if (stat!=2)
-      return 0;
-
-    *a_iPos += len;
-    *a_fVal = (value_type)PackToDouble(complex_type(real, imag));
-    return 1;
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Constructor. 
-
-    Call ParserBase class constructor and trigger Function, Operator and Constant initialization.
-  */
-  ParserComplex::ParserComplex()
-    :ParserBase()
-  {
-    AddValIdent(IsVal);
-
-    InitCharSets();
-    InitFun();
-    InitOprt();
-  }
-
-  //---------------------------------------------------------------------------
-  void ParserComplex::InitCharSets()
-  {
-    DefineNameChars( _T("0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") );
-    DefineOprtChars( _T("+-*^/?<>=!%&|~'_") );
-    DefineInfixOprtChars( _T("/+-*^?<>=!%&|~'_") );
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Initialize operators. */
-  void ParserComplex::InitOprt()
-  {
-    // disable all built in operators, not all of them usefull for integer numbers
-    // (they don't do rounding of values)
-    EnableBuiltInOprt(false);
-
-    // Disable all built in operators, they wont work with integer numbers
-    // since they are designed for floating point numbers
-    DefineInfixOprt( _T("-"), UnaryMinus);
-
-    DefineOprt( _T("+"), Add, prADD_SUB);
-    DefineOprt( _T("-"), Sub, prADD_SUB);
-    DefineOprt( _T("*"), Mul, prMUL_DIV);
-    DefineOprt( _T("/"), Div, prMUL_DIV);
-  }
-
-  //---------------------------------------------------------------------------
-  void ParserComplex::InitFun()
-  {
-    DefineFun( _T("sin"), Sin);
-    DefineFun( _T("cos"), Cos);
-    DefineFun( _T("tan"), Tan);
-    DefineFun( _T("sqrt"), Sqrt);
-  }
-
-  //---------------------------------------------------------------------------
-  void ParserComplex::InitConst()
-  {}
-
-  //---------------------------------------------------------------------------
-  ParserComplex::complex_type ParserComplex::UnpackToComplex(double val)
-  {
-    float imag(0), real(0);
-
-    real = *((float*)(&val));
-    imag = *((float*)(&val)+1);
-
-    return complex_type(real, imag);
-  }
-
-  //---------------------------------------------------------------------------
-  double ParserComplex::PackToDouble(const complex_type &val)
-  {
-    double packed = 0;
-    float *real = (float*)(&packed),
-          *imag = (float*)(&packed)+1;
-
-    *real = val.real();
-    *imag = val.imag();
-
-    return packed;
-  }
-
-  //---------------------------------------------------------------------------
-  ParserComplex::complex_type ParserComplex::Eval()
-  {
-    return UnpackToComplex(ParserBase::Eval());
-  }
-
-} // namespace mu
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/src/muParserDLL.cpp
--- a/muParser/src/muParserDLL.cpp	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,831 +0,0 @@
-/*
-                 __________                                      
-    _____   __ __\______   \_____  _______  ______  ____ _______ 
-   /     \ |  |  \|     ___/\__  \ \_  __ \/  ___/_/ __ \\_  __ \
-  |  Y Y  \|  |  /|    |     / __ \_|  | \/\___ \ \  ___/ |  | \/
-  |__|_|  /|____/ |____|    (____  /|__|  /____  > \___  >|__|   
-        \/                       \/            \/      \/        
-  Copyright (C) 2004-2010 Ingo Berg
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy of this 
-  software and associated documentation files (the "Software"), to deal in the Software
-  without restriction, including without limitation the rights to use, copy, modify, 
-  merge, publish, distribute, sublicense, and/or sell copies of the Software, and to 
-  permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in all copies or 
-  substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
-  NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 
-  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
-*/
-#if defined(MUPARSER_DLL) 
-
-#if defined(_WIN32)
-  #define WIN32_LEAN_AND_MEAN
-  #include <windows.h>
-#endif
-
-#include "muParserDLL.h"
-#include "muParser.h"
-#include "muParserError.h"
-
-
-#define MU_TRY  \
-        try     \
-        {
-
-#define MU_CATCH                                                 \
-        }                                                        \
-        catch(muError_t &e)                                      \
-        {                                                        \
-          ParserTag *pTag = static_cast<ParserTag*>(a_hParser);  \
-          pTag->exc = e;                                         \
-          pTag->bError = true;                                   \
-          if (pTag->errHandler)                                  \
-            (pTag->errHandler)(a_hParser);                       \
-        }                                                        \
-        catch(...)                                               \
-        {                                                        \
-          ParserTag *pTag = static_cast<ParserTag*>(a_hParser);  \
-          pTag->exc = muError_t(mu::ecINTERNAL_ERROR);           \
-          pTag->bError = true;                                   \
-          if (pTag->errHandler)                                  \
-            (pTag->errHandler)(a_hParser);                       \
-        }
-
-/** \file 
-    \brief This file contains the implementation of the DLL interface of muparser.
-*/
-
-//---------------------------------------------------------------------------
-class ParserTag
-{
-public:
-  ParserTag()
-    :pParser(new mu::Parser())
-    ,exc()
-    ,errHandler(NULL)
-    ,bError(false)
-  {}
- 
- ~ParserTag()
-  {
-    delete pParser;
-  }
-
-  mu::Parser *pParser;
-  mu::ParserBase::exception_type exc;
-  muErrorHandler_t errHandler;
-  bool bError;
-
-private:
-  ParserTag(const ParserTag &ref);
-  ParserTag& operator=(const ParserTag &ref);
-};
-
-static muChar_t s_tmpOutBuf[2048];
-
-//---------------------------------------------------------------------------
-// private types
-typedef mu::ParserBase::exception_type muError_t;
-typedef mu::Parser muParser_t;
-
-//---------------------------------------------------------------------------
-// constants
-int muOPRT_ASCT_LEFT = 0;
-int muOPRT_ASCT_RIGHT = 1;
-
-//---------------------------------------------------------------------------
-//
-//
-//  unexported functions
-//
-//
-//---------------------------------------------------------------------------
-
-muParser_t* AsParser(muParserHandle_t a_hParser)
-{
-  return static_cast<ParserTag*>(a_hParser)->pParser;
-}
-
-//---------------------------------------------------------------------------
-ParserTag* AsParserTag(muParserHandle_t a_hParser)
-{
-  return static_cast<ParserTag*>(a_hParser);
-}
-
-//---------------------------------------------------------------------------
-#if defined(_WIN32)
-  #define _CRT_SECURE_NO_DEPRECATE
-
-  BOOL APIENTRY DllMain( HANDLE /*hModule*/, 
-                         DWORD ul_reason_for_call, 
-                         LPVOID /*lpReserved*/ )
-  {
-	  switch (ul_reason_for_call)
-	  {
-	  case  DLL_PROCESS_ATTACH:
-          break;
-
-    case  DLL_THREAD_ATTACH:
-    case  DLL_THREAD_DETACH:
-    case  DLL_PROCESS_DETACH:
-    		  break;
-	  }
-
-    return TRUE;
-  }
-
-#endif
-
-//---------------------------------------------------------------------------
-//
-//
-//  exported functions
-//
-//
-//---------------------------------------------------------------------------
-
-API_EXPORT(void) mupSetVarFactory(muParserHandle_t a_hParser, muFacFun_t a_pFactory, void *pUserData)
-{
-  MU_TRY
-    muParser_t* p(AsParser(a_hParser));
-    p->SetVarFactory(a_pFactory, pUserData);
-  MU_CATCH
-}
-
-//---------------------------------------------------------------------------
-/** \brief Create a new Parser instance and return its handle.
-*/
-API_EXPORT(muParserHandle_t) mupCreate()
-{
-  return (void*)(new ParserTag());
-}
-
-//---------------------------------------------------------------------------
-/** \brief Release the parser instance related with a parser handle.
-*/
-API_EXPORT(void) mupRelease(muParserHandle_t a_hParser)
-{
-  MU_TRY
-    ParserTag* p = static_cast<ParserTag*>(a_hParser);
-    delete p;
-  MU_CATCH
-}
-
-//---------------------------------------------------------------------------
-API_EXPORT(const muChar_t*) mupGetVersion(muParserHandle_t a_hParser)
-{
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-    sprintf(s_tmpOutBuf, "%s", p->GetVersion().c_str());
-    return s_tmpOutBuf;
-  MU_CATCH
-
-  return "";
-}
-
-//---------------------------------------------------------------------------
-/** \brief Evaluate the expression.
-*/
-API_EXPORT(double) mupEval(muParserHandle_t a_hParser)
-{
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-    return p->Eval();
-  MU_CATCH
-
-  return 0;
-}
-
-//---------------------------------------------------------------------------
-API_EXPORT(void) mupSetExpr(muParserHandle_t a_hParser, const muChar_t* a_szExpr)
-{
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-    p->SetExpr(a_szExpr);
-  MU_CATCH
-}
-
-//---------------------------------------------------------------------------
-API_EXPORT(void) mupRemoveVar(muParserHandle_t a_hParser, const muChar_t* a_szName)
-{
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-    p->RemoveVar( a_szName );
-  MU_CATCH
-}
-
-//---------------------------------------------------------------------------
-/** \brief Release all parser variables.
-    \param a_hParser Handle to the parser instance.
-*/
-API_EXPORT(void) mupClearVar(muParserHandle_t a_hParser)
-{
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-    p->ClearVar();
-  MU_CATCH
-}
-
-//---------------------------------------------------------------------------
-/** \brief Release all parser variables.
-    \param a_hParser Handle to the parser instance.
-*/
-API_EXPORT(void) mupClearConst(muParserHandle_t a_hParser)
-{
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-    p->ClearConst();
-  MU_CATCH
-}
-
-//---------------------------------------------------------------------------
-/** \brief Clear all user defined operators.
-    \param a_hParser Handle to the parser instance.
-*/
-API_EXPORT(void) mupClearOprt(muParserHandle_t a_hParser)
-{
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-    p->ClearOprt();
-  MU_CATCH
-}
-
-//---------------------------------------------------------------------------
-API_EXPORT(void) mupClearFun(muParserHandle_t a_hParser)
-{
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-    p->ClearFun();
-  MU_CATCH
-}
-
-//---------------------------------------------------------------------------
-API_EXPORT(void) mupDefineFun0( muParserHandle_t a_hParser, 
-                                const muChar_t* a_szName, 
-                                muFun0_t a_pFun, 
-                                muBool_t a_bAllowOpt )
-{
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-    p->DefineFun(a_szName, a_pFun, a_bAllowOpt!=0);
-  MU_CATCH
-}
-
-//---------------------------------------------------------------------------
-API_EXPORT(void) mupDefineFun1( muParserHandle_t a_hParser, 
-                                const muChar_t* a_szName, 
-                                muFun1_t a_pFun, 
-                                muBool_t a_bAllowOpt )
-{
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-    p->DefineFun(a_szName, a_pFun, a_bAllowOpt!=0);
-  MU_CATCH
-}
-
-//---------------------------------------------------------------------------
-API_EXPORT(void) mupDefineFun2( muParserHandle_t a_hParser, 
-                                const muChar_t* a_szName, 
-                                muFun2_t a_pFun, 
-                                muBool_t a_bAllowOpt )
-{
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-    p->DefineFun(a_szName, a_pFun, a_bAllowOpt!=0);
-  MU_CATCH
-}
-
-//---------------------------------------------------------------------------
-API_EXPORT(void) mupDefineFun3( muParserHandle_t a_hParser, 
-                                const muChar_t *a_szName, 
-                                muFun3_t a_pFun, 
-                                muBool_t a_bAllowOpt )
-{
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-    p->DefineFun(a_szName, a_pFun, a_bAllowOpt!=0);
-  MU_CATCH
-}
-
-//---------------------------------------------------------------------------
-API_EXPORT(void) mupDefineFun4( muParserHandle_t a_hParser, 
-                                const muChar_t *a_szName, 
-                                muFun4_t a_pFun, 
-                                muBool_t a_bAllowOpt )
-{
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-    p->DefineFun(a_szName, a_pFun, a_bAllowOpt!=0);
-  MU_CATCH
-}
-
-//---------------------------------------------------------------------------
-API_EXPORT(void) mupDefineFun5( muParserHandle_t a_hParser, 
-                                const muChar_t *a_szName, 
-                                muFun5_t a_pFun, 
-                                muBool_t a_bAllowOpt )
-{
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-    p->DefineFun(a_szName, a_pFun, a_bAllowOpt!=0);
-  MU_CATCH
-}
-
-//---------------------------------------------------------------------------
-API_EXPORT(void) mupDefineStrFun1( muParserHandle_t a_hParser, 
-                                   const muChar_t *a_szName, 
-                                   muStrFun1_t a_pFun )
-{
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-    p->DefineFun(a_szName, a_pFun, false);
-  MU_CATCH
-}
-
-//---------------------------------------------------------------------------
-API_EXPORT(void) mupDefineStrFun2( muParserHandle_t a_hParser, 
-                                   const muChar_t* a_szName, 
-                                   muStrFun2_t a_pFun )
-{
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-    p->DefineFun(a_szName, a_pFun, false);
-  MU_CATCH
-}
-
-//---------------------------------------------------------------------------
-API_EXPORT(void) mupDefineStrFun3( muParserHandle_t a_hParser, 
-                                   const muChar_t* a_szName, 
-                                   muStrFun3_t a_pFun )
-{
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-    p->DefineFun(a_szName, a_pFun, false);
-  MU_CATCH
-}
-
-//---------------------------------------------------------------------------
-API_EXPORT(void) mupDefineMultFun( muParserHandle_t a_hParser, 
-                                   const muChar_t *a_szName, 
-                                   muMultFun_t a_pFun, 
-                                   muBool_t a_bAllowOpt )
-{
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-    p->DefineFun(a_szName, a_pFun, a_bAllowOpt!=0);
-  MU_CATCH
-}
-
-//---------------------------------------------------------------------------
-API_EXPORT(void) mupDefineOprt( muParserHandle_t a_hParser, 
-                                const muChar_t* a_szName, 
-                                muFun2_t a_pFun, 
-                                muInt_t a_nPrec, 
-                                muInt_t a_nOprtAsct,
-                                muBool_t a_bAllowOpt)
-{
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-    p->DefineOprt(a_szName, 
-                  a_pFun, 
-                  a_nPrec, 
-                  (mu::EOprtAssociativity)a_nOprtAsct, 
-                  a_bAllowOpt!=0);
-  MU_CATCH
-}
-
-//---------------------------------------------------------------------------
-API_EXPORT(void) mupDefineVar(muParserHandle_t a_hParser, 
-                              const char *a_szName, 
-                              double *a_pVar)
-{
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-    p->DefineVar(a_szName, a_pVar);
-  MU_CATCH
-}
-
-//---------------------------------------------------------------------------
-API_EXPORT(void) mupDefineConst(muParserHandle_t a_hParser, const char *a_szName, double a_fVal)
-{
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-    p->DefineConst(a_szName, a_fVal);
-  MU_CATCH
-}
-
-//---------------------------------------------------------------------------
-API_EXPORT(void) mupDefineStrConst(muParserHandle_t a_hParser, const char *a_szName, const char *a_szVal)
-{
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-    p->DefineStrConst(a_szName, a_szVal);
-  MU_CATCH
-}
-
-//---------------------------------------------------------------------------
-API_EXPORT(const muChar_t*) mupGetExpr(muParserHandle_t a_hParser)
-{
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-//    return p->GetExpr().c_str();
-
-    // C# explodes when pMsg is returned directly. For some reason it can't access
-    // the memory where the message lies directly.
-//    static char szBuf[1024];
-    sprintf(s_tmpOutBuf, "%s", p->GetExpr().c_str());
-    return s_tmpOutBuf;
-  
-  MU_CATCH
-
-  return "";
-}
-
-//---------------------------------------------------------------------------
-API_EXPORT(void) mupDefinePostfixOprt( muParserHandle_t a_hParser,
-                                       const muChar_t* a_szName,
-                                       muFun1_t a_pOprt,
-                                       muBool_t a_bAllowOpt )
-{
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-    p->DefinePostfixOprt(a_szName, a_pOprt, a_bAllowOpt!=0);
-  MU_CATCH
-}
-
-//---------------------------------------------------------------------------
-API_EXPORT(void) mupDefineInfixOprt( muParserHandle_t a_hParser,
-                                     const muChar_t* a_szName,
-                                     muFun1_t a_pOprt,
-                                     muBool_t a_bAllowOpt )
-{
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-    p->DefineInfixOprt(a_szName, a_pOprt, a_bAllowOpt!=0);
-  MU_CATCH
-}
-
-// Define character sets for identifiers
-//---------------------------------------------------------------------------
-API_EXPORT(void) mupDefineNameChars( muParserHandle_t a_hParser, 
-                                     const muChar_t* a_szCharset )
-{
-    muParser_t* const p(AsParser(a_hParser));
-  p->DefineNameChars(a_szCharset);
-}
-
-//---------------------------------------------------------------------------
-API_EXPORT(void) mupDefineOprtChars( muParserHandle_t a_hParser, 
-                                     const muChar_t* a_szCharset )
-{
-  muParser_t* const p(AsParser(a_hParser));
-  p->DefineOprtChars(a_szCharset);
-}
-
-//---------------------------------------------------------------------------
-API_EXPORT(void) mupDefineInfixOprtChars(muParserHandle_t a_hParser, const char *a_szCharset)
-{
-  muParser_t* const p(AsParser(a_hParser));
-  p->DefineInfixOprtChars(a_szCharset);
-}
-
-//---------------------------------------------------------------------------
-/** \brief Get the number of variables defined in the parser.
-    \param a_hParser [in] Must be a valid parser handle.
-    \return The number of used variables.
-    \sa mupGetExprVar
-*/
-API_EXPORT(int) mupGetVarNum(muParserHandle_t a_hParser)
-{
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-    const mu::varmap_type VarMap = p->GetVar();
-    return (int)VarMap.size();
-  MU_CATCH
-
-  return 0; // never reached
-}
-
-//---------------------------------------------------------------------------
-/** \brief Return a variable that is used in an expression.
-    \param a_hParser [in] A valid parser handle.
-    \param a_iVar [in] The index of the variable to return.
-    \param a_szName [out] Pointer to the variable name.
-    \param a_pVar [out] Pointer to the variable.
-    \throw nothrow
-
-    Prior to calling this function call mupGetExprVarNum in order to get the
-    number of variables in the expression. If the parameter a_iVar is greater
-    than the number of variables both a_szName and a_pVar will be set to zero.
-    As a side effect this function will trigger an internal calculation of the
-    expression undefined variables will be set to zero during this calculation.
-    During the calculation user defined callback functions present in the expression
-    will be called, this is unavoidable.
-*/
-API_EXPORT(void) mupGetVar(muParserHandle_t a_hParser, unsigned a_iVar, const char **a_szName, double **a_pVar)
-{
-  // A static buffer is needed for the name since i cant return the
-  // pointer from the map.
-  static char  szName[1024];
-
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-    const mu::varmap_type VarMap = p->GetVar();
-
-    if (a_iVar>=VarMap.size())
-    {
-     *a_szName = 0;
-     *a_pVar = 0;
-      return;
-    }
-    mu::varmap_type::const_iterator item;
-
-    item = VarMap.begin();
-    for (unsigned i=0; i<a_iVar; ++i)
-      item++;
-
-     strncpy(szName, item->first.c_str(), sizeof(szName));
-     szName[sizeof(szName)-1] = 0;
-
-    *a_szName = &szName[0];
-    *a_pVar = item->second;
-     return;
-
-  MU_CATCH
-
-  *a_szName = 0;
-  *a_pVar = 0;
-}
-
-//---------------------------------------------------------------------------
-/** \brief Get the number of variables used in the expression currently set in the parser.
-    \param a_hParser [in] Must be a valid parser handle.
-    \return The number of used variables.
-    \sa mupGetExprVar
-*/
-API_EXPORT(int) mupGetExprVarNum(muParserHandle_t a_hParser)
-{
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-    const mu::varmap_type VarMap = p->GetUsedVar();
-    return (int)VarMap.size();
-  MU_CATCH
-
-  return 0; // never reached
-}
-
-//---------------------------------------------------------------------------
-/** \brief Return a variable that is used in an expression.
-
-    Prior to calling this function call mupGetExprVarNum in order to get the
-    number of variables in the expression. If the parameter a_iVar is greater
-    than the number of variables both a_szName and a_pVar will be set to zero.
-    As a side effect this function will trigger an internal calculation of the
-    expression undefined variables will be set to zero during this calculation.
-    During the calculation user defined callback functions present in the expression
-    will be called, this is unavoidable.
-
-    \param a_hParser [in] A valid parser handle.
-    \param a_iVar [in] The index of the variable to return.
-    \param a_szName [out] Pointer to the variable name.
-    \param a_pVar [out] Pointer to the variable.
-    \throw nothrow
-*/
-API_EXPORT(void) mupGetExprVar(muParserHandle_t a_hParser, unsigned a_iVar, const char **a_szName, double **a_pVar)
-{
-  // A static buffer is needed for the name since i cant return the
-  // pointer from the map.
-  static char  szName[1024];
-
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-    const mu::varmap_type VarMap = p->GetUsedVar();
-
-    if (a_iVar>=VarMap.size())
-    {
-     *a_szName = 0;
-     *a_pVar = 0;
-      return;
-    }
-    mu::varmap_type::const_iterator item;
-
-    item = VarMap.begin();
-    for (unsigned i=0; i<a_iVar; ++i)
-      item++;
-
-     strncpy(szName, item->first.c_str(), sizeof(szName));
-     szName[sizeof(szName)-1] = 0;
-
-    *a_szName = &szName[0];
-    *a_pVar = item->second;
-     return;
-
-  MU_CATCH
-
-  *a_szName = 0;
-  *a_pVar = 0;
-}
-
-//---------------------------------------------------------------------------
-/** \brief Return the number of constants defined in a parser. */
-API_EXPORT(int) mupGetConstNum(muParserHandle_t a_hParser)
-{
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-    const mu::valmap_type ValMap = p->GetConst();
-    return (int)ValMap.size();
-  MU_CATCH
-
-  return 0; // never reached
-}
-
-//-----------------------------------------------------------------------------------------------------
-API_EXPORT(void) mupSetArgSep(muParserHandle_t a_hParser, const muChar_t cArgSep)
-{
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-    p->SetArgSep(cArgSep);
-  MU_CATCH
-}
-
-//-----------------------------------------------------------------------------------------------------
-API_EXPORT(void) mupResetLocale(muParserHandle_t a_hParser)
-{
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-    p->ResetLocale();
-  MU_CATCH
-}
-
-//-----------------------------------------------------------------------------------------------------
-API_EXPORT(void) mupSetDecSep(muParserHandle_t a_hParser, const muChar_t cDecSep)
-{
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-    p->SetDecSep(cDecSep);
-  MU_CATCH
-}
-
-//-----------------------------------------------------------------------------------------------------
-API_EXPORT(void) mupSetThousandsSep(muParserHandle_t a_hParser, const muChar_t cThousandsSep)
-{
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-    p->SetThousandsSep(cThousandsSep);
-  MU_CATCH
-}
-
-//---------------------------------------------------------------------------
-/** \brief Retrieve name and value of a single parser constant.
-    \param a_hParser [in] a valid parser handle
-    \param a_iVar [in] Index of the constant to query
-    \param a_pszName [out] pointer to a null terminated string with the constant name
-    \param [out] The constant value
-*/
-API_EXPORT(void) mupGetConst( muParserHandle_t a_hParser, 
-                              unsigned a_iVar,
-                              const muChar_t **a_pszName, 
-                              muFloat_t *a_fVal)
-{
-  // A static buffer is needed for the name since i cant return the
-  // pointer from the map.
-  static char  szName[1024];
-
-  MU_TRY
-    muParser_t* const p(AsParser(a_hParser));
-    const mu::valmap_type ValMap = p->GetConst();
-
-    if (a_iVar>=ValMap.size())
-    {
-     *a_pszName = 0;
-     *a_fVal = 0;
-      return;
-    }
-
-    mu::valmap_type::const_iterator item;
-    item = ValMap.begin();
-    for (unsigned i=0; i<a_iVar; ++i)
-      item++;
-
-    strncpy(szName, item->first.c_str(), sizeof(szName));
-    szName[sizeof(szName)-1] = 0;
-
-    *a_pszName = &szName[0];
-    *a_fVal = item->second;
-     return;
-
-  MU_CATCH
-
-  *a_pszName = 0;
-  *a_fVal = 0;
-}
-
-//---------------------------------------------------------------------------
-/** \brief Add a custom value regognition function.
-*/
-API_EXPORT(void) mupAddValIdent(muParserHandle_t a_hParser, 
-                                muIdentFun_t a_pFun)
-{
-  MU_TRY
-    muParser_t* p(AsParser(a_hParser));
-    p->AddValIdent(a_pFun);
-  MU_CATCH
-}
-
-//---------------------------------------------------------------------------
-/** \brief Query if an error occured.
-
-    After querying the internal error bit will be reset. So a consecutive call
-    will return false.
-*/
-API_EXPORT(muBool_t) mupError(muParserHandle_t a_hParser)
-{
-  bool bError( AsParserTag(a_hParser)->bError );
-  AsParserTag(a_hParser)->bError = false;
-  return bError;
-}
-
-//---------------------------------------------------------------------------
-/** \brief Reset the internal error flag.
-*/
-API_EXPORT(void) mupErrorReset(muParserHandle_t a_hParser)
-{
-  AsParserTag(a_hParser)->bError = false;
-}
-
-//---------------------------------------------------------------------------
-API_EXPORT(void) mupSetErrorHandler(muParserHandle_t a_hParser, muErrorHandler_t a_pHandler)
-{
-  AsParserTag(a_hParser)->errHandler = a_pHandler;
-}
-
-//---------------------------------------------------------------------------
-/** \brief Return the message associated with the last error.
-*/
-API_EXPORT(const muChar_t*) mupGetErrorMsg(muParserHandle_t a_hParser)
-{
-  ParserTag* const p(AsParserTag(a_hParser));
-  const char *pMsg = p->exc.GetMsg().c_str();
-
-  // C# explodes when pMsg is returned directly. For some reason it can't access
-  // the memory where the message lies directly.
-//  static char szBuf[1024];
-  sprintf(s_tmpOutBuf, "%s", pMsg);
-  return s_tmpOutBuf;
-}
-
-//---------------------------------------------------------------------------
-/** \brief Return the message associated with the last error.
-*/
-API_EXPORT(const muChar_t*) mupGetErrorToken(muParserHandle_t a_hParser)
-{
-  ParserTag* const p(AsParserTag(a_hParser));
-  const char *pToken = p->exc.GetToken().c_str();
-
-  // C# explodes when pMsg is returned directly. For some reason it can't access
-  // the memory where the message lies directly.
-//  static char szBuf[1024];
-  sprintf(s_tmpOutBuf, "%s", pToken);
-  return s_tmpOutBuf;
-}
-
-//---------------------------------------------------------------------------
-/** \brief Return the code associated with the last error.
-*/
-API_EXPORT(int) mupGetErrorCode(muParserHandle_t a_hParser)
-{
-  return AsParserTag(a_hParser)->exc.GetCode();
-}
-
-//---------------------------------------------------------------------------
-/** \brief Return the postion associated with the last error. */
-API_EXPORT(int) mupGetErrorPos(muParserHandle_t a_hParser)
-{
-  return (int)AsParserTag(a_hParser)->exc.GetPos();
-}
-
-////-----------------------------------------------------------------------------------------------------
-//API_EXPORT(const muChar_t*) mupGetErrorExpr(muParserHandle_t a_hParser)
-//{
-//  return AsParserTag(a_hParser)->exc.GetExpr().c_str();
-//}
-
-//-----------------------------------------------------------------------------------------------------
-API_EXPORT(muFloat_t*) mupCreateVar()
-{
-  return new muFloat_t(0);
-}
-
-//-----------------------------------------------------------------------------------------------------
-API_EXPORT(void) mupReleaseVar(muFloat_t *ptr)
-{
-  delete ptr;
-}
-
-#endif      // MUPARSER_DLL
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/src/muParserError.cpp
--- a/muParser/src/muParserError.cpp	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,325 +0,0 @@
-/*
-                 __________                                      
-    _____   __ __\______   \_____  _______  ______  ____ _______ 
-   /     \ |  |  \|     ___/\__  \ \_  __ \/  ___/_/ __ \\_  __ \
-  |  Y Y  \|  |  /|    |     / __ \_|  | \/\___ \ \  ___/ |  | \/
-  |__|_|  /|____/ |____|    (____  /|__|  /____  > \___  >|__|   
-        \/                       \/            \/      \/        
-  Copyright (C) 2010 Ingo Berg
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy of this 
-  software and associated documentation files (the "Software"), to deal in the Software
-  without restriction, including without limitation the rights to use, copy, modify, 
-  merge, publish, distribute, sublicense, and/or sell copies of the Software, and to 
-  permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in all copies or 
-  substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
-  NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 
-  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
-*/
-#include "muParserError.h"
-
-
-namespace mu
-{
-  const ParserErrorMsg ParserErrorMsg::m_Instance;
-
-  //------------------------------------------------------------------------------
-  const ParserErrorMsg& ParserErrorMsg::Instance()
-  {
-    return m_Instance;
-  }
-
-  //------------------------------------------------------------------------------
-  string_type ParserErrorMsg::operator[](unsigned a_iIdx) const
-  {
-    return (a_iIdx<m_vErrMsg.size()) ? m_vErrMsg[a_iIdx] : string_type();
-  }
-
-  //---------------------------------------------------------------------------
-  ParserErrorMsg::~ParserErrorMsg()
-  {}
-
-  //---------------------------------------------------------------------------
-  /** \brief Assignement operator is deactivated.
-  */
-  ParserErrorMsg& ParserErrorMsg::operator=(const ParserErrorMsg& )
-  {
-    assert(false);
-    return *this;
-  }
-
-  //---------------------------------------------------------------------------
-  ParserErrorMsg::ParserErrorMsg(const ParserErrorMsg&)
-  {}
-
-  //---------------------------------------------------------------------------
-  ParserErrorMsg::ParserErrorMsg()
-    :m_vErrMsg(0)
-  {
-    m_vErrMsg.resize(ecCOUNT);
-
-    m_vErrMsg[ecUNASSIGNABLE_TOKEN]    = _T("Undefined token \"$TOK$\" found at position $POS$.");
-    m_vErrMsg[ecINTERNAL_ERROR]        = _T("Internal error");
-    m_vErrMsg[ecINVALID_NAME]          = _T("Invalid function-, variable- or constant name: \"$TOK$\".");
-    m_vErrMsg[ecINVALID_BINOP_IDENT]   = _T("Invalid binary operator identifier: \"$TOK$\".");
-    m_vErrMsg[ecINVALID_INFIX_IDENT]   = _T("Invalid infix operator identifier: \"$TOK$\".");
-    m_vErrMsg[ecINVALID_POSTFIX_IDENT] = _T("Invalid postfix operator identifier: \"$TOK$\".");
-    m_vErrMsg[ecINVALID_FUN_PTR]       = _T("Invalid pointer to callback function.");
-    m_vErrMsg[ecEMPTY_EXPRESSION]      = _T("Expression is empty.");
-    m_vErrMsg[ecINVALID_VAR_PTR]       = _T("Invalid pointer to variable.");
-    m_vErrMsg[ecUNEXPECTED_OPERATOR]   = _T("Unexpected operator \"$TOK$\" found at position $POS$");
-    m_vErrMsg[ecUNEXPECTED_EOF]        = _T("Unexpected end of expression at position $POS$");
-    m_vErrMsg[ecUNEXPECTED_ARG_SEP]    = _T("Unexpected argument separator at position $POS$");
-    m_vErrMsg[ecUNEXPECTED_PARENS]     = _T("Unexpected parenthesis \"$TOK$\" at position $POS$");
-    m_vErrMsg[ecUNEXPECTED_FUN]        = _T("Unexpected function \"$TOK$\" at position $POS$");
-    m_vErrMsg[ecUNEXPECTED_VAL]        = _T("Unexpected value \"$TOK$\" found at position $POS$");
-    m_vErrMsg[ecUNEXPECTED_VAR]        = _T("Unexpected variable \"$TOK$\" found at position $POS$");
-    m_vErrMsg[ecUNEXPECTED_ARG]        = _T("Function arguments used without a function (position: $POS$)");
-    m_vErrMsg[ecMISSING_PARENS]        = _T("Missing parenthesis");
-    m_vErrMsg[ecTOO_MANY_PARAMS]       = _T("Too many parameters for function \"$TOK$\" at expression position $POS$");
-    m_vErrMsg[ecTOO_FEW_PARAMS]        = _T("Too few parameters for function \"$TOK$\" at expression position $POS$");
-    m_vErrMsg[ecDIV_BY_ZERO]           = _T("Divide by zero");
-    m_vErrMsg[ecDOMAIN_ERROR]          = _T("Domain error");
-    m_vErrMsg[ecNAME_CONFLICT]         = _T("Name conflict");
-    m_vErrMsg[ecOPT_PRI]               = _T("Invalid value for operator priority (must be greater or equal to zero).");
-    m_vErrMsg[ecBUILTIN_OVERLOAD]      = _T("user defined binary operator \"$TOK$\" conflicts with a built in operator.");
-    m_vErrMsg[ecUNEXPECTED_STR]        = _T("Unexpected string token found at position $POS$.");
-    m_vErrMsg[ecUNTERMINATED_STRING]   = _T("Unterminated string starting at position $POS$.");
-    m_vErrMsg[ecSTRING_EXPECTED]       = _T("String function called with a non string type of argument.");
-    m_vErrMsg[ecVAL_EXPECTED]          = _T("String value used where a numerical argument is expected.");
-    m_vErrMsg[ecOPRT_TYPE_CONFLICT]    = _T("No suitable overload for operator \"$TOK$\" at position $POS$.");
-    m_vErrMsg[ecGENERIC]               = _T("Parser error.");
-    m_vErrMsg[ecLOCALE]                = _T("Decimal separator is identic to function argument separator.");
-    m_vErrMsg[ecSTR_RESULT]            = _T("Function result is a string.");
-
-    #if defined(_DEBUG)
-      for (int i=0; i<ecCOUNT; ++i)
-        if (!m_vErrMsg[i].length())
-          assert(false);
-    #endif
-  }
-
-  //---------------------------------------------------------------------------
-  //
-  //  ParserError class
-  //
-  //---------------------------------------------------------------------------
-
-  /** \brief Default constructor. */
-  ParserError::ParserError()
-    :m_strMsg()
-    ,m_strFormula()
-    ,m_strTok()
-    ,m_iPos(-1)
-    ,m_iErrc(ecUNDEFINED)
-    ,m_ErrMsg(ParserErrorMsg::Instance())
-  {
-  }
-
-  //------------------------------------------------------------------------------
-  /** \brief This Constructor is used for internal exceptions only. 
-      
-    It does not contain any information but the error code.
-  */
-  ParserError::ParserError(EErrorCodes /*a_iErrc*/) 
-    :m_ErrMsg(ParserErrorMsg::Instance())
-  {
-    Reset();
-    m_strMsg = _T("parser error");
-  }
-
-  //------------------------------------------------------------------------------
-  /** \brief Construct an error from a message text. */
-  ParserError::ParserError(const string_type &sMsg) 
-    :m_ErrMsg(ParserErrorMsg::Instance())
-  {
-    Reset();
-    m_strMsg = sMsg;
-  }
-
-  //------------------------------------------------------------------------------
-  /** \brief Construct an error object. 
-      \param [in] a_iErrc the error code.
-      \param [in] sTok The token string related to this error.
-      \param [in] sExpr The expression related to the error.
-      \param [in] a_iPos the position in the expression where the error occured. 
-  */
-  ParserError::ParserError( EErrorCodes iErrc,
-                            const string_type &sTok,
-                            const string_type &sExpr,
-                            int iPos )
-    :m_strMsg()
-    ,m_strFormula(sExpr)
-    ,m_strTok(sTok)
-    ,m_iPos(iPos)
-    ,m_iErrc(iErrc)
-    ,m_ErrMsg(ParserErrorMsg::Instance())
-  {
-    m_strMsg = m_ErrMsg[m_iErrc];
-    stringstream_type stream;
-    stream << (int)m_iPos;
-    ReplaceSubString(m_strMsg, _T("$POS$"), stream.str());
-    ReplaceSubString(m_strMsg, _T("$TOK$"), m_strTok);
-  }
-
-  //------------------------------------------------------------------------------
-  /** \brief Construct an error object. 
-      \param [in] iErrc the error code.
-      \param [in] iPos the position in the expression where the error occured. 
-      \param [in] sTok The token string related to this error.
-  */
-  ParserError::ParserError(EErrorCodes iErrc, int iPos, const string_type &sTok) 
-    :m_strMsg()
-    ,m_strFormula()
-    ,m_strTok(sTok)
-    ,m_iPos(iPos)
-    ,m_iErrc(iErrc)
-    ,m_ErrMsg(ParserErrorMsg::Instance())
-  {
-    m_strMsg = m_ErrMsg[m_iErrc];
-    stringstream_type stream;
-    stream << (int)m_iPos;
-    ReplaceSubString(m_strMsg, _T("$POS$"), stream.str());
-    ReplaceSubString(m_strMsg, _T("$TOK$"), m_strTok);
-  }
-
-  //------------------------------------------------------------------------------
-  /** \brief Construct an error object. 
-      \param [in] szMsg The error message text.
-      \param [in] iPos the position related to the error.
-      \param [in] sTok The token string related to this error.
-  */
-  ParserError::ParserError(const char_type *szMsg, int iPos, const string_type &sTok) 
-    :m_strMsg(szMsg)
-    ,m_strFormula()
-    ,m_strTok(sTok)
-    ,m_iPos(iPos)
-    ,m_iErrc(ecGENERIC)
-    ,m_ErrMsg(ParserErrorMsg::Instance())
-  {
-    stringstream_type stream;
-    stream << (int)m_iPos;
-    ReplaceSubString(m_strMsg, _T("$POS$"), stream.str());
-    ReplaceSubString(m_strMsg, _T("$TOK$"), m_strTok);
-  }
-
-  //------------------------------------------------------------------------------
-  /** \brief Copy constructor. */
-  ParserError::ParserError(const ParserError &a_Obj)
-    :m_strMsg(a_Obj.m_strMsg)
-    ,m_strFormula(a_Obj.m_strFormula)
-    ,m_strTok(a_Obj.m_strTok)
-    ,m_iPos(a_Obj.m_iPos)
-    ,m_iErrc(a_Obj.m_iErrc)
-    ,m_ErrMsg(ParserErrorMsg::Instance())
-  {
-  }
-
-  //------------------------------------------------------------------------------
-  /** \brief Assignment operator. */
-  ParserError& ParserError::operator=(const ParserError &a_Obj)
-  {
-    if (this==&a_Obj)
-      return *this;
-
-    m_strMsg = a_Obj.m_strMsg;
-    m_strFormula = a_Obj.m_strFormula;
-    m_strTok = a_Obj.m_strTok;
-    m_iPos = a_Obj.m_iPos;
-    m_iErrc = a_Obj.m_iErrc;
-    return *this;
-  }
-
-  //------------------------------------------------------------------------------
-  ParserError::~ParserError()
-  {}
-
-  //------------------------------------------------------------------------------
-  /** \brief Replace all ocuurences of a substring with another string. 
-      \param strFind The string that shall be replaced.
-      \param strReplaceWith The string that should be inserted instead of strFind
-  */
-  void ParserError::ReplaceSubString( string_type &strSource,
-                                      const string_type &strFind,
-                                      const string_type &strReplaceWith)
-  {
-    string_type strResult;
-    string_type::size_type iPos(0), iNext(0);
-
-    for(;;)
-    {
-      iNext = strSource.find(strFind, iPos);
-      strResult.append(strSource, iPos, iNext-iPos);
-
-      if( iNext==string_type::npos )
-        break;
-
-      strResult.append(strReplaceWith);
-      iPos = iNext + strFind.length();
-    } 
-
-    strSource.swap(strResult);
-  }
-
-  //------------------------------------------------------------------------------
-  /** \brief Reset the erro object. */
-  void ParserError::Reset()
-  {
-    m_strMsg = _T("");
-    m_strFormula = _T("");
-    m_strTok = _T("");
-    m_iPos = -1;
-    m_iErrc = ecUNDEFINED;
-  }
-      
-  //------------------------------------------------------------------------------
-  /** \brief Set the expression related to this error. */
-  void ParserError::SetFormula(const string_type &a_strFormula)
-  {
-    m_strFormula = a_strFormula;
-  }
-
-  //------------------------------------------------------------------------------
-  /** \brief gets the expression related tp this error.*/
-  const string_type& ParserError::GetExpr() const 
-  {
-    return m_strFormula;
-  }
-
-  //------------------------------------------------------------------------------
-  /** \brief Returns the message string for this error. */
-  const string_type& ParserError::GetMsg() const
-  {
-    return m_strMsg;
-  }
-
-  //------------------------------------------------------------------------------
-  /** \brief Return the formula position related to the error. 
-
-    If the error is not related to a distinct position this will return -1
-  */
-  std::size_t ParserError::GetPos() const
-  {
-    return m_iPos;
-  }
-
-  //------------------------------------------------------------------------------
-  /** \brief Return string related with this token (if available). */
-  const string_type& ParserError::GetToken() const
-  {
-    return m_strTok;
-  }
-
-  //------------------------------------------------------------------------------
-  /** \brief Return the error code. */
-  EErrorCodes ParserError::GetCode() const
-  {
-    return m_iErrc;
-  }
-} // namespace mu
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/src/muParserInt.cpp
--- a/muParser/src/muParserInt.cpp	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,271 +0,0 @@
-/*
-                 __________                                      
-    _____   __ __\______   \_____  _______  ______  ____ _______ 
-   /     \ |  |  \|     ___/\__  \ \_  __ \/  ___/_/ __ \\_  __ \
-  |  Y Y  \|  |  /|    |     / __ \_|  | \/\___ \ \  ___/ |  | \/
-  |__|_|  /|____/ |____|    (____  /|__|  /____  > \___  >|__|   
-        \/                       \/            \/      \/        
-  Copyright (C) 2010 Ingo Berg
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy of this 
-  software and associated documentation files (the "Software"), to deal in the Software
-  without restriction, including without limitation the rights to use, copy, modify, 
-  merge, publish, distribute, sublicense, and/or sell copies of the Software, and to 
-  permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in all copies or 
-  substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
-  NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 
-  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
-*/
-
-#include "muParserInt.h"
-
-#include <cmath>
-#include <algorithm>
-#include <numeric>
-
-using namespace std;
-
-/** \file
-    \brief Implementation of a parser using integer value.
-*/
-
-/** \brief Namespace for mathematical applications. */
-namespace mu
-{
-
-value_type ParserInt::Abs(value_type v)  { return (value_type)Round(fabs(v)); }
-value_type ParserInt::Sign(value_type v) { return (Round(v)<0) ? -1 : (Round(v)>0) ? 1 : 0; }
-value_type ParserInt::Ite(value_type v1, 
-                          value_type v2, 
-                          value_type v3) { return (Round(v1)==1) ? Round(v2) : Round(v3); }
-value_type ParserInt::Add(value_type v1, value_type v2) { return Round(v1)  + Round(v2); }
-value_type ParserInt::Sub(value_type v1, value_type v2) { return Round(v1)  - Round(v2); }
-value_type ParserInt::Mul(value_type v1, value_type v2) { return Round(v1)  * Round(v2); }
-value_type ParserInt::Div(value_type v1, value_type v2) { return Round(v1)  / Round(v2); }
-value_type ParserInt::Mod(value_type v1, value_type v2) { return Round(v1)  % Round(v2); }
-value_type ParserInt::Shr(value_type v1, value_type v2) { return Round(v1) >> Round(v2); }
-value_type ParserInt::Shl(value_type v1, value_type v2) { return Round(v1) << Round(v2); }
-value_type ParserInt::LogAnd(value_type v1, value_type v2) { return Round(v1) & Round(v2); }
-value_type ParserInt::LogOr(value_type v1, value_type v2)  { return Round(v1) | Round(v2); }
-value_type ParserInt::And(value_type v1, value_type v2) { return Round(v1) && Round(v2); }
-value_type ParserInt::Or(value_type v1, value_type v2)  { return Round(v1) || Round(v2); }
-value_type ParserInt::Less(value_type v1, value_type v2)      { return Round(v1)  < Round(v2); }
-value_type ParserInt::Greater(value_type v1, value_type v2)   { return Round(v1)  > Round(v2); }
-value_type ParserInt::LessEq(value_type v1, value_type v2)    { return Round(v1) <= Round(v2); }
-value_type ParserInt::GreaterEq(value_type v1, value_type v2) { return Round(v1) >= Round(v2); }
-value_type ParserInt::Equal(value_type v1, value_type v2)     { return Round(v1) == Round(v2); }
-value_type ParserInt::NotEqual(value_type v1, value_type v2)  { return Round(v1) != Round(v2); }
-value_type ParserInt::Not(value_type v) { return !Round(v); }
-value_type ParserInt::Pow(value_type v1, value_type v2) { return std::pow((value_type)Round(v1), (int)Round(v2)); }
-
-//---------------------------------------------------------------------------
-// Unary operator Callbacks: Infix operators
-value_type ParserInt::UnaryMinus(value_type v) 
-{ 
-  return -Round(v); 
-}
-
-//---------------------------------------------------------------------------
-value_type ParserInt::Sum(const value_type* a_afArg, int a_iArgc)
-{ 
-  if (!a_iArgc)	
-    throw ParserError(_T("too few arguments for function sum."));
-
-  value_type fRes=0;
-  for (int i=0; i<a_iArgc; ++i) 
-    fRes += a_afArg[i];
-
-  return fRes;
-}
-
-//---------------------------------------------------------------------------
-value_type ParserInt::Min(const value_type* a_afArg, int a_iArgc)
-{ 
-  if (!a_iArgc)	
-    throw ParserError( _T("too few arguments for function min.") );
-
-  value_type fRes=a_afArg[0];
-  for (int i=0; i<a_iArgc; ++i) 
-    fRes = std::min(fRes, a_afArg[i]);
-
-  return fRes;
-}
-
-//---------------------------------------------------------------------------
-value_type ParserInt::Max(const value_type* a_afArg, int a_iArgc)
-{ 
-  if (!a_iArgc)	
-    throw ParserError(_T("too few arguments for function min."));
-
-  value_type fRes=a_afArg[0];
-  for (int i=0; i<a_iArgc; ++i) 
-    fRes = std::max(fRes, a_afArg[i]);
-
-  return fRes;
-}
-
-//---------------------------------------------------------------------------
-// Default value recognition callback
-int ParserInt::IsVal(const char_type *a_szExpr, int *a_iPos, value_type *a_fVal)
-{
-  string_type buf(a_szExpr);
-  std::size_t pos = buf.find_first_not_of(_T("0123456789"));
-  if (pos==std::string::npos)
-    return 0;
-
-  stringstream_type stream( buf.substr(0, pos ) );
-  int iVal(0);
-
-  stream >> iVal;
-  stringstream_type::pos_type iEnd = stream.tellg();   // Position after reading
-
-  if (iEnd==(stringstream_type::pos_type)-1)
-    return 0;
-
-  *a_iPos += (int)iEnd;
-  *a_fVal = (value_type)iVal;
-  return 1;
-}
-
-//---------------------------------------------------------------------------
-/** \brief Check a given position in the expression for the presence of 
-           a hex value. 
-    \param a_szExpr Pointer to the expression string
-    \param [in/out] a_iPos Pointer to an interger value holding the current parsing 
-           position in the expression.
-    \param [out] a_fVal Pointer to the position where the detected value shall be stored.
-
-  Hey values must be prefixed with "0x" in order to be detected properly.
-*/
-int ParserInt::IsHexVal(const char_type *a_szExpr, int *a_iPos, value_type *a_fVal)
-{
-  if (a_szExpr[1]==0 || (a_szExpr[0]!='0' || a_szExpr[1]!='x') ) 
-    return 0;
-
-  unsigned iVal(0);
-
-  // New code based on streams for UNICODE compliance:
-  stringstream_type::pos_type nPos(0);
-  stringstream_type ss(a_szExpr + 2);
-  ss >> std::hex >> iVal;
-  nPos = ss.tellg();
-
-  if (nPos==(stringstream_type::pos_type)0)
-    return 1;
-
-  *a_iPos += (int)(2 + nPos);
-  *a_fVal = (value_type)iVal;
-  return 1;
-}
-
-//---------------------------------------------------------------------------
-int ParserInt::IsBinVal(const char_type *a_szExpr, int *a_iPos, value_type *a_fVal)
-{
-  if (a_szExpr[0]!='#') 
-    return 0;
-
-  unsigned iVal(0), 
-           iBits(sizeof(iVal)*8),
-           i(0);
-
-  for (i=0; (a_szExpr[i+1]=='0' || a_szExpr[i+1]=='1') && i<iBits; ++i)
-    iVal |= (int)(a_szExpr[i+1]=='1') << ((iBits-1)-i);
-
-  if (i==0) 
-    return 0;
-
-  if (i==iBits)
-    throw exception_type(_T("Binary to integer conversion error (overflow)."));
-
-  *a_fVal = (unsigned)(iVal >> (iBits-i) );
-  *a_iPos += i+1;
-
-  return 1;
-}
-
-//---------------------------------------------------------------------------
-/** \brief Constructor. 
-
-  Call ParserBase class constructor and trigger Function, Operator and Constant initialization.
-*/
-ParserInt::ParserInt()
-  :ParserBase()
-{
-  AddValIdent(IsHexVal);
-  AddValIdent(IsBinVal);
-  AddValIdent(IsVal);
-
-  InitCharSets();
-  InitFun();
-  InitOprt();
-}
-
-//---------------------------------------------------------------------------
-void ParserInt::InitConst()
-{
-}
-
-//---------------------------------------------------------------------------
-void ParserInt::InitCharSets()
-{
-  DefineNameChars( _T("0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") );
-  DefineOprtChars( _T("+-*^/?<>=!%&|~'_") );
-  DefineInfixOprtChars( _T("/+-*^?<>=!%&|~'_") );
-}
-
-//---------------------------------------------------------------------------
-/** \brief Initialize the default functions. */
-void ParserInt::InitFun()
-{
-  DefineFun( _T("sign"), Sign);
-  DefineFun( _T("abs"), Abs);
-  DefineFun( _T("if"), Ite);
-  DefineFun( _T("sum"), Sum);
-  DefineFun( _T("min"), Min);
-  DefineFun( _T("max"), Max);
-}
-
-//---------------------------------------------------------------------------
-/** \brief Initialize operators. */
-void ParserInt::InitOprt()
-{
-  // disable all built in operators, not all of them usefull for integer numbers
-  // (they don't do rounding of values)
-  EnableBuiltInOprt(false);
-
-  // Disable all built in operators, they wont work with integer numbers
-  // since they are designed for floating point numbers
-  DefineInfixOprt( _T("-"), UnaryMinus);
-  DefineInfixOprt( _T("!"), Not);
-
-  DefineOprt( _T("&"), LogAnd, prLOGIC);
-  DefineOprt( _T("|"), LogOr, prLOGIC);
-  DefineOprt( _T("&&"), And, prLOGIC);
-  DefineOprt( _T("||"), Or, prLOGIC);
-
-  DefineOprt( _T("<"), Less, prCMP);
-  DefineOprt( _T(">"), Greater, prCMP);
-  DefineOprt( _T("<="), LessEq, prCMP);
-  DefineOprt( _T(">="), GreaterEq, prCMP);
-  DefineOprt( _T("=="), Equal, prCMP);
-  DefineOprt( _T("!="), NotEqual, prCMP);
-
-  DefineOprt( _T("+"), Add, prADD_SUB);
-  DefineOprt( _T("-"), Sub, prADD_SUB);
-
-  DefineOprt( _T("*"), Mul, prMUL_DIV);
-  DefineOprt( _T("/"), Div, prMUL_DIV);
-  DefineOprt( _T("%"), Mod, prMUL_DIV);
-
-  DefineOprt( _T("^"), Pow, prPOW, oaRIGHT);
-  DefineOprt( _T(">>"), Shr, prMUL_DIV+1);
-  DefineOprt( _T("<<"), Shl, prMUL_DIV+1);
-}
-
-} // namespace mu
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/src/muParserTest.cpp
--- a/muParser/src/muParserTest.cpp	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1242 +0,0 @@
-/*
-                 __________                                      
-    _____   __ __\______   \_____  _______  ______  ____ _______ 
-   /     \ |  |  \|     ___/\__  \ \_  __ \/  ___/_/ __ \\_  __ \
-  |  Y Y  \|  |  /|    |     / __ \_|  | \/\___ \ \  ___/ |  | \/
-  |__|_|  /|____/ |____|    (____  /|__|  /____  > \___  >|__|   
-        \/                       \/            \/      \/        
-  Copyright (C) 2010 Ingo Berg
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy of this 
-  software and associated documentation files (the "Software"), to deal in the Software
-  without restriction, including without limitation the rights to use, copy, modify, 
-  merge, publish, distribute, sublicense, and/or sell copies of the Software, and to 
-  permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in all copies or 
-  substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
-  NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 
-  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
-*/
-
-#include "muParserTest.h"
-
-#include <cstdio>
-#include <cmath>
-#include <iostream>
-
-#define PARSER_CONST_PI  3.141592653589793238462643
-#define PARSER_CONST_E   2.718281828459045235360287
-
-using namespace std;
-
-/** \file
-    \brief This file contains the implementation of parser test cases.
-*/
-
-
-namespace mu
-{
-  namespace Test
-  {
-    int ParserTester::c_iCount = 0;
-
-    //---------------------------------------------------------------------------
-    ParserTester::ParserTester()
-      :m_vTestFun()
-    {
-      AddTest(&ParserTester::TestNames);
-      AddTest(&ParserTester::TestSyntax);
-      AddTest(&ParserTester::TestPostFix);
-      AddTest(&ParserTester::TestInfixOprt);
-      AddTest(&ParserTester::TestVarConst);
-      AddTest(&ParserTester::TestVolatile);
-      AddTest(&ParserTester::TestMultiArg);
-      AddTest(&ParserTester::TestExpression);
-      AddTest(&ParserTester::TestInterface);
-      AddTest(&ParserTester::TestBinOprt);
-      AddTest(&ParserTester::TestException);
-      AddTest(&ParserTester::TestStrArg);
-
-      ParserTester::c_iCount = 0;
-    }
-
-    //---------------------------------------------------------------------------
-    int ParserTester::TestInterface()
-    {
-      int iStat = 0;
-      mu::console() << _T("testing member functions...");
-   
-      // Test RemoveVar
-      value_type afVal[3] = {1,2,3};
-      Parser p;
-  
-      try
-      {
-        p.DefineVar( _T("a"), &afVal[0]);
-        p.DefineVar( _T("b"), &afVal[1]);
-        p.DefineVar( _T("c"), &afVal[2]);
-        p.SetExpr( _T("a+b+c") );
-        p.Eval();
-      }
-      catch(...)
-      {
-        iStat += 1;  // this is not supposed to happen 
-      }
-
-      try
-      {
-        p.RemoveVar( _T("c") );
-        p.Eval();
-        iStat += 1;  // not supposed to reach this, nonexisting variable "c" deleted...
-      }
-      catch(...)
-      {
-        // failure is expected...
-      }
-
-      if (iStat==0) 
-        mu::console() << _T("passed") << endl;
-      else 
-        mu::console() << _T("\n  failed with ") << iStat << _T(" errors") << endl;
-
-      return iStat;
-    }
-
-    //---------------------------------------------------------------------------
-    int ParserTester::TestStrArg()
-    {
-      int iStat = 0;
-      mu::console() << _T("testing string arguments...");
- 
-      iStat += EqnTest(_T("valueof(\"\")"), 123, true);   // empty string arguments caused a crash
-      iStat += EqnTest(_T("valueof(\"aaa\")+valueof(\"bbb\")  "), 246, true);
-      iStat += EqnTest(_T("2*(valueof(\"aaa\")-23)+valueof(\"bbb\")"), 323, true);
-      // use in expressions with variables
-      iStat += EqnTest(_T("a*(atof(\"10\")-b)"), 8, true);
-      iStat += EqnTest(_T("a-(atof(\"10\")*b)"), -19, true);
-      // string + numeric arguments
-      iStat += EqnTest(_T("strfun1(\"100\")"), 100, true);
-      iStat += EqnTest(_T("strfun2(\"100\",1)"), 101, true);
-      iStat += EqnTest(_T("strfun3(\"99\",1,2)"), 102, true);
-
-      if (iStat==0)
-        mu::console() << _T("passed") << endl;
-      else 
-        mu::console() << _T("\n  failed with ") << iStat << _T(" errors") << endl;
-
-      return iStat;
-    }
-
-    //---------------------------------------------------------------------------
-    int ParserTester::TestBinOprt()
-    {
-      int iStat = 0;
-      mu::console() << _T("testing binary operators...");
-   
-      // built in operators
-      // xor operator
-      iStat += EqnTest(_T("1 xor 2"), 3, true); 
-      iStat += EqnTest(_T("a xor b"), 3, true);            // with a=1 and b=2
-      iStat += EqnTest(_T("1 xor 2 xor 3"), 0, true); 
-      iStat += EqnTest(_T("a xor b xor 3"), 0, true);      // with a=1 and b=2
-      iStat += EqnTest(_T("a xor b xor c"), 0, true);      // with a=1 and b=2
-      iStat += EqnTest(_T("(1 xor 2) xor 3"), 0, true); 
-      iStat += EqnTest(_T("(a xor b) xor c"), 0, true);    // with a=1 and b=2
-      iStat += EqnTest(_T("(a) xor (b) xor c"), 0, true);  // with a=1 and b=2
-      iStat += EqnTest(_T("1 or 2"), 3, true); 
-      iStat += EqnTest(_T("a or b"), 3, true);             // with a=1 and b=2
-      iStat += EqnTest(_T("a++b"), 3, true);
-      iStat += EqnTest(_T("a ++ b"), 3, true);
-      iStat += EqnTest(_T("1++2"), 3, true);
-      iStat += EqnTest(_T("1 ++ 2"), 3, true);
-      iStat += EqnTest(_T("a add b"), 3, true);
-      iStat += EqnTest(_T("1 add 2"), 3, true);
-      iStat += EqnTest(_T("a<b"), 1, true);
-      iStat += EqnTest(_T("b>a"), 1, true);
-      iStat += EqnTest(_T("a>a"), 0, true);
-      iStat += EqnTest(_T("a<a"), 0, true);
-      iStat += EqnTest(_T("a>a"), 0, true);
-      iStat += EqnTest(_T("a<=a"), 1, true);
-      iStat += EqnTest(_T("a<=b"), 1, true);
-      iStat += EqnTest(_T("b<=a"), 0, true);
-      iStat += EqnTest(_T("a>=a"), 1, true);
-      iStat += EqnTest(_T("b>=a"), 1, true);
-      iStat += EqnTest(_T("a>=b"), 0, true);
-
-      // Assignement operator
-      iStat += EqnTest(_T("a = b"), 2, true); 
-      iStat += EqnTest(_T("a = sin(b)"), 0.909297, true); 
-      iStat += EqnTest(_T("a = 1+sin(b)"), 1.909297, true);
-      iStat += EqnTest(_T("(a=b)*2"), 4, true);
-      iStat += EqnTest(_T("2*(a=b)"), 4, true);
-      iStat += EqnTest(_T("2*(a=b+1)"), 6, true);
-      iStat += EqnTest(_T("(a=b+1)*2"), 6, true);
-
-      iStat += EqnTest(_T("2^2^3"), 256, true); 
-      iStat += EqnTest(_T("1/2/3"), 1.0/6.0, true); 
-
-      // reference: http://www.wolframalpha.com/input/?i=3%2B4*2%2F%281-5%29^2^3
-      iStat += EqnTest(_T("3+4*2/(1-5)^2^3"), 3.0001220703125, true); 
-
-      // Test user defined binary operators
-      iStat += EqnTestInt(_T("1 | 2"), 3, true);          
-      iStat += EqnTestInt(_T("1 || 2"), 1, true);          
-      iStat += EqnTestInt(_T("123 & 456"), 72, true);          
-      iStat += EqnTestInt(_T("(123 & 456) % 10"), 2, true);
-      iStat += EqnTestInt(_T("1 && 0"), 0, true);          
-      iStat += EqnTestInt(_T("123 && 456"), 1, true);          
-      iStat += EqnTestInt(_T("1 << 3"), 8, true);          
-      iStat += EqnTestInt(_T("8 >> 3"), 1, true);          
-      iStat += EqnTestInt(_T("9 / 4"), 2, true);  
-      iStat += EqnTestInt(_T("9 % 4"), 1, true);  
-      iStat += EqnTestInt(_T("if(5%2,1,0)"), 1, true);
-      iStat += EqnTestInt(_T("if(4%2,1,0)"), 0, true);
-      iStat += EqnTestInt(_T("-10+1"), -9, true);
-      iStat += EqnTestInt(_T("1+2*3"), 7, true);
-      iStat += EqnTestInt(_T("const1 != const2"), 1, true);
-      iStat += EqnTestInt(_T("const1 != const2"), 0, false);
-      iStat += EqnTestInt(_T("const1 == const2"), 0, true);
-      iStat += EqnTestInt(_T("const1 == 1"), 1, true);
-      iStat += EqnTestInt(_T("10*(const1 == 1)"), 10, true);
-      iStat += EqnTestInt(_T("2*(const1 | const2)"), 6, true);
-      iStat += EqnTestInt(_T("2*(const1 | const2)"), 7, false);
-      iStat += EqnTestInt(_T("const1 < const2"), 1, true);
-      iStat += EqnTestInt(_T("const2 > const1"), 1, true);
-      iStat += EqnTestInt(_T("const1 <= 1"), 1, true);
-      iStat += EqnTestInt(_T("const2 >= 2"), 1, true);
-      iStat += EqnTestInt(_T("2*(const1 + const2)"), 6, true);
-      iStat += EqnTestInt(_T("2*(const1 - const2)"), -2, true);
-      iStat += EqnTestInt(_T("a != b"), 1, true);
-      iStat += EqnTestInt(_T("a != b"), 0, false);
-      iStat += EqnTestInt(_T("a == b"), 0, true);
-      iStat += EqnTestInt(_T("a == 1"), 1, true);
-      iStat += EqnTestInt(_T("10*(a == 1)"), 10, true);
-      iStat += EqnTestInt(_T("2*(a | b)"), 6, true);
-      iStat += EqnTestInt(_T("2*(a | b)"), 7, false);
-      iStat += EqnTestInt(_T("a < b"), 1, true);
-      iStat += EqnTestInt(_T("b > a"), 1, true);
-      iStat += EqnTestInt(_T("a <= 1"), 1, true);
-      iStat += EqnTestInt(_T("b >= 2"), 1, true);
-      iStat += EqnTestInt(_T("2*(a + b)"), 6, true);
-      iStat += EqnTestInt(_T("2*(a - b)"), -2, true);
-      iStat += EqnTestInt(_T("a + (a << b)"), 5, true);
-      iStat += EqnTestInt(_T("-2^2"), -4, true);
-      iStat += EqnTestInt(_T("3--a"), 4, true);
-      iStat += EqnTestInt(_T("3+-3^2"), -6, true);
-
-      // Test reading of hex values:
-      iStat += EqnTestInt(_T("0xff"), 255, true);
-      iStat += EqnTestInt(_T("10+0xff"), 265, true);
-      iStat += EqnTestInt(_T("0xff+10"), 265, true);
-      iStat += EqnTestInt(_T("10*0xff"), 2550, true);
-      iStat += EqnTestInt(_T("0xff*10"), 2550, true);
-      iStat += EqnTestInt(_T("10+0xff+1"), 266, true);
-      iStat += EqnTestInt(_T("1+0xff+10"), 266, true);
-
-// incorrect: '^' is yor here, not power
-//    iStat += EqnTestInt("-(1+2)^2", -9, true);
-//    iStat += EqnTestInt("-1^3", -1, true);          
-
-      // Test precedence
-      // a=1, b=2, c=3
-      iStat += EqnTestInt(_T("a + b * c"), 7, true);
-      iStat += EqnTestInt(_T("a * b + c"), 5, true);
-      iStat += EqnTestInt(_T("a<b && b>10"), 0, true);
-      iStat += EqnTestInt(_T("a<b && b<10"), 1, true);
-
-      iStat += EqnTestInt(_T("a + b << c"), 17, true);
-      iStat += EqnTestInt(_T("a << b + c"), 7, true);
-      iStat += EqnTestInt(_T("c * b < a"), 0, true);
-      iStat += EqnTestInt(_T("c * b == 6 * a"), 1, true);
-      iStat += EqnTestInt(_T("2^2^3"), 256, true); 
-
-
-      if (iStat==0)
-        mu::console() << _T("passed") << endl;
-      else 
-        mu::console() << _T("\n  failed with ") << iStat << _T(" errors") << endl;
-
-      return iStat;
-    }
-
-    //---------------------------------------------------------------------------
-    /** \brief Check muParser name restriction enforcement. */
-    int ParserTester::TestNames()
-    {
-      int  iStat= 0,
-           iErr = 0;
-
-      mu::console() << "testing name restriction enforcement...";
-    
-      Parser p;
-
-  #define PARSER_THROWCHECK(DOMAIN, FAIL, EXPR, ARG) \
-      iErr = 0;                                      \
-      ParserTester::c_iCount++;                      \
-      try                                            \
-      {                                              \
-        p.Define##DOMAIN(EXPR, ARG);                 \
-      }                                              \
-      catch(Parser::exception_type&)                 \
-      {                                              \
-        iErr = (FAIL==false) ? 0 : 1;                \
-      }                                              \
-      iStat += iErr;      
-      
-      // constant names
-      PARSER_THROWCHECK(Const, false, _T("0a"), 1)
-      PARSER_THROWCHECK(Const, false, _T("9a"), 1)
-      PARSER_THROWCHECK(Const, false, _T("+a"), 1)
-      PARSER_THROWCHECK(Const, false, _T("-a"), 1)
-      PARSER_THROWCHECK(Const, false, _T("a-"), 1)
-      PARSER_THROWCHECK(Const, false, _T("a*"), 1)
-      PARSER_THROWCHECK(Const, false, _T("a?"), 1)
-      PARSER_THROWCHECK(Const, true, _T("a"), 1)
-      PARSER_THROWCHECK(Const, true, _T("a_min"), 1)
-      PARSER_THROWCHECK(Const, true, _T("a_min0"), 1)
-      PARSER_THROWCHECK(Const, true, _T("a_min9"), 1)
-      // variable names
-      value_type a;
-      p.ClearConst();
-      PARSER_THROWCHECK(Var, false, _T("123abc"), &a)
-      PARSER_THROWCHECK(Var, false, _T("9a"), &a)
-      PARSER_THROWCHECK(Var, false, _T("0a"), &a)
-      PARSER_THROWCHECK(Var, false, _T("+a"), &a)
-      PARSER_THROWCHECK(Var, false, _T("-a"), &a)
-      PARSER_THROWCHECK(Var, false, _T("?a"), &a)
-      PARSER_THROWCHECK(Var, false, _T("!a"), &a)
-      PARSER_THROWCHECK(Var, false, _T("a+"), &a)
-      PARSER_THROWCHECK(Var, false, _T("a-"), &a)
-      PARSER_THROWCHECK(Var, false, _T("a*"), &a)
-      PARSER_THROWCHECK(Var, false, _T("a?"), &a)
-      PARSER_THROWCHECK(Var, true, _T("a"), &a)
-      PARSER_THROWCHECK(Var, true, _T("a_min"), &a)
-      PARSER_THROWCHECK(Var, true, _T("a_min0"), &a)
-      PARSER_THROWCHECK(Var, true, _T("a_min9"), &a)
-      PARSER_THROWCHECK(Var, false, _T("a_min9"), 0)
-      // Postfix operators
-      // fail
-      PARSER_THROWCHECK(PostfixOprt, false, _T("(k"), f1of1)
-      PARSER_THROWCHECK(PostfixOprt, false, _T("9+"), f1of1)
-      PARSER_THROWCHECK(PostfixOprt, false, _T("+"), 0)
-      // pass
-      PARSER_THROWCHECK(PostfixOprt, true, _T("-a"),  f1of1)
-      PARSER_THROWCHECK(PostfixOprt, true, _T("?a"),  f1of1)
-      PARSER_THROWCHECK(PostfixOprt, true, _T("_"),   f1of1)
-      PARSER_THROWCHECK(PostfixOprt, true, _T("#"),   f1of1)
-      PARSER_THROWCHECK(PostfixOprt, true, _T("&&"),  f1of1)
-      PARSER_THROWCHECK(PostfixOprt, true, _T("||"),  f1of1)
-      PARSER_THROWCHECK(PostfixOprt, true, _T("&"),   f1of1)
-      PARSER_THROWCHECK(PostfixOprt, true, _T("|"),   f1of1)
-      PARSER_THROWCHECK(PostfixOprt, true, _T("++"),  f1of1)
-      PARSER_THROWCHECK(PostfixOprt, true, _T("--"),  f1of1)
-      PARSER_THROWCHECK(PostfixOprt, true, _T("?>"),  f1of1)
-      PARSER_THROWCHECK(PostfixOprt, true, _T("?<"),  f1of1)
-      PARSER_THROWCHECK(PostfixOprt, true, _T("**"),  f1of1)
-      PARSER_THROWCHECK(PostfixOprt, true, _T("xor"), f1of1)
-      PARSER_THROWCHECK(PostfixOprt, true, _T("and"), f1of1)
-      PARSER_THROWCHECK(PostfixOprt, true, _T("or"),  f1of1)
-      PARSER_THROWCHECK(PostfixOprt, true, _T("not"), f1of1)
-      PARSER_THROWCHECK(PostfixOprt, true, _T("!"),   f1of1)
-      // Binary operator
-      // The following must fail with builtin operators activated
-      // p.EnableBuiltInOp(true); -> this is the default
-      PARSER_THROWCHECK(Oprt, false, _T("+"),  f1of2)
-      PARSER_THROWCHECK(Oprt, false, _T("-"),  f1of2)
-      PARSER_THROWCHECK(Oprt, false, _T("*"),  f1of2)
-      PARSER_THROWCHECK(Oprt, false, _T("/"),  f1of2)
-      // without activated built in operators it should work
-      p.EnableBuiltInOprt(false);
-      PARSER_THROWCHECK(Oprt, true, _T("+"),  f1of2)
-      PARSER_THROWCHECK(Oprt, true, _T("-"),  f1of2)
-      PARSER_THROWCHECK(Oprt, true, _T("*"),  f1of2)
-      PARSER_THROWCHECK(Oprt, true, _T("/"),  f1of2)
-  #undef PARSER_THROWCHECK
-
-      if (iStat==0) 
-        mu::console() << _T("passed") << endl;
-      else 
-        mu::console() << _T("\n  failed with ") << iStat << _T(" errors") << endl;
-
-      return iStat;
-    }
-
-    //---------------------------------------------------------------------------
-    int ParserTester::TestSyntax()
-    {
-      int iStat = 0;
-      mu::console() << _T("testing syntax engine...");
-
-      iStat += EqnTest(_T("(1+ 2*a)"), 3, true);   // Spaces within formula
-      iStat += EqnTest(_T("sqrt((4))"), 2, true);  // Multiple brackets
-      iStat += EqnTest(_T("sqrt((2)+2)"), 2, true);// Multiple brackets
-      iStat += EqnTest(_T("sqrt(2+(2))"), 2, true);// Multiple brackets
-      iStat += EqnTest(_T("sqrt(a+(3))"), 2, true);// Multiple brackets
-      iStat += EqnTest(_T("sqrt((3)+a)"), 2, true);// Multiple brackets
-      iStat += EqnTest(_T("order(1,2)"), 1, true); // May not cause name collision with operator "or"
-      iStat += EqnTest(_T("(2+"), 0, false);       // missing closing bracket 
-      iStat += EqnTest(_T("2++4"), 0, false);      // unexpected operator
-      iStat += EqnTest(_T("2+-4"), 0, false);      // unexpected operator
-      iStat += EqnTest(_T("(2+)"), 0, false);      // unexpected closing bracket
-      iStat += EqnTest(_T("--2"), 0, false);       // double sign
-      iStat += EqnTest(_T("ksdfj"), 0, false);     // unknown token
-      iStat += EqnTest(_T("()"), 0, false);        // empty bracket without a function
-      iStat += EqnTest(_T("5+()"), 0, false);      // empty bracket without a function
-      iStat += EqnTest(_T("sin(cos)"), 0, false);  // unexpected function
-      iStat += EqnTest(_T("5t6"), 0, false);       // unknown token
-      iStat += EqnTest(_T("5 t 6"), 0, false);     // unknown token
-      iStat += EqnTest(_T("8*"), 0, false);        // unexpected end of formula
-      iStat += EqnTest(_T(",3"), 0, false);        // unexpected comma
-      iStat += EqnTest(_T("3,5"), 0, false);       // unexpected comma
-      iStat += EqnTest(_T("sin(8,8)"), 0, false);  // too many function args
-      iStat += EqnTest(_T("(7,8)"), 0, false);     // too many function args
-      iStat += EqnTest(_T("sin)"), 0, false);      // unexpected closing bracket
-      iStat += EqnTest(_T("a)"), 0, false);        // unexpected closing bracket
-      iStat += EqnTest(_T("pi)"), 0, false);       // unexpected closing bracket
-      iStat += EqnTest(_T("sin(())"), 0, false);   // unexpected closing bracket
-      iStat += EqnTest(_T("sin()"), 0, false);     // unexpected closing bracket
-
-      if (iStat==0)
-        mu::console() << _T("passed") << endl;
-      else 
-        mu::console() << _T("\n  failed with ") << iStat << _T(" errors") << endl;
-
-      return iStat;
-    }
-
-    //---------------------------------------------------------------------------
-    int ParserTester::TestVarConst()
-    {
-      int iStat = 0;
-      mu::console() << _T("testing variable/constant name recognition...");
-
-      // distinguish constants with same basename
-      iStat += EqnTest( _T("const"), 1, true);
-      iStat += EqnTest( _T("const1"), 2, true);
-      iStat += EqnTest( _T("const2"), 3, true);
-      iStat += EqnTest( _T("2*const"), 2, true);
-      iStat += EqnTest( _T("2*const1"), 4, true);
-      iStat += EqnTest( _T("2*const2"), 6, true);
-      iStat += EqnTest( _T("2*const+1"), 3, true);
-      iStat += EqnTest( _T("2*const1+1"), 5, true);
-      iStat += EqnTest( _T("2*const2+1"), 7, true);
-      iStat += EqnTest( _T("const"), 0, false);
-      iStat += EqnTest( _T("const1"), 0, false);
-      iStat += EqnTest( _T("const2"), 0, false);
-
-      // distinguish variables with same basename
-      iStat += EqnTest( _T("a"), 1, true);
-      iStat += EqnTest( _T("aa"), 2, true);
-      iStat += EqnTest( _T("2*a"), 2, true);
-      iStat += EqnTest( _T("2*aa"), 4, true);
-      iStat += EqnTest( _T("2*a-1"), 1, true);
-      iStat += EqnTest( _T("2*aa-1"), 3, true);
-
-      // Finally test querying of used variables
-      try
-      {
-        int idx;
-        mu::Parser p;
-        mu::value_type vVarVal[] = { 1, 2, 3, 4, 5};
-        p.DefineVar( _T("a"), &vVarVal[0]);
-        p.DefineVar( _T("b"), &vVarVal[1]);
-        p.DefineVar( _T("c"), &vVarVal[2]);
-        p.DefineVar( _T("d"), &vVarVal[3]);
-        p.DefineVar( _T("e"), &vVarVal[4]);
-
-        // Test lookup of defined variables
-        // 4 used variables
-        p.SetExpr( _T("a+b+c+d") );
-        mu::varmap_type UsedVar = p.GetUsedVar();
-        int iCount = (int)UsedVar.size();
-        if (iCount!=4) 
-          throw false;
-        
-        // the next check will fail if the parser 
-        // erroneousely creates new variables internally
-        if (p.GetVar().size()!=5)
-          throw false;
-
-        mu::varmap_type::const_iterator item = UsedVar.begin();
-        for (idx=0; item!=UsedVar.end(); ++item)
-        {
-          if (&vVarVal[idx++]!=item->second) 
-            throw false;
-        }
-
-        // Test lookup of undefined variables
-        p.SetExpr( _T("undef1+undef2+undef3") );
-        UsedVar = p.GetUsedVar();
-        iCount = (int)UsedVar.size();
-        if (iCount!=3) 
-          throw false;
-
-        // the next check will fail if the parser 
-        // erroneousely creates new variables internally
-        if (p.GetVar().size()!=5)
-          throw false;
-
-        for (item = UsedVar.begin(); item!=UsedVar.end(); ++item)
-        {
-          if (item->second!=0) 
-            throw false; // all pointers to undefined variables must be null
-        }
-
-        // 1 used variables
-        p.SetExpr( _T("a+b") );
-        UsedVar = p.GetUsedVar();
-        iCount = (int)UsedVar.size();
-        if (iCount!=2) throw false;
-        item = UsedVar.begin();
-        for (idx=0; item!=UsedVar.end(); ++item)
-          if (&vVarVal[idx++]!=item->second) throw false;
-
-      }
-      catch(...)
-      {
-        iStat += 1;
-      }
-
-      if (iStat==0)  
-        mu::console() << _T("passed") << endl;
-      else
-        mu::console() << _T("\n  failed with ") << iStat << _T(" errors") << endl;
-
-      return iStat;
-    }
-
-    //---------------------------------------------------------------------------
-    int ParserTester::TestMultiArg()
-    {
-      int iStat = 0;
-      mu::console() << _T("testing multiarg functions...");
-    
-      // Compound expressions
-      iStat += EqnTest( _T("1,2,3"), 3, true);
-      iStat += EqnTest( _T("a,b,c"), 3, true);
-      iStat += EqnTest( _T("a=10,b=20,c=a*b"), 200, true);
-      iStat += EqnTest( _T("1,\n2,\n3"), 3, true);
-      iStat += EqnTest( _T("a,\nb,\nc"), 3, true);
-      iStat += EqnTest( _T("a=10,\nb=20,\nc=a*b"), 200, true);
-      iStat += EqnTest( _T("1,\r\n2,\r\n3"), 3, true);
-      iStat += EqnTest( _T("a,\r\nb,\r\nc"), 3, true);
-      iStat += EqnTest( _T("a=10,\r\nb=20,\r\nc=a*b"), 200, true);
-
-      // picking the right argument
-      iStat += EqnTest( _T("f1of1(1)"), 1, true);
-      iStat += EqnTest( _T("f1of2(1, 2)"), 1, true);
-      iStat += EqnTest( _T("f2of2(1, 2)"), 2, true);
-      iStat += EqnTest( _T("f1of3(1, 2, 3)"), 1, true);
-      iStat += EqnTest( _T("f2of3(1, 2, 3)"), 2, true);
-      iStat += EqnTest( _T("f3of3(1, 2, 3)"), 3, true);
-      iStat += EqnTest( _T("f1of4(1, 2, 3, 4)"), 1, true);
-      iStat += EqnTest( _T("f2of4(1, 2, 3, 4)"), 2, true);
-      iStat += EqnTest( _T("f3of4(1, 2, 3, 4)"), 3, true);
-      iStat += EqnTest( _T("f4of4(1, 2, 3, 4)"), 4, true);
-      iStat += EqnTest( _T("f1of5(1, 2, 3, 4, 5)"), 1, true);
-      iStat += EqnTest( _T("f2of5(1, 2, 3, 4, 5)"), 2, true);
-      iStat += EqnTest( _T("f3of5(1, 2, 3, 4, 5)"), 3, true);
-      iStat += EqnTest( _T("f4of5(1, 2, 3, 4, 5)"), 4, true);
-      iStat += EqnTest( _T("f5of5(1, 2, 3, 4, 5)"), 5, true);
-      // Too few arguments / Too many arguments
-      iStat += EqnTest( _T("1+ping()"), 11, true);
-      iStat += EqnTest( _T("ping()+1"), 11, true);
-      iStat += EqnTest( _T("2*ping()"), 20, true);
-      iStat += EqnTest( _T("ping()*2"), 20, true);
-      iStat += EqnTest( _T("ping(1,2)"), 0, false);
-      iStat += EqnTest( _T("1+ping(1,2)"), 0, false);
-      iStat += EqnTest( _T("f1of1(1,2)"), 0, false);
-      iStat += EqnTest( _T("f1of1()"), 0, false);
-      iStat += EqnTest( _T("f1of2(1, 2, 3)"), 0, false);
-      iStat += EqnTest( _T("f1of2(1)"), 0, false);
-      iStat += EqnTest( _T("f1of3(1, 2, 3, 4)"), 0, false);
-      iStat += EqnTest( _T("f1of3(1)"), 0, false);
-      iStat += EqnTest( _T("f1of4(1, 2, 3, 4, 5)"), 0, false);
-      iStat += EqnTest( _T("f1of4(1)"), 0, false);
-      iStat += EqnTest( _T("(1,2,3)"), 0, false);
-      iStat += EqnTest( _T("1,2,3"), 0, false);
-      iStat += EqnTest( _T("(1*a,2,3)"), 0, false);
-      iStat += EqnTest( _T("1,2*a,3"), 0, false);
-     
-      // correct calculation of arguments
-      iStat += EqnTest( _T("min(a, 1)"),  1, true);
-      iStat += EqnTest( _T("min(3*2, 1)"),  1, true);
-      iStat += EqnTest( _T("min(3*2, 1)"),  6, false);
-      iStat += EqnTest( _T("firstArg(2,3,4)"), 2, true);
-      iStat += EqnTest( _T("lastArg(2,3,4)"), 4, true);
-      iStat += EqnTest( _T("min(3*a+1, 1)"),  1, true);
-      iStat += EqnTest( _T("max(3*a+1, 1)"),  4, true);
-      iStat += EqnTest( _T("max(3*a+1, 1)*2"),  8, true);
-      iStat += EqnTest( _T("2*max(3*a+1, 1)+2"),  10, true);
-
-      // functions with Variable argument count
-      iStat += EqnTest( _T("sum(a)"), 1, true);
-      iStat += EqnTest( _T("sum(1,2,3)"),  6, true);
-      iStat += EqnTest( _T("sum(a,b,c)"),  6, true);
-      iStat += EqnTest( _T("sum(1,-max(1,2),3)*2"),  4, true);
-      iStat += EqnTest( _T("2*sum(1,2,3)"),  12, true);
-      iStat += EqnTest( _T("2*sum(1,2,3)+2"),  14, true);
-      iStat += EqnTest( _T("2*sum(-1,2,3)+2"),  10, true);
-      iStat += EqnTest( _T("2*sum(-1,2,-(-a))+2"),  6, true);
-      iStat += EqnTest( _T("2*sum(-1,10,-a)+2"),  18, true);
-      iStat += EqnTest( _T("2*sum(1,2,3)*2"),  24, true);
-      iStat += EqnTest( _T("sum(1,-max(1,2),3)*2"),  4, true);
-      iStat += EqnTest( _T("sum(1*3, 4, a+2)"),  10, true);
-      iStat += EqnTest( _T("sum(1*3, 2*sum(1,2,2), a+2)"),  16, true);
-      iStat += EqnTest( _T("sum(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2)"), 24, true);
-
-      // some failures
-      iStat += EqnTest( _T("sum()"),  0, false);
-      iStat += EqnTest( _T("sum(,)"),  0, false);
-      iStat += EqnTest( _T("sum(1,2,)"),  0, false);
-      iStat += EqnTest( _T("sum(,1,2)"),  0, false);
-
-      if (iStat==0) 
-        mu::console() << _T("passed") << endl;
-      else
-        mu::console() << _T("\n  failed with ") << iStat << _T(" errors") << endl;
-  
-      return iStat;
-    }
-
-
-    //---------------------------------------------------------------------------
-    int ParserTester::TestInfixOprt()
-    {
-      int iStat(0);
-      mu::console() << "testing infix operators...";
-
-      iStat += EqnTest( _T("-1"),    -1, true);
-      iStat += EqnTest( _T("-(-1)"),  1, true);
-      iStat += EqnTest( _T("-(-1)*2"),  2, true);
-      iStat += EqnTest( _T("-(-2)*sqrt(4)"),  4, true);
-      iStat += EqnTest( _T("-a"),  -1, true);
-      iStat += EqnTest( _T("-(a)"),  -1, true);
-      iStat += EqnTest( _T("-(-a)"),  1, true);
-      iStat += EqnTest( _T("-(-a)*2"),  2, true);
-      iStat += EqnTest( _T("-(8)"), -8, true);
-      iStat += EqnTest( _T("-8"), -8, true);
-      iStat += EqnTest( _T("-(2+1)"), -3, true);
-      iStat += EqnTest( _T("-(f1of1(1+2*3)+1*2)"), -9, true);
-      iStat += EqnTest( _T("-(-f1of1(1+2*3)+1*2)"), 5, true);
-      iStat += EqnTest( _T("-sin(8)"), -0.989358, true);
-      iStat += EqnTest( _T("3-(-a)"), 4, true);
-      iStat += EqnTest( _T("3--a"), 4, true);
-  
-      // Postfix / infix priorities
-      iStat += EqnTest( _T("~2#"), 8, true);
-      iStat += EqnTest( _T("~f1of1(2)#"), 8, true);
-      iStat += EqnTest( _T("~(b)#"), 8, true);
-      iStat += EqnTest( _T("(~b)#"), 12, true);
-      iStat += EqnTest( _T("~(2#)"), 8, true);
-      iStat += EqnTest( _T("~(f1of1(2)#)"), 8, true);
-      //
-      iStat += EqnTest( _T("-2^2"),-4, true);
-      iStat += EqnTest( _T("-(a+b)^2"),-9, true);
-      iStat += EqnTest( _T("(-3)^2"),9, true);
-      iStat += EqnTest( _T("-(-2^2)"),4, true);
-      iStat += EqnTest( _T("3+-3^2"),-6, true);
-      // The following assumes use of sqr as postfix operator ("?") together
-      // withn a sign operator of low priority:
-      iStat += EqnTest( _T("-2?"), -4, true);
-      iStat += EqnTest( _T("-(1+1)?"),-4, true);
-      iStat += EqnTest( _T("2+-(1+1)?"),-2, true);
-      iStat += EqnTest( _T("2+-2?"), -2, true);
-      // This is the classic behaviour of the infix sign operator (here: "$") which is
-      // now deprecated:
-      iStat += EqnTest( _T("$2^2"),4, true);
-      iStat += EqnTest( _T("$(a+b)^2"),9, true);
-      iStat += EqnTest( _T("($3)^2"),9, true);
-      iStat += EqnTest( _T("$($2^2)"),-4, true);
-      iStat += EqnTest( _T("3+$3^2"),12, true);
-
-      if (iStat==0)
-        mu::console() << _T("passed") << endl;
-      else
-        mu::console() << _T("\n  failed with ") << iStat << _T(" errors") << endl;
-
-      return iStat;
-    }
-
-
-    //---------------------------------------------------------------------------
-    int ParserTester::TestPostFix()
-    {
-      int iStat = 0;
-      mu::console() << _T("testing postfix operators...");
-
-      // application
-      iStat += EqnTest( _T("3{m}+5"), 5.003, true);
-      iStat += EqnTest( _T("1000{m}"), 1, true);
-      iStat += EqnTest( _T("1000 {m}"), 1, true);
-      iStat += EqnTest( _T("(a){m}"), 1e-3, true);
-      iStat += EqnTest( _T("a{m}"), 1e-3, true);
-      iStat += EqnTest( _T("a {m}"), 1e-3, true);
-      iStat += EqnTest( _T("-(a){m}"), -1e-3, true);
-      iStat += EqnTest( _T("-2{m}"), -2e-3, true);
-      iStat += EqnTest( _T("-2 {m}"), -2e-3, true);
-      iStat += EqnTest( _T("f1of1(1000){m}"), 1, true);
-      iStat += EqnTest( _T("-f1of1(1000){m}"), -1, true);
-      iStat += EqnTest( _T("-f1of1(-1000){m}"), 1, true);
-      iStat += EqnTest( _T("f4of4(0,0,0,1000){m}"), 1, true);
-      iStat += EqnTest( _T("2+(a*1000){m}"), 3, true);
-
-      // some incorrect results
-      iStat += EqnTest( _T("1000{m}"), 0.1, false);
-      iStat += EqnTest( _T("(a){m}"), 2, false);
-      // failure due to syntax checking
-      iStat += ThrowTest(_T("0x"), ecUNASSIGNABLE_TOKEN);  // incomplete hex definition
-      iStat += ThrowTest(_T("3+"), ecUNEXPECTED_EOF);
-      iStat += ThrowTest( _T("4 + {m}"), ecUNEXPECTED_OPERATOR);
-      iStat += ThrowTest( _T("{m}4"), ecUNEXPECTED_OPERATOR);
-      iStat += ThrowTest( _T("sin({m})"), ecUNEXPECTED_OPERATOR);
-      iStat += ThrowTest( _T("{m} {m}"), ecUNEXPECTED_OPERATOR);
-      iStat += ThrowTest( _T("{m}(8)"), ecUNEXPECTED_OPERATOR);
-      iStat += ThrowTest( _T("4,{m}"), ecUNEXPECTED_OPERATOR);
-      iStat += ThrowTest( _T("-{m}"), ecUNEXPECTED_OPERATOR);
-      iStat += ThrowTest( _T("2(-{m})"), ecUNEXPECTED_PARENS);
-      iStat += ThrowTest( _T("2({m})"), ecUNEXPECTED_PARENS);
-
-      if (iStat==0)
-        mu::console() << _T("passed") << endl;
-      else
-        mu::console() << _T("\n  failed with ") << iStat << _T(" errors") << endl;
-
-      return iStat;
-    }
-
-    //---------------------------------------------------------------------------
-    /** \brief Test volatile (nonoptimizeable functions). */
-    int ParserTester::TestVolatile()
-    {
-      int iStat = 0;
-      mu::console() << "testing volatile/nonvolatile functions...";
-
-      // First test with volatile flag turned on
-      try
-      {
-        mu::Parser p;
-        p.DefineFun( _T("rnd"), Rnd, false);
-        p.DefineFun( _T("valueof"), RndWithString, false);
-
-        // 1st test, compare results from sucessive calculations
-        p.SetExpr( _T("3+rnd(8)") );
-        if (p.Eval()==p.Eval()) iStat += 1;
-
-        // 2nd test, force bytecode creation, compare two results both 
-        // calculated from bytecode
-        p.SetExpr( _T("3+rnd(8)") ); 
-        p.Eval(); //<- Force bytecode creation
-        if (p.Eval()==p.Eval()) iStat += 1;
-
-        p.SetExpr( _T("3*rnd(8)+3") );
-        p.Eval(); //<- Force bytecode creation
-        if (p.Eval()==p.Eval()) iStat += 1;
-
-        p.SetExpr( _T("10+3*sin(rnd(8))-1") );
-        p.Eval(); //<- Force bytecode creation
-        if (p.Eval()==p.Eval()) iStat += 1;
-
-        p.SetExpr( _T("3+rnd(rnd(8))*2") );
-        p.Eval(); //<- Force bytecode creation
-        if (p.Eval()==p.Eval()) iStat += 1;
-
-        p.SetExpr( _T("valueof(\"Das ist ein Test\")") );
-        p.Eval(); //<- Force bytecode creation
-        if (p.Eval()==p.Eval()) iStat += 1;
-      }
-      catch(Parser::exception_type &e)
-      {
-        mu::console() << _T("\n  ") << e.GetExpr() << _T(" : ") << e.GetMsg();
-        iStat += 1;
-      }
-
-      // Second test with volatile flag turned off
-      try
-      {
-        mu::Parser p;
-        p.DefineFun( _T("rnd"), Rnd);
-        p.DefineFun( _T("valueof"), RndWithString);
-
-        // compare string parsing with bytecode
-        p.SetExpr( _T("3+rnd(8)") ); 
-        if (p.Eval()!=p.Eval()) iStat += 1;
-
-        p.SetExpr( _T("3+rnd(8)") ); 
-        p.Eval(); //<- Force bytecode creation
-        if (p.Eval()!=p.Eval()) iStat += 1;
-
-        p.SetExpr( _T("3*rnd(8)+3") );
-        p.Eval(); //<- Force bytecode creation
-        if (p.Eval()!=p.Eval()) iStat += 1;
-
-        p.SetExpr( _T("10+3*sin(rnd(8))-1") );
-        p.Eval(); //<- Force bytecode creation
-        if (p.Eval()!=p.Eval()) iStat += 1;
-
-        p.SetExpr( _T("3+rnd(rnd(8))*2") );
-        p.Eval(); //<- Force bytecode creation
-        if (p.Eval()!=p.Eval()) iStat += 1;
-      }
-      catch(Parser::exception_type &e)
-      {
-        mu::console() << _T("\n  ") << e.GetExpr() << _T(" : ") << e.GetMsg();
-        iStat += 1;
-      }
-      
-      if (iStat==0)
-        mu::console() << _T("passed") << endl;
-      else
-        mu::console() << _T("\n  failed with ") << iStat << _T(" errors") << endl;
-
-      return iStat;
-    }
-
-    //---------------------------------------------------------------------------
-    int ParserTester::TestExpression()
-    {
-      int iStat = 0;
-      mu::console() << _T("testing expression samples...");
-
-      // operator precedencs
-      iStat += EqnTest( _T("1+2-3*4/5^6"), 2.99923, true);
-      iStat += EqnTest( _T("1^2/3*4-5+6"), 2.3333, true);
-      iStat += EqnTest( _T("1+2*3"), 7, true);
-      iStat += EqnTest( _T("1+2*3"), 7, true);
-      iStat += EqnTest( _T("(1+2)*3"), 9, true);
-      iStat += EqnTest( _T("(1+2)*(-3)"), -9, true);
-      iStat += EqnTest( _T("2/4"), 0.5, true);
-
-      iStat += EqnTest( _T("exp(ln(7))"), 7, true);
-      iStat += EqnTest( _T("e^ln(7)"), 7, true);
-      iStat += EqnTest( _T("e^(ln(7))"), 7, true);
-      iStat += EqnTest( _T("(e^(ln(7)))"), 7, true);
-      iStat += EqnTest( _T("1-(e^(ln(7)))"), -6, true);
-      iStat += EqnTest( _T("2*(e^(ln(7)))"), 14, true);
-      iStat += EqnTest( _T("10^log(5)"), 5, true);
-      iStat += EqnTest( _T("10^log10(5)"), 5, true);
-      iStat += EqnTest( _T("2^log2(4)"), 4, true);
-      iStat += EqnTest( _T("-(sin(0)+1)"), -1, true);
-      iStat += EqnTest( _T("-(2^1.1)"), -2.14354692, true);
-
-      iStat += EqnTest( _T("(cos(2.41)/b)"), -0.372056, true);
-      iStat += EqnTest( _T("(1*(2*(3*(4*(5*(6*(a+b)))))))"), 2160, true);
-      iStat += EqnTest( _T("(1*(2*(3*(4*(5*(6*(7*(a+b))))))))"), 15120, true);
-      iStat += EqnTest( _T("(a/((((b+(((e*(((((pi*((((3.45*((pi+a)+pi))+b)+b)*a))+0.68)+e)+a)/a))+a)+b))+b)*a)-pi))"), 0.00377999, true);
-
-      // long formula (Reference: Matlab)
-      iStat += EqnTest(
-        _T("(((-9))-e/(((((((pi-(((-7)+(-3)/4/e))))/(((-5))-2)-((pi+(-0))*(sqrt((e+e))*(-8))*(((-pi)+(-pi)-(-9)*(6*5))")
-        _T("/(-e)-e))/2)/((((sqrt(2/(-e)+6)-(4-2))+((5/(-2))/(1*(-pi)+3))/8)*pi*((pi/((-2)/(-6)*1*(-1))*(-6)+(-e)))))/")
-        _T("((e+(-2)+(-e)*((((-3)*9+(-e)))+(-9)))))))-((((e-7+(((5/pi-(3/1+pi)))))/e)/(-5))/(sqrt((((((1+(-7))))+((((-")
-        _T("e)*(-e)))-8))*(-5)/((-e)))*(-6)-((((((-2)-(-9)-(-e)-1)/3))))/(sqrt((8+(e-((-6))+(9*(-9))))*(((3+2-8))*(7+6")
-        _T("+(-5))+((0/(-e)*(-pi))+7)))+(((((-e)/e/e)+((-6)*5)*e+(3+(-5)/pi))))+pi))/sqrt((((9))+((((pi))-8+2))+pi))/e")
-        _T("*4)*((-5)/(((-pi))*(sqrt(e)))))-(((((((-e)*(e)-pi))/4+(pi)*(-9)))))))+(-pi)"), -12.23016549, true);
-
-      // long formula (Reference: Matlab)
-      iStat += EqnTest(
-          _T("(atan(sin((((((((((((((((pi/cos((a/((((0.53-b)-pi)*e)/b))))+2.51)+a)-0.54)/0.98)+b)*b)+e)/a)+b)+a)+b)+pi)/e")
-          _T(")+a)))*2.77)"), -2.16995656, true);
-
-      // long formula (Reference: Matlab)
-      iStat += EqnTest( _T("1+2-3*4/5^6*(2*(1-5+(3*7^9)*(4+6*7-3)))+12"), -7995810.09926, true);
-	  
-      if (iStat==0) 
-        mu::console() << _T("passed") << endl;  
-      else 
-        mu::console() << _T("\n  failed with ") << iStat << _T(" errors") << endl;
-
-      return iStat;
-    }
-
-
-    //---------------------------------------------------------------------------
-    int ParserTester::TestException()
-    {
-      int  iStat = 0;
-      mu::console() << _T("testing error codes...");
-
-      iStat += ThrowTest(_T("3+"),           ecUNEXPECTED_EOF);
-      iStat += ThrowTest(_T("3+)"),          ecUNEXPECTED_PARENS);
-      iStat += ThrowTest(_T("()"),           ecUNEXPECTED_PARENS);
-      iStat += ThrowTest(_T("3+()"),         ecUNEXPECTED_PARENS);
-      iStat += ThrowTest(_T("sin(3,4)"),     ecTOO_MANY_PARAMS);
-      iStat += ThrowTest(_T("if(3)"),        ecTOO_FEW_PARAMS);
-      iStat += ThrowTest(_T("(1+2"),         ecMISSING_PARENS);
-      iStat += ThrowTest(_T("sin(3)3"),      ecUNEXPECTED_VAL);
-      iStat += ThrowTest(_T("sin(3)xyz"),    ecUNASSIGNABLE_TOKEN);
-      iStat += ThrowTest(_T("sin(3)cos(3)"), ecUNEXPECTED_FUN);
-      iStat += ThrowTest(_T("a+b+c=10"),     ecUNEXPECTED_OPERATOR);
-      iStat += ThrowTest(_T("a=b=3"),        ecUNEXPECTED_OPERATOR);
-
-      // functions without parameter
-      iStat += ThrowTest( _T("3+ping(2)"),    ecTOO_MANY_PARAMS);
-      iStat += ThrowTest( _T("3+ping(a+2)"),  ecTOO_MANY_PARAMS);
-      iStat += ThrowTest( _T("3+ping(sin(a)+2)"),  ecTOO_MANY_PARAMS);
-      iStat += ThrowTest( _T("3+ping(1+sin(a))"),  ecTOO_MANY_PARAMS);
-
-      // String function related
-      iStat += ThrowTest( _T("valueof(\"xxx\")"),  999, false);
-      iStat += ThrowTest( _T("valueof()"),          ecUNEXPECTED_PARENS);
-      iStat += ThrowTest( _T("1+valueof(\"abc\""),  ecMISSING_PARENS);
-      iStat += ThrowTest( _T("valueof(\"abc\""),    ecMISSING_PARENS);
-      iStat += ThrowTest( _T("valueof(\"abc"),      ecUNTERMINATED_STRING);
-      iStat += ThrowTest( _T("valueof(\"abc\",3)"), ecTOO_MANY_PARAMS);
-      iStat += ThrowTest( _T("valueof(3)"),         ecSTRING_EXPECTED);
-      iStat += ThrowTest( _T("sin(\"abc\")"),       ecVAL_EXPECTED);
-      iStat += ThrowTest( _T("valueof(\"\\\"abc\\\"\")"),  999, false);
-      iStat += ThrowTest( _T("\"hello world\""),    ecSTR_RESULT);
-      iStat += ThrowTest( _T("(\"hello world\")"),  ecSTR_RESULT);
-      iStat += ThrowTest( _T("\"abcd\"+100"),       ecOPRT_TYPE_CONFLICT);
-      iStat += ThrowTest( _T("\"a\"+\"b\""),        ecOPRT_TYPE_CONFLICT);
-      iStat += ThrowTest( _T("strfun1(\"100\",3)"),     ecTOO_MANY_PARAMS);
-      iStat += ThrowTest( _T("strfun2(\"100\",3,5)"),   ecTOO_MANY_PARAMS);
-      iStat += ThrowTest( _T("strfun3(\"100\",3,5,6)"), ecTOO_MANY_PARAMS);
-      iStat += ThrowTest( _T("strfun2(\"100\")"),       ecTOO_FEW_PARAMS);
-      iStat += ThrowTest( _T("strfun3(\"100\",6)"),   ecTOO_FEW_PARAMS);
-      iStat += ThrowTest( _T("strfun2(1,1)"),         ecSTRING_EXPECTED);
-      iStat += ThrowTest( _T("strfun2(a,1)"),         ecSTRING_EXPECTED);
-      iStat += ThrowTest( _T("strfun2(1,1,1)"),       ecTOO_MANY_PARAMS);
-      iStat += ThrowTest( _T("strfun2(a,1,1)"),       ecTOO_MANY_PARAMS);
-      iStat += ThrowTest( _T("strfun3(1,2,3)"),         ecSTRING_EXPECTED);
-      iStat += ThrowTest( _T("strfun3(1, \"100\",3)"),  ecSTRING_EXPECTED);
-      iStat += ThrowTest( _T("strfun3(\"1\", \"100\",3)"),  ecVAL_EXPECTED);
-      iStat += ThrowTest( _T("strfun3(\"1\", 3, \"100\")"),  ecVAL_EXPECTED);
-      iStat += ThrowTest( _T("strfun3(\"1\", \"100\", \"100\", \"100\")"),  ecTOO_MANY_PARAMS);
-
-      // assignement operator
-      iStat += ThrowTest( _T("3=4"), ecUNEXPECTED_OPERATOR);
-      iStat += ThrowTest( _T("sin(8)=4"), ecUNEXPECTED_OPERATOR);
-      iStat += ThrowTest( _T("\"test\"=a"), ecUNEXPECTED_OPERATOR);
-
-      // <ibg 20090529>
-      // this is now legal, for reference see:
-      // https://sourceforge.net/forum/message.php?msg_id=7411373
-      //      iStat += ThrowTest( _T("sin=9"), ecUNEXPECTED_OPERATOR);    
-      // </ibg>
-
-      iStat += ThrowTest( _T("(8)=5"), ecUNEXPECTED_OPERATOR);
-      iStat += ThrowTest( _T("(a)=5"), ecUNEXPECTED_OPERATOR);
-      iStat += ThrowTest( _T("a=\"tttt\""), ecOPRT_TYPE_CONFLICT);
-
-      if (iStat==0) 
-        mu::console() << _T("passed") << endl;
-      else 
-        mu::console() << _T("\n  failed with ") << iStat << _T(" errors") << endl;
-
-      return iStat;
-    }
-
-
-    //---------------------------------------------------------------------------
-    void ParserTester::AddTest(testfun_type a_pFun)
-    {
-      m_vTestFun.push_back(a_pFun);
-    }
-
-    //---------------------------------------------------------------------------
-    void ParserTester::Run()
-    {
-      int iStat = 0;
-      try
-      {
-        for (int i=0; i<(int)m_vTestFun.size(); ++i)
-          iStat += (this->*m_vTestFun[i])();
-      }
-      catch(Parser::exception_type &e)
-      {
-        mu::console() << "\n" << e.GetMsg() << endl;
-        mu::console() << e.GetToken() << endl;
-        Abort();
-      }
-      catch(std::exception &e)
-      {
-        mu::console() << e.what() << endl;
-        Abort();
-      }
-      catch(...)
-      {
-        mu::console() << "Internal error";
-        Abort();
-      }
-
-      if (iStat==0) 
-      {
-        mu::console() << "Test passed (" <<  ParserTester::c_iCount << " expressions)" << endl;
-      }
-      else 
-      {
-        mu::console() << "Test failed with " << iStat 
-                  << " errors (" <<  ParserTester::c_iCount 
-                  << " expressions)" << endl;
-      }
-      ParserTester::c_iCount = 0;
-    }
-
-
-    //---------------------------------------------------------------------------
-    int ParserTester::ThrowTest(const string_type &a_str, int a_iErrc, bool a_bFail)
-    {
-      ParserTester::c_iCount++;
-
-      try
-      {
-        value_type fVal[] = {1,1,1};
-        Parser p;
-
-        p.DefineVar( _T("a"), &fVal[0]);
-        p.DefineVar( _T("b"), &fVal[1]);
-        p.DefineVar( _T("c"), &fVal[2]);
-        p.DefinePostfixOprt( _T("{m}"), Milli);
-        p.DefineFun( _T("ping"), Ping);
-        p.DefineFun( _T("valueof"), ValueOf);
-        p.DefineFun( _T("strfun1"), StrFun1);
-        p.DefineFun( _T("strfun2"), StrFun2);
-        p.DefineFun( _T("strfun3"), StrFun3);
-        p.SetExpr(a_str);
-        p.Eval();
-      }
-      catch(ParserError &e)
-      {
-        // output the formula in case of an failed test
-        if (a_bFail==false || (a_bFail==true && a_iErrc!=e.GetCode()) )
-        {
-          mu::console() << _T("\n  ") 
-                        << _T("Expression: ") << a_str 
-                        << _T("  Code:") << e.GetCode() << _T("(") << e.GetMsg() << _T(")")
-                        << _T("  Expected:") << a_iErrc;
-        }
-
-        return (a_iErrc==e.GetCode()) ? 0 : 1;
-      }
-
-      // if a_bFail==false no exception is expected
-      bool bRet((a_bFail==false) ? 0 : 1);
-      if (bRet==1)
-      {
-        mu::console() << _T("\n  ") 
-                      << _T("Expression: ") << a_str 
-                      << _T("  did evaluate; Expected error:") << a_iErrc;
-      }
-
-      return bRet; 
-    }
-
-    //---------------------------------------------------------------------------
-    /** \brief Evaluate a tet expression. 
-
-        \return 1 in case of a failure, 0 otherwise.
-    */
-    int ParserTester::EqnTest(const string_type &a_str, double a_fRes, bool a_fPass)
-    {
-      ParserTester::c_iCount++;
-      int iRet(0);
-      value_type fVal[4] = {-999, -998, -997, -996}; // initially should be different
-
-      try
-      {
-        std::auto_ptr<Parser> p1;
-        Parser  p2, p3;   // three parser objects
-                          // they will be used for testing copy and assihnment operators
-        // p1 is a pointer since i'm going to delete it in order to test if
-        // parsers after copy construction still refer to members of it.
-        // !! If this is the case this function will crash !!
-      
-        p1.reset(new mu::Parser()); 
-        // Add constants
-        p1->DefineConst( _T("pi"), (value_type)PARSER_CONST_PI);
-        p1->DefineConst( _T("e"), (value_type)PARSER_CONST_E);
-        p1->DefineConst( _T("const"), 1);
-        p1->DefineConst( _T("const1"), 2);
-        p1->DefineConst( _T("const2"), 3);
-        // variables
-        value_type vVarVal[] = { 1, 2, 3, -2};
-        p1->DefineVar( _T("a"), &vVarVal[0]);
-        p1->DefineVar( _T("aa"), &vVarVal[1]);
-        p1->DefineVar( _T("b"), &vVarVal[1]);
-        p1->DefineVar( _T("c"), &vVarVal[2]);
-        p1->DefineVar( _T("d"), &vVarVal[3]);
-        // functions
-        p1->DefineFun( _T("ping"), Ping);
-        p1->DefineFun( _T("f1of1"), f1of1);  // one parameter
-        p1->DefineFun( _T("f1of2"), f1of2);  // two parameter
-        p1->DefineFun( _T("f2of2"), f2of2);
-        p1->DefineFun( _T("f1of3"), f1of3);  // three parameter
-        p1->DefineFun( _T("f2of3"), f2of3);
-        p1->DefineFun( _T("f3of3"), f3of3);
-        p1->DefineFun( _T("f1of4"), f1of4);  // four parameter
-        p1->DefineFun( _T("f2of4"), f2of4);
-        p1->DefineFun( _T("f3of4"), f3of4);
-        p1->DefineFun( _T("f4of4"), f4of4);
-        p1->DefineFun( _T("f1of5"), f1of5);  // five parameter
-        p1->DefineFun( _T("f2of5"), f2of5);
-        p1->DefineFun( _T("f3of5"), f3of5);
-        p1->DefineFun( _T("f4of5"), f4of5);
-        p1->DefineFun( _T("f5of5"), f5of5);
-
-        // binary operators
-        p1->DefineOprt( _T("add"), add, 0);
-        p1->DefineOprt( _T("++"), add, 0);
-
-        // sample functions
-        p1->DefineFun( _T("min"), Min);
-        p1->DefineFun( _T("max"), Max);
-        p1->DefineFun( _T("sum"), Sum);
-        p1->DefineFun( _T("valueof"), ValueOf);
-        p1->DefineFun( _T("atof"), StrToFloat);
-        p1->DefineFun( _T("strfun1"), StrFun1);
-        p1->DefineFun( _T("strfun2"), StrFun2);
-        p1->DefineFun( _T("strfun3"), StrFun3);
-        p1->DefineFun( _T("lastArg"), LastArg);
-        p1->DefineFun( _T("firstArg"), FirstArg);
-        p1->DefineFun( _T("order"), FirstArg);
-
-        // infix / postfix operator
-        // (identifiers used here do not have any meaning or make any sense at all)
-        p1->DefineInfixOprt( _T("$"), sign, prPOW+1);  // sign with high priority
-        p1->DefineInfixOprt( _T("~"), plus2);          // high priority
-        p1->DefinePostfixOprt( _T("{m}"), Milli);
-        p1->DefinePostfixOprt( _T("{M}"), Mega);
-        p1->DefinePostfixOprt( _T("#"), times3);
-        p1->DefinePostfixOprt( _T("?"), sqr);  //
-        p1->SetExpr(a_str);
-
-        // Test bytecode integrity
-        // String parsing and bytecode parsing must yield the same result
-        fVal[0] = p1->Eval(); // result from stringparsing
-        fVal[1] = p1->Eval(); // result from bytecode
-        if (fVal[0]!=fVal[1])
-          throw Parser::exception_type( _T("Bytecode / string parsing mismatch.") );
-
-        // Test copy and assignement operators
-        try
-        {
-          // Test copy constructor
-          std::vector<mu::Parser> vParser;
-          vParser.push_back(*(p1.get()));
-          mu::Parser p2 = vParser[0];   // take parser from vector
-        
-          // destroy the originals from p2
-          vParser.clear();              // delete the vector
-          p1.reset(0);
-
-          fVal[2] = p2.Eval();
-
-          // Test assignement operator
-          // additionally  disable Optimizer this time
-          mu::Parser p3;
-          p3 = p2;
-          p3.EnableOptimizer(false);
-          fVal[3] = p3.Eval();
-        }
-        catch(std::exception &e)
-        {
-          mu::console() << _T("\n  ") << e.what() << _T("\n");
-        }
-
-        // limited floating point accuracy requires the following test
-        bool bCloseEnough(true);
-        for (int i=0; i<4; ++i)
-        {
-          bCloseEnough &= (fabs(a_fRes-fVal[i]) <= fabs(fVal[i]*0.0001));
-        }
-
-        iRet = ((bCloseEnough && a_fPass) || (!bCloseEnough && !a_fPass)) ? 0 : 1;
-        if (iRet==1)
-        {
-          mu::console() << _T("\n  fail: ") << a_str.c_str() 
-                        << _T(" (incorrect result; expected: ") << a_fRes
-                        << _T(" ;calculated: ") << fVal[0]<< _T(").");
-        }
-      }
-      catch(Parser::exception_type &e)
-      {
-        if (a_fPass)
-        {
-          if (fVal[0]!=fVal[2] && fVal[0]!=-999 && fVal[1]!=-998)
-            mu::console() << _T("\n  fail: ") << a_str.c_str() << _T(" (copy construction)");
-          else
-            mu::console() << _T("\n  fail: ") << a_str.c_str() << _T(" (") << e.GetMsg() << _T(")");
-          return 1;
-        }
-      }
-      catch(std::exception &e)
-      {
-        mu::console() << _T("\n  fail: ") << a_str.c_str() << _T(" (") << e.what() << _T(")");
-        return 1;  // always return a failure since this exception is not expected
-      }
-      catch(...)
-      {
-        mu::console() << _T("\n  fail: ") << a_str.c_str() <<  _T(" (unexpected exception)");
-        return 1;  // exceptions other than ParserException are not allowed
-      }
-
-      return iRet;
-    }
-
-    //---------------------------------------------------------------------------
-    int ParserTester::EqnTestInt(const string_type &a_str, double a_fRes, bool a_fPass)
-    {
-      ParserTester::c_iCount++;
-
-      value_type vVarVal[] = {1, 2, 3};    // variable values
-      value_type fVal[2] = {-99, -999}; // results: initially should be different
-      int iRet(0);
-
-      try
-      {
-        ParserInt p;
-        p.DefineConst( _T("const1"), 1);
-        p.DefineConst( _T("const2"), 2);
-        p.DefineVar( _T("a"), &vVarVal[0]);
-        p.DefineVar( _T("b"), &vVarVal[1]);
-        p.DefineVar( _T("c"), &vVarVal[2]);
-
-        p.SetExpr(a_str);
-        fVal[0] = p.Eval(); // result from stringparsing
-        fVal[1] = p.Eval(); // result from bytecode
-
-        if (fVal[0]!=fVal[1])
-          throw Parser::exception_type( _T("Bytecode corrupt.") );
-
-        iRet =  ( (a_fRes==fVal[0] &&  a_fPass) || 
-                  (a_fRes!=fVal[0] && !a_fPass) ) ? 0 : 1;
-        if (iRet==1)
-        {
-          mu::console() << _T("\n  fail: ") << a_str.c_str() 
-                        << _T(" (incorrect result; expected: ") << a_fRes 
-                        << _T(" ;calculated: ") << fVal[0]<< _T(").");
-        }
-      }
-      catch(Parser::exception_type &e)
-      {
-        if (a_fPass)
-        {
-          mu::console() << _T("\n  fail: ") << e.GetExpr() << _T(" : ") << e.GetMsg();
-          iRet = 1;
-        }
-      }
-      catch(...)
-      {
-        mu::console() << _T("\n  fail: ") << a_str.c_str() <<  _T(" (unexpected exception)");
-        iRet = 1;  // exceptions other than ParserException are not allowed
-      }
-
-      return iRet;
-    }
-
-    //---------------------------------------------------------------------------
-    /** \brief Internal error in test class Test is going to be aborted. */
-    void ParserTester::Abort() const
-    {
-      mu::console() << _T("Test failed (internal error in test class)") << endl;
-      while (!getchar());
-      exit(-1);
-    }
-  } // namespace test
-} // namespace mu
diff -r ee79b2711e13 -r 5f10b39a3810 muParser/src/muParserTokenReader.cpp
--- a/muParser/src/muParserTokenReader.cpp	Tue Nov 08 15:08:51 2011 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,903 +0,0 @@
-/*
-                 __________                                      
-    _____   __ __\______   \_____  _______  ______  ____ _______ 
-   /     \ |  |  \|     ___/\__  \ \_  __ \/  ___/_/ __ \\_  __ \
-  |  Y Y  \|  |  /|    |     / __ \_|  | \/\___ \ \  ___/ |  | \/
-  |__|_|  /|____/ |____|    (____  /|__|  /____  > \___  >|__|   
-        \/                       \/            \/      \/        
-  Copyright (C) 2010 Ingo Berg
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy of this 
-  software and associated documentation files (the "Software"), to deal in the Software
-  without restriction, including without limitation the rights to use, copy, modify, 
-  merge, publish, distribute, sublicense, and/or sell copies of the Software, and to 
-  permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in all copies or 
-  substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
-  NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 
-  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
-*/
-#include <cassert>
-#include <cstdio>
-#include <cstring>
-#include <map>
-#include <stack>
-#include <string>
-
-#include "muParserTokenReader.h"
-#include "muParserBase.h"
-
-/** \file
-    \brief This file contains the parser token reader implementation.
-*/
-
-
-namespace mu
-{
-
-  // Forward declaration
-  class ParserBase;
-
-  //---------------------------------------------------------------------------
-  /** \brief Copy constructor.
-
-      \sa Assign
-      \throw nothrow
-  */
-  ParserTokenReader::ParserTokenReader(const ParserTokenReader &a_Reader) 
-  { 
-    Assign(a_Reader);
-  }
-    
-  //---------------------------------------------------------------------------
-  /** \brief Assignement operator.
-
-      Self assignement will be suppressed otherwise #Assign is called.
-
-      \param a_Reader Object to copy to this token reader.
-      \throw nothrow
-  */
-  ParserTokenReader& ParserTokenReader::operator=(const ParserTokenReader &a_Reader) 
-  {
-    if (&a_Reader!=this)
-      Assign(a_Reader);
-
-    return *this;
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Assign state of a token reader to this token reader. 
-      
-      \param a_Reader Object from which the state should be copied.
-      \throw nothrow
-  */
-  void ParserTokenReader::Assign(const ParserTokenReader &a_Reader)
-  {
-    m_pParser = a_Reader.m_pParser;
-    m_strFormula = a_Reader.m_strFormula;
-    m_iPos = a_Reader.m_iPos;
-    m_iSynFlags = a_Reader.m_iSynFlags;
-    
-    m_UsedVar         = a_Reader.m_UsedVar;
-    m_pFunDef         = a_Reader.m_pFunDef;
-    m_pConstDef       = a_Reader.m_pConstDef;
-    m_pVarDef         = a_Reader.m_pVarDef;
-    m_pStrVarDef      = a_Reader.m_pStrVarDef;
-    m_pPostOprtDef    = a_Reader.m_pPostOprtDef;
-    m_pInfixOprtDef   = a_Reader.m_pInfixOprtDef;
-    m_pOprtDef        = a_Reader.m_pOprtDef;
-    m_bIgnoreUndefVar = a_Reader.m_bIgnoreUndefVar;
-    m_vIdentFun       = a_Reader.m_vIdentFun;
-    m_pFactory        = a_Reader.m_pFactory;
-    m_pFactoryData    = a_Reader.m_pFactoryData;
-    m_iBrackets       = a_Reader.m_iBrackets;
-    m_cArgSep         = a_Reader.m_cArgSep;
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Constructor. 
-      
-      Create a Token reader and bind it to a parser object. 
-
-      \pre [assert] a_pParser may not be NULL
-      \post #m_pParser==a_pParser
-      \param a_pParent Parent parser object of the token reader.
-  */
-  ParserTokenReader::ParserTokenReader(ParserBase *a_pParent)
-    :m_pParser(a_pParent)
-    ,m_strFormula()
-    ,m_iPos(0)
-    ,m_iSynFlags(0)
-    ,m_bIgnoreUndefVar(false)
-    ,m_pFunDef(NULL)
-    ,m_pPostOprtDef(NULL)
-    ,m_pInfixOprtDef(NULL)
-    ,m_pOprtDef(NULL)
-    ,m_pConstDef(NULL)
-    ,m_pStrVarDef(NULL)
-    ,m_pVarDef(NULL)
-    ,m_pFactory(NULL)
-    ,m_pFactoryData(NULL)
-    ,m_vIdentFun()
-    ,m_UsedVar()
-    ,m_fZero(0)
-    ,m_iBrackets(0)
-    ,m_lastTok()
-    ,m_cArgSep(',')
-  {
-    assert(m_pParser);
-    SetParent(m_pParser);
-  }
-    
-  //---------------------------------------------------------------------------
-  /** \brief Create instance of a ParserTokenReader identical with this 
-              and return its pointer. 
-
-      This is a factory method the calling function must take care of the object destruction.
-
-      \return A new ParserTokenReader object.
-      \throw nothrow
-  */
-  ParserTokenReader* ParserTokenReader::Clone(ParserBase *a_pParent) const
-  {
-    std::auto_ptr<ParserTokenReader> ptr(new ParserTokenReader(*this));
-    ptr->SetParent(a_pParent);
-    return ptr.release();
-  }
-
-  //---------------------------------------------------------------------------
-  ParserTokenReader::token_type& ParserTokenReader::SaveBeforeReturn(const token_type &tok)
-  {
-    m_lastTok = tok;
-    return m_lastTok;
-  }
-
-  //---------------------------------------------------------------------------
-  void ParserTokenReader::AddValIdent(identfun_type a_pCallback)
-  {
-    m_vIdentFun.push_back(a_pCallback);
-  }
-
-  //---------------------------------------------------------------------------
-  void ParserTokenReader::SetVarCreator(facfun_type a_pFactory, void *pUserData)
-  {
-    m_pFactory = a_pFactory;
-    m_pFactoryData = pUserData;
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Return the current position of the token reader in the formula string. 
-
-      \return #m_iPos
-      \throw nothrow
-  */
-  int ParserTokenReader::GetPos() const
-  {
-    return m_iPos;
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Return a reference to the formula. 
-
-      \return #m_strFormula
-      \throw nothrow
-  */
-  const string_type& ParserTokenReader::GetExpr() const
-  {
-    return m_strFormula;
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Return a map containing the used variables only. */
-  const varmap_type& ParserTokenReader::GetUsedVar() const
-  {
-    return m_UsedVar;
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Initialize the token Reader. 
-  
-      Sets the formula position index to zero and set Syntax flags to default for initial formula parsing.
-      \pre [assert] triggered if a_szFormula==0
-  */
-  void ParserTokenReader::SetFormula(const string_type &a_strFormula)
-  {
-    m_strFormula = a_strFormula;
-    ReInit();
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Set Flag that contronls behaviour in case of undefined variables beeing found. 
-  
-    If true, the parser does not throw an exception if an undefined variable is found. 
-    otherwise it does. This variable is used internally only!
-    It supresses a "undefined variable" exception in GetUsedVar().  
-    Those function should return a complete list of variables including 
-    those the are not defined by the time of it's call.
-  */
-  void ParserTokenReader::IgnoreUndefVar(bool bIgnore)
-  {
-    m_bIgnoreUndefVar = bIgnore;
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Reset the token reader to the start of the formula. 
-
-      The syntax flags will be reset to a value appropriate for the 
-      start of a formula.
-      \post #m_iPos==0, #m_iSynFlags = noOPT | noBC | noPOSTOP | noSTR
-      \throw nothrow
-      \sa ESynCodes
-  */
-  void ParserTokenReader::ReInit()
-  {
-    m_iPos = 0;
-    m_iSynFlags = noOPT | noBC | noPOSTOP | noASSIGN;
-    m_iBrackets = 0;
-    m_UsedVar.clear();
-    m_lastTok = token_type();
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Read the next token from the string. */ 
-  ParserTokenReader::token_type ParserTokenReader::ReadNextToken()
-  {
-    assert(m_pParser);
-
-    std::stack<int> FunArgs;
-    const char_type *szFormula = m_strFormula.c_str();
-    token_type tok;
-
-    // Ignore all non printable characters when reading the expression
-    while (szFormula[m_iPos]>0 && szFormula[m_iPos]<=0x20) 
-      ++m_iPos;
-
-    if ( IsEOF(tok) )        return SaveBeforeReturn(tok); // Check for end of formula
-    if ( IsOprt(tok) )       return SaveBeforeReturn(tok); // Check for user defined binary operator
-    if ( IsFunTok(tok) )     return SaveBeforeReturn(tok); // Check for function token
-    if ( IsBuiltIn(tok) )    return SaveBeforeReturn(tok); // Check built in operators / tokens
-    if ( IsArgSep(tok) )     return SaveBeforeReturn(tok); // Check for function argument separators
-    if ( IsValTok(tok) )     return SaveBeforeReturn(tok); // Check for values / constant tokens
-    if ( IsVarTok(tok) )     return SaveBeforeReturn(tok); // Check for variable tokens
-    if ( IsStrVarTok(tok) )  return SaveBeforeReturn(tok); // Check for string variables
-    if ( IsString(tok) )     return SaveBeforeReturn(tok); // Check for String tokens
-    if ( IsInfixOpTok(tok) ) return SaveBeforeReturn(tok); // Check for unary operators
-    if ( IsPostOpTok(tok) )  return SaveBeforeReturn(tok); // Check for unary operators
-
-    // Check String for undefined variable token. Done only if a 
-    // flag is set indicating to ignore undefined variables.
-    // This is a way to conditionally avoid an error if 
-    // undefined variables occur. 
-    // The GetUsedVar function must supress the error for
-    // undefined variables in order to collect all variable 
-    // names including the undefined ones.
-    if ( (m_bIgnoreUndefVar || m_pFactory) && IsUndefVarTok(tok) )  
-      return SaveBeforeReturn(tok);
-
-    // Check for unknown token
-    // 
-    // !!! From this point on there is no exit without an exception possible...
-    // 
-    string_type strTok;
-    int iEnd = ExtractToken(m_pParser->ValidNameChars(), strTok, m_iPos);
-    if (iEnd!=m_iPos)
-      Error(ecUNASSIGNABLE_TOKEN, m_iPos, strTok);
-
-    Error(ecUNASSIGNABLE_TOKEN, m_iPos, m_strFormula.substr(m_iPos));
-    return token_type(); // never reached
-  }
-
-  //---------------------------------------------------------------------------
-  void ParserTokenReader::SetParent(ParserBase *a_pParent)
-  {
-    m_pParser       = a_pParent; 
-    m_pFunDef       = &a_pParent->m_FunDef;
-    m_pOprtDef      = &a_pParent->m_OprtDef;
-    m_pInfixOprtDef = &a_pParent->m_InfixOprtDef;
-    m_pPostOprtDef  = &a_pParent->m_PostOprtDef;
-    m_pVarDef       = &a_pParent->m_VarDef;
-    m_pStrVarDef    = &a_pParent->m_StrVarDef;
-    m_pConstDef     = &a_pParent->m_ConstDef;
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Extract all characters that belong to a certain charset.
-
-    \param a_szCharSet [in] Const char array of the characters allowed in the token. 
-    \param a_strTok [out]  The string that consists entirely of characters listed in a_szCharSet.
-    \param a_iPos [in] Position in the string from where to start reading.
-    \return The Position of the first character not listed in a_szCharSet.
-    \throw nothrow
-  */
-  int ParserTokenReader::ExtractToken(const char_type *a_szCharSet, 
-                                      string_type &a_sTok, 
-                                      int a_iPos) const
-  {
-    int iEnd = (int)m_strFormula.find_first_not_of(a_szCharSet, a_iPos);
-
-    if (iEnd==(int)string_type::npos)
-        iEnd = (int)m_strFormula.length();
-    
-    // Assign token string if there was something found
-    if (a_iPos!=iEnd)
-      a_sTok = string_type( m_strFormula.begin()+a_iPos, m_strFormula.begin()+iEnd);
-
-    return iEnd;
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Check Expression for the presence of a binary operator token.
-  
-    Userdefined binary operator "++" gives inconsistent parsing result for
-    the equations "a++b" and "a ++ b" if alphabetic characters are allowed
-    in operator tokens. To avoid this this function checks specifically
-    for operator tokens.
-  */
-  int ParserTokenReader::ExtractOperatorToken(string_type &a_sTok, 
-                                              int a_iPos) const
-  {
-    int iEnd = (int)m_strFormula.find_first_not_of(m_pParser->ValidInfixOprtChars(), a_iPos);
-    if (iEnd==(int)string_type::npos)
-      iEnd = (int)m_strFormula.length();
-
-    // Assign token string if there was something found
-    if (a_iPos!=iEnd)
-    {
-      a_sTok = string_type( m_strFormula.begin() + a_iPos, m_strFormula.begin() + iEnd);
-      return iEnd;
-    }
-    else
-    {
-      // There is still the chance of having to deal with an operator consisting exclusively
-      // of alphabetic characters.
-      return ExtractToken(MUP_CHARS, a_sTok, a_iPos);
-    }
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Check if a built in operator or other token can be found
-      \param a_Tok  [out] Operator token if one is found. This can either be a binary operator or an infix operator token.
-      \return true if an operator token has been found.
-  */
-  bool ParserTokenReader::IsBuiltIn(token_type &a_Tok)
-  {
-    const char_type **const pOprtDef = m_pParser->GetOprtDef(),
-                     *const szFormula = m_strFormula.c_str();
-
-    // Compare token with function and operator strings
-    // check string for operator/function
-    for (int i=0; pOprtDef[i]; i++)
-    {
-      std::size_t len( std::char_traits<char_type>::length(pOprtDef[i]) );
-      if ( string_type(pOprtDef[i]) == string_type(szFormula + m_iPos, szFormula + m_iPos + len) )
-      {
-        switch(i)
-        {
-        case cmAND:
-        case cmOR:
-        case cmXOR:
-        case cmLT:
-        case cmGT:
-        case cmLE:
-        case cmGE:
-        case cmNEQ:  
-        case cmEQ:
-        case cmADD:
-        case cmSUB:
-        case cmMUL:
-        case cmDIV:
-        case cmPOW:
-        case cmASSIGN:
-              //if (len!=sTok.length())
-              //  continue;
-
-              // The assignement operator need special treatment
-              if (i==cmASSIGN && m_iSynFlags & noASSIGN)
-                Error(ecUNEXPECTED_OPERATOR, m_iPos, pOprtDef[i]);
-
-              if (!m_pParser->HasBuiltInOprt()) continue;
-              if (m_iSynFlags & noOPT) 
-              {
-                // Maybe its an infix operator not an operator
-                // Both operator types can share characters in 
-                // their identifiers
-                if ( IsInfixOpTok(a_Tok) ) 
-                  return true;
-
-                Error(ecUNEXPECTED_OPERATOR, m_iPos, pOprtDef[i]);
-              }
-
-              m_iSynFlags  = noBC | noOPT | noARG_SEP | noPOSTOP | noASSIGN;
-              m_iSynFlags |= ( (i != cmEND) && ( i != cmBC) ) ? noEND : 0;
-              break;
-
-		    case cmBO:
-              if (m_iSynFlags & noBO)
-	              Error(ecUNEXPECTED_PARENS, m_iPos, pOprtDef[i]);
-              
-              if (m_lastTok.GetCode()==cmFUNC)
-                m_iSynFlags = noOPT | noEND | noARG_SEP | noPOSTOP | noASSIGN;
-              else
-                m_iSynFlags = noBC | noOPT | noEND | noARG_SEP | noPOSTOP | noASSIGN;
-
-              ++m_iBrackets;
-              break;
-
-		    case cmBC:
-              if (m_iSynFlags & noBC)
-                Error(ecUNEXPECTED_PARENS, m_iPos, pOprtDef[i]);
-
-              m_iSynFlags  = noBO | noVAR | noVAL | noFUN | noINFIXOP | noSTR | noASSIGN;
-
-              if (--m_iBrackets<0)
-                Error(ecUNEXPECTED_PARENS, m_iPos, pOprtDef[i]);
-              break;
-      	
-		    default:      // The operator is listed in c_DefaultOprt, but not here. This is a bad thing...
-              Error(ecINTERNAL_ERROR);
-        } // switch operator id
-
-        m_iPos += (int)len;
-        a_Tok.Set( (ECmdCode)i, pOprtDef[i] );
-        return true;
-	    } // if operator string found
-    } // end of for all operator strings
-  
-    return false;
-  }
-
-  //---------------------------------------------------------------------------
-  bool ParserTokenReader::IsArgSep(token_type &a_Tok)
-  {
-    const char_type* szFormula = m_strFormula.c_str();
-
-    if (szFormula[m_iPos]==m_cArgSep)
-    {
-      // copy the separator into null terminated string
-      char_type szSep[2];
-      szSep[0] = m_cArgSep;
-      szSep[1] = 0;
-
-      if (m_iSynFlags & noARG_SEP)
-        Error(ecUNEXPECTED_ARG_SEP, m_iPos, szSep);
-
-      m_iSynFlags  = noBC | noOPT | noEND | noARG_SEP | noPOSTOP | noASSIGN;
-      m_iPos++;
-      a_Tok.Set(cmARG_SEP, szSep);
-      return true;
-    }
-
-    return false;
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Check for End of Formula.
-
-      \return true if an end of formula is found false otherwise.
-      \param a_Tok [out] If an eof is found the corresponding token will be stored there.
-      \throw nothrow
-      \sa IsOprt, IsFunTok, IsStrFunTok, IsValTok, IsVarTok, IsString, IsInfixOpTok, IsPostOpTok
-  */
-  bool ParserTokenReader::IsEOF(token_type &a_Tok)
-  {
-    const char_type* szFormula = m_strFormula.c_str();
-
-    // check for EOF
-    if ( !szFormula[m_iPos] /*|| szFormula[m_iPos] == '\n'*/)
-    {
-      if ( m_iSynFlags & noEND )
-        Error(ecUNEXPECTED_EOF, m_iPos);
-
-      if (m_iBrackets>0)
-        Error(ecMISSING_PARENS, m_iPos, _T(")"));
-
-      m_iSynFlags = 0;
-      a_Tok.Set(cmEND);
-      return true;
-    }
-
-    return false;
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Check if a string position contains a unary infix operator. 
-      \return true if a function token has been found false otherwise.
-  */
-  bool ParserTokenReader::IsInfixOpTok(token_type &a_Tok)
-  {
-    string_type sTok;
-    int iEnd = ExtractToken(m_pParser->ValidInfixOprtChars(), sTok, m_iPos);
-    if (iEnd==m_iPos)
-      return false;
-
-    funmap_type::const_iterator item = m_pInfixOprtDef->find(sTok);
-    if (item==m_pInfixOprtDef->end())
-      return false;
-
-    a_Tok.Set(item->second, sTok);
-    m_iPos = (int)iEnd;
-
-    if (m_iSynFlags & noINFIXOP) 
-      Error(ecUNEXPECTED_OPERATOR, m_iPos, a_Tok.GetAsString());
-
-    m_iSynFlags = noPOSTOP | noINFIXOP | noOPT | noBC | noSTR | noASSIGN; 
-    return true;
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Check whether the token at a given position is a function token.
-      \param a_Tok [out] If a value token is found it will be placed here.
-      \throw ParserException if Syntaxflags do not allow a function at a_iPos
-      \return true if a function token has been found false otherwise.
-      \pre [assert] m_pParser!=0
-  */
-  bool ParserTokenReader::IsFunTok(token_type &a_Tok)
-  {
-    string_type strTok;
-    int iEnd = ExtractToken(m_pParser->ValidNameChars(), strTok, m_iPos);
-    if (iEnd==m_iPos)
-      return false;
-
-    funmap_type::const_iterator item = m_pFunDef->find(strTok);
-    if (item==m_pFunDef->end())
-      return false;
-
-    // Check if the next sign is an opening bracket
-    const char_type *szFormula = m_strFormula.c_str();
-    if (szFormula[iEnd]!='(')
-      return false;
-
-    a_Tok.Set(item->second, strTok);
-
-    m_iPos = (int)iEnd;
-    if (m_iSynFlags & noFUN)
-      Error(ecUNEXPECTED_FUN, m_iPos-(int)a_Tok.GetAsString().length(), a_Tok.GetAsString());
-
-    m_iSynFlags = noANY ^ noBO;
-    return true;
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Check if a string position contains a binary operator.
-      \param a_Tok  [out] Operator token if one is found. This can either be a binary operator or an infix operator token.
-      \return true if an operator token has been found.
-  */
-  bool ParserTokenReader::IsOprt(token_type &a_Tok)
-  {
-    const char_type *const szExpr = m_strFormula.c_str();
-    string_type strTok;
-
-    int iEnd = ExtractOperatorToken(strTok, m_iPos);
-    if (iEnd==m_iPos)
-      return false;
-
-    // Note:
-    // All tokens in oprt_bin_maptype are have been sorted by their length
-    // Long operators must come first! Otherwise short names (like: "add") that
-    // are part of long token names (like: "add123") will be found instead 
-    // of the long ones.
-    // Length sorting is done with ascending length so we use a reverse iterator here.
-    funmap_type::const_reverse_iterator it = m_pOprtDef->rbegin();
-    for ( ; it!=m_pOprtDef->rend(); ++it)
-    {
-      const string_type &sID = it->first;
-      if ( sID == string_type(szExpr + m_iPos, szExpr + m_iPos + sID.length()) )
-      {
-        a_Tok.Set(it->second, strTok);
-
-        // operator was found
-        if (m_iSynFlags & noOPT) 
-        {
-          // An operator was found but is not expected to occur at
-          // this position of the formula, maybe it is an infix 
-          // operator, not a binary operator. Both operator types
-          // can share characters in their identifiers.
-          if ( IsInfixOpTok(a_Tok) ) 
-            return true;
-          // nope, no infix operator
-          Error(ecUNEXPECTED_OPERATOR, m_iPos, a_Tok.GetAsString()); 
-        }
-
-        m_iPos += (int)sID.length();
-        m_iSynFlags  = noBC | noOPT | noARG_SEP | noPOSTOP | noEND | noBC | noASSIGN;
-        return true;
-      }
-    }
-
-    return false;
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Check if a string position contains a unary post value operator. */
-  bool ParserTokenReader::IsPostOpTok(token_type &a_Tok)
-  {
-    // Tricky problem with equations like "3m+5":
-    //     m is a postfix operator, + is a valid sign for postfix operators and 
-    //     for binary operators parser detects "m+" as operator string and 
-    //     finds no matching postfix operator.
-    // 
-    // This is a special case so this routine slightly differs from the other
-    // token readers.
-    
-    // Test if there could be a postfix operator
-    string_type sTok;
-    int iEnd = ExtractToken(m_pParser->ValidOprtChars(), sTok, m_iPos);
-    if (iEnd==m_iPos)
-      return false;
-
-    // iteraterate over all postfix operator strings
-    funmap_type::const_iterator item = m_pPostOprtDef->begin();
-    for (item=m_pPostOprtDef->begin(); item!=m_pPostOprtDef->end(); ++item)
-    {
-      if (sTok.find(item->first)!=0)
-        continue;
-
-      a_Tok.Set(item->second, sTok);
-  	  m_iPos += (int)item->first.length();
-
-      if (m_iSynFlags & noPOSTOP)
-        Error(ecUNEXPECTED_OPERATOR, m_iPos-(int)item->first.length(), item->first);
-
-      m_iSynFlags = noVAL | noVAR | noFUN | noBO | noPOSTOP | noSTR | noASSIGN;
-      return true;
-    }
-
-    return false;
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Check whether the token at a given position is a value token.
-
-    Value tokens are either values or constants.
-
-    \param a_Tok [out] If a value token is found it will be placed here.
-    \return true if a value token has been found.
-  */
-  bool ParserTokenReader::IsValTok(token_type &a_Tok)
-  {
-    assert(m_pConstDef);
-    assert(m_pParser);
-
-    #if defined(_MSC_VER)
-      #pragma warning( disable : 4244 )
-    #endif
-
-    string_type strTok;
-    value_type fVal(0);
-    int iEnd(0);
-    
-    // 2.) Check for user defined constant
-    // Read everything that could be a constant name
-    iEnd = ExtractToken(m_pParser->ValidNameChars(), strTok, m_iPos);
-    if (iEnd!=m_iPos)
-    {
-      valmap_type::const_iterator item = m_pConstDef->find(strTok);
-      if (item!=m_pConstDef->end())
-      {
-        m_iPos = iEnd;
-        a_Tok.SetVal(item->second, strTok);
-
-        if (m_iSynFlags & noVAL)
-          Error(ecUNEXPECTED_VAL, m_iPos - (int)strTok.length(), strTok);
-
-        m_iSynFlags = noVAL | noVAR | noFUN | noBO | noINFIXOP | noSTR | noASSIGN; 
-        return true;
-      }
-    }
-
-    // 3.call the value recognition functions provided by the user
-    // Call user defined value recognition functions
-    std::vector<identfun_type>::const_iterator item = m_vIdentFun.begin();
-    for (item = m_vIdentFun.begin(); item!=m_vIdentFun.end(); ++item)
-    {
-      int iStart = m_iPos;
-      if ( (*item)(m_strFormula.c_str() + m_iPos, &m_iPos, &fVal)==1 )
-      {
-        strTok.assign(m_strFormula.c_str(), iStart, m_iPos);
-        if (m_iSynFlags & noVAL)
-          Error(ecUNEXPECTED_VAL, m_iPos - (int)strTok.length(), strTok);
-
-        a_Tok.SetVal(fVal, strTok);
-        m_iSynFlags = noVAL | noVAR | noFUN | noBO | noINFIXOP | noSTR | noASSIGN;
-        return true;
-      }
-    }
-
-    return false;
-
-    #if defined(_MSC_VER)
-      #pragma warning( default : 4244 )
-    #endif
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Check wheter a token at a given position is a variable token. 
-      \param a_Tok [out] If a variable token has been found it will be placed here.
-	    \return true if a variable token has been found.
-  */
-  bool ParserTokenReader::IsVarTok(token_type &a_Tok)
-  {
-    if (!m_pVarDef->size())
-      return false;
-
-    string_type strTok;
-    int iEnd = ExtractToken(m_pParser->ValidNameChars(), strTok, m_iPos);
-    if (iEnd==m_iPos)
-      return false;
-
-    varmap_type::const_iterator item =  m_pVarDef->find(strTok);
-    if (item==m_pVarDef->end())
-      return false;
-
-    if (m_iSynFlags & noVAR)
-      Error(ecUNEXPECTED_VAR, m_iPos, strTok);
-
-    m_pParser->OnDetectVar(&m_strFormula, m_iPos, iEnd);
-
-    m_iPos = iEnd;
-    a_Tok.SetVar(item->second, strTok);
-    m_UsedVar[item->first] = item->second;  // Add variable to used-var-list
-
-    m_iSynFlags = noVAL | noVAR | noFUN | noBO | noINFIXOP | noSTR;
-
-//  Zur Info hier die SynFlags von IsVal():
-//    m_iSynFlags = noVAL | noVAR | noFUN | noBO | noINFIXOP | noSTR | noASSIGN; 
-    return true;
-  }
-
-  //---------------------------------------------------------------------------
-  bool ParserTokenReader::IsStrVarTok(token_type &a_Tok)
-  {
-    if (!m_pStrVarDef || !m_pStrVarDef->size())
-      return false;
-
-    string_type strTok;
-    int iEnd = ExtractToken(m_pParser->ValidNameChars(), strTok, m_iPos);
-    if (iEnd==m_iPos)
-      return false;
-
-    strmap_type::const_iterator item =  m_pStrVarDef->find(strTok);
-    if (item==m_pStrVarDef->end())
-      return false;
-
-    if (m_iSynFlags & noSTR)
-      Error(ecUNEXPECTED_VAR, m_iPos, strTok);
-
-    m_iPos = iEnd;
-    if (!m_pParser->m_vStringVarBuf.size())
-      Error(ecINTERNAL_ERROR);
-
-    a_Tok.SetString(m_pParser->m_vStringVarBuf[item->second], m_pParser->m_vStringVarBuf.size() );
-
-    m_iSynFlags = noANY ^ ( noBC | noOPT | noEND | noARG_SEP);
-    return true;
-  }
-
-
-  //---------------------------------------------------------------------------
-  /** \brief Check wheter a token at a given position is an undefined variable. 
-
-      \param a_Tok [out] If a variable tom_pParser->m_vStringBufken has been found it will be placed here.
-	    \return true if a variable token has been found.
-      \throw nothrow
-  */
-  bool ParserTokenReader::IsUndefVarTok(token_type &a_Tok)
-  {
-    string_type strTok;
-    int iEnd( ExtractToken(m_pParser->ValidNameChars(), strTok, m_iPos) );
-    if ( iEnd==m_iPos )
-      return false;
-
-    if (m_iSynFlags & noVAR)
-    {
-      // <ibg/> 20061021 added token string strTok instead of a_Tok.GetAsString() as the 
-      //                 token identifier. 
-      // related bug report:
-      // http://sourceforge.net/tracker/index.php?func=detail&aid=1578779&group_id=137191&atid=737979
-      Error(ecUNEXPECTED_VAR, m_iPos - (int)a_Tok.GetAsString().length(), strTok);
-    }
-
-    // If a factory is available implicitely create new variables
-    if (m_pFactory)
-    {
-      value_type *fVar = m_pFactory(strTok.c_str(), m_pFactoryData);
-      a_Tok.SetVar(fVar, strTok );
-
-      // Do not use m_pParser->DefineVar( strTok, fVar );
-      // in order to define the new variable, it will clear the
-      // m_UsedVar array which will kill previousely defined variables
-      // from the list
-      // This is safe because the new variable can never override an existing one
-      // because they are checked first!
-      (*m_pVarDef)[strTok] = fVar;
-      m_UsedVar[strTok] = fVar;  // Add variable to used-var-list
-    }
-    else
-    {
-      a_Tok.SetVar((value_type*)&m_fZero, strTok);
-      m_UsedVar[strTok] = 0;  // Add variable to used-var-list
-    }
-
-    m_iPos = iEnd;
-
-    // Call the variable factory in order to let it define a new parser variable
-    m_iSynFlags = noVAL | noVAR | noFUN | noBO | noPOSTOP | noINFIXOP | noSTR;
-    return true;
-  }
-
-
-  //---------------------------------------------------------------------------
-  /** \brief Check wheter a token at a given position is a string.
-      \param a_Tok [out] If a variable token has been found it will be placed here.
-  	  \return true if a string token has been found.
-      \sa IsOprt, IsFunTok, IsStrFunTok, IsValTok, IsVarTok, IsEOF, IsInfixOpTok, IsPostOpTok
-      \throw nothrow
-  */
-  bool ParserTokenReader::IsString(token_type &a_Tok)
-  {
-    if (m_strFormula[m_iPos]!='"') 
-      return false;
-
-    string_type strBuf(&m_strFormula[m_iPos+1]);
-    std::size_t iEnd(0), iSkip(0);
-
-    // parser over escaped '\"' end replace them with '"'
-    for(iEnd=(int)strBuf.find( _T("\"") ); iEnd!=0 && iEnd!=string_type::npos; iEnd=(int)strBuf.find( _T("\""), iEnd))
-    {
-      if (strBuf[iEnd-1]!='\\') break;
-      strBuf.replace(iEnd-1, 2, _T("\"") );
-      iSkip++;
-    }
-
-    if (iEnd==string_type::npos)
-      Error(ecUNTERMINATED_STRING, m_iPos, _T("\"") );
-
-    string_type strTok(strBuf.begin(), strBuf.begin()+iEnd);
-
-    if (m_iSynFlags & noSTR)
-      Error(ecUNEXPECTED_STR, m_iPos, strTok);
-
-		m_pParser->m_vStringBuf.push_back(strTok); // Store string in internal buffer
-    a_Tok.SetString(strTok, m_pParser->m_vStringBuf.size());
-
-    m_iPos += (int)strTok.length() + 2 + (int)iSkip;  // +2 wg Anführungszeichen; +iSkip für entfernte escape zeichen
-    m_iSynFlags = noANY ^ ( noARG_SEP | noBC | noOPT | noEND );
-
-    return true;
-  }
-
-  //---------------------------------------------------------------------------
-  /** \brief Create an error containing the parse error position.
-
-    This function will create an Parser Exception object containing the error text and its position.
-
-    \param a_iErrc [in] The error code of type #EErrorCodes.
-    \param a_iPos [in] The position where the error was detected.
-    \param a_strTok [in] The token string representation associated with the error.
-    \throw ParserException always throws thats the only purpose of this function.
-  */
-  void  ParserTokenReader::Error( EErrorCodes a_iErrc, 
-                                  int a_iPos, 
-                                  const string_type &a_sTok) const
-  {
-    m_pParser->Error(a_iErrc, a_iPos, a_sTok);
-  }
-
-  //---------------------------------------------------------------------------
-  void ParserTokenReader::SetArgSep(char_type cArgSep)
-  {
-    m_cArgSep = cArgSep;
-  }
-
-  //---------------------------------------------------------------------------
-  char_type ParserTokenReader::GetArgSep() const
-  {
-    return m_cArgSep;
-  }
-} // namespace mu
-



More information about the CIG-COMMITS mailing list