50#define CPPYY_IMPL_GILCALL(rtype, tcode) \
51static inline rtype GILCall##tcode( \
52 Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CPyCppyy::CallContext* ctxt)\
54 if (!ReleasesGIL(ctxt)) \
55 return Cppyy::Call##tcode(method, self, ctxt->GetEncodedSize(), ctxt->GetArgs());\
57 return Cppyy::Call##tcode(method, self, ctxt->GetEncodedSize(), ctxt->GetArgs());\
60#define CPPYY_IMPL_GILCALL(rtype, tcode) \
61static inline rtype GILCall##tcode( \
62 Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CPyCppyy::CallContext* ctxt)\
64 return Cppyy::Call##tcode(method, self, ctxt->GetEncodedSize(), ctxt->GetArgs());\
144PyObject* CPyCppyy::BoolExecutor::Execute(
155PyObject* CPyCppyy::BoolConstRefExecutor::Execute(
163PyObject* CPyCppyy::CharExecutor::Execute(
172PyObject* CPyCppyy::CharConstRefExecutor::Execute(
181PyObject* CPyCppyy::UCharExecutor::Execute(
190PyObject* CPyCppyy::UCharConstRefExecutor::Execute(
199PyObject* CPyCppyy::WCharExecutor::Execute(
209PyObject* CPyCppyy::Char16Executor::Execute(
219PyObject* CPyCppyy::Char32Executor::Execute(
229PyObject* CPyCppyy::IntExecutor::Execute(
237PyObject* CPyCppyy::Int8Executor::Execute(
245PyObject* CPyCppyy::UInt8Executor::Execute(
253PyObject* CPyCppyy::ShortExecutor::Execute(
261PyObject* CPyCppyy::LongExecutor::Execute(
269PyObject* CPyCppyy::ULongExecutor::Execute(
277PyObject* CPyCppyy::LongLongExecutor::Execute(
286PyObject* CPyCppyy::ULongLongExecutor::Execute(
295PyObject* CPyCppyy::FloatExecutor::Execute(
303PyObject* CPyCppyy::DoubleExecutor::Execute(
311PyObject* CPyCppyy::LongDoubleExecutor::Execute(
328 fAssignable =
nullptr;
333#define CPPYY_IMPL_REFEXEC(name, type, stype, F1, F2) \
334PyObject* CPyCppyy::name##RefExecutor::Execute( \
335 Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) \
337 type* ref = (type*)GILCallR(method, self, ctxt); \
339 PyErr_SetString(PyExc_ReferenceError, "attempt to access a null-pointer");\
343 return F1((stype)*ref); \
345 *ref = (type)F2(fAssignable); \
346 Py_DECREF(fAssignable); \
347 fAssignable = nullptr; \
348 if (*ref == (type)-1 && PyErr_Occurred()) \
350 Py_INCREF(Py_None); \
380 return std::complex<T>(
cplx.real,
cplx.imag);
388PyObject* CPyCppyy::STLStringRefExecutor::Execute(
401 fAssignable =
nullptr;
407PyObject* CPyCppyy::VoidExecutor::Execute(
417PyObject* CPyCppyy::CStringExecutor::Execute(
431PyObject* CPyCppyy::CStringRefExecutor::Execute(
445PyObject* CPyCppyy::WCStringExecutor::Execute(
459PyObject* CPyCppyy::CString16Executor::Execute(
470 std::char_traits<char16_t>::length(
result)*
sizeof(
char16_t),
nullptr,
nullptr);
474PyObject* CPyCppyy::CString32Executor::Execute(
485 std::char_traits<char32_t>::length(
result)*
sizeof(
char32_t),
nullptr,
nullptr);
490PyObject* CPyCppyy::VoidArrayExecutor::Execute(
503#define CPPYY_IMPL_ARRAY_EXEC(name, type, suffix) \
504PyObject* CPyCppyy::name##ArrayExecutor::Execute( \
505 Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) \
507 return CreateLowLevelView##suffix((type*)GILCallR(method, self, ctxt), fShape); \
513#if __cplusplus > 201402L
535#define CPPYY_COMPLEX_EXEC(code, type) \
536PyObject* CPyCppyy::Complex##code##Executor::Execute( \
537 Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) \
539 static Cppyy::TCppScope_t scopeid = Cppyy::GetScope("std::complex<"#type">");\
540 std::complex<type>* result = \
541 (std::complex<type>*)GILCallO(method, self, ctxt, scopeid); \
543 PyErr_SetString(PyExc_ValueError, "NULL result where temporary expected");\
547 PyObject* pyres = PyComplex_FromDoubles(result->real(), result->imag()); \
548 ::operator delete(result); \
555PyObject* CPyCppyy::STLStringExecutor::Execute(
576PyObject* CPyCppyy::STLWStringExecutor::Execute(
594PyObject* CPyCppyy::InstancePtrExecutor::Execute(
609PyObject* CPyCppyy::InstanceExecutor::Execute(
634 InstanceExecutor(
klass)
641PyObject* CPyCppyy::InstanceRefExecutor::Execute(
646 if (!
result || !fAssignable)
662 Py_DECREF(fAssignable); fAssignable =
nullptr;
670 Py_DECREF(fAssignable); fAssignable =
nullptr;
693PyObject* CPyCppyy::InstancePtrPtrExecutor::Execute(
710 fAssignable =
nullptr;
716PyObject* CPyCppyy::InstancePtrRefExecutor::Execute(
732 fAssignable =
nullptr;
739PyObject* CPyCppyy::InstanceArrayExecutor::Execute(
748PyObject* CPyCppyy::ConstructorExecutor::Execute(
757PyObject* CPyCppyy::PyObjectExecutor::Execute(
765PyObject* CPyCppyy::FunctionPointerExecutor::Execute(
794 return (
h->second)(
dims);
803 return (
h->second)(
dims);
814 return (
h->second)(
dims);
822 return (
h->second)(
dims);
826 if (!
cpd.empty() && (std::string::size_type)std::count(
cpd.
begin(),
cpd.
end(),
'*') ==
cpd.size()) {
836 return (
h->second)(
dims);
844 return new IteratorExecutor(
klass);
851 else if (
cpd ==
"**" ||
cpd ==
"*[]" ||
cpd ==
"&*")
853 else if (
cpd ==
"*&")
855 else if (
cpd ==
"[]") {
863 }
else if (
resolvedType.find(
"(*)") != std::string::npos ||
870 result =
new FunctionPointerExecutor(
888 if (
p &&
p->HasState())
948#define WSTRING1 "std::basic_string<wchar_t>"
949#define WSTRING2 "std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t>>"
953#define CCOMPLEX_D "_Complex double"
954#define CCOMPLEX_F "_Complex float"
956#define CCOMPLEX_D "_C_double_complex"
957#define CCOMPLEX_F "_C_float_complex"
960struct InitExecFactories_t {
962 InitExecFactories_t() {
967 gf[
"bool"] = (
ef_t)+[](
cdims_t) {
static BoolExecutor
e{};
return &
e; };
968 gf[
"bool&"] = (
ef_t)+[](
cdims_t) {
return new BoolRefExecutor{}; };
969 gf[
"const bool&"] = (
ef_t)+[](
cdims_t) {
static BoolConstRefExecutor
e{};
return &
e; };
970 gf[
"char"] = (
ef_t)+[](
cdims_t) {
static CharExecutor
e{};
return &
e; };
971 gf[
"signed char"] =
gf[
"char"];
972 gf[
"unsigned char"] = (
ef_t)+[](
cdims_t) {
static UCharExecutor
e{};
return &
e; };
973 gf[
"char&"] = (
ef_t)+[](
cdims_t) {
return new CharRefExecutor{}; };
974 gf[
"signed char&"] =
gf[
"char&"];
975 gf[
"unsigned char&"] = (
ef_t)+[](
cdims_t) {
return new UCharRefExecutor{}; };
976 gf[
"const char&"] = (
ef_t)+[](
cdims_t) {
static CharConstRefExecutor
e{};
return &
e; };
977 gf[
"const signed char&"] =
gf[
"const char&"];
978 gf[
"const unsigned char&"] = (
ef_t)+[](
cdims_t) {
static UCharConstRefExecutor
e{};
return &
e; };
979 gf[
"wchar_t"] = (
ef_t)+[](
cdims_t) {
static WCharExecutor
e{};
return &
e; };
980 gf[
"char16_t"] = (
ef_t)+[](
cdims_t) {
static Char16Executor
e{};
return &
e; };
981 gf[
"char32_t"] = (
ef_t)+[](
cdims_t) {
static Char32Executor
e{};
return &
e; };
982 gf[
"int8_t"] = (
ef_t)+[](
cdims_t) {
static Int8Executor
e{};
return &
e; };
983 gf[
"int8_t&"] = (
ef_t)+[](
cdims_t) {
return new Int8RefExecutor{}; };
984 gf[
"const int8_t&"] = (
ef_t)+[](
cdims_t) {
static Int8RefExecutor
e{};
return &
e; };
985 gf[
"uint8_t"] = (
ef_t)+[](
cdims_t) {
static UInt8Executor
e{};
return &
e; };
986 gf[
"uint8_t&"] = (
ef_t)+[](
cdims_t) {
return new UInt8RefExecutor{}; };
987 gf[
"const uint8_t&"] = (
ef_t)+[](
cdims_t) {
static UInt8RefExecutor
e{};
return &
e; };
988 gf[
"short"] = (
ef_t)+[](
cdims_t) {
static ShortExecutor
e{};
return &
e; };
989 gf[
"short&"] = (
ef_t)+[](
cdims_t) {
return new ShortRefExecutor{}; };
991 gf[
"int&"] = (
ef_t)+[](
cdims_t) {
return new IntRefExecutor{}; };
992 gf[
"unsigned short"] =
gf[
"int"];
993 gf[
"unsigned short&"] = (
ef_t)+[](
cdims_t) {
return new UShortRefExecutor{}; };
994 gf[
"unsigned long"] = (
ef_t)+[](
cdims_t) {
static ULongExecutor
e{};
return &
e; };
995 gf[
"unsigned long&"] = (
ef_t)+[](
cdims_t) {
return new ULongRefExecutor{}; };
996 gf[
"unsigned int"] =
gf[
"unsigned long"];
997 gf[
"unsigned int&"] = (
ef_t)+[](
cdims_t) {
return new UIntRefExecutor{}; };
998 gf[
"long"] = (
ef_t)+[](
cdims_t) {
static LongExecutor
e{};
return &
e; };
999 gf[
"long&"] = (
ef_t)+[](
cdims_t) {
return new LongRefExecutor{}; };
1000 gf[
"unsigned long"] = (
ef_t)+[](
cdims_t) {
static ULongExecutor
e{};
return &
e; };
1001 gf[
"unsigned long&"] = (
ef_t)+[](
cdims_t) {
return new ULongRefExecutor{}; };
1002 gf[
"long long"] = (
ef_t)+[](
cdims_t) {
static LongLongExecutor
e{};
return &
e; };
1003 gf[
"long long&"] = (
ef_t)+[](
cdims_t) {
return new LongLongRefExecutor{}; };
1004 gf[
"unsigned long long"] = (
ef_t)+[](
cdims_t) {
static ULongLongExecutor
e{};
return &
e; };
1005 gf[
"unsigned long long&"] = (
ef_t)+[](
cdims_t) {
return new ULongLongRefExecutor{}; };
1007 gf[
"float"] = (
ef_t)+[](
cdims_t) {
static FloatExecutor
e{};
return &
e; };
1008 gf[
"float&"] = (
ef_t)+[](
cdims_t) {
return new FloatRefExecutor{}; };
1009 gf[
"double"] = (
ef_t)+[](
cdims_t) {
static DoubleExecutor
e{};
return &
e; };
1010 gf[
"double&"] = (
ef_t)+[](
cdims_t) {
return new DoubleRefExecutor{}; };
1011 gf[
"long double"] = (
ef_t)+[](
cdims_t) {
static LongDoubleExecutor
e{};
return &
e; };
1012 gf[
"long double&"] = (
ef_t)+[](
cdims_t) {
return new LongDoubleRefExecutor{}; };
1013 gf[
"std::complex<double>"] = (
ef_t)+[](
cdims_t) {
static ComplexDExecutor
e{};
return &
e; };
1014 gf[
"std::complex<double>&"] = (
ef_t)+[](
cdims_t) {
return new ComplexDRefExecutor{}; };
1015 gf[
"void"] = (
ef_t)+[](
cdims_t) {
static VoidExecutor
e{};
return &
e; };
1018 gf[
"void ptr"] = (
ef_t)+[](
cdims_t d) {
return new VoidArrayExecutor{
d}; };
1019 gf[
"bool ptr"] = (
ef_t)+[](
cdims_t d) {
return new BoolArrayExecutor{
d}; };
1020 gf[
"unsigned char ptr"] = (
ef_t)+[](
cdims_t d) {
return new UCharArrayExecutor{
d}; };
1021 gf[
"const unsigned char ptr"] =
gf[
"unsigned char ptr"];
1022#if __cplusplus > 201402L
1024 gf[
"const std::byte ptr"] =
gf[
"std::byte ptr"];
1025 gf[
"byte ptr"] =
gf[
"std::byte ptr"];
1026 gf[
"const byte ptr"] =
gf[
"std::byte ptr"];
1028 gf[
"int8_t ptr"] = (
ef_t)+[](
cdims_t d) {
return new Int8ArrayExecutor{
d}; };
1029 gf[
"uint8_t ptr"] = (
ef_t)+[](
cdims_t d) {
return new UInt8ArrayExecutor{
d}; };
1030 gf[
"short ptr"] = (
ef_t)+[](
cdims_t d) {
return new ShortArrayExecutor{
d}; };
1031 gf[
"unsigned short ptr"] = (
ef_t)+[](
cdims_t d) {
return new UShortArrayExecutor{
d}; };
1032 gf[
"int ptr"] = (
ef_t)+[](
cdims_t d) {
return new IntArrayExecutor{
d}; };
1033 gf[
"unsigned int ptr"] = (
ef_t)+[](
cdims_t d) {
return new UIntArrayExecutor{
d}; };
1034 gf[
"long ptr"] = (
ef_t)+[](
cdims_t d) {
return new LongArrayExecutor{
d}; };
1035 gf[
"unsigned long ptr"] = (
ef_t)+[](
cdims_t d) {
return new ULongArrayExecutor{
d}; };
1036 gf[
"long long ptr"] = (
ef_t)+[](
cdims_t d) {
return new LLongArrayExecutor{
d}; };
1037 gf[
"unsigned long long ptr"] = (
ef_t)+[](
cdims_t d) {
return new ULLongArrayExecutor{
d}; };
1038 gf[
"float ptr"] = (
ef_t)+[](
cdims_t d) {
return new FloatArrayExecutor{
d}; };
1039 gf[
"double ptr"] = (
ef_t)+[](
cdims_t d) {
return new DoubleArrayExecutor{
d}; };
1040 gf[
"std::complex<float> ptr"] = (
ef_t)+[](
cdims_t d) {
return new ComplexFArrayExecutor{
d}; };
1041 gf[
"std::complex<double> ptr"] = (
ef_t)+[](
cdims_t d) {
return new ComplexDArrayExecutor{
d}; };
1042 gf[
"std::complex<int> ptr"] = (
ef_t)+[](
cdims_t d) {
return new ComplexIArrayExecutor{
d}; };
1043 gf[
"std::complex<long> ptr"] = (
ef_t)+[](
cdims_t d) {
return new ComplexLArrayExecutor{
d}; };
1046 gf[
"internal_enum_type_t"] =
gf[
"int"];
1047 gf[
"internal_enum_type_t&"] =
gf[
"int&"];
1048 gf[
"internal_enum_type_t ptr"] =
gf[
"int ptr"];
1049#if __cplusplus > 201402L
1050 gf[
"std::byte"] =
gf[
"uint8_t"];
1051 gf[
"byte"] =
gf[
"uint8_t"];
1052 gf[
"std::byte&"] =
gf[
"uint8_t&"];
1053 gf[
"byte&"] =
gf[
"uint8_t&"];
1054 gf[
"const std::byte&"] =
gf[
"const uint8_t&"];
1055 gf[
"const byte&"] =
gf[
"const uint8_t&"];
1057 gf[
"std::int8_t"] =
gf[
"int8_t"];
1058 gf[
"std::int8_t&"] =
gf[
"int8_t&"];
1059 gf[
"const std::int8_t&"] =
gf[
"const int8_t&"];
1060 gf[
"std::int8_t ptr"] =
gf[
"int8_t ptr"];
1061 gf[
"std::uint8_t"] =
gf[
"uint8_t"];
1062 gf[
"std::uint8_t&"] =
gf[
"uint8_t&"];
1063 gf[
"const std::uint8_t&"] =
gf[
"const uint8_t&"];
1064 gf[
"std::uint8_t ptr"] =
gf[
"uint8_t ptr"];
1066 gf[
"__int64"] =
gf[
"long long"];
1067 gf[
"__int64&"] =
gf[
"long long&"];
1068 gf[
"__int64 ptr"] =
gf[
"long long ptr"];
1069 gf[
"unsigned __int64"] =
gf[
"unsigned long long"];
1070 gf[
"unsigned __int64&"] =
gf[
"unsigned long long&"];
1071 gf[
"unsigned __int64 ptr"] =
gf[
"unsigned long long ptr"];
1079 gf[
"const char*"] = (
ef_t)+[](
cdims_t) {
static CStringExecutor
e{};
return &
e; };
1080 gf[
"char*"] =
gf[
"const char*"];
1081 gf[
"const char*&"] = (
ef_t)+[](
cdims_t) {
static CStringRefExecutor
e{};
return &
e; };
1082 gf[
"char*&"] =
gf[
"const char*&"];
1083 gf[
"const signed char*"] =
gf[
"const char*"];
1085 gf[
"signed char ptr"] = (
ef_t)+[](
cdims_t d) {
return new SCharArrayExecutor{
d}; };
1086 gf[
"wchar_t*"] = (
ef_t)+[](
cdims_t) {
static WCStringExecutor
e{};
return &
e;};
1087 gf[
"char16_t*"] = (
ef_t)+[](
cdims_t) {
static CString16Executor
e{};
return &
e;};
1088 gf[
"char32_t*"] = (
ef_t)+[](
cdims_t) {
static CString32Executor
e{};
return &
e;};
1089 gf[
"std::string"] = (
ef_t)+[](
cdims_t) {
static STLStringExecutor
e{};
return &
e; };
1090 gf[
"string"] =
gf[
"std::string"];
1091 gf[
"std::string&"] = (
ef_t)+[](
cdims_t) {
return new STLStringRefExecutor{}; };
1092 gf[
"string&"] =
gf[
"std::string&"];
1093 gf[
"std::wstring"] = (
ef_t)+[](
cdims_t) {
static STLWStringExecutor
e{};
return &
e; };
1096 gf[
"__init__"] = (
ef_t)+[](
cdims_t) {
static ConstructorExecutor
e{};
return &
e; };
1097 gf[
"PyObject*"] = (
ef_t)+[](
cdims_t) {
static PyObjectExecutor
e{};
return &
e; };
1098 gf[
"_object*"] =
gf[
"PyObject*"];
1099 gf[
"FILE*"] =
gf[
"void ptr"];
#define CPyCppyy_PyText_FromStringAndSize
#define CPyCppyy_PyText_AsString
#define CPyCppyy_PyText_GET_SIZE
#define CPyCppyy_PyText_FromFormat
#define CPyCppyy_PyText_CheckExact
#define CPyCppyy_PyText_FromString
long double PY_LONG_DOUBLE
unsigned long long PY_ULONG_LONG
static PyObject * PyComplex_FromComplex(const std::complex< T > &c)
static char GILCallC(Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CPyCppyy::CallContext *ctxt)
static float GILCallF(Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CPyCppyy::CallContext *ctxt)
static PyObject * CPyCppyy_PyText_FromLong(long cl)
static PyObject * SetInstanceCheckError(PyObject *pyobj)
static std::complex< T > PyComplex_AsComplex(PyObject *pycplx)
static Cppyy::TCppObject_t GILCallO(Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CPyCppyy::CallContext *ctxt, Cppyy::TCppType_t klass)
static PY_LONG_DOUBLE GILCallLD(Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CPyCppyy::CallContext *ctxt)
#define CPPYY_IMPL_GILCALL(rtype, tcode)
static Cppyy::TCppObject_t GILCallConstructor(Cppyy::TCppMethod_t method, Cppyy::TCppType_t klass, CPyCppyy::CallContext *ctxt)
static long GILCallL(Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CPyCppyy::CallContext *ctxt)
#define CPPYY_COMPLEX_EXEC(code, type)
static short GILCallH(Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CPyCppyy::CallContext *ctxt)
static PyObject * CPyCppyy_PyText_FromULong(unsigned long uc)
static PyObject * CPyCppyy_PyBool_FromLong(long b)
static void GILCallV(Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CPyCppyy::CallContext *ctxt)
static PY_LONG_LONG GILCallLL(Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CPyCppyy::CallContext *ctxt)
#define CPPYY_IMPL_ARRAY_EXEC(name, type, suffix)
static void * GILCallR(Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CPyCppyy::CallContext *ctxt)
#define CPPYY_IMPL_REFEXEC(name, type, stype, F1, F2)
static unsigned char GILCallB(Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CPyCppyy::CallContext *ctxt)
static double GILCallD(Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CPyCppyy::CallContext *ctxt)
static int GILCallI(Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CPyCppyy::CallContext *ctxt)
std::ios_base::fmtflags fFlags
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
winID h TVirtualViewer3D TVirtualGLPainter p
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 target
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 value
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void gc
virtual bool SetAssignable(PyObject *)
const_iterator begin() const
const_iterator end() const
std::string remove_const(const std::string &cppname)
Py_ssize_t array_size(const std::string &name)
std::string clean_type(const std::string &cppname, bool template_strip=true, bool const_strip=true)
std::string compound(const std::string &name)
PyObject * FuncPtr2StdFunction(const std::string &retType, const std::string &signature, void *address)
bool IsSTLIterator(const std::string &classname)
unsigned long PyLongOrInt_AsULong(PyObject *pyobject)
CPYCPPYY_EXTERN bool UnregisterExecutor(const std::string &name)
CPYCPPYY_EXTERN bool RegisterExecutorAlias(const std::string &name, const std::string &target)
PyObject * BindCppObjectNoCast(Cppyy::TCppObject_t object, Cppyy::TCppType_t klass, const unsigned flags=0)
CPYCPPYY_EXPORT void DestroyExecutor(Executor *p)
CPYCPPYY_EXTERN bool RegisterExecutor(const std::string &name, ExecutorFactory_t)
CPYCPPYY_EXTERN Executor * CreateExecutor(const std::string &name, cdims_t=0)
std::map< std::string, ef_t > ExecFactories_t
PY_ULONG_LONG PyLongOrInt_AsULong64(PyObject *pyobject)
bool CPPInstance_Check(T *object)
Executor *(* ef_t)(cdims_t)
PyObject * BindCppObjectArray(Cppyy::TCppObject_t address, Cppyy::TCppType_t klass, cdims_t dims)
PyObject * CreatePointerView(void *ptr, cdims_t shape=0)
PyObject * gNullPtrObject
static ExecFactories_t gExecFactories
std::set< std::string > gIteratorTypes
PyObject * BindCppObject(Cppyy::TCppObject_t object, Cppyy::TCppType_t klass, const unsigned flags=0)
CPYCPPYY_EXTERN void * CallVoidP(Cppyy::TCppMethod_t, Cppyy::TCppObject_t, CallContext *)
bool ReleasesGIL(CallContext *ctxt)
RPY_EXPORTED TCppObject_t CallO(TCppMethod_t method, TCppObject_t self, size_t nargs, void *args, TCppType_t result_type)
RPY_EXPORTED TCppObject_t CallConstructor(TCppMethod_t method, TCppType_t type, size_t nargs, void *args)
RPY_EXPORTED std::string ResolveName(const std::string &cppitem_name)
RPY_EXPORTED TCppScope_t GetScope(const std::string &scope_name)
RooArgList L(Args_t &&... args)