muParser API -  1.35
Public Member Functions | List of all members
mu::ParserToken< TBase, TString > Class Template Referencefinal

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

#include <muParserToken.h>

Public Member Functions

 ParserToken ()
 Constructor (default). More...
 
 ParserToken (const ParserToken &a_Tok)
 Create token from another one. More...
 
ParserTokenoperator= (const ParserToken &a_Tok)
 Assignment operator. More...
 
void Assign (const ParserToken &a_Tok)
 Copy token information from argument. More...
 
ParserTokenSet (ECmdCode a_iType, const TString &a_strTok=TString())
 Assign a token type. More...
 
ParserTokenSet (const ParserCallback &a_pCallback, const TString &a_sTok)
 Set Callback type.
 
ParserTokenSetVal (TBase a_fVal, const TString &a_strTok=TString())
 Make this token a value token. More...
 
ParserTokenSetVar (TBase *a_pVar, const TString &a_strTok)
 make this token a variable token. More...
 
ParserTokenSetString (const TString &a_strTok, std::size_t a_iSize)
 Make this token a variable token. More...
 
void SetIdx (int a_iIdx)
 Set an index associated with the token related data. More...
 
int GetIdx () const
 Return Index associated with the token related data. More...
 
ECmdCode GetCode () const
 Return the token type. More...
 
ETypeCode GetType () const
 
int GetPri () const
 
EOprtAssociativity GetAssociativity () const
 
generic_fun_type GetFuncAddr () const
 Return the address of the callback function assoziated with function and operator tokens. More...
 
TBase GetVal () const
 
TBase * GetVar () const
 Get address of a variable token. More...
 
int GetArgCount () const
 Return the number of function arguments. More...
 
const TString & GetAsString () const
 Return the token identifier. More...
 

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:

Definition at line 66 of file muParserToken.h.

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

Definition at line 87 of file muParserToken.h.

88  :m_iCode(cmUNKNOWN)
89  , m_iType(tpVOID)
90  , m_pTok(0)
91  , m_iIdx(-1)
92  , m_strTok()
93  , m_strVal()
94  , m_fVal(0)
95  , m_pCallback()
96  {}
Undefined type.
Definition: muParserDef.h:187
uninitialized item
Definition: muParserDef.h:178
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

Definition at line 106 of file muParserToken.h.

107  {
108  Assign(a_Tok);
109  }
void Assign(const ParserToken &a_Tok)
Copy token information from argument.

Member Function Documentation

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

Definition at line 129 of file muParserToken.h.

Referenced by mu::ParserToken< value_type, string_type >::operator=(), and mu::ParserToken< value_type, string_type >::ParserToken().

130  {
131  m_iCode = a_Tok.m_iCode;
132  m_pTok = a_Tok.m_pTok;
133  m_strTok = a_Tok.m_strTok;
134  m_iIdx = a_Tok.m_iIdx;
135  m_strVal = a_Tok.m_strVal;
136  m_iType = a_Tok.m_iType;
137  m_fVal = a_Tok.m_fVal;
138  // create new callback object if a_Tok has one
139  m_pCallback.reset(a_Tok.m_pCallback.get() ? a_Tok.m_pCallback->Clone() : 0);
140  }
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.

Definition at line 379 of file muParserToken.h.

380  {
381  MUP_ASSERT(m_pCallback.get());
382 
383  if (!m_pCallback->GetAddr())
384  throw ParserError(ecINTERNAL_ERROR);
385 
386  return m_pCallback->GetArgc();
387  }
Internal error of any kind.
Definition: muParserDef.h:279
#define MUP_ASSERT(COND)
An assertion that does not kill the program.
Definition: muParserDef.h:77
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

Definition at line 398 of file muParserToken.h.

399  {
400  return m_strTok;
401  }
template<typename TBase, typename TString>
ECmdCode mu::ParserToken< TBase, TString >::GetCode ( ) const
inline

Return the token type.

Returns
#m_iType
Exceptions
nothrow

Definition at line 278 of file muParserToken.h.

279  {
280  if (m_pCallback.get())
281  {
282  return m_pCallback->GetCode();
283  }
284  else
285  {
286  return m_iCode;
287  }
288  }
template<typename TBase, typename TString>
generic_fun_type 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_typeif token type is non of:
  • cmFUNC
  • cmSTRFUNC
  • cmPOSTOP
  • cmINFIXOP
  • cmOPRT_BIN
See also
ECmdCode

Definition at line 339 of file muParserToken.h.

340  {
341  return (m_pCallback.get()) ? (generic_fun_type)m_pCallback->GetAddr() : 0;
342  }
value_type(* generic_fun_type)()
Callback type used for functions without arguments.
Definition: muParserDef.h:325
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_typeif #m_iIdx<0 or #m_iType!=cmSTRING
Returns
The index the result will take in the Bytecode calculatin array (#m_iIdx).

Definition at line 264 of file muParserToken.h.

265  {
266  if (m_iIdx < 0 || m_iCode != cmSTRING)
267  throw ParserError(ecINTERNAL_ERROR);
268 
269  return m_iIdx;
270  }
Internal error of any kind.
Definition: muParserDef.h:279
Code for a string token.
Definition: muParserDef.h:173
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.
        \throw exception_type if token is no value/variable token.

Definition at line 350 of file muParserToken.h.

351  {
352  switch (m_iCode)
353  {
354  case cmVAL: return m_fVal;
355  case cmVAR: return *((TBase*)m_pTok);
356  default: throw ParserError(ecVAL_EXPECTED);
357  }
358  }
A numerical function has been called with a non value type of argument.
Definition: muParserDef.h:239
value item
Definition: muParserDef.h:161
variable item
Definition: muParserDef.h:160
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_typeif token is no variable token.

Definition at line 366 of file muParserToken.h.

367  {
368  if (m_iCode != cmVAR)
369  throw ParserError(ecINTERNAL_ERROR);
370 
371  return (TBase*)m_pTok;
372  }
Internal error of any kind.
Definition: muParserDef.h:279
variable item
Definition: muParserDef.h:160
template<typename TBase, typename TString>
ParserToken& mu::ParserToken< TBase, TString >::operator= ( const ParserToken< TBase, TString > &  a_Tok)
inline

Assignment operator.

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

Exceptions
nothrow

Definition at line 118 of file muParserToken.h.

119  {
120  Assign(a_Tok);
121  return *this;
122  }
void Assign(const ParserToken &a_Tok)
Copy token information from argument.
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 separate set functions.

Precondition
[assert] a_iType!=cmVAR
[assert] a_iType!=cmVAL
[assert] a_iType!=cmFUNC
Postcondition
m_fVal = 0
m_pTok = 0

Definition at line 153 of file muParserToken.h.

154  {
155  // The following types can't be set this way, they have special Set functions
156  MUP_ASSERT(a_iType != cmVAR);
157  MUP_ASSERT(a_iType != cmVAL);
158  MUP_ASSERT(a_iType != cmFUNC);
159 
160  m_iCode = a_iType;
161  m_iType = tpVOID;
162  m_pTok = 0;
163  m_strTok = a_strTok;
164  m_iIdx = -1;
165 
166  return *this;
167  }
Code for a generic function item.
Definition: muParserDef.h:170
#define MUP_ASSERT(COND)
An assertion that does not kill the program.
Definition: muParserDef.h:77
value item
Definition: muParserDef.h:161
Undefined type.
Definition: muParserDef.h:187
variable item
Definition: muParserDef.h:160
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_iIdxThe index the string function result will take in the bytecode parser.
Exceptions
exception_typeif #a_iIdx<0 or #m_iType!=cmSTRING

Definition at line 248 of file muParserToken.h.

249  {
250  if (m_iCode != cmSTRING || a_iIdx < 0)
251  throw ParserError(ecINTERNAL_ERROR);
252 
253  m_iIdx = a_iIdx;
254  }
Internal error of any kind.
Definition: muParserDef.h:279
Code for a string token.
Definition: muParserDef.h:173
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

Definition at line 229 of file muParserToken.h.

230  {
231  m_iCode = cmSTRING;
232  m_iType = tpSTR;
233  m_strTok = a_strTok;
234  m_iIdx = static_cast<int>(a_iSize);
235 
236  m_pTok = 0;
237  m_pCallback.reset(0);
238  return *this;
239  }
String type (Function arguments and constants only, no string variables)
Definition: muParserDef.h:185
Code for a string token.
Definition: muParserDef.h:173
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

Definition at line 192 of file muParserToken.h.

193  {
194  m_iCode = cmVAL;
195  m_iType = tpDBL;
196  m_fVal = a_fVal;
197  m_strTok = a_strTok;
198  m_iIdx = -1;
199 
200  m_pTok = 0;
201  m_pCallback.reset(0);
202 
203  return *this;
204  }
value item
Definition: muParserDef.h:161
Floating point variables.
Definition: muParserDef.h:186
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

Definition at line 212 of file muParserToken.h.

213  {
214  m_iCode = cmVAR;
215  m_iType = tpDBL;
216  m_strTok = a_strTok;
217  m_iIdx = -1;
218  m_pTok = (void*)a_pVar;
219  m_pCallback.reset(0);
220  return *this;
221  }
variable item
Definition: muParserDef.h:160
Floating point variables.
Definition: muParserDef.h:186

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