19#define CPYCPPYY_INTERNAL 1
26#undef CPYCPPYY_INTERNAL
42#if PY_VERSION_HEX < 0x030b0000
45#if PY_VERSION_HEX >= 0x03030000
58#if PY_VERSION_HEX >= 0x03060000
73#define CPYCPPYY_GET_DICT_LOOKUP(mp) \
74 ((dict_lookup_func&)mp->ma_keys->dk_lookup)
78#define CPYCPPYY_GET_DICT_LOOKUP(mp) \
79 ((dict_lookup_func&)mp->ma_lookup)
103#if PY_VERSION_HEX < 0x03000000
150 0, 0, 0, 0, 0,
Py_TPFLAGS_DEFAULT, 0, 0, 0, 0, 0, 0, 0,
151 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
152#if PY_VERSION_HEX >= 0x02030000
155#if PY_VERSION_HEX >= 0x02060000
158#if PY_VERSION_HEX >= 0x03040000
161#if PY_VERSION_HEX >= 0x03080000
164#if PY_VERSION_HEX >= 0x030c0000
167#if PY_VERSION_HEX >= 0x030d0000
193 0, 0, 0, 0, 0,
Py_TPFLAGS_DEFAULT, 0, 0, 0, 0, 0, 0, 0,
194 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
195#if PY_VERSION_HEX >= 0x02030000
198#if PY_VERSION_HEX >= 0x02060000
201#if PY_VERSION_HEX >= 0x03040000
204#if PY_VERSION_HEX >= 0x03080000
207#if PY_VERSION_HEX >= 0x030c0000
210#if PY_VERSION_HEX >= 0x030d0000
219#if PY_VERSION_HEX >= 0x30c00b1
228#if PY_VERSION_HEX >= 0x30c00b1
259 static std::map<std::string, std::vector<PyObject*>>
pyzMap;
272#if PY_VERSION_HEX < 0x030b0000
291#if PY_VERSION_HEX >= 0x03060000
297#define CPYCPPYY_ORGDICT_LOOKUP(mp, key, hash, value_addr, hashpos) \
298 OrgDictLookup(mp, key, hash, value_addr, hashpos)
303#elif PY_VERSION_HEX >= 0x03030000
310#define CPYCPPYY_ORGDICT_LOOKUP(mp, key, hash, value_addr, hashpos) \
311 OrgDictLookup(mp, key, hash, value_addr)
323#define CPYCPPYY_ORGDICT_LOOKUP(mp, key, hash, value_addr, hashpos) \
324 OrgDictLookup(mp, key, hash)
329 static GblGetter
gbl;
330#if PY_VERSION_HEX >= 0x03060000
341#if PY_VERSION_HEX >= 0x03060000
344 if (!
ep || (
ep->me_key &&
ep->me_value))
376#if PY_VERSION_HEX >= 0x03060000
379 ep->me_key =
nullptr;
380 ep->me_value =
nullptr;
390#if PY_VERSION_HEX >= 0x03030000
391 if (
mp->ma_keys->dk_usable <= 0) {
407 if (0 <
mp->ma_keys->dk_usable)
430#if PY_VERSION_HEX < 0x030b0000
473static char*
GCIA_kwlist[] = {(
char*)
"instance", (
char*)
"field", (
char*)
"byref",
NULL};
513 if (
req ==
"Instance_AsVoidPtr")
515 else if (
req ==
"Instance_FromVoidPtr")
595#if PY_VERSION_HEX < 0x02060000
615 if (!
ctmod)
return nullptr;
645 PyExc_TypeError,
"object is not a proxy to an array of PODs of known size");
652 view.buf =
pyobj->GetObject();
660 view.suboffsets =
NULL;
661 view.internal =
NULL;
695 "bind_object expects a valid class or class name as an argument");
728 "provided instance and provided target type are unrelated");
781 void*
addr =
nullptr;
793 if (!
addr || !buflen) {
795 "bind_object requires a CObject/Capsule, long integer, buffer, or instance as first argument");
865 p1->second.erase(
p2);
1009 METH_O, (
char*)
"Represent an array of objects as raw memory."},
1013 METH_O, (
char*)
"Cast the C++ object to become movable."},
1019 METH_O, (
char*)
"Install a type pinning."},
1020 {(
char*)
"_add_type_reducer", (
PyCFunction)AddTypeReducer,
1022 {(
char*)
"SetMemoryPolicy", (
PyCFunction)SetMemoryPolicy,
1023 METH_VARARGS, (
char*)
"Determines object ownership model."},
1024 {(
char*)
"SetGlobalSignalPolicy", (
PyCFunction)SetGlobalSignalPolicy,
1025 METH_VARARGS, (
char*)
"Trap signals in safe mode to prevent interpreter abort."},
1026 {(
char*)
"SetOwnership", (
PyCFunction)SetOwnership,
1027 METH_VARARGS, (
char*)
"Modify held C++ object ownership."},
1028 {(
char*)
"AddSmartPtrType", (
PyCFunction)AddSmartPtrType,
1029 METH_VARARGS, (
char*)
"Add a smart pointer to the list of known smart pointer types."},
1031 METH_NOARGS, (
char*)
"Begin capturing stderr to a in memory buffer."},
1033 METH_NOARGS, (
char*)
"End capturing stderr and returns the captured buffer."},
1034 {
nullptr,
nullptr, 0,
nullptr}
1038#if PY_VERSION_HEX >= 0x03000000
1043#define GETSTATE(m) ((struct module_state*)PyModule_GetState(m))
1072#define CPYCPPYY_INIT_ERROR return nullptr
1075#define CPYCPPYY_INIT_ERROR return
1086#if PY_VERSION_HEX < 0x03090000
1090#if PY_VERSION_HEX < 0x030b0000
1097#if PY_VERSION_HEX >= 0x03030000
1106#if PY_VERSION_HEX >= 0x03000000
1149#if PY_VERSION_HEX < 0x03000000
1212#if PY_VERSION_HEX >= 0x03000000
static PyObject * default_repr(PyObject *)
#define CPYCPPYY_ORGDICT_LOOKUP(mp, key, hash, value_addr, hashpos)
static PyObject * nullptr_repr(PyObject *)
static PyNumberMethods nullptr_as_number
#define CPYCPPYY_INIT_ERROR
static void default_dealloc(PyObject *)
static PyTypeObject PyDefault_t_Type
static void nullptr_dealloc(PyObject *)
static int nullptr_nonzero(PyObject *)
static PyMethodDef gCPyCppyyMethods[]
static PyTypeObject PyNullPtr_t_Type
#define CPYCPPYY_GET_DICT_LOOKUP(mp)
PyDictEntry *(* dict_lookup_func)(PyDictObject *, PyObject *, long)
#define PY_SSIZE_T_FORMAT
static void * CPyCppyy_PyCapsule_GetPointer(PyObject *capsule, const char *)
#define CPyCppyy_PyText_AsString
static PyObject * CPyCppyy_PyCapsule_New(void *cobj, const char *, void(*destr)(void *))
static PyObject * PyObject_CallMethodOneArg(PyObject *obj, PyObject *name, PyObject *arg)
#define CPyCppyy_PyText_FromFormat
#define CPyCppyy_PyText_Type
#define CPyCppyy_PyText_FromString
#define CPyCppyy_PyText_Check
#define PyVarObject_HEAD_INIT(type, size)
static struct PyModuleDef moduledef
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
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
TTime operator*(const TTime &t1, const TTime &t2)
const_iterator begin() const
const_iterator end() const
Py_ssize_t GetBuffer(PyObject *pyobject, char tc, int size, void *&buf, bool check=true)
std::string ConstructTemplateArgs(PyObject *pyname, PyObject *tpArgs, PyObject *args=nullptr, ArgPreference=kNone, int argoff=0, int *pcnt=nullptr)
bool InitProxy(PyObject *module, PyTypeObject *pytype, const char *name)
PyTypeObject CPPInstance_Type
PyObject * gAbrtException
PyObject * gDefaultObject
PyTypeObject VectorIter_Type
PyTypeObject CPPExcInstance_Type
PyObject * GetScopeProxy(Cppyy::TCppScope_t)
std::ostringstream gCapturedError
dict_lookup_func gDictLookupOrg
PyTypeObject CustomInstanceMethod_Type
PyObject * CreateScopeProxy(Cppyy::TCppScope_t, const unsigned flags=0)
bool CPPDataMember_CheckExact(T *object)
PyTypeObject RefFloat_Type
Custom "builtins," detectable by type, for pass by ref and improved performance.
PyObject * gSegvException
std::set< Cppyy::TCppType_t > gPinnedTypes
PyObject * DestroyPyStrings()
PyObject * BindCppObjectNoCast(Cppyy::TCppObject_t object, Cppyy::TCppType_t klass, const unsigned flags=0)
std::map< std::string, std::vector< PyObject * > > & pythonizations()
bool CPPScope_Check(T *object)
CPYCPPYY_EXTERN PyObject * Instance_FromVoidPtr(void *addr, const std::string &classname, bool python_owns=false)
bool CPPInstance_Check(T *object)
PyTypeObject IndexIter_Type
PyObject * gNullPtrObject
PyTypeObject CPPOverload_Type
PyTypeObject TemplateProxy_Type
PyTypeObject InstanceArrayIter_Type
bool CPPDataMember_Check(T *object)
PyObject * BindCppObject(Cppyy::TCppObject_t object, Cppyy::TCppType_t klass, const unsigned flags=0)
CPYCPPYY_EXTERN void * Instance_AsVoidPtr(PyObject *pyobject)
PyTypeObject CPPScope_Type
PyTypeObject LowLevelView_Type
bool CPPOverload_CheckExact(T *object)
PyTypeObject CPPDataMember_Type
std::streambuf * gOldErrorBuffer
PyTypeObject TupleOfInstances_Type
Representation of C-style array of instances.
RPY_EXPORTED ptrdiff_t GetBaseOffset(TCppType_t derived, TCppType_t base, TCppObject_t address, int direction, bool rerror=false)
RPY_EXPORTED size_t SizeOf(TCppType_t klass)
RPY_EXPORTED void AddSmartPtrType(const std::string &)
RPY_EXPORTED bool IsSubtype(TCppType_t derived, TCppType_t base)
RPY_EXPORTED void AddTypeReducer(const std::string &reducable, const std::string &reduced)
RPY_EXPORTED bool IsAggregate(TCppType_t type)
RPY_EXPORTED TCppScope_t GetScope(const std::string &scope_name)
static ECallFlags sMemoryPolicy
static bool SetGlobalSignalPolicy(bool setProtected)
static bool SetMemoryPolicy(ECallFlags e)
PyObject_HEAD char * b_ptr