38 GILControl() : fSave(PyEval_SaveThread()) { }
40 PyEval_RestoreThread(fSave);
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->GetSize(), ctxt->GetArgs());\
57 return Cppyy::Call##tcode(method, self, ctxt->GetSize(), 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->GetSize(), ctxt->GetArgs());\
86 return Cppyy::CallO(method, self, ctxt->GetSize(), ctxt->GetArgs(), klass);
89 return Cppyy::CallO(method, self, ctxt->GetSize(), ctxt->GetArgs(), klass);
109 if (cl < -256 || cl > 255) {
110 PyErr_SetString(PyExc_ValueError,
"char conversion out of range");
122 PyErr_SetString(PyExc_ValueError,
"char conversion out of range");
144PyObject* CPyCppyy::BoolExecutor::Execute(
148 bool retval =
GILCallB(method, self, ctxt);
155PyObject* CPyCppyy::BoolConstRefExecutor::Execute(
163PyObject* CPyCppyy::CharExecutor::Execute(
172PyObject* CPyCppyy::CharConstRefExecutor::Execute(
181PyObject* CPyCppyy::UCharExecutor::Execute(
190PyObject* CPyCppyy::UCharConstRefExecutor::Execute(
199PyObject* CPyCppyy::WCharExecutor::Execute(
204 wchar_t res = (wchar_t)
GILCallL(method, self, ctxt);
205 return PyUnicode_FromWideChar(&res, 1);
209PyObject* CPyCppyy::Char16Executor::Execute(
214 char16_t res = (char16_t)
GILCallL(method, self, ctxt);
215 return PyUnicode_DecodeUTF16((
const char*)&res,
sizeof(
char16_t),
nullptr,
nullptr);
219PyObject* CPyCppyy::Char32Executor::Execute(
224 char32_t res = (char32_t)
GILCallL(method, self, ctxt);
225 return PyUnicode_DecodeUTF32((
const char*)&res,
sizeof(
char32_t),
nullptr,
nullptr);
229PyObject* CPyCppyy::IntExecutor::Execute(
233 return PyInt_FromLong((
int)
GILCallI(method, self, ctxt));
237PyObject* CPyCppyy::Int8Executor::Execute(
241 return PyInt_FromLong((int8_t)
GILCallC(method, self, ctxt));
245PyObject* CPyCppyy::UInt8Executor::Execute(
249 return PyInt_FromLong((uint8_t)
GILCallB(method, self, ctxt));
253PyObject* CPyCppyy::ShortExecutor::Execute(
257 return PyInt_FromLong((
short)
GILCallH(method, self, ctxt));
261PyObject* CPyCppyy::LongExecutor::Execute(
269PyObject* CPyCppyy::ULongExecutor::Execute(
277PyObject* CPyCppyy::LongLongExecutor::Execute(
282 return PyLong_FromLongLong(
result);
286PyObject* CPyCppyy::ULongLongExecutor::Execute(
291 return PyLong_FromUnsignedLongLong(
result);
295PyObject* CPyCppyy::FloatExecutor::Execute(
299 return PyFloat_FromDouble((
double)
GILCallF(method, self, ctxt));
303PyObject* CPyCppyy::DoubleExecutor::Execute(
307 return PyFloat_FromDouble((
double)
GILCallD(method, self, ctxt));
311PyObject* CPyCppyy::LongDoubleExecutor::Execute(
315 return PyFloat_FromDouble((
double)
GILCallLD(method, self, ctxt));
324 fAssignable = pyobject;
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); \
374 return PyComplex_FromDoubles(
c.real(),
c.imag());
379 Py_complex cplx = PyComplex_AsCComplex(pycplx);
380 return std::complex<T>(cplx.real, cplx.imag);
384 std::complex<double>, PyComplex_FromComplex<double>, PyComplex_AsComplex<double>)
388PyObject* CPyCppyy::STLStringRefExecutor::Execute(
399 Py_DECREF(fAssignable);
400 fAssignable =
nullptr;
406PyObject* CPyCppyy::VoidExecutor::Execute(
415PyObject* CPyCppyy::CStringExecutor::Execute(
429PyObject* CPyCppyy::WCStringExecutor::Execute(
436 return PyUnicode_FromWideChar(&
w, 0);
443PyObject* CPyCppyy::CString16Executor::Execute(
450 return PyUnicode_DecodeUTF16((
const char*)&
w, 0,
nullptr,
nullptr);
453 return PyUnicode_DecodeUTF16((
const char*)
result,
454 std::char_traits<char16_t>::length(
result)*
sizeof(
char16_t),
nullptr,
nullptr);
458PyObject* CPyCppyy::CString32Executor::Execute(
465 return PyUnicode_DecodeUTF32((
const char*)&
w, 0,
nullptr,
nullptr);
468 return PyUnicode_DecodeUTF32((
const char*)
result,
469 std::char_traits<char32_t>::length(
result)*
sizeof(
char32_t),
nullptr,
nullptr);
474PyObject* CPyCppyy::VoidArrayExecutor::Execute(
487#define CPPYY_IMPL_ARRAY_EXEC(name, type) \
488PyObject* CPyCppyy::name##ArrayExecutor::Execute( \
489 Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) \
491 return CreateLowLevelView((type*)GILCallR(method, self, ctxt)); \
496#if __cplusplus > 201402L
516#define CPPYY_COMPLEX_EXEC(code, type) \
517PyObject* CPyCppyy::Complex##code##Executor::Execute( \
518 Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) \
520 static Cppyy::TCppScope_t scopeid = Cppyy::GetScope("std::complex<"#type">");\
521 std::complex<type>* result = \
522 (std::complex<type>*)GILCallO(method, self, ctxt, scopeid); \
524 PyErr_SetString(PyExc_ValueError, "NULL result where temporary expected");\
528 PyObject* pyres = PyComplex_FromDoubles(result->real(), result->imag()); \
529 ::operator delete(result);
\
536PyObject* CPyCppyy::STLStringExecutor::Execute(
543 std::string*
result = (std::string*)
GILCallO(method, self, ctxt, sSTLStringScope);
551 ::operator
delete(
result);
557PyObject* CPyCppyy::STLWStringExecutor::Execute(
562 std::wstring*
result = (std::wstring*)
GILCallO(method, self, ctxt, sSTLWStringScope);
565 return PyUnicode_FromWideChar(&
w, 0);
569 ::operator
delete(
result);
575PyObject* CPyCppyy::InstancePtrExecutor::Execute(
590PyObject* CPyCppyy::InstanceExecutor::Execute(
597 if (!PyErr_Occurred())
598 PyErr_SetString(PyExc_ValueError,
"nullptr result where temporary expected");
615 InstanceExecutor(klass)
622PyObject* CPyCppyy::InstanceRefExecutor::Execute(
627 if (!
result || !fAssignable)
636 PyErr_Format(PyExc_TypeError,
"cannot assign to return object (%s)",
639 PyErr_SetString(PyExc_TypeError,
"cannot assign to result");
643 Py_DECREF(fAssignable); fAssignable =
nullptr;
647 PyObject* res2 = PyObject_CallFunction(assign,
const_cast<char*
>(
"O"), fAssignable);
651 Py_DECREF(fAssignable); fAssignable =
nullptr;
664 PyObject* pystr = PyObject_Str(pyobj);
666 PyErr_Format(PyExc_TypeError,
670 PyErr_SetString(PyExc_TypeError,
"C++ object expected");
674PyObject* CPyCppyy::InstancePtrPtrExecutor::Execute(
690 Py_DECREF(fAssignable);
691 fAssignable =
nullptr;
697PyObject* CPyCppyy::InstancePtrRefExecutor::Execute(
712 Py_DECREF(fAssignable);
713 fAssignable =
nullptr;
720PyObject* CPyCppyy::InstanceArrayExecutor::Execute(
730PyObject* CPyCppyy::ConstructorExecutor::Execute(
739PyObject* CPyCppyy::PyObjectExecutor::Execute(
747PyObject* CPyCppyy::FunctionPointerExecutor::Execute(
755 void* address = (
void*)
GILCallR(method, self, ctxt);
758 PyErr_SetString(PyExc_TypeError,
"can not convert null function pointer");
776 return (
h->second)();
782 if (resolvedType != fullType) {
785 return (
h->second)();
789 bool isConst = strncmp(resolvedType.c_str(),
"const", 5) == 0;
796 return (
h->second)();
804 return (
h->second)();
811 return (
h->second)();
819 return new IteratorExecutor(klass);
823 result =
new InstanceExecutor(klass);
825 result =
new InstanceRefExecutor(klass);
826 else if (cpd ==
"**" || cpd ==
"*[]" || cpd ==
"&*")
827 result =
new InstancePtrPtrExecutor(klass);
828 else if (cpd ==
"*&")
829 result =
new InstancePtrRefExecutor(klass);
830 else if (cpd ==
"[]") {
833 result =
new InstanceArrayExecutor(klass, asize);
835 result =
new InstancePtrRefExecutor(klass);
837 result =
new InstancePtrExecutor(klass);
838 }
else if (resolvedType.find(
"(*)") != std::string::npos ||
839 (resolvedType.find(
"::*)") != std::string::npos)) {
842 auto pos1 = resolvedType.find(
'(');
843 auto pos2 = resolvedType.find(
"*)");
844 auto pos3 = resolvedType.rfind(
')');
845 result =
new FunctionPointerExecutor(
846 resolvedType.substr(0, pos1), resolvedType.substr(pos2+2, pos3-pos2-1));
863 if (
p &&
p->HasState())
906#define WSTRING "basic_string<wchar_t,char_traits<wchar_t>,allocator<wchar_t> >"
908struct InitExecFactories_t {
910 InitExecFactories_t() {
915 gf[
"bool"] = (
ef_t)+[]() {
static BoolExecutor
e{};
return &
e; };
916 gf[
"bool&"] = (
ef_t)+[]() {
return new BoolRefExecutor{}; };
917 gf[
"const bool&"] = (
ef_t)+[]() {
static BoolConstRefExecutor
e{};
return &
e; };
918 gf[
"char"] = (
ef_t)+[]() {
static CharExecutor
e{};
return &
e; };
919 gf[
"signed char"] = gf[
"char"];
920 gf[
"unsigned char"] = (
ef_t)+[]() {
static UCharExecutor
e{};
return &
e; };
921 gf[
"char&"] = (
ef_t)+[]() {
return new CharRefExecutor{}; };
922 gf[
"signed char&"] = gf[
"char&"];
923 gf[
"unsigned char&"] = (
ef_t)+[]() {
return new UCharRefExecutor{}; };
924 gf[
"const char&"] = (
ef_t)+[]() {
static CharConstRefExecutor
e{};
return &
e; };
925 gf[
"const signed char&"] = gf[
"const char&"];
926 gf[
"const unsigned char&"] = (
ef_t)+[]() {
static UCharConstRefExecutor
e{};
return &
e; };
927 gf[
"wchar_t"] = (
ef_t)+[]() {
static WCharExecutor
e{};
return &
e; };
928 gf[
"char16_t"] = (
ef_t)+[]() {
static Char16Executor
e{};
return &
e; };
929 gf[
"char32_t"] = (
ef_t)+[]() {
static Char32Executor
e{};
return &
e; };
930 gf[
"int8_t"] = (
ef_t)+[]() {
static Int8Executor
e{};
return &
e; };
931 gf[
"int8_t&"] = (
ef_t)+[]() {
return new Int8RefExecutor{}; };
932 gf[
"const int8_t&"] = (
ef_t)+[]() {
static Int8RefExecutor
e{};
return &
e; };
933 gf[
"uint8_t"] = (
ef_t)+[]() {
static UInt8Executor
e{};
return &
e; };
934 gf[
"uint8_t&"] = (
ef_t)+[]() {
return new UInt8RefExecutor{}; };
935 gf[
"const uint8_t&"] = (
ef_t)+[]() {
static UInt8RefExecutor
e{};
return &
e; };
936 gf[
"short"] = (
ef_t)+[]() {
static ShortExecutor
e{};
return &
e; };
937 gf[
"short&"] = (
ef_t)+[]() {
return new ShortRefExecutor{}; };
938 gf[
"int"] = (
ef_t)+[]() {
static IntExecutor
e{};
return &
e; };
939 gf[
"int&"] = (
ef_t)+[]() {
return new IntRefExecutor{}; };
940 gf[
"unsigned short"] = gf[
"int"];
941 gf[
"unsigned short&"] = (
ef_t)+[]() {
return new UShortRefExecutor{}; };
942 gf[
"unsigned long"] = (
ef_t)+[]() {
static ULongExecutor
e{};
return &
e; };
943 gf[
"unsigned long&"] = (
ef_t)+[]() {
return new ULongRefExecutor{}; };
944 gf[
"unsigned int"] = gf[
"unsigned long"];
945 gf[
"unsigned int&"] = (
ef_t)+[]() {
return new UIntRefExecutor{}; };
946 gf[
"long"] = (
ef_t)+[]() {
static LongExecutor
e{};
return &
e; };
947 gf[
"long&"] = (
ef_t)+[]() {
return new LongRefExecutor{}; };
948 gf[
"unsigned long"] = (
ef_t)+[]() {
static ULongExecutor
e{};
return &
e; };
949 gf[
"unsigned long&"] = (
ef_t)+[]() {
return new ULongRefExecutor{}; };
950 gf[
"long long"] = (
ef_t)+[]() {
static LongLongExecutor
e{};
return &
e; };
951 gf[
"long long&"] = (
ef_t)+[]() {
return new LongLongRefExecutor{}; };
952 gf[
"unsigned long long"] = (
ef_t)+[]() {
static ULongLongExecutor
e{};
return &
e; };
953 gf[
"unsigned long long&"] = (
ef_t)+[]() {
return new ULongLongRefExecutor{}; };
955 gf[
"float"] = (
ef_t)+[]() {
static FloatExecutor
e{};
return &
e; };
956 gf[
"float&"] = (
ef_t)+[]() {
return new FloatRefExecutor{}; };
957 gf[
"double"] = (
ef_t)+[]() {
static DoubleExecutor
e{};
return &
e; };
958 gf[
"double&"] = (
ef_t)+[]() {
return new DoubleRefExecutor{}; };
959 gf[
"long double"] = (
ef_t)+[]() {
static LongDoubleExecutor
e{};
return &
e; };
960 gf[
"long double&"] = (
ef_t)+[]() {
return new LongDoubleRefExecutor{}; };
961 gf[
"void"] = (
ef_t)+[]() {
static VoidExecutor
e{};
return &
e; };
964 gf[
"void*"] = (
ef_t)+[]() {
static VoidArrayExecutor
e{};
return &
e; };
965 gf[
"bool*"] = (
ef_t)+[]() {
static BoolArrayExecutor
e{};
return &
e; };
966 gf[
"unsigned char*"] = (
ef_t)+[]() {
static UCharArrayExecutor
e{};
return &
e; };
967 gf[
"const unsigned char*"] = gf[
"unsigned char*"];
968#if __cplusplus > 201402L
969 gf[
"byte*"] = (
ef_t)+[]() {
static ByteArrayExecutor
e{};
return &
e; };
970 gf[
"const byte*"] = gf[
"byte*"];
972 gf[
"short*"] = (
ef_t)+[]() {
static ShortArrayExecutor
e{};
return &
e; };
973 gf[
"unsigned short*"] = (
ef_t)+[]() {
static UShortArrayExecutor
e{};
return &
e; };
974 gf[
"int*"] = (
ef_t)+[]() {
static IntArrayExecutor
e{};
return &
e; };
975 gf[
"unsigned int*"] = (
ef_t)+[]() {
static UIntArrayExecutor
e{};
return &
e; };
976 gf[
"long*"] = (
ef_t)+[]() {
static LongArrayExecutor
e{};
return &
e; };
977 gf[
"unsigned long*"] = (
ef_t)+[]() {
static ULongArrayExecutor
e{};
return &
e; };
978 gf[
"long long*"] = (
ef_t)+[]() {
static LLongArrayExecutor
e{};
return &
e; };
979 gf[
"unsigned long long*"] = (
ef_t)+[]() {
static ULLongArrayExecutor
e{};
return &
e; };
980 gf[
"float*"] = (
ef_t)+[]() {
static FloatArrayExecutor
e{};
return &
e; };
981 gf[
"double*"] = (
ef_t)+[]() {
static DoubleArrayExecutor
e{};
return &
e; };
982 gf[
"complex<float>*"] = (
ef_t)+[]() {
static ComplexFArrayExecutor
e{};
return &
e; };
983 gf[
"complex<double>*"] = (
ef_t)+[]() {
static ComplexDArrayExecutor
e{};
return &
e; };
984 gf[
"complex<int>*"] = (
ef_t)+[]() {
static ComplexIArrayExecutor
e{};
return &
e; };
985 gf[
"complex<long>*"] = (
ef_t)+[]() {
static ComplexLArrayExecutor
e{};
return &
e; };
988 gf[
"internal_enum_type_t"] = gf[
"int"];
989 gf[
"internal_enum_type_t&"] = gf[
"int&"];
990 gf[
"internal_enum_type_t*"] = gf[
"int*"];
991#if __cplusplus > 201402L
992 gf[
"byte"] = gf[
"uint8_t"];
993 gf[
"byte&"] = gf[
"uint8_t&"];
994 gf[
"const byte&"] = gf[
"const uint8_t&"];
996 gf[
"Long64_t"] = gf[
"long long"];
997 gf[
"Long64_t&"] = gf[
"long long&"];
998 gf[
"Long64_t*"] = gf[
"long long*"];
999 gf[
"ULong64_t"] = gf[
"unsigned long long"];
1000 gf[
"ULong64_t&"] = gf[
"unsigned long long&"];
1001 gf[
"ULong64_t*"] = gf[
"unsigned long long*"];
1002 gf[
"Float16_t"] = gf[
"float"];
1003 gf[
"Float16_t&"] = gf[
"float&"];
1004 gf[
"Double32_t"] = gf[
"double"];
1005 gf[
"Double32_t&"] = gf[
"double&"];
1008 gf[
"const char*"] = (
ef_t)+[]() {
static CStringExecutor
e{};
return &
e; };
1009 gf[
"char*"] = gf[
"const char*"];
1010 gf[
"const signed char*"] = gf[
"const char*"];
1011 gf[
"signed char*"] = gf[
"char*"];
1012 gf[
"wchar_t*"] = (
ef_t)+[]() {
static WCStringExecutor
e{};
return &
e;};
1013 gf[
"char16_t*"] = (
ef_t)+[]() {
static CString16Executor
e{};
return &
e;};
1014 gf[
"char32_t*"] = (
ef_t)+[]() {
static CString32Executor
e{};
return &
e;};
1015 gf[
"std::string"] = (
ef_t)+[]() {
static STLStringExecutor
e{};
return &
e; };
1016 gf[
"string"] = gf[
"std::string"];
1017 gf[
"std::string&"] = (
ef_t)+[]() {
return new STLStringRefExecutor{}; };
1018 gf[
"string&"] = gf[
"std::string&"];
1019 gf[
"std::wstring"] = (
ef_t)+[]() {
static STLWStringExecutor
e{};
return &
e; };
1020 gf[
"std::" WSTRING] = gf[
"std::wstring"];
1021 gf[
WSTRING] = gf[
"std::wstring"];
1022 gf[
"complex<double>"] = (
ef_t)+[]() {
static ComplexDExecutor
e{};
return &
e; };
1023 gf[
"complex<double>&"] = (
ef_t)+[]() {
return new ComplexDRefExecutor{}; };
1024 gf[
"__init__"] = (
ef_t)+[]() {
static ConstructorExecutor
e{};
return &
e; };
1025 gf[
"PyObject*"] = (
ef_t)+[]() {
static PyObjectExecutor
e{};
return &
e; };
1026 gf[
"_object*"] = gf[
"PyObject*"];
1027 gf[
"FILE*"] = gf[
"void*"];
1029} initExecvFactories_;
#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
static PyObject * PyComplex_FromComplex(const std::complex< T > &c)
static Int_t GILCallI(Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CPyCppyy::CallContext *ctxt)
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)
#define CPPYY_IMPL_GILCALL(rtype, tcode)
static Cppyy::TCppObject_t GILCallConstructor(Cppyy::TCppMethod_t method, Cppyy::TCppType_t klass, CPyCppyy::CallContext *ctxt)
static Long64_t GILCallLL(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 LongDouble_t GILCallLD(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 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)
#define CPPYY_IMPL_ARRAY_EXEC(name, type)
static Long_t GILCallL(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)
std::ios_base::fmtflags fFlags
unsigned long long ULong64_t
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 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 *)
std::string remove_const(const std::string &cppname)
std::string clean_type(const std::string &cppname, bool template_strip=true, bool const_strip=true)
PyObject * FuncPtr2StdFunction(const std::string &retType, const std::string &signature, void *address)
Py_ssize_t ArraySize(const std::string &name)
const std::string Compound(const std::string &name)
Set of helper functions that are invoked from the pythonizors, on the Python side.
unsigned long PyLongOrInt_AsULong(PyObject *pyobject)
CPYCPPYY_EXTERN bool UnregisterExecutor(const std::string &name)
PyObject * CreatePointerView(void *ptr, size_t size=(size_t) -1)
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)
std::map< std::string, ef_t > ExecFactories_t
bool CPPInstance_Check(T *object)
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 *)
ULong64_t PyLongOrInt_AsULong64(PyObject *pyobject)
bool ReleasesGIL(CallContext *ctxt)
PyObject * BindCppObjectArray(Cppyy::TCppObject_t address, Cppyy::TCppType_t klass, Py_ssize_t *dims)
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)
Parameter * GetArgs(size_t sz)