📄 changes.txt
字号:
########################################################
# #
# Mathematical expressions parser library #
# #
# Copyright (c) 2004, 2005 Ingo Berg #
# ingo_berg{at}gmx.de #
# #
########################################################
History:
--------
Rev 1.00 : July 21 2004
-----------------------
* First published version.
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)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -