12 string name(begin, end);
14 if (*begin ==
'[' || *begin ==
'(') {
15 name.insert(0,
"operator..");
18 name[9] = name[name.size()-1];
20 name[name.size()-1] =
')';
24 std::vector<AnyMethodArgument>
args;
25 if(parenthesis != string::npos) {
26 name.erase(parenthesis, name.size());
27 if(intStack_.size()==0)
29 <<
"expected method argument, but non given.";
30 for(vector<AnyMethodArgument>::const_iterator
i = intStack_.begin();
i != intStack_.end(); ++
i)
35 if(endOfExpr != string::npos)
36 name.erase(endOfExpr, name.size());
38 if (lazy_) lazyMethStack_.push_back(
LazyInvoker(name, args));
39 else push(name, args,begin);
45 vector<AnyMethodArgument> fixups;
47 pair<edm::FunctionWithDict, bool>
mem =
reco::findMethod(type, name, args, fixups,begin,error);
52 <<
"member \"" << mem.first.name() <<
"\" return type is invalid:\n"
53 <<
" member type: \"" << mem.first.typeOf().qualifiedName() <<
"\"\n"
54 <<
" return type: \"" << mem.first.returnType().qualifiedName() <<
"\"\n";
57 typeStack_.push_back(retType);
62 if (deep) push(name, args,begin);
73 <<
"method named \"" << name <<
"\" for type \""
74 <<type.
name() <<
"\" is not publically accessible.";
78 <<
"method named \"" << name <<
"\" for type \""
79 <<type.
name() <<
"\" is static.";
83 <<
"method named \"" << name <<
"\" for type \""
84 <<type.
name() <<
"\" is not const.";
88 <<
"method named \"" << name <<
"\" for type \""
89 <<type.
name() <<
"\" was passed the wrong number of arguments.";
93 <<
"method named \"" << name <<
"\" for type \""
94 <<type.
name() <<
"\" was passed the wrong types of arguments.";
98 <<
"method named \"" << name <<
"\" for type \""
99 <<type.
name() <<
"\" is not usable in this context.";
109 <<
"no method or data member named \"" << name <<
"\" found for type \""
110 <<type.
name() <<
"\"";
114 <<
"data member named \"" << name <<
"\" for type \""
115 <<type.
name() <<
"\" is not publically accessible.";
119 <<
"data member named \"" << name <<
"\" for type \""
120 <<type.
name() <<
"\" is not usable in this context.";
124 typeStack_.push_back(member.
typeOf());
pair< edm::FunctionWithDict, bool > findMethod(const edm::TypeWithDict &t, const string &name, const std::vector< AnyMethodArgument > &args, std::vector< AnyMethodArgument > &fixuppedArgs, const char *iIterator, int &oError)
edm::MemberWithDict findDataMember(const edm::TypeWithDict &iType, const std::string &iName, int &oError)
bool push(const std::string &, const std::vector< AnyMethodArgument > &, const char *, bool deep=true) const
edm::TypeWithDict returnType(const edm::FunctionWithDict &mem)
Keeps different SingleInvokers for each dynamic type of the objects passed to invoke() ...
TypeWithDict typeOf() const
uint16_t mem[nChs][nEvts]
void operator()(const char *, const char *) const