Emulation of the CINT CallFunc class.
The CINT C++ interpreter provides an interface for calling functions through the generated wrappers in dictionaries with the CallFunc class. This class provides the same functionality, using an interface as close as possible to CallFunc but the function metadata and calling service comes from the Cling C++ interpreter and the Clang C++ compiler, not CINT.
Definition at line 60 of file TClingCallFunc.h.
Private Types | |
enum | EReferenceType { kNotReference , kLValueReference , kRValueReference } |
using | ExecWithRetFunc_t = std::function<void(void* address, cling::Value &ret)> |
Private Attributes | |
llvm::SmallVector< cling::Value, 8 > | fArgVals |
Stored function arguments, we own. | |
const clang::FunctionDecl * | fDecl = nullptr |
Decl for the method. | |
cling::Interpreter * | fInterp |
Cling interpreter, we do not own. | |
std::unique_ptr< TClingMethodInfo > | fMethod |
Current method, we own. | |
size_t | fMinRequiredArguments = -1 |
Number of required arguments. | |
std::atomic< tcling_callfunc_Wrapper_t > | fWrapper |
Pointer to compiled wrapper, we do not own. | |
#include </github/home/ROOT-CI/src/core/metacling/src/TClingCallFunc.h>
|
private |
Definition at line 84 of file TClingCallFunc.h.
|
private |
Enumerator | |
---|---|
kNotReference | |
kLValueReference | |
kRValueReference |
Definition at line 78 of file TClingCallFunc.h.
|
default |
|
inlineexplicit |
Definition at line 141 of file TClingCallFunc.h.
|
inlineexplicit |
Definition at line 147 of file TClingCallFunc.h.
|
inline |
Definition at line 154 of file TClingCallFunc.h.
|
private |
Definition at line 129 of file TClingCallFunc.cxx.
|
private |
Definition at line 173 of file TClingCallFunc.cxx.
|
private |
Definition at line 135 of file TClingCallFunc.cxx.
|
private |
Definition at line 1504 of file TClingCallFunc.cxx.
void TClingCallFunc::Exec | ( | void * | address, |
TInterpreterValue * | interpVal = 0 ) |
Definition at line 1528 of file TClingCallFunc.cxx.
|
private |
Definition at line 1407 of file TClingCallFunc.cxx.
|
private |
Definition at line 1482 of file TClingCallFunc.cxx.
void * TClingCallFunc::ExecDefaultConstructor | ( | const TClingClassInfo * | info, |
ROOT::TMetaUtils::EIOCtorCategory | kind, | ||
const std::string & | type_name, | ||
void * | address = nullptr, | ||
unsigned long | nary = 0UL ) |
Definition at line 1603 of file TClingCallFunc.cxx.
void TClingCallFunc::ExecDestructor | ( | const TClingClassInfo * | info, |
void * | address = nullptr, | ||
unsigned long | nary = 0UL, | ||
bool | withFree = true ) |
Definition at line 1629 of file TClingCallFunc.cxx.
double TClingCallFunc::ExecDouble | ( | void * | address | ) |
Definition at line 1575 of file TClingCallFunc.cxx.
Longptr_t TClingCallFunc::ExecInt | ( | void * | address | ) |
Definition at line 1565 of file TClingCallFunc.cxx.
long long TClingCallFunc::ExecInt64 | ( | void * | address | ) |
Definition at line 1570 of file TClingCallFunc.cxx.
|
private |
Definition at line 1545 of file TClingCallFunc.cxx.
void TClingCallFunc::ExecWithArgsAndReturn | ( | void * | address, |
const void * | args[] = 0, | ||
int | nargs = 0, | ||
void * | ret = 0 ) |
Definition at line 1580 of file TClingCallFunc.cxx.
void TClingCallFunc::ExecWithReturn | ( | void * | address, |
void * | ret = nullptr ) |
Definition at line 1592 of file TClingCallFunc.cxx.
TClingMethodInfo * TClingCallFunc::FactoryMethod | ( | ) | const |
Definition at line 1646 of file TClingCallFunc.cxx.
int TClingCallFunc::get_wrapper_code | ( | std::string & | wrapper_name, |
std::string & | wrapper ) |
Definition at line 530 of file TClingCallFunc.cxx.
|
inline |
Definition at line 190 of file TClingCallFunc.h.
|
inline |
Definition at line 196 of file TClingCallFunc.h.
const clang::DeclContext * TClingCallFunc::GetDeclContext | ( | ) | const |
Definition at line 526 of file TClingCallFunc.cxx.
|
inline |
Definition at line 201 of file TClingCallFunc.h.
|
inlineprivate |
Definition at line 126 of file TClingCallFunc.h.
TInterpreter::CallFuncIFacePtr_t TClingCallFunc::IFacePtr | ( | ) |
Definition at line 1692 of file TClingCallFunc.cxx.
|
inline |
Definition at line 178 of file TClingCallFunc.h.
void TClingCallFunc::Init | ( | ) |
Definition at line 1651 of file TClingCallFunc.cxx.
void TClingCallFunc::Init | ( | const TClingMethodInfo & | minfo | ) |
Definition at line 1660 of file TClingCallFunc.cxx.
void TClingCallFunc::Init | ( | std::unique_ptr< TClingMethodInfo > | minfo | ) |
Definition at line 1666 of file TClingCallFunc.cxx.
void * TClingCallFunc::InterfaceMethod | ( | ) |
Definition at line 1672 of file TClingCallFunc.cxx.
void TClingCallFunc::Invoke | ( | cling::Value * | result = 0 | ) | const |
bool TClingCallFunc::IsValid | ( | ) | const |
Definition at line 1684 of file TClingCallFunc.cxx.
|
private |
Definition at line 1068 of file TClingCallFunc.cxx.
|
private |
Definition at line 1260 of file TClingCallFunc.cxx.
|
private |
Definition at line 325 of file TClingCallFunc.cxx.
|
private |
Definition at line 901 of file TClingCallFunc.cxx.
|
private |
Definition at line 268 of file TClingCallFunc.cxx.
|
private |
Definition at line 450 of file TClingCallFunc.cxx.
|
private |
Definition at line 1010 of file TClingCallFunc.cxx.
|
delete |
void TClingCallFunc::ResetArg | ( | ) |
Definition at line 1707 of file TClingCallFunc.cxx.
|
inline |
Definition at line 206 of file TClingCallFunc.h.
Definition at line 1712 of file TClingCallFunc.cxx.
void TClingCallFunc::SetArgs | ( | const char * | args | ) |
Definition at line 1720 of file TClingCallFunc.cxx.
void TClingCallFunc::SetFunc | ( | const TClingClassInfo * | info, |
const char * | method, | ||
const char * | arglist, | ||
bool | objectIsConst, | ||
Longptr_t * | poffset ) |
Definition at line 1732 of file TClingCallFunc.cxx.
void TClingCallFunc::SetFunc | ( | const TClingClassInfo * | info, |
const char * | method, | ||
const char * | arglist, | ||
Longptr_t * | poffset ) |
Definition at line 1726 of file TClingCallFunc.cxx.
void TClingCallFunc::SetFunc | ( | const TClingMethodInfo * | info | ) |
Definition at line 1760 of file TClingCallFunc.cxx.
void TClingCallFunc::SetFuncProto | ( | const TClingClassInfo * | info, |
const char * | method, | ||
const char * | proto, | ||
bool | objectIsConst, | ||
Longptr_t * | poffset, | ||
ROOT::EFunctionMatchMode | mode = ROOT::kConversionMatch ) |
Definition at line 1776 of file TClingCallFunc.cxx.
void TClingCallFunc::SetFuncProto | ( | const TClingClassInfo * | info, |
const char * | method, | ||
const char * | proto, | ||
Longptr_t * | poffset, | ||
ROOT::EFunctionMatchMode | mode = ROOT::kConversionMatch ) |
Definition at line 1769 of file TClingCallFunc.cxx.
void TClingCallFunc::SetFuncProto | ( | const TClingClassInfo * | info, |
const char * | method, | ||
const llvm::SmallVectorImpl< clang::QualType > & | proto, | ||
bool | objectIsConst, | ||
Longptr_t * | poffset, | ||
ROOT::EFunctionMatchMode | mode = ROOT::kConversionMatch ) |
Definition at line 1804 of file TClingCallFunc.cxx.
void TClingCallFunc::SetFuncProto | ( | const TClingClassInfo * | info, |
const char * | method, | ||
const llvm::SmallVectorImpl< clang::QualType > & | proto, | ||
Longptr_t * | poffset, | ||
ROOT::EFunctionMatchMode | mode = ROOT::kConversionMatch ) |
Definition at line 1797 of file TClingCallFunc.cxx.
|
mutableprivate |
Stored function arguments, we own.
Definition at line 75 of file TClingCallFunc.h.
|
private |
Decl for the method.
Definition at line 69 of file TClingCallFunc.h.
|
private |
Cling interpreter, we do not own.
Definition at line 65 of file TClingCallFunc.h.
|
private |
Current method, we own.
Definition at line 67 of file TClingCallFunc.h.
|
private |
Number of required arguments.
Definition at line 71 of file TClingCallFunc.h.
|
private |
Pointer to compiled wrapper, we do not own.
Definition at line 73 of file TClingCallFunc.h.