muParser: mu::ParserToken< TBase, TString > Class Template Reference

# mu::ParserToken< TBase, TString > Class Template Reference

Encapsulation of the data for a single formula token. More...

`#include <muParserToken.h>`

List of all members.

## Public Types
enum | ETokFlags { flVOLATILE = 1 }
| Additional token flags. More...
## Public Member Functions
| ParserToken ()
| Constructor (default).
| ParserToken (const ParserToken &a_Tok)
| Create token from another one.
ParserToken & | operator= (const ParserToken &a_Tok)
| Assignement operator.
void | Assign (const ParserToken &a_Tok)
| Copy token information from argument.
void | AddFlags (int a_iFlags)
| Add additional flags to the token.
bool | IsFlagSet (int a_iFlags) const
| Check if a certain flag ist set.
ParserToken & | Set (ECmdCode a_iType, const TString &a_strTok=TString())
| Assign a token type.
ParserToken & | Set (const ParserCallback &a_pCallback, const TString &a_sTok)
| Set Callback type.
ParserToken & | SetVal (TBase a_fVal, const TString &a_strTok=TString())
| Make this token a value token.
ParserToken & | SetVar (TBase *a_pVar, const TString &a_strTok)
| make this token a variable token.
ParserToken & | SetString (const TString &a_strTok, std::size_t a_iSize)
| Make this token a variable token.
void | SetIdx (int a_iIdx)
| Set an index associated with the token related data.
int | GetIdx () const
| Return Index associated with the token related data.
ECmdCode | GetCode () const
| Return the token type.
ETypeCode | GetType () const
int | GetPri () const
void * | GetFuncAddr () const
| Return the address of the callback function assoziated with function and operator tokens.
TBase | GetVal () const
TBase * | GetVar () const
| Get address of a variable token.
int | GetArgCount () const
| Return the number of function arguments.
const TString & | GetAsString () const
| Return the token identifier.
## Private Attributes
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

## Detailed Description

### template<typename TBase, typename TString>
class mu::ParserToken< TBase, TString >

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:

- value
- variable
- function with numerical arguments
- functions with a string as argument
- prefix operators
- infix operators
- binary operator

Author:
  (C) 2004 Ingo Berg

## Member Enumeration Documentation

template<typename TBase, typename TString>

enum mu::ParserToken::ETokFlags

Additional token flags.

Enumerator:

  flVOLATILE | Mark a token that depends on a variable or a function that is not conservative.

## Constructor & Destructor Documentation

template<typename TBase, typename TString>

mu::ParserToken< TBase, TString >::ParserToken | ( |  | ) | `[inline]`

Constructor (default).

Sets token to an neutral state of type cmUNKNOWN.

Exceptions:

  | nothrow |

See also:
  ECmdCode

template<typename TBase, typename TString>

mu::ParserToken< TBase, TString >::ParserToken | ( | const ParserToken< TBase, TString > & | a_Tok | ) | `[inline]`

Create token from another one.

Implemented by calling Assign(...)

Exceptions:

  | nothrow |

Postcondition:
  m_iType==cmUNKNOWN

See also:
  Assign

## Member Function Documentation

template<typename TBase, typename TString>

ParserToken& mu::ParserToken< TBase, TString >::operator= | ( | const ParserToken< TBase, TString > & | a_Tok | ) | `[inline]`

Assignement operator.

Copy token state from another token and return this. Implemented by calling Assign(...).

Exceptions:

  | nothrow |

template<typename TBase, typename TString>

void mu::ParserToken< TBase, TString >::Assign | ( | const ParserToken< TBase, TString > & | a_Tok | ) | `[inline]`

Copy token information from argument.

Exceptions:

  | nothrow |

Referenced by mu::ParserToken< MUP_BASETYPE, MUP_STRING_TYPE >::operator=(), and mu::ParserToken< MUP_BASETYPE, MUP_STRING_TYPE >::ParserToken().

template<typename TBase, typename TString>

void mu::ParserToken< TBase, TString >::AddFlags | ( | int | a_iFlags | ) | `[inline]`

Add additional flags to the token.

Flags are currently used to mark volatile (non optimizeable) functions.

See also:
  m_iFlags, ETokFlags

Referenced by mu::ParserBase::ApplyNumFunc(), mu::ParserBase::ApplyStrFunc(), mu::ParserToken< MUP_BASETYPE, MUP_STRING_TYPE >::Set(), mu::ParserToken< MUP_BASETYPE, MUP_STRING_TYPE >::SetString(), and mu::ParserToken< MUP_BASETYPE, MUP_STRING_TYPE >::SetVar().

template<typename TBase, typename TString>

bool mu::ParserToken< TBase, TString >::IsFlagSet | ( | int | a_iFlags | ) | const`[inline]`

Check if a certain flag ist set.

Exceptions:

  | nothrow |

Referenced by mu::ParserBase::ApplyNumFunc(), and mu::ParserBase::ApplyStrFunc().

template<typename TBase, typename TString>

ParserToken& mu::ParserToken< TBase, TString >::Set | ( | ECmdCode | a_iType,
|  | const TString & | a_strTok = `TString()` |
| ) |  |  | `[inline]`

Assign a token type.

Token may not be of type value, variable or function. Those have seperate set functions.

Precondition:
  [assert] a_iType!=cmVAR

  [assert] a_iType!=cmVAL

  [assert] a_iType!=cmFUNC

Postcondition:
  m_fVal = 0

  m_pTok = 0

Referenced by mu::ParserTokenReader::IsBuiltIn(), mu::ParserTokenReader::IsEOF(), mu::ParserTokenReader::IsFunTok(), mu::ParserTokenReader::IsInfixOpTok(), mu::ParserTokenReader::IsOprt(), and mu::ParserTokenReader::IsPostOpTok().

template<typename TBase, typename TString>

ParserToken& mu::ParserToken< TBase, TString >::SetVal | ( | TBase | a_fVal,
|  | const TString & | a_strTok = `TString()` |
| ) |  |  | `[inline]`

Make this token a value token.

Member variables not necessary for value tokens will be invalidated.

Exceptions:

  | nothrow |

Referenced by mu::ParserBase::ApplyNumFunc(), mu::ParserBase::ApplyStrFunc(), and mu::ParserTokenReader::IsValTok().

template<typename TBase, typename TString>

ParserToken& mu::ParserToken< TBase, TString >::SetVar | ( | TBase * | a_pVar,
|  | const TString & | a_strTok |
| ) |  |  | `[inline]`

make this token a variable token.

Member variables not necessary for variable tokens will be invalidated.

Exceptions:

  | nothrow |

Referenced by mu::ParserTokenReader::IsUndefVarTok(), and mu::ParserTokenReader::IsVarTok().

template<typename TBase, typename TString>

ParserToken& mu::ParserToken< TBase, TString >::SetString | ( | const TString & | a_strTok,
|  | std::size_t | a_iSize |
| ) |  |  | `[inline]`

Make this token a variable token.

Member variables not necessary for variable tokens will be invalidated.

Exceptions:

  | nothrow |

Referenced by mu::ParserTokenReader::IsString().

template<typename TBase, typename TString>

void mu::ParserToken< TBase, TString >::SetIdx | ( | int | a_iIdx | ) | `[inline]`

Set an index associated with the token related data.

In cmSTRFUNC - This is the index to a string table in the main parser.

Parameters:

  | a_iIdx | The index the string function result will take in the bytecode parser.

Exceptions:

  | exception_type | if a_iIdx<0 or m_iType!=cmSTRING

Referenced by mu::ParserBase::ParseString().

template<typename TBase, typename TString>

int mu::ParserToken< TBase, TString >::GetIdx | ( |  | ) | const`[inline]`

Return Index associated with the token related data.

In cmSTRFUNC - This is the index to a string table in the main parser.

Exceptions:

  | exception_type | if m_iIdx<0 or m_iType!=cmSTRING

Returns:
  The index the result will take in the Bytecode calculatin array (m_iIdx).

template<typename TBase, typename TString>

ECmdCode mu::ParserToken< TBase, TString >::GetCode | ( |  | ) | const`[inline]`

Return the token type.

Returns:
  m_iType

Exceptions:

  | nothrow |

Referenced by mu::ParserBase::ApplyFunc(), mu::ParserBase::GetOprtPri(), mu::ParserTokenReader::IsBuiltIn(), and mu::ParserBase::ParseString().

template<typename TBase, typename TString>

void* mu::ParserToken< TBase, TString >::GetFuncAddr | ( |  | ) | const`[inline]`

Return the address of the callback function assoziated with function and operator tokens.

Returns:
  The pointer stored in m_pTok.

Exceptions:

  | exception_type | if token type is non of: cmFUNC cmSTRFUNC cmPOSTOP cmINFIXOP cmOPRT_BIN

See also:
  ECmdCode

Referenced by mu::ParserBase::ApplyFunc(), mu::ParserBase::ApplyNumFunc(), mu::ParserBase::ApplyStrFunc(), and mu::ParserBase::ParseString().

template<typename TBase, typename TString>

TBase mu::ParserToken< TBase, TString >::GetVal | ( |  | ) | const`[inline]`

Get value of the token.

Only applicable to variable and value tokens.

Exceptions:

  | exception_type | if token is no value/variable token.

Referenced by mu::ParserBase::ApplyNumFunc(), and mu::ParserBase::ParseString().

template<typename TBase, typename TString>

TBase* mu::ParserToken< TBase, TString >::GetVar | ( |  | ) | const`[inline]`

Get address of a variable token.

Valid only if m_iType==CmdVar.

Exceptions:

  | exception_type | if token is no variable token.

Referenced by mu::ParserBase::ParseString().

template<typename TBase, typename TString>

int mu::ParserToken< TBase, TString >::GetArgCount | ( |  | ) | const`[inline]`

Return the number of function arguments.

Valid only if m_iType==CmdFUNC.

Referenced by mu::ParserBase::ApplyFunc(), mu::ParserBase::ApplyNumFunc(), and mu::ParserBase::ApplyStrFunc().

template<typename TBase, typename TString>

const TString& mu::ParserToken< TBase, TString >::GetAsString | ( |  | ) | const`[inline]`

Return the token identifier.

If m_iType is cmSTRING the token identifier is the value of the string argument for a string function.

Returns:
  m_strTok

Exceptions:

  | nothrow |

See also:
  m_strTok

Referenced by mu::ParserBase::ApplyFunc(), mu::ParserBase::ApplyNumFunc(), mu::ParserBase::ApplyStrFunc(), mu::ParserTokenReader::IsFunTok(), mu::ParserTokenReader::IsInfixOpTok(), mu::ParserTokenReader::IsOprt(), mu::ParserTokenReader::IsUndefVarTok(), and mu::ParserBase::ParseString().

The documentation for this class was generated from the following file:

- muParserToken.h