57#define DIRECT_CALL ((size_t)1 << (8 * sizeof(size_t) - 1))
59 return nargs & ~DIRECT_CALL;
84std::string find_memoized_resolved_name(
const std::string&
name)
101 typedef const void* DeclId_t;
104 CallWrapper(
TFunction*
f) : fDecl(
f->GetDeclId()), fName(
f->GetName()), fTF(
nullptr) {}
105 CallWrapper(DeclId_t fid,
const std::string&
n) : fDecl(fid), fName(
n), fTF(
nullptr) {}
107 if (fTF && fDecl == fTF->GetDeclId())
123 CallWrapper* wrap =
new CallWrapper(
f);
130 CallWrapper* wrap =
new CallWrapper(fid,
n);
147 {
"bool",
"char",
"signed char",
"unsigned char",
"wchar_t",
"short",
"unsigned short",
148 "int",
"unsigned int",
"long",
"unsigned long",
"long long",
"unsigned long long",
149 "float",
"double",
"long double",
"void",
150 "allocator",
"array",
"basic_string",
"complex",
"initializer_list",
"less",
"list",
151 "map",
"pair",
"set",
"vector"};
155 {
"auto_ptr",
"std::auto_ptr",
"shared_ptr",
"std::shared_ptr",
156 "unique_ptr",
"std::unique_ptr",
"weak_ptr",
"std::weak_ptr"};
173const int SIGPIPE = 0;
174const int SIGQUIT = 0;
175const int SIGWINCH = 0;
176const int SIGALRM = 0;
177const int SIGCHLD = 0;
179const int SIGUSR1 = 0;
180const int SIGUSR2 = 0;
187 { SIGBUS,
"bus error" },
188 { SIGSEGV,
"segmentation violation" },
189 { SIGSYS,
"bad argument to system call" },
190 { SIGPIPE,
"write on a pipe with no one to read it" },
191 { SIGILL,
"illegal instruction" },
192 { SIGABRT,
"abort" },
194 { SIGINT,
"interrupt" },
195 { SIGWINCH,
"window size change" },
196 { SIGALRM,
"alarm clock" },
197 { SIGCHLD,
"death of a child" },
198 { SIGURG,
"urgent data arrived on an I/O channel" },
199 { SIGFPE,
"floating point exception" },
200 { SIGTERM,
"termination signal" },
201 { SIGUSR1,
"user-defined signal 1" },
202 { SIGUSR2,
"user-defined signal 2" }
205static void inline do_trace(
int sig) {
212 void HandleException(
Int_t sig)
override {
219 if (!getenv(
"CPPYY_CRASH_QUIET"))
231class ApplicationStarter {
233 ApplicationStarter() {
255 const char* stl_names[] = {
"allocator",
"auto_ptr",
"bad_alloc",
"bad_cast",
256 "bad_exception",
"bad_typeid",
"basic_filebuf",
"basic_fstream",
"basic_ifstream",
257 "basic_ios",
"basic_iostream",
"basic_istream",
"basic_istringstream",
258 "basic_ofstream",
"basic_ostream",
"basic_ostringstream",
"basic_streambuf",
259 "basic_string",
"basic_stringbuf",
"basic_stringstream",
"binary_function",
260 "binary_negate",
"bitset",
"byte",
"char_traits",
"codecvt_byname",
"codecvt",
"collate",
261 "collate_byname",
"compare",
"complex",
"ctype_byname",
"ctype",
"default_delete",
262 "deque",
"divides",
"domain_error",
"equal_to",
"exception",
"forward_list",
"fpos",
263 "function",
"greater_equal",
"greater",
"gslice_array",
"gslice",
"hash",
"indirect_array",
264 "integer_sequence",
"invalid_argument",
"ios_base",
"istream_iterator",
"istreambuf_iterator",
265 "istrstream",
"iterator_traits",
"iterator",
"length_error",
"less_equal",
"less",
266 "list",
"locale",
"localedef utility",
"locale utility",
"logic_error",
"logical_and",
267 "logical_not",
"logical_or",
"map",
"mask_array",
"mem_fun",
"mem_fun_ref",
"messages",
268 "messages_byname",
"minus",
"modulus",
"money_get",
"money_put",
"moneypunct",
269 "moneypunct_byname",
"multimap",
"multiplies",
"multiset",
"negate",
"not_equal_to",
270 "num_get",
"num_put",
"numeric_limits",
"numpunct",
"numpunct_byname",
271 "ostream_iterator",
"ostreambuf_iterator",
"ostrstream",
"out_of_range",
272 "overflow_error",
"pair",
"plus",
"pointer_to_binary_function",
273 "pointer_to_unary_function",
"priority_queue",
"queue",
"range_error",
274 "raw_storage_iterator",
"reverse_iterator",
"runtime_error",
"set",
"shared_ptr",
275 "slice_array",
"slice",
"stack",
"string",
"strstream",
"strstreambuf",
276 "time_get_byname",
"time_get",
"time_put_byname",
"time_put",
"unary_function",
277 "unary_negate",
"unique_ptr",
"underflow_error",
"unordered_map",
"unordered_multimap",
278 "unordered_multiset",
"unordered_set",
"valarray",
"vector",
"weak_ptr",
"wstring",
279 "__hash_not_enabled"};
280 for (
auto&
name : stl_names)
285 if (getenv(
"CPPYY_OPT_LEVEL")) optLevel = atoi(getenv(
"CPPYY_OPT_LEVEL"));
287 std::ostringstream s;
288 s <<
"#pragma cling optimize " << optLevel;
294 "#include <iostream>\n"
295 "#include <string>\n"
296 "#include <DllImport.h>\n"
297 "#include <vector>\n"
298 "#include <utility>";
303 "namespace __cppyy_internal { template<class C1, class C2>"
304 " bool is_equal(const C1& c1, const C2& c2) { return (bool)(c1 == c2); } }");
306 "namespace __cppyy_internal { template<class C1, class C2>"
307 " bool is_not_equal(const C1& c1, const C2& c2) { return (bool)(c1 != c2); } }");
310 if (!getenv(
"CPPYY_NO_ROOT_FILTER")) {
311 gROOT->GetListOfGlobals(
true);
312 gROOT->GetListOfGlobalFunctions(
true);
313 std::set<std::string> initial;
326 gRootSOs.insert(
"libMathCore.dll ");
337 ~ApplicationStarter() {
342} _applicationStarter;
351 assert((ClassRefs_t::size_type)scope <
g_classrefs.size());
357 CallWrapper* wrap = ((CallWrapper*)method);
358 if (!wrap->fTF || wrap->fTF->GetDeclId() != wrap->fDecl) {
359 MethodInfo_t* mi =
gInterpreter->MethodInfo_Factory(wrap->fDecl);
380 char* cstr = (
char*)
malloc(cppstr.size()+1);
381 memcpy(cstr, cppstr.c_str(), cppstr.size()+1);
386bool match_name(
const std::string& tname,
const std::string fname)
389 if (fname.rfind(tname, 0) == 0) {
390 if ((tname.size() == fname.size()) ||
391 (tname.size() < fname.size() && fname[tname.size()] ==
'<'))
400 std::string::size_type pos =
name.find(
'<');
401 if (pos != std::string::npos)
427 std::string memoized = find_memoized_resolved_name(cppitem_name);
428 if (!memoized.empty())
return memoized;
431 std::string tclean = cppitem_name.compare(0, 2,
"::") == 0 ?
432 cppitem_name.substr(2, std::string::npos) : cppitem_name;
436 if (tclean.empty() )
return cppitem_name;
439 if (tclean[tclean.size()-1] ==
']')
440 tclean = tclean.substr(0, tclean.rfind(
'[')) +
"[]";
442 if (tclean.rfind(
"byte", 0) == 0 || tclean.rfind(
"std::byte", 0) == 0)
446 auto pos = tclean.rfind(
"__restrict");
447 if (pos != std::string::npos)
448 tclean = tclean.substr(0, pos);
450 if (tclean.compare(0, 9,
"std::byte") == 0)
462 pos = cppitem_name.size() > 20 ? \
463 cppitem_name.rfind(
"__type_pack_element", 5) : std::string::npos;
464 if (pos != std::string::npos) {
468 const char* str = cppitem_name.c_str();
469 char* endptr =
nullptr;
470 unsigned long index = strtoul(str+20+pos, &endptr, 0);
472 std::string tmplvars{endptr};
473 auto start = tmplvars.find(
',') + 1;
474 auto end = tmplvars.find(
',', start);
477 end = tmplvars.find(
',', start);
478 if (end == std::string::npos) end = tmplvars.rfind(
'>');
482 std::string resolved = tmplvars.substr(start, end-start);
483 auto cpd = tmplvars.rfind(
'>');
484 if (cpd != std::string::npos && cpd+1 != tmplvars.size())
485 return resolved + tmplvars.substr(cpd+1, std::string::npos);
493 while ((pos = tclean.find(
"::::", pos)) != std::string::npos) {
494 tclean.replace(pos, 4,
"::");
498 if (tclean.compare(0, 6,
"const ") != 0)
515 if (et_short.find(
"(unnamed") == std::string::npos) {
516 std::ostringstream decl;
518 for (
auto& itype : {
"unsigned int"}) {
519 decl <<
"std::is_same<"
521 <<
", std::underlying_type<"
523 <<
">::type>::value;";
527 std::string resugared;
528 if (et_short.size() != enum_type.size()) {
529 auto pos = enum_type.find(et_short);
530 if (pos != std::string::npos) {
531 resugared = enum_type.substr(0, pos) + itype;
532 if (pos+et_short.size() < enum_type.size())
533 resugared += enum_type.substr(pos+et_short.size(), std::string::npos);
536 if (resugared.empty()) resugared = itype;
544 int ipos = (
int)enum_type.size()-1;
545 for (; 0 <= ipos; --ipos) {
546 char c = enum_type[ipos];
547 if (isspace(
c))
continue;
548 if (isalnum(
c) ||
c ==
'_' ||
c ==
'>' ||
c ==
')')
break;
550 bool isConst = enum_type.find(
"const ", 6) != std::string::npos;
551 std::string restype = isConst ?
"const " :
"";
552 restype +=
"internal_enum_type_t"+enum_type.substr((std::string::size_type)ipos+1, std::string::npos);
571 bool bHasAlias1 = sname != scope_name;
573 result = find_memoized_scope(scope_name);
582 if (b_scope_name_missclassified) {
583 result = find_memoized_scope(
"std::"+scope_name);
587 if (b_sname_missclassified) {
588 if (!
result)
result = find_memoized_scope(
"std::"+sname);
602 bool bHasAlias2 = cr->
GetName() != scope_name;
617 if (b_scope_name_missclassified)
619 if (b_sname_missclassified)
629 return (
bool)
gInterpreter->CheckClassTemplate(template_name.c_str());
635 virtual ~AutoCastRTTI() {}
642 if (!cr.
GetClass() || !obj)
return klass;
649 volatile const char* raw =
nullptr;
652 AutoCastRTTI* pcst = (AutoCastRTTI*)obj;
653 raw =
typeid(*pcst).raw_name();
656 void* vfptr = *(
void**)((intptr_t)obj);
657 void* meta = (
void*)((intptr_t)*((
void**)((intptr_t)vfptr-
sizeof(
void*))));
658 if (*(intptr_t*)meta == 2) {
660 void* ptdescr = (
void*)((intptr_t)meta + 4*
sizeof(
unsigned long)+
sizeof(
void*));
661 if (ptdescr && *(
void**)ptdescr) {
662 auto rtti = *(std::type_info**)ptdescr;
663 raw = rtti->raw_name();
664 if (raw && raw[0] !=
'\0')
676 }
catch (std::bad_typeid) {
704 if (dt)
return dt->
Size();
718 if (strstr(tclean.c_str(),
"std::complex"))
735 ClassInfo_t* ci =
gInterpreter->ClassInfo_Factory(type_name.c_str());
791 CallWrapper* wrap = (CallWrapper*)method;
794 MethodInfo_t* meth =
gInterpreter->MethodInfo_Factory(wrap->fDecl);
798 if (!(callf &&
gInterpreter->CallFunc_IsValid(callf))) {
804 std::cerr <<
"TODO: report unresolved function error to Python\n";
814 wrap->fFaceptr =
gInterpreter->CallFunc_IFacePtr(callf);
818 return wrap->fFaceptr;
824 bool runRelease =
false;
825 for (
size_t i = 0; i < nargs; ++i) {
826 switch (args[i].fTypeCode) {
833 vargs[i] = args[i].
fRef;
836 vargs[i] = (
void*)&args[i].fValue.fVoidp;
845 for (
size_t i = 0; i < nargs; ++i) {
846 if (args[i].fTypeCode ==
'X')
847 free(args[i].fValue.fVoidp);
857 CallWrapper* wrap = (CallWrapper*)method;
863 bool runRelease =
false;
866 if (nargs) runRelease =
copy_args(args, nargs, smallbuf);
869 std::vector<void*> buf(nargs);
870 runRelease =
copy_args(args, nargs, buf.data());
878 bool runRelease =
false;
881 if (nargs) runRelease =
copy_args(args, nargs, (
void**)smallbuf);
882 faceptr.
fCtor((
void**)smallbuf,
result, (
unsigned long)nargs);
884 std::vector<void*> buf(nargs);
885 runRelease =
copy_args(args, nargs, buf.data());
886 faceptr.
fCtor(buf.data(),
result, (
unsigned long)nargs);
893 std::cerr <<
" DESTRUCTOR NOT IMPLEMENTED YET! " << std::endl;
905 if (
WrapperCall(method, nargs, args, (
void*)self, &t))
910#define CPPYY_IMP_CALL(typecode, rtype) \
911rtype Cppyy::Call##typecode(TCppMethod_t method, TCppObject_t self, size_t nargs, void* args)\
913 return CallT<rtype>(method, self, nargs, args); \
918 if (!
WrapperCall(method, nargs, args, (
void*)self,
nullptr))
943 char* cstr =
nullptr;
945 std::string* cppresult = (std::string*)
malloc(
sizeof(std::string));
946 if (
WrapperCall(method, nargs, args, self, (
void*)cppresult)) {
948 *
length = cppresult->size();
949 cppresult->std::string::~basic_string();
952 free((
void*)cppresult);
960 if (
WrapperCall(method, nargs, args,
nullptr, &obj))
978 ::operator
delete(obj);
997 if (strstr(
f->GetName(),
"<")) {
999 std::ostringstream sig;
1000 sig <<
"template " << fn <<
";";
1003 std::ostringstream sig;
1005 std::string sfn = fn;
1006 std::string::size_type pos = sfn.find(
'(');
1007 if (pos != std::string::npos) sfn = sfn.substr(0, pos);
1010 sig <<
'(' <<
f->GetReturnTypeName() <<
" (";
1013 pos = sfn.rfind(
':');
1014 if (pos != std::string::npos) {
1015 std::string scope_name = sfn.substr(0, pos-1);
1018 sig << scope_name <<
"::";
1080 if (type_name.empty())
return false;
1082 if (tn_short.empty())
return false;
1083 return gInterpreter->ClassInfo_IsEnum(tn_short.c_str());
1110 for (std::string::size_type pos = 0; pos <
name.size(); ++pos) {
1111 std::string::value_type
c =
name[pos];
1120 else if (tpl_open == 0 && \
1121 c ==
':' && pos+1 <
name.size() &&
name[pos+1] ==
':') {
1123 return name.substr(0, pos-1);
1135 std::string::size_type first_scope =
name.find(
':');
1136 if (first_scope == std::string::npos)
1137 return name.substr(0,
name.find(
'<'));
1138 std::string::size_type first_templ =
name.find(
'<');
1139 if (first_templ == std::string::npos)
1140 return name.substr(0, first_scope);
1141 return name.substr(0, std::min(first_templ, first_scope));
1144#define FILL_COLL(type, filter) { \
1146 type* obj = nullptr; \
1147 while ((obj = (type*)itr.Next())) { \
1148 const char* nm = obj->GetName(); \
1149 if (nm && nm[0] != '_' && !(obj->Property() & (filter))) { \
1150 if (gInitialNames.find(nm) == gInitialNames.end()) \
1151 cppnames.insert(nm); \
1156 std::set<std::string>& cppnames,
const char*
name,
bool nofilter =
false)
1158 if (!
name ||
name[0] ==
'_' || strstr(
name,
".h") != 0 || strncmp(
name,
"operator", 8) == 0)
1166 if (strncmp(
name,
"std::", 5) == 0) {
1169 if (strncmp(
name,
"__1::", 5) == 0)
name += 5;
1175 if (strncmp(
name, ns_scope.c_str(), ns_scope.size()) == 0)
1197 while ((ev = (
TEnvRec*)itr.Next())) {
1214 coll =
gROOT->GetListOfTypes();
1231 while ((obj = (
TFunction*)itr.Next())) {
1232 const char* nm = obj->
GetName();
1234 if (nm && nm[0] !=
'_' && strstr(nm,
"<") == 0 && strncmp(nm,
"operator", 8) != 0) {
1236 cppnames.insert(nm);
1248 coll =
gROOT->GetListOfGlobals();
1274 std::vector<Cppyy::TCppScope_t> res;
1290 res.reserve(
v.size());
1291 for (
const auto& uid :
v) {
1293 if (uscope) res.push_back(uscope);
1306 std::string clName = cr->
GetName();
1308 std::string::size_type pos = clName.substr(0, clName.find(
'<')).rfind(
"::");
1309 if (pos != std::string::npos)
1310 return clName.substr(pos+2, std::string::npos);
1322 return std::string(
"std::")+cr->
GetName();
1352 else if (nbases == 0)
1403 auto ndirectbases = directbases->
GetSize();
1404 if (ndirectbases == 0) {
1409 std::vector<Cppyy::TCppIndex_t> nbases_branches;
1410 nbases_branches.reserve(ndirectbases);
1469 const std::string&
tn =
cr->GetName();
1480 if (!raw && !
deref)
return true;
1483 if (
cr.GetClass()) {
1484 TFunction* func =
cr->GetMethod(
"operator->",
"");
1487 func =
cr->GetMethod(
"operator->",
"");
1520 return (ptrdiff_t)0;
1526 return (ptrdiff_t)0;
1535 std::ostringstream
msg;
1536 msg <<
"failed offset calculation between " << cb->
GetName() <<
" and " << cd->
GetName();
1539 std::cerr <<
"Warning: " <<
msg.str() <<
'\n';
1562 return gROOT->GetListOfGlobalFunctions(
true)->GetSize();
1565 if (
cr.GetClass() &&
cr->GetListOfMethods(
true)) {
1569 if (
clName.find(
'<') != std::string::npos) {
1572 std::ostringstream
stmt;
1589 std::vector<TCppIndex_t> indices;
1591 if (
cr.GetClass()) {
1595 TIter next(
cr->GetListOfMethods());
1624 if (
cr.GetClass()) {
1637 const std::string&
name = ((CallWrapper*)
method)->fName;
1639 if (
name.compare(0, 8,
"operator") != 0)
1641 return name.substr(0,
name.find(
'<'));
1650 std::string
name = ((CallWrapper*)
method)->fName;
1669 return "constructor";
1670 std::string
restype =
f->GetReturnTypeName();
1674 if (
restype.find(
"int8_t") != std::string::npos)
1676 restype =
f->GetReturnTypeNormalizedName();
1678 std::ostringstream s;
1680 s <<
"__cling_internal::FT<decltype("
1683 if (i != 0) s <<
", ";
1779 std::ostringstream sig;
1781 int nArgs =
f->GetNargs();
1805 std::ostringstream sig;
1806 sig <<
f->GetReturnTypeName() <<
" "
1807 <<
scName <<
"::" <<
f->GetName();
1833 if (
cr.GetClass()) {
1850 return cr->GetListOfFunctionTemplates(
false)->At((
int)
imeth)->GetName();
1854 assert(!
"should not be called unless GetNumTemplatedMethods() succeeded");
1864 if (
cr.GetClass()) {
1875 return (
bool)
gROOT->GetFunctionTemplate(
name.c_str());
1879 return (
bool)
cr->GetFunctionTemplate(
name.c_str());
1889 if (
cr.GetClass()) {
1891 if (
f &&
strstr(
f->GetName(),
"<"))
return true;
1896 if (((CallWrapper*)idx)->fName.find(
'<') != std::string::npos)
return true;
1919 func =
gROOT->GetGlobalFunctionWithPrototype(
name.c_str(),
proto.c_str());
1924 if (
cr.GetClass()) {
1925 func =
cr->GetMethodWithPrototype(
name.c_str(),
proto.c_str());
1927 cl =
cr->GetClassInfo();
1965 if (
name.back() ==
'>') {
1966 auto pos =
name.find(
'<');
1967 if (pos != std::string::npos) {
1972 if (
name.size() <
alt.size() &&
alt.find(
'<') == pos) {
1993 if (
n2 ==
"std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >")
1995 return "std::string";
1996 }
else if (
n1 ==
"float")
2015 func =
gROOT->GetGlobalFunctionWithPrototype(
opname.c_str(),
proto.c_str());
2019 if (
cr.GetClass()) {
2021 if (func)
return (
TCppIndex_t)
cr->GetListOfMethods()->IndexOf(func);
2023 func =
cr->GetMethodWithPrototype(
opname.c_str(),
proto.c_str());
2024 if (func)
return (
TCppIndex_t)
cr->GetListOfMethods()->IndexOf(func);
2085 return gROOT->GetListOfGlobals(
true)->GetSize();
2088 if (
cr.GetClass() &&
cr->GetListOfDataMembers())
2089 return cr->GetListOfDataMembers()->GetSize();
2096 if (!
cr.GetClass() || !
cr->GetListOfDataMembers())
2099 int numDMs =
cr->GetListOfDataMembers()->GetSize();
2108 if (
cr.GetClass()) {
2114 return gbl->GetName();
2123 if ((
int)
gbl->GetArrayDim()) {
2124 std::ostringstream s;
2125 for (
int i = 0; i < (
int)
gbl->GetArrayDim(); ++i)
2126 s <<
'[' <<
gbl->GetMaxIndex(i) <<
']';
2133 if (
cr.GetClass()) {
2139 std::string
fullType =
m->GetFullTypeName();
2141 const std::string&
trueName =
m->GetTrueTypeName();
2142 if (
fullType.find(
"::") == std::string::npos &&
trueName.find(
"::") != std::string::npos)
2146 if ((
int)
m->GetArrayDim()) {
2147 std::ostringstream s;
2148 for (
int i = 0; i < (
int)
m->GetArrayDim(); ++i)
2149 s <<
'[' <<
m->GetMaxIndex(i) <<
']';
2162 if (!
gbl->GetAddress() ||
gbl->GetAddress() == (
void*)-1) {
2164 intptr_t
addr = (intptr_t)
gInterpreter->ProcessLine((std::string(
"&")+
gbl->GetName()+
";").c_str());
2165 if (
gbl->GetAddress() &&
gbl->GetAddress() != (
void*)-1)
2166 return (intptr_t)
gbl->GetAddress();
2169 return (intptr_t)
gbl->GetAddress();
2173 if (
cr.GetClass()) {
2181 if ((intptr_t)
m->GetOffsetCint() == (intptr_t)-1)
2182 return (intptr_t)
gInterpreter->ProcessLine((std::string(
"&")+
cr->GetName()+
"::"+
m->
GetName()+
";").c_str());
2184 return (intptr_t)
m->GetOffsetCint();
2188 return (intptr_t)-1;
2207 if (
gb &&
strcmp(
gb->GetFullTypeName(),
"(lambda)") == 0) {
2212 std::ostringstream s;
2213 s <<
"auto __cppyy_internal_wrap_" <<
name <<
" = "
2214 "new __cling_internal::FT<decltype(" <<
name <<
")>::F"
2215 "{" <<
name <<
"};";
2218 (
"__cppyy_internal_wrap_"+
name).c_str());
2219 if (wrap && wrap->GetAddress())
gb = wrap;
2230 if (
cr.GetClass()) {
2234 if (dm)
return (
TCppIndex_t)
cr->GetListOfDataMembers()->IndexOf(dm);
2238 +
cr->GetListOfDataMembers()->GetSize();
2287 if (
cr.GetClass()) {
2310 if (
cr.GetClass()) {
2312 std::string
ti =
m->GetTypeName();
2315 if (
ti.rfind(
"(unnamed)") != std::string::npos)
2320 if (
ti.rfind(
cr->GetName(), 0) != std::string::npos) {
2321 std::string::size_type s =
strlen(
cr->GetName())+2;
2322 if (s <
ti.size()) {
2338 return gbl->GetMaxIndex(dimension);
2341 if (
cr.GetClass()) {
2343 return m->GetMaxIndex(dimension);
2375 return (
long long)
ecst->GetValue();
2437#define CPPYY_HANDLE_EXCEPTION \
2438 catch (std::exception& e) { \
2439 cppyy_exctype_t* etype = (cppyy_exctype_t*)((Parameter*)args+nargs); \
2440 *etype = (cppyy_exctype_t)2; \
2441 *((char**)(etype+1)) = cppstring_to_cstring(e.what()); \
2444 cppyy_exctype_t* etype = (cppyy_exctype_t*)((Parameter*)args+nargs); \
2445 *etype = (cppyy_exctype_t)1; \
2446 *((char**)(etype+1)) = \
2447 cppstring_to_cstring("unhandled, unknown C++ exception"); \
2460 return (
unsigned char)-1;
2495 return (
long long)-1;
2516 return (
long double)-1;
2527 return (
void*)
nullptr;
2535 return (
char*)
nullptr;
2865#if defined(_MSC_VER)
2896 *
lsz = ((std::string*)ptr)->size();
2897 return ((std::string*)ptr)->
data();
2905 return (
double)*(
long double*)
p;
2909 *(
long double*)
p =
d;
2913 return (
int)(*(std::vector<bool>*)ptr)[idx];
2917 (*(std::vector<bool>*)ptr)[idx] = (
bool)
value;
static Roo_reg_AGKInteg1D instance
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Int_t gErrorIgnoreLevel
Error handling routines.
R__EXTERN TExceptionHandler * gExceptionHandler
R__EXTERN ExceptionContext_t * gException
R__EXTERN void Throw(int code)
If an exception context has been set (using the TRY and RETRY macros) jump back to where it was set.
winID h TVirtualViewer3D TVirtualGLPainter p
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h offset
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t r
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t result
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h length
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h req_type
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void funcs
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
R__EXTERN TSystem * gSystem
static struct Signalmap_t gSignalMap[kMAXSIGNALS]
cppyy_scope_t cppyy_type_t
unsigned long cppyy_exctype_t
const_iterator end() const
Each class (see TClass) has a linked list of its base class(es).
Long_t Property() const override
Get property description word. For meaning of bits see EProperty.
TClassRef is used to implement a permanent reference to a TClass object.
TClass * GetClass() const
TClass instances represent classes, structs and namespaces in the ROOT type system.
TList * GetListOfUsingDataMembers(Bool_t load=kTRUE)
Return list containing the TDataMembers of using declarations of a class.
void * New(ENewType defConstructor=kClassNew, Bool_t quiet=kFALSE) const
Return a pointer to a newly allocated object of this class.
TMethod * GetMethod(const char *method, const char *params, Bool_t objectIsConst=kFALSE)
Find the best method (if there is one) matching the parameters.
TMethod * GetMethodWithPrototype(const char *method, const char *proto, Bool_t objectIsConst=kFALSE, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch)
Find the method with a given prototype.
void Destructor(void *obj, Bool_t dtorOnly=kFALSE)
Explicitly call destructor for object.
TList * GetListOfFunctionTemplates(Bool_t load=kTRUE)
Return TListOfFunctionTemplates for a class.
TList * GetListOfEnums(Bool_t load=kTRUE)
Return a list containing the TEnums of a class.
TList * GetListOfMethods(Bool_t load=kTRUE)
Return list containing the TMethods of a class.
TList * GetListOfDataMembers(Bool_t load=kTRUE)
Return list containing the TDataMembers of a class.
TList * GetListOfBases()
Return list containing the TBaseClass(es) of a class.
Bool_t IsLoaded() const
Return true if the shared library of this class is currently in the a process's memory.
ClassInfo_t * GetClassInfo() const
Long_t ClassProperty() const
Return the C++ property of this class, eg.
Long_t Property() const override
Returns the properties of the TClass as a bit field stored as a Long_t value.
Bool_t HasDefaultConstructor(Bool_t testio=kFALSE) const
Return true if we have access to a constructor usable for I/O.
TMethod * GetMethodAllAny(const char *method)
Return pointer to method without looking at parameters.
ROOT::DelFunc_t GetDelete() const
Return the wrapper around delete ThisObject.
TClass * GetActualClass(const void *object) const
Return a pointer to the real class of the object.
static TClass * GetClass(const char *name, Bool_t load=kTRUE, Bool_t silent=kFALSE)
Static method returning pointer to TClass of the specified class name.
Collection abstract base class.
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
All ROOT classes may have RTTI (run time type identification) support added.
Basic data type descriptor (datatype information is obtained from CINT).
Long_t Property() const override
Get property description word. For meaning of bits see EProperty.
Int_t Size() const
Get size of basic typedef'ed type.
The TEnumConstant class implements the constants of the enum type.
The TEnum class implements the enum type.
const char * GetValue() const
const char * GetName() const override
Returns name of object.
Dictionary for function template This class describes one single function template.
Global functions class (global functions are obtained from CINT).
Long_t Property() const override
Get property description word. For meaning of bits see EProperty.
Long_t ExtraProperty() const
Get property description word. For meaning of bits see EProperty.
std::string GetReturnTypeNormalizedName() const
Get the normalized name of the return type.
Global variables class (global variables are obtained from CINT).
THashList implements a hybrid collection class consisting of a hash table and a list to store TObject...
A collection of TDataMember objects designed for fast access given a DeclId_t and for keep track of T...
A collection of TEnum objects designed for fast access given a DeclId_t and for keep track of TEnum t...
TObject * At(Int_t idx) const override
Returns the object at position idx. Returns 0 if idx is out of range.
Each ROOT method (see TMethod) has a linked list of its arguments.
const char * GetFullTypeName() const
Get full type description of method argument, e.g.: "class TDirectory*".
TypeInfo_t * GetTypeInfo() const
Get the TypeInfo of the method argument.
const char * GetDefault() const
Get default value of method argument.
std::string GetTypeNormalizedName() const
Get the normalized name of the return type.
const char * GetName() const override
Returns name of object.
virtual const char * GetName() const
Returns name of object.
virtual TObject * FindObject(const char *name) const
Must be redefined in derived classes.
static Bool_t Initialized()
Return kTRUE if the TROOT object has been initialized.
virtual int Load(const char *module, const char *entry="", Bool_t system=kFALSE)
Load a shared library.
virtual void Exit(int code, Bool_t mode=kTRUE)
Exit the application.
virtual void StackTrace()
Print a stack trace.
char * cppyy_method_mangled_name(cppyy_method_t method)
int cppyy_is_staticdata(cppyy_type_t type, cppyy_index_t datamember_index)
int cppyy_vectorbool_getitem(cppyy_object_t ptr, int idx)
int cppyy_has_virtual_destructor(cppyy_type_t type)
int cppyy_is_publicmethod(cppyy_method_t method)
void * cppyy_call_r(cppyy_method_t method, cppyy_object_t self, int nargs, void *args)
cppyy_object_t cppyy_constructor(cppyy_method_t method, cppyy_type_t klass, int nargs, void *args)
void * cppyy_load_dictionary(const char *lib_name)
static void cond_add(Cppyy::TCppScope_t scope, const std::string &ns_scope, std::set< std::string > &cppnames, const char *name, bool nofilter=false)
size_t cppyy_function_arg_typeoffset()
int cppyy_exists_method_template(cppyy_scope_t scope, const char *name)
int cppyy_get_num_templated_methods(cppyy_scope_t scope)
char * cppyy_call_s(cppyy_method_t method, cppyy_object_t self, int nargs, void *args, size_t *lsz)
char * cppyy_resolve_enum(const char *enum_type)
cppyy_object_t cppyy_charp2stdstring(const char *str, size_t sz)
static Name2ClassRefIndex_t g_name2classrefidx
int cppyy_is_constructor(cppyy_method_t method)
int cppyy_is_enum_data(cppyy_scope_t scope, cppyy_index_t idata)
#define FILL_COLL(type, filter)
char * cppyy_scoped_final_name(cppyy_type_t type)
int cppyy_num_bases(cppyy_type_t type)
static std::string outer_with_template(const std::string &name)
cppyy_method_t cppyy_get_method_template(cppyy_scope_t scope, const char *name, const char *proto)
static std::string outer_no_template(const std::string &name)
int cppyy_is_smartptr(cppyy_type_t type)
static std::string type_remap(const std::string &n1, const std::string &n2)
static std::map< Cppyy::TCppType_t, bool > sHasOperatorDelete
long long cppyy_strtoll(const char *str)
static std::set< std::string > gRootSOs
int cppyy_is_subtype(cppyy_type_t derived, cppyy_type_t base)
static TClassRef & type_from_handle(Cppyy::TCppScope_t scope)
double cppyy_call_nld(cppyy_method_t method, cppyy_object_t self, int nargs, void *args)
void cppyy_free(void *ptr)
int cppyy_smartptr_info(const char *name, cppyy_type_t *raw, cppyy_method_t *deref)
unsigned long long cppyy_strtoull(const char *str)
char * cppyy_method_arg_type(cppyy_method_t method, int arg_index)
cppyy_object_t cppyy_stdstring2stdstring(cppyy_object_t ptr)
char * cppyy_base_name(cppyy_type_t type, int base_index)
cppyy_scope_t * cppyy_get_using_namespaces(cppyy_scope_t scope)
static bool copy_args(Parameter *args, size_t nargs, void **vargs)
int cppyy_num_bases_longest_branch(cppyy_type_t type)
static TInterpreter::CallFuncIFacePtr_t GetCallFunc(Cppyy::TCppMethod_t method)
int cppyy_is_publicdata(cppyy_type_t type, cppyy_index_t datamember_index)
CPyCppyy::Parameter Parameter
intptr_t cppyy_datamember_offset(cppyy_scope_t scope, int datamember_index)
char * cppyy_datamember_type(cppyy_scope_t scope, int datamember_index)
static bool is_missclassified_stl(const std::string &name)
std::map< std::string, ClassRefs_t::size_type > Name2ClassRefIndex_t
void cppyy_destructor(cppyy_type_t klass, cppyy_object_t self)
static const ClassRefs_t::size_type STD_HANDLE
char cppyy_call_c(cppyy_method_t method, cppyy_object_t self, int nargs, void *args)
ptrdiff_t cppyy_base_offset(cppyy_type_t derived, cppyy_type_t base, cppyy_object_t address, int direction)
long double cppyy_call_ld(cppyy_method_t method, cppyy_object_t self, int nargs, void *args)
int cppyy_is_const_data(cppyy_scope_t scope, cppyy_index_t idata)
const char ** cppyy_get_all_cpp_names(cppyy_scope_t scope, size_t *count)
void cppyy_call_v(cppyy_method_t method, cppyy_object_t self, int nargs, void *args)
static std::set< std::string > gSmartPtrTypes
double cppyy_longdouble2double(void *p)
int cppyy_method_req_args(cppyy_method_t method)
int cppyy_is_staticmethod(cppyy_method_t method)
static GlobalVars_t g_globalvars
cppyy_index_t * cppyy_method_indices_from_name(cppyy_scope_t scope, const char *name)
static char * cppstring_to_cstring(const std::string &cppstr)
char * cppyy_method_signature(cppyy_method_t method, int show_formalargs)
int cppyy_is_abstract(cppyy_type_t type)
static void release_args(Parameter *args, size_t nargs)
int cppyy_call_i(cppyy_method_t method, cppyy_object_t self, int nargs, void *args)
static std::set< std::string > g_builtins
unsigned char cppyy_call_b(cppyy_method_t method, cppyy_object_t self, int nargs, void *args)
int cppyy_is_template(const char *template_name)
char * cppyy_method_result_type(cppyy_method_t method)
cppyy_type_t cppyy_actual_class(cppyy_type_t klass, cppyy_object_t obj)
int cppyy_is_templated_constructor(cppyy_scope_t scope, cppyy_index_t imeth)
char * cppyy_method_name(cppyy_method_t method)
int cppyy_is_protectedmethod(cppyy_method_t method)
char * cppyy_final_name(cppyy_type_t type)
char * cppyy_get_templated_method_name(cppyy_scope_t scope, cppyy_index_t imeth)
char * cppyy_method_full_name(cppyy_method_t method)
long cppyy_call_l(cppyy_method_t method, cppyy_object_t self, int nargs, void *args)
void cppyy_double2longdouble(double d, void *p)
void cppyy_deallocate_function_args(void *args)
int cppyy_method_is_template(cppyy_scope_t scope, cppyy_index_t idx)
static std::vector< CallWrapper * > gWrapperHolder
static bool gEnableFastPath
void cppyy_destruct(cppyy_type_t type, cppyy_object_t self)
int cppyy_is_enum(const char *type_name)
size_t cppyy_size_of_type(const char *type_name)
int cppyy_is_destructor(cppyy_method_t method)
cppyy_object_t cppyy_allocate(cppyy_type_t type)
char * cppyy_datamember_name(cppyy_scope_t scope, int datamember_index)
cppyy_object_t cppyy_construct(cppyy_type_t type)
static ClassRefs_t g_classrefs(1)
static bool WrapperCall(Cppyy::TCppMethod_t method, size_t nargs, void *args_, void *self, void *result)
static std::map< std::string, std::string > resolved_enum_types
int cppyy_is_namespace(cppyy_scope_t scope)
cppyy_object_t cppyy_call_o(cppyy_method_t method, cppyy_object_t self, int nargs, void *args, cppyy_type_t result_type)
long long cppyy_call_ll(cppyy_method_t method, cppyy_object_t self, int nargs, void *args)
cppyy_scope_t cppyy_get_scope(const char *scope_name)
void cppyy_vectorbool_setitem(cppyy_object_t ptr, int idx, int value)
static size_t CALL_NARGS(size_t nargs)
static CallWrapper * new_CallWrapper(TFunction *f)
void cppyy_add_smartptr_type(const char *type_name)
void * cppyy_allocate_function_args(int nargs)
float cppyy_call_f(cppyy_method_t method, cppyy_object_t self, int nargs, void *args)
short cppyy_call_h(cppyy_method_t method, cppyy_object_t self, int nargs, void *args)
int cppyy_is_protecteddata(cppyy_type_t type, cppyy_index_t datamember_index)
static std::set< std::string > gSTLNames
static const ClassRefs_t::size_type GLOBAL_HANDLE
int cppyy_get_dimension_size(cppyy_scope_t scope, cppyy_index_t idata, int dimension)
char * cppyy_method_signature_max(cppyy_method_t method, int show_formalargs, int maxargs)
double cppyy_call_d(cppyy_method_t method, cppyy_object_t self, int nargs, void *args)
int cppyy_num_methods(cppyy_scope_t scope)
char * cppyy_method_prototype(cppyy_scope_t scope, cppyy_method_t method, int show_formalargs)
std::vector< TGlobal * > GlobalVars_t
char * cppyy_resolve_name(const char *cppitem_name)
cppyy_method_t cppyy_get_method(cppyy_scope_t scope, cppyy_index_t idx)
std::vector< TClassRef > ClassRefs_t
size_t cppyy_function_arg_sizeof()
int cppyy_is_const_method(cppyy_method_t method)
static std::map< TDictionary::DeclId_t, CallWrapper * > gMethodTemplates
int cppyy_num_datamembers(cppyy_scope_t scope)
#define CPPYY_HANDLE_EXCEPTION
size_t cppyy_size_of_klass(cppyy_type_t klass)
static bool match_name(const std::string &tname, const std::string fname)
int cppyy_datamember_index(cppyy_scope_t scope, const char *name)
cppyy_index_t cppyy_get_global_operator(cppyy_scope_t scope, cppyy_scope_t lc, cppyy_scope_t rc, const char *op)
static TFunction * m2f(Cppyy::TCppMethod_t method)
void cppyy_deallocate(cppyy_type_t type, cppyy_object_t self)
const char * cppyy_stdstring2charp(cppyy_object_t ptr, size_t *lsz)
int cppyy_compile(const char *code)
int cppyy_is_aggregate(cppyy_type_t type)
static TDataMember * GetDataMemberByIndex(TClassRef cr, int idata)
#define CPPYY_IMP_CALL(typecode, rtype)
int cppyy_method_num_args(cppyy_method_t method)
static std::set< std::string > gInitialNames
char * cppyy_method_arg_default(cppyy_method_t method, int arg_index)
static T CallT(Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, size_t nargs, void *args)
cppyy_funcaddr_t cppyy_function_address(cppyy_method_t method)
int cppyy_has_complex_hierarchy(cppyy_type_t type)
Cppyy::TCppIndex_t GetLongestInheritancePath(TClass *klass)
Retrieve number of base classes in the longest branch of the inheritance tree of the input class.
char * cppyy_method_arg_name(cppyy_method_t method, int arg_index)
RPY_EXPORTED TCppIndex_t GetNumTemplatedMethods(TCppScope_t scope, bool accept_namespace=false)
RPY_EXPORTED std::string GetMethodMangledName(TCppMethod_t)
RPY_EXPORTED TCppObject_t CallO(TCppMethod_t method, TCppObject_t self, size_t nargs, void *args, TCppType_t result_type)
RPY_EXPORTED int CallI(TCppMethod_t method, TCppObject_t self, size_t nargs, void *args)
RPY_EXPORTED TCppIndex_t CompareMethodArgType(TCppMethod_t, TCppIndex_t iarg, const std::string &req_type)
RPY_EXPORTED ptrdiff_t GetBaseOffset(TCppType_t derived, TCppType_t base, TCppObject_t address, int direction, bool rerror=false)
RPY_EXPORTED void DeallocateFunctionArgs(void *args)
RPY_EXPORTED bool IsEnumData(TCppScope_t scope, TCppIndex_t idata)
RPY_EXPORTED unsigned char CallB(TCppMethod_t method, TCppObject_t self, size_t nargs, void *args)
RPY_EXPORTED Long64_t CallLL(TCppMethod_t method, TCppObject_t self, size_t nargs, void *args)
RPY_EXPORTED bool IsAbstract(TCppType_t type)
RPY_EXPORTED size_t SizeOf(TCppType_t klass)
RPY_EXPORTED TCppObject_t CallConstructor(TCppMethod_t method, TCppType_t type, size_t nargs, void *args)
RPY_EXPORTED void * AllocateFunctionArgs(size_t nargs)
RPY_EXPORTED bool IsDefaultConstructable(TCppType_t type)
RPY_EXPORTED bool IsTemplate(const std::string &template_name)
RPY_EXPORTED TCppIndex_t GetMethodReqArgs(TCppMethod_t)
RPY_EXPORTED bool IsEnum(const std::string &type_name)
RPY_EXPORTED std::vector< TCppIndex_t > GetMethodIndicesFromName(TCppScope_t scope, const std::string &name)
RPY_EXPORTED bool ExistsMethodTemplate(TCppScope_t scope, const std::string &name)
RPY_EXPORTED TCppIndex_t GetNumDatamembers(TCppScope_t scope, bool accept_namespace=false)
RPY_EXPORTED std::string ToString(TCppType_t klass, TCppObject_t obj)
RPY_EXPORTED std::string GetMethodName(TCppMethod_t)
RPY_EXPORTED bool IsConstData(TCppScope_t scope, TCppIndex_t idata)
RPY_EXPORTED void AddSmartPtrType(const std::string &)
RPY_EXPORTED bool Compile(const std::string &code, bool silent=false)
RPY_EXPORTED void CallDestructor(TCppType_t type, TCppObject_t self)
RPY_EXPORTED TCppScope_t gGlobalScope
RPY_EXPORTED bool IsProtectedData(TCppScope_t scope, TCppIndex_t idata)
RPY_EXPORTED std::string GetMethodSignature(TCppMethod_t, bool show_formalargs, TCppIndex_t maxargs=(TCppIndex_t) -1)
RPY_EXPORTED int GetDimensionSize(TCppScope_t scope, TCppIndex_t idata, int dimension)
RPY_EXPORTED bool IsSubtype(TCppType_t derived, TCppType_t base)
RPY_EXPORTED TCppMethod_t GetMethodTemplate(TCppScope_t scope, const std::string &name, const std::string &proto)
RPY_EXPORTED bool IsConstructor(TCppMethod_t method)
RPY_EXPORTED TCppIndex_t GetNumMethods(TCppScope_t scope, bool accept_namespace=false)
RPY_EXPORTED TCppObject_t Construct(TCppType_t type, void *arena=nullptr)
RPY_EXPORTED bool GetSmartPtrInfo(const std::string &, TCppType_t *raw, TCppMethod_t *deref)
RPY_EXPORTED char CallC(TCppMethod_t method, TCppObject_t self, size_t nargs, void *args)
RPY_EXPORTED std::string GetMethodArgName(TCppMethod_t, TCppIndex_t iarg)
RPY_EXPORTED double CallD(TCppMethod_t method, TCppObject_t self, size_t nargs, void *args)
RPY_EXPORTED size_t GetFunctionArgTypeoffset()
RPY_EXPORTED TCppObject_t Allocate(TCppType_t type)
RPY_EXPORTED void Destruct(TCppType_t type, TCppObject_t instance)
RPY_EXPORTED std::string ResolveName(const std::string &cppitem_name)
RPY_EXPORTED void AddTypeReducer(const std::string &reducable, const std::string &reduced)
RPY_EXPORTED std::string ResolveEnum(const std::string &enum_type)
RPY_EXPORTED long long GetEnumDataValue(TCppEnum_t, TCppIndex_t idata)
RPY_EXPORTED bool IsAggregate(TCppType_t type)
RPY_EXPORTED TCppIndex_t GetMethodNumArgs(TCppMethod_t)
RPY_EXPORTED TCppType_t GetActualClass(TCppType_t klass, TCppObject_t obj)
RPY_EXPORTED std::string GetBaseName(TCppType_t type, TCppIndex_t ibase)
RPY_EXPORTED bool IsNamespace(TCppScope_t scope)
RPY_EXPORTED float CallF(TCppMethod_t method, TCppObject_t self, size_t nargs, void *args)
RPY_EXPORTED std::string GetScopedFinalName(TCppType_t type)
RPY_EXPORTED void Deallocate(TCppType_t type, TCppObject_t instance)
RPY_EXPORTED bool IsPublicData(TCppScope_t scope, TCppIndex_t idata)
RPY_EXPORTED std::string GetMethodArgType(TCppMethod_t, TCppIndex_t iarg)
RPY_EXPORTED long CallL(TCppMethod_t method, TCppObject_t self, size_t nargs, void *args)
RPY_EXPORTED void * CallR(TCppMethod_t method, TCppObject_t self, size_t nargs, void *args)
RPY_EXPORTED std::string GetEnumDataName(TCppEnum_t, TCppIndex_t idata)
RPY_EXPORTED void GetAllCppNames(TCppScope_t scope, std::set< std::string > &cppnames)
RPY_EXPORTED bool IsComplete(const std::string &type_name)
RPY_EXPORTED bool IsBuiltin(const std::string &type_name)
RPY_EXPORTED bool IsStaticMethod(TCppMethod_t method)
RPY_EXPORTED TCppIndex_t GetDatamemberIndex(TCppScope_t scope, const std::string &name)
RPY_EXPORTED void CallV(TCppMethod_t method, TCppObject_t self, size_t nargs, void *args)
RPY_EXPORTED LongDouble_t CallLD(TCppMethod_t method, TCppObject_t self, size_t nargs, void *args)
RPY_EXPORTED bool IsStaticData(TCppScope_t scope, TCppIndex_t idata)
RPY_EXPORTED std::string GetDatamemberType(TCppScope_t scope, TCppIndex_t idata)
RPY_EXPORTED TCppMethod_t GetMethod(TCppScope_t scope, TCppIndex_t imeth)
RPY_EXPORTED bool IsDestructor(TCppMethod_t method)
RPY_EXPORTED bool IsSmartPtr(TCppType_t type)
RPY_EXPORTED std::string GetTemplatedMethodName(TCppScope_t scope, TCppIndex_t imeth)
RPY_EXPORTED size_t GetFunctionArgSizeof()
RPY_EXPORTED TCppScope_t GetScope(const std::string &scope_name)
RPY_EXPORTED bool HasVirtualDestructor(TCppType_t type)
RPY_EXPORTED bool IsConstMethod(TCppMethod_t)
RPY_EXPORTED bool HasComplexHierarchy(TCppType_t type)
RPY_EXPORTED std::vector< TCppScope_t > GetUsingNamespaces(TCppScope_t)
RPY_EXPORTED bool IsTemplatedConstructor(TCppScope_t scope, TCppIndex_t imeth)
RPY_EXPORTED TCppIndex_t GetGlobalOperator(TCppType_t scope, const std::string &lc, const std::string &rc, const std::string &op)
RPY_EXPORTED TCppFuncAddr_t GetFunctionAddress(TCppMethod_t method, bool check_enabled=true)
RPY_EXPORTED TCppIndex_t GetNumEnumData(TCppEnum_t)
RPY_EXPORTED TCppIndex_t GetNumBases(TCppType_t type)
RPY_EXPORTED TCppIndex_t GetNumBasesLongestBranch(TCppType_t type)
Retrieve number of base classes in the longest branch of the inheritance tree.
RPY_EXPORTED std::string GetMethodPrototype(TCppScope_t scope, TCppMethod_t, bool show_formalargs)
RPY_EXPORTED std::string GetMethodResultType(TCppMethod_t)
RPY_EXPORTED std::string GetFinalName(TCppType_t type)
RPY_EXPORTED char * CallS(TCppMethod_t method, TCppObject_t self, size_t nargs, void *args, size_t *length)
RPY_EXPORTED std::string GetMethodArgDefault(TCppMethod_t, TCppIndex_t iarg)
RPY_EXPORTED bool IsMethodTemplate(TCppScope_t scope, TCppIndex_t imeth)
RPY_EXPORTED std::string GetDatamemberName(TCppScope_t scope, TCppIndex_t idata)
RPY_EXPORTED bool IsPublicMethod(TCppMethod_t method)
RPY_EXPORTED intptr_t GetDatamemberOffset(TCppScope_t scope, TCppIndex_t idata)
RPY_EXPORTED std::string GetMethodFullName(TCppMethod_t)
RPY_EXPORTED short CallH(TCppMethod_t method, TCppObject_t self, size_t nargs, void *args)
RPY_EXPORTED bool IsProtectedMethod(TCppMethod_t method)
RPY_EXPORTED TCppEnum_t GetEnum(TCppScope_t scope, const std::string &enum_name)
void(* DelFunc_t)(void *)
std::string ResolveTypedef(const char *tname, bool resolveAll=false)
std::string CleanType(const char *typeDesc, int mode=0, const char **tail=nullptr)
Cleanup type description, redundant blanks removed and redundant tail ignored return *tail = pointer ...
std::string ShortType(const char *typeDesc, int mode)
Return the absolute type of typeDesc.
char * DemangleName(const char *mangled_name, int &errorCode)
union CPyCppyy::Parameter::Value fValue