aboutsummaryrefslogtreecommitdiffstats
path: root/muparser/muParserDef.h
diff options
context:
space:
mode:
authorastrojhgu <astrojhgu@ed2142bd-67ad-457f-ba7c-d818d4011675>2009-08-21 04:14:23 +0000
committerastrojhgu <astrojhgu@ed2142bd-67ad-457f-ba7c-d818d4011675>2009-08-21 04:14:23 +0000
commit3099d2011c505c0c73c4304344e9ee936caab7a3 (patch)
treeadaa9bb1490be182a1af818b1a17d4a8c7d50c6f /muparser/muParserDef.h
parent36f6c2b1b422b51a4e7dd9d50f9f30aba49aefd3 (diff)
downloadopt-utilities-3099d2011c505c0c73c4304344e9ee936caab7a3.tar.bz2
git-svn-id: file:///home/svn/opt_utilities@45 ed2142bd-67ad-457f-ba7c-d818d4011675
Diffstat (limited to 'muparser/muParserDef.h')
-rw-r--r--muparser/muParserDef.h239
1 files changed, 0 insertions, 239 deletions
diff --git a/muparser/muParserDef.h b/muparser/muParserDef.h
deleted file mode 100644
index 164b882..0000000
--- a/muparser/muParserDef.h
+++ /dev/null
@@ -1,239 +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 MUP_DEF_H
-#define MUP_DEF_H
-
-#include <iostream>
-#include <string>
-#include <sstream>
-#include <map>
-
-#include "muParserFixes.h"
-
-/** \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. */
-#define MUP_BYTECODE_TYPE long
-
-/** \brief Maybe I use this for unicode support later. */
-#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
- #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);
-
- #ifndef _UNICODE
- /** \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 << "Assertion \""#COND"\" failed: " \
- << __FILE__ << " line " \
- << __LINE__ << "."; \
- throw ParserError( ss.str() ); \
- }
- #else
- #define MUP_ASSERT(COND)
- #endif // _UNICODE
-#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. */
- inline std::ostream& console()
- {
- return std::cout;
- }
-
- /** \brief Encapsulate cin. */
- 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
- cmCOMMA = 17, ///< Operator item: comma
- cmVAR = 18, ///< variable item
- cmSTRVAR = 19,
- cmVAL = 20, ///< value item
-
- cmFUNC = 21, ///< Code for a function item
- cmFUNC_STR = 22, ///< Code for a function with a string parameter
-
- cmSTRING = 23, ///< Code for a string token
- cmOPRT_BIN = 24, ///< user defined binary operator
- cmOPRT_POSTFIX = 25, ///< code for postfix operators
- cmOPRT_INFIX = 26, ///< code for infix operators
- cmEND = 27, ///< end of formula
- cmUNKNOWN = 28 ///< 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 EPrec
- {
- // 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
- typedef MUP_BASETYPE value_type;
- typedef MUP_STRING_TYPE string_type;
- typedef MUP_BYTECODE_TYPE bytecode_type;
- typedef string_type::value_type char_type;
- typedef std::basic_stringstream<char_type,
- std::char_traits<char_type>,
- std::allocator<char_type> > stringstream_type;
-
- // Data container types
- typedef std::map<string_type, value_type*> varmap_type;
- typedef std::map<string_type, value_type> valmap_type;
- typedef std::map<string_type, std::size_t> strmap_type;
-
- // Parser callbacks
- typedef value_type (*fun_type1)(value_type);
- typedef value_type (*fun_type2)(value_type, value_type);
- typedef value_type (*fun_type3)(value_type, value_type, value_type);
- typedef value_type (*fun_type4)(value_type, value_type, value_type, value_type);
- typedef value_type (*fun_type5)(value_type, value_type, value_type, value_type, value_type);
- typedef value_type (*multfun_type)(const value_type*, int);
- typedef value_type (*strfun_type1)(const char_type*);
- typedef value_type (*strfun_type2)(const char_type*, value_type);
- typedef value_type (*strfun_type3)(const char_type*, value_type, value_type);
-
- // Parser utility callback functions (unrelated to the math callbacks)
- typedef bool (*identfun_type)(const char_type*, int&, value_type&);
- typedef value_type* (*facfun_type)(const char_type*, void*);
-} // end fo namespace
-
-#endif
-