~dominik-burgdoerfer/webplodder/0.4

« back to all changes in this revision

Viewing changes to libwesl/src/wesl/elementstack.cpp

  • Committer: Dominik Burgdörfer
  • Date: 2010-07-09 20:05:23 UTC
  • Revision ID: dominik@domachine-20100709200523-xq8qj0x5lj5eq4pg
removed unused libstx-exparser

Show diffs side-by-side

added added

removed removed

Lines of Context:
38
38
        : Element(), 
39
39
        Printable(this),
40
40
        Resolvable(this),
41
 
        m_processed(false),
42
 
        m_stxSymbolTableDriver(this)
 
41
        m_processed(false)
43
42
    {
44
43
 
45
44
    }
49
48
        Printable(this),
50
49
        Resolvable(this),
51
50
        m_sourcePath(sourcePath), 
52
 
        m_processed(false),
53
 
        m_stxSymbolTableDriver(this)
 
51
        m_processed(false)
54
52
    {
55
53
 
56
54
    }
289
287
        return elementPtr;
290
288
    }
291
289
 
292
 
    stx::SymbolTable& ElementStack::stxSymbolTableDriver() {
293
 
        return m_stxSymbolTableDriver;
294
 
    }
295
 
    
296
290
    ElementStack::FunctionMap ElementStack::STATIC_FUNCTION_MAP =
297
291
        ElementStack::FunctionMap();
298
292
 
301
295
 
302
296
    ElementStack::VariableMap ElementStack::STATIC_VARIABLE_MAP =
303
297
        ElementStack::VariableMap();
304
 
 
305
 
    ElementStack::StxSymbolTableDriver::StxSymbolTableDriver(
306
 
            ElementStack* stack)
307
 
        : m_stack(stack)
308
 
    {
309
 
 
310
 
    }
311
 
 
312
 
    stx::AnyScalar ElementStack::StxSymbolTableDriver::lookupVariable(
313
 
            const std::string& varname) const
314
 
    {
315
 
        VariableMap::iterator iter = m_stack->lookupVariable(varname);
316
 
 
317
 
        if(iter == ElementStack::STATIC_VARIABLE_MAP.end())
318
 
            throw stx::UnknownSymbolException("eval: unknown variable: " +
319
 
                    varname);
320
 
        else {
321
 
            types::ObjectPtr objectPtr = iter->second;
322
 
            stx::AnyScalar anyScalar;
323
 
 
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));
328
 
            }
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));
334
 
            }
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));
340
 
            }
341
 
            else {
342
 
                throw stx::UnknownSymbolException(
343
 
                        "eval: unknown variable: " +
344
 
                        varname);
345
 
            }
346
 
        }
347
 
    }
348
 
 
349
 
    stx::AnyScalar ElementStack::StxSymbolTableDriver::processFunction(
350
 
            const std::string& funcname, 
351
 
            const paramlist_type& paramlist) const
352
 
    {
353
 
        throw stx::UnknownSymbolException("eval: unknown function: " + 
354
 
                funcname);
355
 
    }
356
298
}