16#define CustomInstanceMethod_GET_SELF(meth) \
17 reinterpret_cast<PyMethodObject*>(meth)->im_self
18#define CustomInstanceMethod_GET_FUNCTION(meth) \
19 reinterpret_cast<PyMethodObject*>(meth)->im_func
21#define CustomInstanceMethod_GET_CLASS(meth) Py_None
29 if (!PyArg_ParseTuple(args,
const_cast<char*
>(
"|L"), &addr))
37 return PyUnicode_FromString(
50 return PyUnicode_FromString(
"<unknown>*");
55 {(
char*)
"__name__", (getter)
tptc_name,
nullptr,
nullptr,
nullptr},
56 {(
char*)
"__cpp_name__", (getter)
tptc_getcppname,
nullptr,
nullptr,
nullptr},
57 {(
char*)
nullptr,
nullptr,
nullptr,
nullptr,
nullptr}};
60 PyVarObject_HEAD_INIT(&PyType_Type,
61 0)(
char*)
"cppjit.TypedefPointerToClass",
76 PyObject_GenericGetAttr,
77 PyObject_GenericSetAttr,
114#ifndef PyMethod_MAXFREELIST
115#define PyMethod_MAXFREELIST 256
123 if (!PyCallable_Check(func)) {
124 PyErr_Format(PyExc_SystemError,
"%s:%d: bad argument to internal function",
131 free_list = (PyMethodObject*)(im->im_self);
139 im->im_weakreflist =
nullptr;
144 PyObject_GC_Track(im);
152 PyObject_GC_UnTrack(im);
154 if (im->im_weakreflist !=
nullptr)
155 PyObject_ClearWeakRefs((
PyObject*)im);
157 Py_DECREF(im->im_func);
158 Py_XDECREF(im->im_self);
180 Py_ssize_t argc = PyTuple_GET_SIZE(args);
183 PyObject_IsInstance(PyTuple_GET_ITEM(args, 0), pyclass) == 1) {
184 self = PyTuple_GET_ITEM(args, 0);
186 PyObject* newArgs = PyTuple_New(argc - 1);
187 for (
int i = 1; i < argc; ++i) {
190 PyTuple_SET_ITEM(newArgs, i - 1,
v);
196 return PyMethod_Type.tp_call(meth, args, kw);
201 PyCFunctionObject* func =
209 func->m_self =
nullptr;
234 PyVarObject_HEAD_INIT(&PyType_Type,
235 0)(
char*)
"cppjit.InstanceMethod",
253 Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
254 (
char*)
"cpyrt custom instance method (internal)",
287 PyObject_GC_UnTrack(ii);
311 PyVarObject_HEAD_INIT(&PyType_Type, 0)(
char*)
"cppjit.indexiter",
329 Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
404 PyVarObject_HEAD_INIT(&PyType_Type,
405 0)(
char*)
"cppjit.vectoriter",
423 Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
#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)
#define CPYRT_PYTYPE_TAIL
PyObject * CustomInstanceMethod_New(PyObject *func, PyObject *self, PyObject *)
static PyObject * tptc_name(typedefpointertoclassobject *self, void *)
static PyMethodObject * free_list
PyTypeObject TypedefPointerToClass_Type
PyObject * GetScopeProxy(interop::TCppScope_t)
PyObject * BindCppObject(interop::TCppObject_t object, interop::TCppScope_t klass, const unsigned flags=0)
static PyObject * tptc_call(typedefpointertoclassobject *self, PyObject *args, PyObject *)
static PyObject * im_call(PyObject *meth, PyObject *args, PyObject *kw)
PyTypeObject CustomInstanceMethod_Type
static PyObject * tptc_getcppname(typedefpointertoclassobject *self, void *)
PyObject * BindCppObjectNoCast(interop::TCppObject_t object, interop::TCppScope_t klass, const unsigned flags=0)
static PyObject * im_descr_get(PyObject *meth, PyObject *obj, PyObject *pyclass)
static PyObject * indexiter_iternext(indexiterobject *ii)
static void vectoriter_dealloc(vectoriterobject *vi)
PyTypeObject VectorIter_Type
PyTypeObject IndexIter_Type
static int indexiter_traverse(indexiterobject *ii, visitproc visit, void *arg)
static void indexiter_dealloc(indexiterobject *ii)
static PyObject * vectoriter_iternext(vectoriterobject *vi)
static void im_dealloc(PyMethodObject *im)
static PyGetSetDef tptc_getset[]
Cpp::ObjectRef TCppObject_t
std::string GetScopedFinalName(TCppScope_t type)
PyObject_HEAD PyObject * ii_container
Custom "builtins," detectable by type, for pass by ref and improved performance.
PyObject_HEAD interop::TCppScope_t fCppType
interop::TCppScope_t vi_klass