muParser API -  1.35
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
Public Member Functions | List of all members
mu::ParserToken< TBase, TString > Class Template Reference

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)
 Assignement 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:

Author
(C) 2004-2013 Ingo Berg

Definition at line 61 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 83 of file muParserToken.h.

84  :m_iCode(cmUNKNOWN)
85  ,m_iType(tpVOID)
86  ,m_pTok(0)
87  ,m_iIdx(-1)
88  ,m_strTok()
89  ,m_strVal()
90  ,m_fVal(0)
91  ,m_pCallback()
92  {}
Undefined type.
Definition: muParserDef.h:203
uninitialized item
Definition: muParserDef.h:193
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 102 of file muParserToken.h.

103  {
104  Assign(a_Tok);
105  }
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 125 of file muParserToken.h.

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

126  {
127  m_iCode = a_Tok.m_iCode;
128  m_pTok = a_Tok.m_pTok;
129  m_strTok = a_Tok.m_strTok;
130  m_iIdx = a_Tok.m_iIdx;
131  m_strVal = a_Tok.m_strVal;
132  m_iType = a_Tok.m_iType;
133  m_fVal = a_Tok.m_fVal;
134  // create new callback object if a_Tok has one
135  m_pCallback.reset(a_Tok.m_pCallback.get() ? a_Tok.m_pCallback->Clone() : 0);
136  }
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 375 of file muParserToken.h.

376  {
377  assert(m_pCallback.get());
378 
379  if (!m_pCallback->GetAddr())
380  throw ParserError(ecINTERNAL_ERROR);
381 
382  return m_pCallback->GetArgc();
383  }
Internal error of any kind.
Definition: muParserError.h:93
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 394 of file muParserToken.h.

395  {
396  return m_strTok;
397  }
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 274 of file muParserToken.h.

275  {
276  if (m_pCallback.get())
277  {
278  return m_pCallback->GetCode();
279  }
280  else
281  {
282  return m_iCode;
283  }
284  }
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 335 of file muParserToken.h.

336  {
337  return (m_pCallback.get()) ? (generic_fun_type)m_pCallback->GetAddr() : 0;
338  }
value_type(* generic_fun_type)()
Callback type used for functions without arguments.
Definition: muParserDef.h:280
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 260 of file muParserToken.h.

261  {
262  if (m_iIdx<0 || m_iCode!=cmSTRING )
263  throw ParserError(ecINTERNAL_ERROR);
264 
265  return m_iIdx;
266  }
Internal error of any kind.
Definition: muParserError.h:93
Code for a string token.
Definition: muParserDef.h:188
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_typeif token is no value/variable token.

Definition at line 346 of file muParserToken.h.

347  {
348  switch (m_iCode)
349  {
350  case cmVAL: return m_fVal;
351  case cmVAR: return *((TBase*)m_pTok);
352  default: throw ParserError(ecVAL_EXPECTED);
353  }
354  }
A numerical function has been called with a non value type of argument.
Definition: muParserError.h:59
value item
Definition: muParserDef.h:175
variable item
Definition: muParserDef.h:174
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 362 of file muParserToken.h.

363  {
364  if (m_iCode!=cmVAR)
365  throw ParserError(ecINTERNAL_ERROR);
366 
367  return (TBase*)m_pTok;
368  }
Internal error of any kind.
Definition: muParserError.h:93
variable item
Definition: muParserDef.h:174
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

Definition at line 114 of file muParserToken.h.

115  {
116  Assign(a_Tok);
117  return *this;
118  }
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 seperate 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 149 of file muParserToken.h.

150  {
151  // The following types cant be set this way, they have special Set functions
152  assert(a_iType!=cmVAR);
153  assert(a_iType!=cmVAL);
154  assert(a_iType!=cmFUNC);
155 
156  m_iCode = a_iType;
157  m_iType = tpVOID;
158  m_pTok = 0;
159  m_strTok = a_strTok;
160  m_iIdx = -1;
161 
162  return *this;
163  }
Code for a generic function item.
Definition: muParserDef.h:185
value item
Definition: muParserDef.h:175
Undefined type.
Definition: muParserDef.h:203
variable item
Definition: muParserDef.h:174
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 244 of file muParserToken.h.

245  {
246  if (m_iCode!=cmSTRING || a_iIdx<0)
247  throw ParserError(ecINTERNAL_ERROR);
248 
249  m_iIdx = a_iIdx;
250  }
Internal error of any kind.
Definition: muParserError.h:93
Code for a string token.
Definition: muParserDef.h:188
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 225 of file muParserToken.h.

226  {
227  m_iCode = cmSTRING;
228  m_iType = tpSTR;
229  m_strTok = a_strTok;
230  m_iIdx = static_cast<int>(a_iSize);
231 
232  m_pTok = 0;
233  m_pCallback.reset(0);
234  return *this;
235  }
String type (Function arguments and constants only, no string variables)
Definition: muParserDef.h:201
Code for a string token.
Definition: muParserDef.h:188
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 188 of file muParserToken.h.

189  {
190  m_iCode = cmVAL;
191  m_iType = tpDBL;
192  m_fVal = a_fVal;
193  m_strTok = a_strTok;
194  m_iIdx = -1;
195 
196  m_pTok = 0;
197  m_pCallback.reset(0);
198 
199  return *this;
200  }
value item
Definition: muParserDef.h:175
Floating point variables.
Definition: muParserDef.h:202
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 208 of file muParserToken.h.

209  {
210  m_iCode = cmVAR;
211  m_iType = tpDBL;
212  m_strTok = a_strTok;
213  m_iIdx = -1;
214  m_pTok = (void*)a_pVar;
215  m_pCallback.reset(0);
216  return *this;
217  }
variable item
Definition: muParserDef.h:174
Floating point variables.
Definition: muParserDef.h:202

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