#include <MethodSetter.h>
Public Member Functions | |
MethodSetter (MethodStack &methStack, LazyMethodStack &lazyMethStack, TypeStack &typeStack, MethodArgumentStack &intStack, bool lazy=false) | |
void | operator() (const char *, const char *) const |
bool | push (const std::string &, const std::vector< AnyMethodArgument > &, const char *, bool deep=true) const |
Private Attributes | |
MethodArgumentStack & | intStack_ |
bool | lazy_ |
LazyMethodStack & | lazyMethStack_ |
MethodStack & | methStack_ |
TypeStack & | typeStack_ |
Definition at line 17 of file MethodSetter.h.
|
inlineexplicit |
Definition at line 26 of file MethodSetter.h.
void MethodSetter::operator() | ( | const char * | begin, |
const char * | end | ||
) | const |
Definition at line 17 of file MethodSetter.cc.
References ExtractAppInfoFromXML::args, begin, Exception, i, and mergeVDriftHistosByStation::name.
bool MethodSetter::push | ( | const std::string & | , |
const std::vector< AnyMethodArgument > & | , | ||
const char * | , | ||
bool | deep = true |
||
) | const |
Resolve the name to either a function member or a data member, push a MethodInvoker on the MethodStack, and its return type to the TypeStack (after stripping "*" and "&").
This method is used also by the LazyInvoker to perform the fetch once the final type is known.
If the object is an edm::Ref/Ptr/RefToBase and the method is not found in the class:
1) it pushes a no-argument 'get()' method
2) if deep = true, it attempts to resolve and push the method on the object to which the edm ref points to. In that case, the MethodStack will contain two more items after this call instead of just one. This behaviour is what you want for non-lazy parsing.
2b) if instead deep = false, it just pushes the 'get' on the stack. this will allow the LazyInvoker to then re-discover the runtime type of the pointee
The method will:
Definition at line 65 of file MethodSetter.cc.
References relativeConstraints::error, Exception, reco::findDataMember(), reco::findMethod(), reco::parser::kIsNotConst, reco::parser::kIsNotPublic, reco::parser::kIsStatic, reco::parser::kNameDoesNotExist, reco::parser::kWrongArgumentType, reco::parser::kWrongNumberOfArguments, mem, edm::TypeWithDict::name(), reco::returnType(), and edm::MemberWithDict::typeOf().
Referenced by reco::parser::SingleInvoker::SingleInvoker(), esMonitoring.LineHistoryEnd::write(), and esMonitoring.LineHistoryStart::write().
|
private |
Definition at line 22 of file MethodSetter.h.
|
private |
Definition at line 23 of file MethodSetter.h.
|
private |
Definition at line 20 of file MethodSetter.h.
|
private |
Definition at line 19 of file MethodSetter.h.
|
private |
Definition at line 21 of file MethodSetter.h.