From 3099d2011c505c0c73c4304344e9ee936caab7a3 Mon Sep 17 00:00:00 2001 From: astrojhgu Date: Fri, 21 Aug 2009 04:14:23 +0000 Subject: git-svn-id: file:///home/svn/opt_utilities@45 ed2142bd-67ad-457f-ba7c-d818d4011675 --- muparser/muParserDef.h | 239 ------------------------------------------------- 1 file changed, 239 deletions(-) delete mode 100644 muparser/muParserDef.h (limited to 'muparser/muParserDef.h') 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 -#include -#include -#include - -#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, - std::allocator > stringstream_type; - - // Data container types - typedef std::map varmap_type; - typedef std::map valmap_type; - typedef std::map 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 - -- cgit v1.2.2