19 string name(begin, end);
21 if ((*begin ==
'[') || (*begin ==
'(')) {
22 name.insert(0,
"operator..");
25 name[9] = name[name.size() - 1];
27 name[name.size() - 1] =
')';
32 std::vector<AnyMethodArgument>
args;
33 if (parenthesis != string::npos) {
34 name.erase(parenthesis, name.size());
35 if (intStack_.size() == 0) {
37 <<
"expected method argument, but non given.";
39 for (vector<AnyMethodArgument>::const_iterator
i = intStack_.begin();
40 i != intStack_.end(); ++
i) {
46 if (endOfExpr != string::npos) {
47 name.erase(endOfExpr, name.size());
57 push(name, args, begin);
66 const char*
begin,
bool deep)
const
69 vector<AnyMethodArgument> fixups;
71 pair<edm::FunctionWithDict, bool>
mem =
73 if (
bool(mem.first)) {
79 <<
"member \"" << mem.first.name()
80 <<
"\" return type is invalid:\n"
82 << mem.first.typeName() <<
"\"\n";
84 typeStack_.push_back(retType);
96 push(name, args, begin);
111 <<
"method named \"" << name <<
"\" for type \""
112 << type.
name() <<
"\" is not publically accessible.";
116 <<
"method named \"" << name <<
"\" for type \""
117 << type.
name() <<
"\" is static.";
121 <<
"method named \"" << name <<
"\" for type \""
122 << type.
name() <<
"\" is not const.";
126 <<
"method named \"" << name <<
"\" for type \""
127 << type.
name() <<
"\" was passed the wrong number of arguments.";
131 <<
"method named \"" << name <<
"\" for type \""
132 << type.
name() <<
"\" was passed the wrong types of arguments.";
136 <<
"method named \"" << name <<
"\" for type \""
137 << type.
name() <<
"\" is not usable in this context.";
148 <<
"no method or data member named \"" << name
149 <<
"\" found for type \""
150 << type.
name() <<
"\"";
154 <<
"data member named \"" << name <<
"\" for type \""
155 << type.
name() <<
"\" is not publically accessible.";
159 <<
"data member named \"" << name <<
"\" for type \""
160 << type.
name() <<
"\" is not usable in this context.";
165 typeStack_.push_back(member.
typeOf());
edm::MemberWithDict findDataMember(const edm::TypeWithDict &iType, const std::string &iName, int &oError)
Keeps different SingleInvokers for each dynamic type of the objects passed to invoke() ...
std::pair< edm::FunctionWithDict, bool > findMethod(const edm::TypeWithDict &t, const std::string &name, const std::vector< AnyMethodArgument > &args, std::vector< AnyMethodArgument > &fixuppedArgs, const char *iIterator, int &oError)
edm::TypeWithDict returnType(const edm::FunctionWithDict &func)
bool push(const std::string &, const std::vector< AnyMethodArgument > &, const char *, bool deep=true) const
TypeWithDict typeOf() const
uint16_t mem[nChs][nEvts]
void operator()(const char *, const char *) const