302
296
ElementStack::VariableMap ElementStack::STATIC_VARIABLE_MAP =
303
297
ElementStack::VariableMap();
305
ElementStack::StxSymbolTableDriver::StxSymbolTableDriver(
312
stx::AnyScalar ElementStack::StxSymbolTableDriver::lookupVariable(
313
const std::string& varname) const
315
VariableMap::iterator iter = m_stack->lookupVariable(varname);
317
if(iter == ElementStack::STATIC_VARIABLE_MAP.end())
318
throw stx::UnknownSymbolException("eval: unknown variable: " +
321
types::ObjectPtr objectPtr = iter->second;
322
stx::AnyScalar anyScalar;
324
if(objectPtr->objectType() == types::Object::INTEGER) {
325
types::IntegerPtr integerPtr =
326
dynamic_pointer_cast<types::Integer>(objectPtr);
327
anyScalar = stx::AnyScalar(static_cast<int>(*integerPtr));
329
else if(objectPtr->objectType() == types::Object::FLOAT) {
330
types::FloatPtr floatPtr =
331
dynamic_pointer_cast<types::Float>(objectPtr);
332
anyScalar = stx::AnyScalar(
333
static_cast<float>(*floatPtr));
335
else if(objectPtr->objectType() == types::Object::STRING) {
336
types::StringPtr stringPtr =
337
dynamic_pointer_cast<types::String>(objectPtr);
338
anyScalar = stx::AnyScalar(
339
static_cast<string>(*stringPtr));
342
throw stx::UnknownSymbolException(
343
"eval: unknown variable: " +
349
stx::AnyScalar ElementStack::StxSymbolTableDriver::processFunction(
350
const std::string& funcname,
351
const paramlist_type& paramlist) const
353
throw stx::UnknownSymbolException("eval: unknown function: " +