35 clName.c_str(), clName.c_str(), this->GetMethod() ? this->GetSignatureString().c_str() :
"()");
71 PyErr_SetString(PyExc_ReferenceError,
"no python object allocated");
76 PyErr_SetString(PyExc_ReferenceError,
77 "object already constructed; use __assign__ instead of __init__");
105 PyErr_SetString(PyExc_TypeError,
"can not construct incomplete C++ class");
112 PyErr_SetString(PyExc_TypeError,
"dispatcher proxy was never created");
117 PyErr_SetString(PyExc_TypeError,
const_cast<char*
>((
127 address = (intptr_t)((
CPPInstance*)pyobj)->GetObject();
130 PyObject* res = PyObject_CallMethodObjArgs(
134 Py_DECREF(dispproxy);
143 address = (intptr_t)this->
Execute(
nullptr, 0, ctxt);
152 self->
Set((
void*)address);
176 if (!PyErr_Occurred())
177 PyErr_SetString(PyExc_TypeError,
const_cast<char*
>(
225#if PY_VERSION_HEX >= 0x03080000
235 PyObject* args = PyTuple_New(nargs);
237 Py_INCREF(cargs.
fArgs[i]);
238 PyTuple_SET_ITEM(args, i, cargs.
fArgs[i]);
249 if (PyTuple_CheckExact(args) && PyTuple_GET_SIZE(args)) {
252 bool isAllTuples =
true;
255 PyObject* argi = PyTuple_GET_ITEM(args, i);
256 if (!PyTuple_CheckExact(argi)) {
260 nArgsTot += PyTuple_GET_SIZE(argi);
276 PyObject* argi = PyTuple_GET_ITEM(args, i);
277 for (
Py_ssize_t j = 0; j < PyTuple_GET_SIZE(argi); ++j) {
278 PyObject* item = PyTuple_GET_ITEM(argi, j);
280 PyTuple_SET_ITEM(newArgs, idx, item);
298 PyObject* item = PyTuple_GET_ITEM(args, i);
300 PyTuple_SET_ITEM(newArgs, i, item);
311#if PY_VERSION_HEX < 0x03080000
314 nargs = PyTuple_GET_SIZE(args);
316#if PY_VERSION_HEX >= 0x03080000
318 auto argsu = std::unique_ptr<PyObject*[]>{
new PyObject*[nargs]};
320 argsu[i] = PyTuple_GET_ITEM(args, i);
339#
if PY_VERSION_HEX >= 0x03080000
349 PyErr_Format(PyExc_TypeError,
"cannot instantiate abstract class \'%s\'"
350 " (from derived classes, use super() instead)",
361 PyErr_Format(PyExc_TypeError,
"cannot instantiate namespace \'%s\'",
372 PyErr_Format(PyExc_TypeError,
"cannot instantiate incomplete class \'%s\'",
382 PyErr_Format(PyExc_TypeError,
"cannot instantiate class \'%s\' that has no public constructors",
static Py_ssize_t CPyCppyy_PyArgs_GET_SIZE(CPyCppyy_PyArgs_t args, size_t)
PyObject * CPyCppyy_PyArgs_t
#define Py_SET_TYPE(ob, type)
PyObject * CPyCppyy_PyObject_Call(PyObject *cb, PyObject *args, size_t, PyObject *kwds)
#define CPyCppyy_PyText_FromFormat
#define CPyCppyy_PyText_FromString
PyObject * Call(CPPInstance *&self, CPyCppyy_PyArgs_t args, size_t nargsf, PyObject *kwds, CallContext *ctxt=nullptr) override
PyObject * Call(CPPInstance *&self, CPyCppyy_PyArgs_t args, size_t nargsf, PyObject *kwds, CallContext *ctxt=nullptr) override
PyObject * Reflex(Cppyy::Reflex::RequestId_t, Cppyy::Reflex::FormatId_t=Cppyy::Reflex::OPTIMAL) override
bool InitExecutor_(Executor *&, CallContext *ctxt=nullptr) override
PyObject * GetDocString() override
PyObject * Call(CPPInstance *&self, CPyCppyy_PyArgs_t args, size_t nargsf, PyObject *kwds, CallContext *ctxt=nullptr) override
PyObject * Call(CPPInstance *&self, CPyCppyy_PyArgs_t args, size_t nargsf, PyObject *kwds, CallContext *ctxt=nullptr) override
void Set(void *address, EFlags flags=kDefault)
void SetSmart(PyObject *smart_type)
Cppyy::TCppType_t ObjectIsA(bool check_smart=true) const
bool Initialize(CallContext *ctxt=nullptr)
virtual bool ProcessArgs(PyCallArgs &args)
bool ConvertAndSetArgs(CPyCppyy_PyArgs_t, size_t nargsf, CallContext *ctxt=nullptr)
PyObject * Execute(void *self, ptrdiff_t offset, CallContext *ctxt=nullptr)
Cppyy::TCppScope_t GetScope()
CPPMethod & operator=(const CPPMethod &)
Cppyy::TCppMethod_t GetMethod()
CPPMultiConstructor(Cppyy::TCppScope_t scope, Cppyy::TCppMethod_t method)
CPPMultiConstructor & operator=(const CPPMultiConstructor &)
PyObject * Call(CPPInstance *&self, CPyCppyy_PyArgs_t args, size_t nargsf, PyObject *kwds, CallContext *ctxt=nullptr) override
PyObject * Call(CPPInstance *&self, CPyCppyy_PyArgs_t args, size_t nargsf, PyObject *kwds, CallContext *ctxt=nullptr) override
static bool RegisterPyObject(CPPInstance *pyobj, void *cppobj)
virtual PyObject * Reflex(Cppyy::Reflex::RequestId_t request, Cppyy::Reflex::FormatId_t format=Cppyy::Reflex::OPTIMAL)
PyObject * GetScopeProxy(Cppyy::TCppScope_t)
PyObject * CreateScopeProxy(Cppyy::TCppScope_t, const unsigned flags=0)
CPYCPPYY_EXTERN Executor * CreateExecutor(const std::string &name, cdims_t=0)
bool CPPInstance_Check(T *object)
PyObject * gNullPtrObject
const RequestId_t RETURN_TYPE
const FormatId_t AS_STRING
RPY_EXPORTED std::string GetScopedFinalName(TCppType_t type)
RPY_EXPORTED TCppIndex_t GetNumBases(TCppType_t type)
RPY_EXPORTED std::string GetFinalName(TCppType_t type)
RPY_EXPORTED bool IsExplicit(TCppMethod_t method)