#include <MethodInvoker.h>
Definition at line 15 of file MethodInvoker.h.
Reflex::Object MethodInvoker::invoke |
( |
const Reflex::Object & |
o, |
|
|
Reflex::Object & |
retstore |
|
) |
| const |
Invokes the method, putting the result in retval. Returns the Object that points to the result value, after removing any "*" and "&" Caller code is responsible for allocating retstore before calling 'invoke', and of deallocating it afterwards
Definition at line 44 of file MethodInvoker.cc.
References args_, edm::errors::Configuration, edm::hlt::Exception, edm::errors::InvalidReference, isFunction_, method_, and run_regression::ret.
45 Reflex::Object
ret = retstore;
55 retType =
method_.TypeOf().ReturnType();
60 void * addr = ret.Address();
64 <<
"method \"" <<
method_.Name() <<
"\" called with " <<
args_.size()
65 <<
" arguments returned a null pointer ";
68 if(retType.IsPointer() || retType.IsReference()) {
69 if (retType.IsPointer()) {
70 retType = retType.ToType();
72 retType =
Type(retType, 0);
74 while (retType.IsTypedef()) retType = retType.ToType();
75 ret = Object(retType, *static_cast<void **>(addr));
80 <<
"method \"" <<
method_.Name()
81 <<
"\" returned void invoked on object of type \""
82 <<
o.TypeOf().Name(QUALIFIED) <<
"\"\n";
std::vector< void * > args_
const Reflex::Member& reco::parser::MethodInvoker::method |
( |
| ) |
const |
|
inline |
void MethodInvoker::setArgs |
( |
| ) |
|
|
private |
std::vector<void*> reco::parser::MethodInvoker::args_ |
|
private |
bool reco::parser::MethodInvoker::isFunction_ |
|
private |
Reflex::Member reco::parser::MethodInvoker::method_ |
|
private |