10 using namespace Reflex;
13 string name(begin, end);
15 if (*begin ==
'[' || *begin ==
'(') {
16 name.insert(0,
"operator..");
19 name[9] = name[name.size()-1];
21 name[name.size()-1] =
')';
25 std::vector<AnyMethodArgument>
args;
26 if(parenthesis != string::npos) {
27 name.erase(parenthesis, name.size());
28 if(intStack_.size()==0)
30 <<
"expected method argument, but non given.";
31 for(vector<AnyMethodArgument>::const_iterator
i = intStack_.begin();
i != intStack_.end(); ++
i)
36 if(endOfExpr != string::npos)
37 name.erase(endOfExpr, name.size());
39 if (lazy_) lazyMethStack_.push_back(
LazyInvoker(name, args));
40 else push(name, args,begin);
46 vector<AnyMethodArgument> fixups;
53 <<
"member \"" << mem.first.Name() <<
"\" return type is invalid:\n"
54 <<
" member type: \"" << mem.first.TypeOf().Name() <<
"\"\n"
55 <<
" return type: \"" << mem.first.TypeOf().ReturnType().Name() <<
"\"\n";
58 typeStack_.push_back(retType);
63 if (deep) push(name, args,begin);
74 <<
"method named \"" << name <<
"\" for type \""
75 <<type.Name() <<
"\" is not publically accessible.";
79 <<
"method named \"" << name <<
"\" for type \""
80 <<type.Name() <<
"\" is static.";
84 <<
"method named \"" << name <<
"\" for type \""
85 <<type.Name() <<
"\" is not const.";
89 <<
"method named \"" << name <<
"\" for type \""
90 <<type.Name() <<
"\" was passed the wrong number of arguments.";
94 <<
"method named \"" << name <<
"\" for type \""
95 <<type.Name() <<
"\" was passed the wrong types of arguments.";
99 <<
"method named \"" << name <<
"\" for type \""
100 <<type.Name() <<
"\" is not usable in this context.";
110 <<
"no method or data member named \"" << name <<
"\" found for type \""
111 <<type.Name() <<
"\"";
115 <<
"data member named \"" << name <<
"\" for type \""
116 <<type.Name() <<
"\" is not publically accessible.";
120 <<
"data member named \"" << name <<
"\" for type \""
121 <<type.Name() <<
"\" is not usable in this context.";
125 typeStack_.push_back(member.TypeOf());
bool push(const std::string &, const std::vector< AnyMethodArgument > &, const char *, bool deep=true) const
Type returnType(const Member &mem)
Keeps different SingleInvokers for each dynamic type of the objects passed to invoke() ...
uint16_t mem[nChs][nEvts]
pair< Member, bool > findMethod(const Type &t, const string &name, const std::vector< AnyMethodArgument > &args, std::vector< AnyMethodArgument > &fixuppedArgs, const char *iIterator, int &oError)
void operator()(const char *, const char *) const
Reflex::Member findDataMember(const Reflex::Type &iType, const std::string &iName, int &oError)