11 if (!methStack_.empty())
13 else if (!lazyMethStack_.empty())
16 throw Exception(begin) <<
" Expression didn't parse neither hastily nor lazyly. This must not happen.\n";
23 throw Exception(begin) <<
"member \"" << methStack_.back().methodName() <<
"\" has an invalid return type: \"" 24 << methStack_.back().returnTypeName() <<
"\"";
27 throw Exception(begin) <<
"member \"" << methStack_.back().methodName() <<
"\" return type is \"" 28 << methStack_.back().returnTypeName() <<
"\" which is not convertible to double.";
31 exprStack_.push_back(std::shared_ptr<ExpressionBase>(
new ExpressionVar(methStack_, retType)));
37 exprStack_.push_back(std::shared_ptr<ExpressionBase>(
new ExpressionLazyVar(lazyMethStack_)));
38 lazyMethStack_.clear();
void operator()(const char *, const char *) const
static bool isValidReturnType(method::TypeCode)
method::TypeCode typeCode(const edm::TypeWithDict &)
void push(const char *, const char *) const
Evaluate an object's method or datamember (or chain of them) to get a number.
void lazyPush(const char *, const char *) const