muParser: mu Namespace Reference

# mu Namespace Reference

Namespace for mathematical applications. More...

## Classes
class | Parser
| Mathematical expressions parser. More...
class | ParserBase
| Mathematical expressions parser (base parser engine). More...
class | ParserByteCode
| Bytecode implementation of the Math Parser. More...
class | ParserCallback
| Encapsulation of prototypes for a numerical parser function. More...
class | ParserComplex
| Mathematical expressions parser. More...
struct | mu::STATIC_ASSERTION_FAILURE< true >
class | ParserErrorMsg
| A class that handles the error messages. More...
class | ParserError
| Error class of the parser. More...
class | ParserInt
| Mathematical expressions parser. More...
class | ParserStack
| Parser stack implementation. More...
class | ParserToken
| Encapsulation of the data for a single formula token. More...
class | ParserTokenReader
| Token reader for the ParserBase class. More...
## Namespaces
namespace | Test
| Namespace for test cases.

## Typedefs
typedef std::map< string_type, ParserCallback > | funmap_type
| Container for Callback objects.
typedef MUP_BASETYPE | value_type
| The numeric datatype used by the parser.
typedef MUP_STRING_TYPE | string_type
| The stringtype used by the parser.
typedef MUP_BYTECODE_TYPE | bytecode_type
| The bytecode type used by the parser.
typedef string_type::value_type | char_type
| The character type used by the parser.
typedef std::basic_stringstream < char_type, std::char_traits < char_type >, std::allocator < char_type > > | stringstream_type
| Typedef for easily using stringstream that respect the parser stringtype.
typedef std::map< string_type, value_type * > | varmap_type
| Type used for storing variables.
typedef std::map< string_type, value_type > | valmap_type
| Type used for storing constants.
typedef std::map< string_type, std::size_t > | strmap_type
| Type for assigning a string name to an index in the internal string table.
typedef value_type(* | fun_type0 )()
| Callback type used for functions without arguments.
typedef value_type(* | fun_type1 )(value_type)
| Callback type used for functions with a single arguments.
typedef value_type(* | fun_type2 )(value_type, value_type)
| Callback type used for functions with two arguments.
typedef value_type(* | fun_type3 )(value_type, value_type, value_type)
| Callback type used for functions with three arguments.
typedef value_type(* | fun_type4 )(value_type, value_type, value_type, value_type)
| Callback type used for functions with four arguments.
typedef value_type(* | fun_type5 )(value_type, value_type, value_type, value_type, value_type)
| Callback type used for functions with five arguments.
typedef value_type(* | multfun_type )(const value_type *, int)
| Callback type used for functions with a variable argument list.
typedef value_type(* | strfun_type1 )(const char_type *)
| Callback type used for functions taking a string as an argument.
typedef value_type(* | strfun_type2 )(const char_type *, value_type)
| Callback type used for functions taking a string and a value as arguments.
typedef value_type(* | strfun_type3 )(const char_type *, value_type, value_type)
| Callback type used for functions taking a string and two values as arguments.
typedef int(* | identfun_type )(const char_type *sExpr, int *nPos, value_type *fVal)
| Callback used for functions that identify values in a string.
typedef value_type *(* | facfun_type )(const char_type *, void *)
| Callback used for variable creation factory functions.
typedef char | MAP_TYPE_CANT_BE_UNSIGNED [sizeof(STATIC_ASSERTION_FAILURE< bytecode_type(-1)< 0 >)]
| This is a static typecheck.
## Enumerations
enum | ECmdCode { cmLE = 0, cmGE = 1, cmNEQ = 2, cmEQ = 3, cmLT = 4, cmGT = 5, cmADD = 6, cmSUB = 7, cmMUL = 8, cmDIV = 9, cmPOW = 10, cmAND = 11, cmOR = 12, cmXOR = 13, cmASSIGN = 14, cmBO = 15, cmBC = 16, cmARG_SEP, cmVAR, cmVAL, cmFUNC, cmFUNC_STR, cmSTRING, cmOPRT_BIN, cmOPRT_POSTFIX, cmOPRT_INFIX, cmEND, cmUNKNOWN }
| Bytecode values. More...
enum | ETypeCode { tpSTR = 0, tpDBL = 1, tpVOID = 2 }
| Types internally used by the parser. More...
enum | EPrec { prLOGIC = 1, prCMP = 2, prADD_SUB = 3, prMUL_DIV = 4, prPOW = 5, prINFIX = 4, prPOSTFIX = 4 }
| Parser operator precedence values. More...
enum | EErrorCodes { ecUNEXPECTED_OPERATOR = 0, ecUNASSIGNABLE_TOKEN = 1, ecUNEXPECTED_EOF = 2, ecUNEXPECTED_ARG_SEP = 3, ecUNEXPECTED_ARG = 4, ecUNEXPECTED_VAL = 5, ecUNEXPECTED_VAR = 6, ecUNEXPECTED_PARENS = 7, ecUNEXPECTED_STR = 8, ecSTRING_EXPECTED = 9, ecVAL_EXPECTED = 10, ecMISSING_PARENS = 11, ecUNEXPECTED_FUN = 12, ecUNTERMINATED_STRING = 13, ecTOO_MANY_PARAMS = 14, ecTOO_FEW_PARAMS = 15, ecOPRT_TYPE_CONFLICT = 16, ecSTR_RESULT = 17, ecINVALID_NAME = 18, ecBUILTIN_OVERLOAD = 19, ecINVALID_FUN_PTR = 20, ecINVALID_VAR_PTR = 21, ecEMPTY_EXPRESSION = 22, ecNAME_CONFLICT = 23, ecOPT_PRI = 24, ecDOMAIN_ERROR = 25, ecDIV_BY_ZERO = 26, ecGENERIC = 27, ecLOCALE = 28, ecINTERNAL_ERROR = 29, ecCOUNT, ecUNDEFINED = -1 }
| Error codes. More...
## Functions
std::ostream & | console ()
| Encapsulate cout.
std::istream & | console_in ()
| Encapsulate cin.

## Detailed Description

Namespace for mathematical applications.

## Typedef Documentation

typedef MUP_BYTECODE_TYPE mu::bytecode_type

The bytecode type used by the parser.

The bytecode type depends on the value_type.

typedef string_type::value_type mu::char_type

The character type used by the parser.

Depends on wether UNICODE is used or not.

typedef char mu::MAP_TYPE_CANT_BE_UNSIGNED[sizeof(STATIC_ASSERTION_FAILURE< bytecode_type(-1)< 0 >)]

This is a static typecheck.

If you get a compiler error here you tried to use an unsigned bytecode map type!

typedef MUP_STRING_TYPE mu::string_type

The stringtype used by the parser.

Depends on wether UNICODE is used or not.

Examples:
  calc.cpp.

typedef MUP_BASETYPE mu::value_type

The numeric datatype used by the parser.

Normally this is a floating point type either single or double precision.

Examples:
  calc.cpp.

## Enumeration Type Documentation

enum mu::ECmdCode

Bytecode values.

Attention:
  The order of the operator entries must match the order in ParserBase::c_DefaultOprt!

Enumerator:

  cmLE | Operator item: less or equal.
  cmGE | Operator item: greater or equal.
  cmNEQ | Operator item: not equal.
  cmEQ | Operator item: equals.
  cmLT | Operator item: less than.
  cmGT | Operator item: greater than.
  cmADD | Operator item: add.
  cmSUB | Operator item: subtract.
  cmMUL | Operator item: multiply.
  cmDIV | Operator item: division.
  cmPOW | Operator item: y to the power of ...
  cmAND | Operator item: logical and.
  cmOR | Operator item: logical or.
  cmXOR | Operator item: logical xor.
  cmASSIGN | Operator item: Assignment operator.
  cmBO | Operator item: opening bracket.
  cmBC | 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

enum mu::EErrorCodes

Error codes.

Enumerator:

  ecUNEXPECTED_OPERATOR | Unexpected binary operator found.
  ecUNASSIGNABLE_TOKEN | Token cant be identified.
  ecUNEXPECTED_EOF | Unexpected end of formula. (Example: "2+sin(").
  ecUNEXPECTED_ARG_SEP | An unexpected comma has been found. (Example: "1,23").
  ecUNEXPECTED_ARG | An unexpected argument has been found.
  ecUNEXPECTED_VAL | An unexpected value token has been found.
  ecUNEXPECTED_VAR | An unexpected variable token has been found.
  ecUNEXPECTED_PARENS | Unexpected Parenthesis, opening or closing.
  ecUNEXPECTED_STR | A string has been found at an inapropriate position.
  ecSTRING_EXPECTED | A string function has been called with a different type of argument.
  ecVAL_EXPECTED | A numerical function has been called with a non value type of argument.
  ecMISSING_PARENS | Missing parens. (Example: "3*sin(3").
  ecUNEXPECTED_FUN | Unexpected function found. (Example: "sin(8)cos(9)").
  ecUNTERMINATED_STRING | unterminated string constant. (Example: "3*valueof("hello)")
  ecTOO_MANY_PARAMS | Too many function parameters.
  ecTOO_FEW_PARAMS | Too few function parameters. (Example: "ite(1<2,2)").
  ecOPRT_TYPE_CONFLICT | binary operators may only be applied to value items of the same type
  ecSTR_RESULT | result is a string
  ecINVALID_NAME | Invalid function, variable or constant name.
  ecBUILTIN_OVERLOAD | Trying to overload builtin operator.
  ecINVALID_FUN_PTR | Invalid callback function pointer.
  ecINVALID_VAR_PTR | Invalid variable pointer.
  ecEMPTY_EXPRESSION | The Expression is empty.
  ecNAME_CONFLICT | Name conflict.
  ecOPT_PRI | Invalid operator priority.
  ecDOMAIN_ERROR | catch division by zero, sqrt(-1), log(0) (currently unused)
  ecDIV_BY_ZERO | Division by zero (currently unused).
  ecGENERIC | Generic error.
  ecLOCALE | Conflict with current locale.
  ecINTERNAL_ERROR | Internal error of any kind.
  ecCOUNT | This is no error code, It just stores just the total number of error codes.
  ecUNDEFINED | Undefined message, placeholder to detect unassigned error messages.

enum mu::EPrec

Parser operator precedence values.

Enumerator:

  prLOGIC | logic operators
  prCMP | comparsion operators
  prADD_SUB | addition
  prMUL_DIV | multiplication/division
  prPOW | power operator priority (highest)
  prINFIX | Signs have a higher priority than ADD_SUB, but lower than power operator.
  prPOSTFIX | Postfix operator priority (currently unused).

enum mu::ETypeCode

Types internally used by the parser.

Enumerator:

  tpSTR | String type (Function arguments and constants only, no string variables).
  tpDBL | Floating point variables.
  tpVOID | Undefined type.

## Function Documentation

std::ostream& mu::console | ( |  | ) | `[inline]`

Encapsulate cout.

Used for supporting UNICODE more easily.

Examples:
  calc.cpp, list_expr_var.cpp, and listvar.cpp.

Referenced by mu::Test::ParserTester::Abort(), mu::Test::ParserTester::EqnTest(), mu::Test::ParserTester::TestNames(), and mu::Test::ParserTester::TestVolatile().

std::istream& mu::console_in | ( |  | ) | `[inline]`

Encapsulate cin.

Used for supporting UNICODE more easily.

Examples:
  calc.cpp.