8 using namespace Reflex;
12 if (!methStack_.empty()) push(begin,end);
13 else if (!lazyMethStack_.empty()) lazyPush(begin,end);
14 else throw Exception(begin) <<
" Expression didn't parse neither hastily nor lazyly. This must not happen.\n";
22 <<
"member \"" << methStack_.back().method().Name() <<
"\" has an invalid return type: \""
23 << methStack_.back().method().TypeOf().Name() <<
"\"";
26 <<
"member \"" << methStack_.back().method().Name()
27 <<
"\" return type is \"" << methStack_.back().method().TypeOf().Name()
28 <<
"\" which is not convertible to double.";
30 exprStack_.push_back(boost::shared_ptr<ExpressionBase>(
new ExpressionVar(methStack_, retType)));
36 exprStack_.push_back(boost::shared_ptr<ExpressionBase>(
new ExpressionLazyVar(lazyMethStack_)));
37 lazyMethStack_.clear();
void operator()(const char *, const char *) const
void lazyPush(const char *, const char *) const
static bool isValidReturnType(method::TypeCode)
TypeCode typeCode(const Type &t)
void push(const char *, const char *) const
Evaluate an object's method or datamember (or chain of them) to get a number.