35 #include "cling/Interpreter/Value.h"
37 #include <llvm/ADT/SmallVector.h>
69 mutable llvm::SmallVector<cling::Value, 8>
fArgVals;
76 const std::string& wrapper,
77 bool withAccessControl =
true);
80 std::ostringstream& callbuf, std::string& type_name,
81 bool& isReference,
bool& isPointer,
int indent_level,
85 std::ostringstream& callbuf,
86 const std::string& class_name,
int indent_level);
89 std::ostringstream& callbuf,
90 const std::string& class_name,
int indent_level);
93 const std::string& class_name,
94 std::ostringstream& buf,
int indent_level);
97 const std::string& class_name,
98 std::ostringstream& buf,
int indent_level);
109 template <
typename T>
110 void execWithLL(
void* address, clang::QualType QT,
113 template <
typename T>
114 void execWithULL(
void* address, clang::QualType QT,
116 void exec(
void* address,
void* ret)
const;
122 template <
typename T>
147 : fInterp(rhs.fInterp), fNormCtxt(rhs.fNormCtxt), fWrapper(rhs.fWrapper), fArgVals(rhs.fArgVals),
156 unsigned long nary = 0UL);
158 unsigned long nary = 0UL,
bool withFree =
true);
161 const void* args[] = 0,
171 void Init(
const clang::FunctionDecl *);
180 void SetArg(
unsigned long arg);
183 void SetArg(
long long arg);
184 void SetArg(
unsigned long long arg);
186 void SetArgs(
const char* args);
188 const char* arglist,
long* poffset);
190 const char* arglist,
bool objectIsConst,
long* poffset);
193 const char* proto,
long* poffset,
196 const char* proto,
bool objectIsConst,
long* poffset,
199 const llvm::SmallVectorImpl<clang::QualType>& proto,
203 const llvm::SmallVectorImpl<clang::QualType>& proto,
204 bool objectIsConst,
long* poffset,
208 #endif // ROOT_CallFunc
void collect_type_info(clang::QualType &QT, std::ostringstream &typedefbuf, std::ostringstream &callbuf, std::string &type_name, bool &isReference, bool &isPointer, int indent_level, bool forArgument)
void * compile_wrapper(const std::string &wrapper_name, const std::string &wrapper, bool withAccessControl=true)
double ExecDouble(void *address)
void SetFunc(const TClingClassInfo *info, const char *method, const char *arglist, long *poffset)
void SetArgArray(long *argArr, int narg)
tcling_callfunc_dtor_Wrapper_t make_dtor_wrapper(const TClingClassInfo *info)
Emulation of the CINT MethodInfo class.
cling::Interpreter * fInterp
Cling interpreter, we do not own.
void execWithLL(void *address, clang::QualType QT, cling::Value *val) const
ClassImp(TIterator) Bool_t TIterator return false
Compare two iterator objects.
Emulation of the CINT CallFunc class.
void exec_with_valref_return(void *address, cling::Value *ret) const
void Exec(void *address, TInterpreterValue *interpVal=0)
TInterpreter::CallFuncIFacePtr_t IFacePtr()
void SetArgs(const char *args)
void(* tcling_callfunc_ctor_Wrapper_t)(void **, void *, unsigned long)
TClingMethodInfo * fMethod
Current method, we own.
void(* tcling_callfunc_dtor_Wrapper_t)(void *, unsigned long, int)
const ROOT::TMetaUtils::TNormalizedCtxt & fNormCtxt
ROOT normalized context for that interpreter.
llvm::SmallVector< cling::Value, 8 > fArgVals
Stored function arguments, we own.
void exec(void *address, void *ret) const
void execWithULL(void *address, clang::QualType QT, cling::Value *val) const
bool fIgnoreExtraArgs
If true, do not limit number of function arguments to declared number.
const clang::FunctionDecl * GetDecl() const
TClingMethodInfo * FactoryMethod() const
void SetFuncProto(const TClingClassInfo *info, const char *method, const char *proto, long *poffset, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch)
void EvaluateArgList(const std::string &ArgList)
const clang::FunctionDecl * GetMethodDecl() const
void make_narg_ctor(const unsigned N, std::ostringstream &typedefbuf, std::ostringstream &callbuf, const std::string &class_name, int indent_level)
tcling_callfunc_Wrapper_t make_wrapper()
void Invoke(cling::Value *result=0) const
void make_narg_call_with_return(const unsigned N, const std::string &class_name, std::ostringstream &buf, int indent_level)
Emulation of the CINT ClassInfo class.
TClingCallFunc(cling::Interpreter *interp, const ROOT::TMetaUtils::TNormalizedCtxt &normCtxt)
tcling_callfunc_Wrapper_t fWrapper
Pointer to compiled wrapper, we do not own.
void * ExecDefaultConstructor(const TClingClassInfo *info, void *address=0, unsigned long nary=0UL)
void(* tcling_callfunc_Wrapper_t)(void *, int, void **, void *)
typedef void((*Func_t)())
TClingCallFunc(TClingMethodInfo &minfo, const ROOT::TMetaUtils::TNormalizedCtxt &normCtxt)
void ExecDestructor(const TClingClassInfo *info, void *address=0, unsigned long nary=0UL, bool withFree=true)
void make_narg_ctor_with_return(const unsigned N, const std::string &class_name, std::ostringstream &buf, int indent_level)
TClingCallFunc & operator=(const TClingCallFunc &rhs)=delete
long ExecInt(void *address)
void IgnoreExtraArgs(bool ignore)
tcling_callfunc_ctor_Wrapper_t make_ctor_wrapper(const TClingClassInfo *info)
TClingCallFunc(const TClingCallFunc &rhs)
void make_narg_call(const unsigned N, std::ostringstream &typedefbuf, std::ostringstream &callbuf, const std::string &class_name, int indent_level)
void ExecWithArgsAndReturn(void *address, const void *args[]=0, int nargs=0, void *ret=0)
void ExecWithReturn(void *address, void *ret=0)
long long ExecInt64(void *address)