Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
GrayLib::cExpressionBase Class Reference

#include <cExpressionBase.h>

Inheritance diagram for GrayLib::cExpressionBase:
GrayLib::cExpressionExec GrayLib::cScriptExec

Public Member Functions

 IGNORE_WARN_ABSTRACT (cExpressionBase)
 
HRESULT GetArrayListRef (const ATOMCHAR_t *&rpszExp, OUT cVariant &vValRet, ITERATE_t nAppendStart=0)
 
HRESULT GetArrayRef (const ATOMCHAR_t *&rpszExp, OUT cVariant &vValRet, ITERATE_t nAppendStart=0)
 
HRESULT GetMapListRef (const ATOMCHAR_t *&rpszExp, OUT cVarMap &rMapRet)
 
HRESULT GetMapRef (const ATOMCHAR_t *&rpszExp, OUT cVarMap &rMapRet)
 
HRESULT GetMapListRef (const ATOMCHAR_t *&rpszExp, OUT cVariant &rMapRet)
 
HRESULT GetMapRef (const ATOMCHAR_t *&rpszExp, OUT cVariant &vValRet)
 
virtual HRESULT GetVarRef2 (const ATOMCHAR_t *&rpszExp, OUT cVariant &vValRet, bool bInArray)
 
cVariant GetVarRef (const ATOMCHAR_t *&rpszExp)
 
HRESULT GetVar (const ATOMCHAR_t *pszExp, OUT cVariant &vValRet)
 
cVariant GetVar (const ATOMCHAR_t *pszExp)
 
 UNITTEST_FRIEND (cExpressionBase)
 

Static Public Member Functions

static bool GRAYCALL IsParenNeeded (const ATOMCHAR_t *pszExp)
 
static HRESULT GRAYCALL GetStringRefQ (const ATOMCHAR_t *&rpszExp, OUT cStringA &rsRet)
 
static HRESULT GRAYCALL GetStringRefV (const ATOMCHAR_t *&rpszExp, OUT cVariant &rvValRet)
 
static HRESULT GRAYCALL GetMapElementName (const ATOMCHAR_t *&rpszExp, OUT cStringA &rsName)
 
static HRESULT GRAYCALL GetSimpleVarRef (const ATOMCHAR_t *&rpszExp, OUT cVariant &vValRet)
 

Static Public Attributes

static const ATOMCHAR_t k_ArrayOpen = '['
 
static const ATOMCHAR_t k_ArrayClose = ']'
 
static const ATOMCHAR_t k_MapOpen = '{'
 
static const ATOMCHAR_t k_MapClose = '}'
 

Detailed Description

Simple string to cVariant evaluation. no complex expressions. e.g. no math operators. No methods called, etc. This can be overridden by cExpressionExec to give lots more functionality.

Member Function Documentation

◆ GetArrayListRef()

HRESULT GrayLib::cExpressionBase::GetArrayListRef ( const ATOMCHAR_t *&  rpszExp,
OUT cVariant vValRet,
ITERATE_t  nAppendStart = 0 
)

Parse a string for a list of comma separated args. put_StrExpUnk Parse the output from GetStrArray(); Don't assume it is [blocked]. Terminates on any bad syntax or end type character.

  • nAppendStart = append to this array starting at this position.
    Returns
    >= 0 = Number of elements.

◆ GetArrayRef()

HRESULT GrayLib::cExpressionBase::GetArrayRef ( const ATOMCHAR_t *&  rpszExp,
OUT cVariant vValRet,
ITERATE_t  nAppendStart = 0 
)

get array. assume it is [blocked].

Returns
>= 0 = Number of elements.

◆ GetMapElementName()

HRESULT GRAYCALL GrayLib::cExpressionBase::GetMapElementName ( const ATOMCHAR_t *&  rpszExp,
OUT cStringA rsName 
)
static

◆ GetMapListRef() [1/2]

HRESULT GrayLib::cExpressionBase::GetMapListRef ( const ATOMCHAR_t *&  rpszExp,
OUT cVariant rMapRet 
)

Don't assume it is {blocked}.

◆ GetMapListRef() [2/2]

HRESULT GrayLib::cExpressionBase::GetMapListRef ( const ATOMCHAR_t *&  rpszExp,
OUT cVarMap rMapRet 
)

Parse a list of mapped "Name: Value" paired items. separated by commas. Don't assume it is {blocked}. Terminates on any bad syntax or end type character. Convert to array if names are omitted??

◆ GetMapRef() [1/2]

HRESULT GrayLib::cExpressionBase::GetMapRef ( const ATOMCHAR_t *&  rpszExp,
OUT cVariant vValRet 
)

Parse a list of mapped "Name : Value" paired items. separated by commas. assume it is {blocked}. Convert to array if names are omitted??

◆ GetMapRef() [2/2]

HRESULT GrayLib::cExpressionBase::GetMapRef ( const ATOMCHAR_t *&  rpszExp,
OUT cVarMap rMapRet 
)

Parse a list of mapped "Name : Value" paired items. separated by commas. assume it is {blocked}. Convert to array if names are omitted??

◆ GetSimpleVarRef()

HRESULT GRAYCALL GrayLib::cExpressionBase::GetSimpleVarRef ( const ATOMCHAR_t *&  rpszExp,
OUT cVariant vValRet 
)
static

Parse a single value. not an expression. Simple string to var evaluation. no complex expressions. e.g. no math operators.

Returns
a double,float,DWord, or int depending on the string.
S_FALSE = not a simple number. its something else. Advances rpszExp past the parsed stuff.

◆ GetStringRefQ()

HRESULT GRAYCALL GrayLib::cExpressionBase::GetStringRefQ ( const ATOMCHAR_t *&  rpszExp,
OUT cStringA rsRet 
)
static

Get quoted string. remove quotes. find closing quote.

Returns
Length consumed from source expression until the ending quote.

◆ GetStringRefV()

HRESULT GRAYCALL GrayLib::cExpressionBase::GetStringRefV ( const ATOMCHAR_t *&  rpszExp,
OUT cVariant rvValRet 
)
static

Get quoted string

Returns
0 = ok.

◆ GetVar() [1/2]

cVariant GrayLib::cExpressionBase::GetVar ( const ATOMCHAR_t pszExp)
inline

This version doesn't advance the pszExp pointer.

◆ GetVar() [2/2]

HRESULT GrayLib::cExpressionBase::GetVar ( const ATOMCHAR_t pszExp,
OUT cVariant vValRet 
)
inline

This version doesn't advance the pszExp pointer.

◆ GetVarRef()

cVariant GrayLib::cExpressionBase::GetVarRef ( const ATOMCHAR_t *&  rpszExp)
inline

Advances rpszExp past the parsed stuff.

◆ GetVarRef2()

HRESULT GrayLib::cExpressionBase::GetVarRef2 ( const ATOMCHAR_t *&  rpszExp,
OUT cVariant vValRet,
bool  bInArray 
)
virtual

Base string to var evaluation. no complex expressions and no math operators. Override as cExpressionExec for that. opposite of cVariantData::GetStrExpT

  • Advances rpszExp past the parsed stuff. This will strip quotes, etc. similar to cExpressionExec
  • bInArray = parsing member of array. has extra delimiters. Is this really an int,float,string or should it stay an expression? only quoted strings are true strings anything else should be an expression or other obvious type. Leave as VARTYPE_StringExp if it cannot be easily classified.

Reimplemented in GrayLib::cExpressionExec.

◆ IGNORE_WARN_ABSTRACT()

GrayLib::cExpressionBase::IGNORE_WARN_ABSTRACT ( cExpressionBase  )

◆ IsParenNeeded()

bool GRAYCALL GrayLib::cExpressionBase::IsParenNeeded ( const ATOMCHAR_t pszExp)
static

◆ UNITTEST_FRIEND()

GrayLib::cExpressionBase::UNITTEST_FRIEND ( cExpressionBase  )

Member Data Documentation

◆ k_ArrayClose

const ATOMCHAR_t GrayLib::cExpressionBase::k_ArrayClose = ']'
static

◆ k_ArrayOpen

const ATOMCHAR_t GrayLib::cExpressionBase::k_ArrayOpen = '['
static

◆ k_MapClose

const ATOMCHAR_t GrayLib::cExpressionBase::k_MapClose = '}'
static

◆ k_MapOpen

const ATOMCHAR_t GrayLib::cExpressionBase::k_MapOpen = '{'
static

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