14#define CustomInstanceMethod_GET_SELF(meth) reinterpret_cast<PyMethodObject *>(meth)->im_self
15#define CustomInstanceMethod_GET_FUNCTION(meth) reinterpret_cast<PyMethodObject *>(meth)->im_func
16#if PY_VERSION_HEX >= 0x03000000
18#define CustomInstanceMethod_GET_CLASS(meth) Py_None
20#define CustomInstanceMethod_GET_CLASS(meth) PyMethod_GET_CLASS(meth)
25#if PY_VERSION_HEX < 0x03000000
29 (
char*)
"cppyy.Double",
30 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
31 Py_TPFLAGS_DEFAULT | Py_TPFLAGS_CHECKTYPES |
33 (
char*)
"CPyCppyy float object for pass by reference",
34 0, 0, 0, 0, 0, 0, 0, 0, 0,
36 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
37#if PY_VERSION_HEX >= 0x02030000
40#if PY_VERSION_HEX >= 0x02060000
43#if PY_VERSION_HEX >= 0x03040000
52 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
53 Py_TPFLAGS_DEFAULT | Py_TPFLAGS_CHECKTYPES |
55#
if PY_VERSION_HEX >= 0x03040000
56 | Py_TPFLAGS_LONG_SUBCLASS
59 (
char*)
"CPyCppyy long object for pass by reference",
60 0, 0, 0, 0, 0, 0, 0, 0, 0,
62 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
63#if PY_VERSION_HEX >= 0x02030000
66#if PY_VERSION_HEX >= 0x02060000
69#if PY_VERSION_HEX >= 0x03040000
79 if (!PyArg_ParseTuple(args,
const_cast<char*
>(
"|L"), &addr))
106 {(
char*)
"__name__", (getter)
tptc_name,
nullptr,
nullptr,
nullptr},
107 {(
char*)
"__cpp_name__", (getter)
tptc_getcppname,
nullptr,
nullptr,
nullptr},
108 {(
char*)
nullptr,
nullptr,
nullptr,
nullptr,
nullptr}
114 (
char*)
"cppyy.TypedefPointerToClass",
129 PyObject_GenericGetAttr,
130 PyObject_GenericSetAttr,
158#if PY_VERSION_HEX >= 0x02030000
161#if PY_VERSION_HEX >= 0x02060000
164#if PY_VERSION_HEX >= 0x03040000
167#if PY_VERSION_HEX >= 0x03080000
170#if PY_VERSION_HEX >= 0x030c0000
173#if PY_VERSION_HEX >= 0x030d0000
181#ifndef PyMethod_MAXFREELIST
182#define PyMethod_MAXFREELIST 256
187#
if PY_VERSION_HEX < 0x03000000
195 if (!PyCallable_Check(func)) {
196 PyErr_Format(PyExc_SystemError,
197 "%s:%d: bad argument to internal function", __FILE__, __LINE__);
203 free_list = (PyMethodObject*)(im->im_self);
212 im->im_weakreflist =
nullptr;
217#if PY_VERSION_HEX < 0x03000000
219 im->im_class = pyclass;
221 PyObject_GC_Track(im);
230 PyObject_GC_UnTrack(im);
232 if (im->im_weakreflist !=
nullptr)
233 PyObject_ClearWeakRefs((
PyObject*)im);
235 Py_DECREF(im->im_func);
236 Py_XDECREF(im->im_self);
237#if PY_VERSION_HEX < 0x03000000
238 Py_XDECREF(im->im_class);
264 if (1 <= argc && PyObject_IsInstance(PyTuple_GET_ITEM(args, 0), pyclass) == 1) {
265 self = PyTuple_GET_ITEM(args, 0);
267 PyObject* newArgs = PyTuple_New(argc-1);
268 for (
int i = 1; i < argc; ++i) {
271 PyTuple_SET_ITEM(newArgs, i-1,
v);
277 return PyMethod_Type.tp_call(meth, args, kw);
288 func->m_self =
nullptr;
300#
if PY_VERSION_HEX < 0x03000000
318 (
char*)
"cppyy.InstanceMethod",
321 0, 0, 0, 0, 0, 0, 0, 0, 0,
324 Py_TPFLAGS_DEFAULT | Py_TPFLAGS_CHECKTYPES |
326 (
char*)
"CPyCppyy custom instance method (internal)",
327 0, 0, 0, 0, 0, 0, 0, 0, 0,
331 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
332#
if PY_VERSION_HEX >= 0x02030000
335#
if PY_VERSION_HEX >= 0x02060000
338#
if PY_VERSION_HEX >= 0x03040000
341#
if PY_VERSION_HEX >= 0x03080000
344#
if PY_VERSION_HEX >= 0x030c0000
347#
if PY_VERSION_HEX >= 0x030d0000
355 PyObject_GC_UnTrack(ii);
379 (
char*)
"cppyy.indexiter",
383 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
391 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
392#
if PY_VERSION_HEX >= 0x02030000
395#
if PY_VERSION_HEX >= 0x02060000
398#
if PY_VERSION_HEX >= 0x03040000
401#
if PY_VERSION_HEX >= 0x03080000
404#
if PY_VERSION_HEX >= 0x030c0000
407#
if PY_VERSION_HEX >= 0x030d0000
450 (
char*)
"cppyy.vectoriter",
454 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
462 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
463#
if PY_VERSION_HEX >= 0x02030000
466#
if PY_VERSION_HEX >= 0x02060000
469#
if PY_VERSION_HEX >= 0x03040000
472#
if PY_VERSION_HEX >= 0x03080000
475#
if PY_VERSION_HEX >= 0x030c0000
478#
if PY_VERSION_HEX >= 0x030d0000
#define CPyCppyy_PyCFunction_Call
static PyObject * PyObject_CallMethodOneArg(PyObject *obj, PyObject *name, PyObject *arg)
#define CPyCppyy_PyText_FromString
#define PyVarObject_HEAD_INIT(type, size)
#define PyMethod_MAXFREELIST
#define CustomInstanceMethod_GET_SELF(meth)
#define CustomInstanceMethod_GET_FUNCTION(meth)
#define CustomInstanceMethod_GET_CLASS(meth)
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
virtual PyObject * FromMemory(void *address)
static PyObject * indexiter_iternext(indexiterobject *ii)
PyObject * CustomInstanceMethod_New(PyObject *func, PyObject *self, PyObject *pyclass)
PyTypeObject VectorIter_Type
PyObject * GetScopeProxy(Cppyy::TCppScope_t)
PyTypeObject CustomInstanceMethod_Type
static PyMethodObject * free_list
PyTypeObject RefFloat_Type
Custom "builtins," detectable by type, for pass by ref and improved performance.
static PyGetSetDef tptc_getset[]
PyTypeObject TypedefPointerToClass_Type
static PyObject * tptc_call(typedefpointertoclassobject *self, PyObject *args, PyObject *)
PyObject * BindCppObjectNoCast(Cppyy::TCppObject_t object, Cppyy::TCppType_t klass, const unsigned flags=0)
static void vectoriter_dealloc(vectoriterobject *vi)
static int indexiter_traverse(indexiterobject *ii, visitproc visit, void *arg)
static PyObject * im_descr_get(PyObject *meth, PyObject *obj, PyObject *pyclass)
static PyObject * vectoriter_iternext(vectoriterobject *vi)
static PyObject * tptc_name(typedefpointertoclassobject *self, void *)
PyTypeObject IndexIter_Type
static PyObject * tptc_getcppname(typedefpointertoclassobject *self, void *)
static void indexiter_dealloc(indexiterobject *ii)
PyObject * BindCppObject(Cppyy::TCppObject_t object, Cppyy::TCppType_t klass, const unsigned flags=0)
static void im_dealloc(PyMethodObject *im)
static PyObject * im_call(PyObject *meth, PyObject *args, PyObject *kw)
RPY_EXPORTED std::string GetScopedFinalName(TCppType_t type)
PyObject_HEAD PyObject * ii_container
PyObject_HEAD Cppyy::TCppType_t fCppType
Cppyy::TCppType_t vi_klass
CPyCppyy::Converter * vi_converter