29 clName.c_str(), clName.c_str(), this->GetMethod() ? this->GetSignatureString().c_str() :
"()");
37 if (fArgsRequired == -1 && !this->
Initialize(ctxt))
41 if (!(args = this->PreProcessArgs(self, args, kwds)))
47 PyErr_SetString(PyExc_ReferenceError,
"no python object allocated");
53 PyErr_SetString(PyExc_ReferenceError,
54 "object already constructed; use __assign__ instead of __init__");
60 ptrdiff_t address = 0;
67 PyErr_SetString(PyExc_TypeError,
"can not construct incomplete C++ class");
74 PyErr_SetString(PyExc_TypeError,
"dispatcher proxy was never created");
78 PyObject* pyobj = PyObject_Call(dispproxy, args, kwds);
83 address = (ptrdiff_t)((
CPPInstance*)pyobj)->GetObject();
86 PyObject* pyoff = PyObject_CallMethod(dispproxy, (
char*)
"_dispatchptr_offset",
nullptr);
87 size_t disp_offset = PyLong_AsSsize_t(pyoff);
96 if (!this->ConvertAndSetArgs(args, ctxt)) {
101 address = (ptrdiff_t)this->Execute(
nullptr, 0, ctxt);
113 self->
Set((
void*)address);
125 Py_TYPE(self) = (PyTypeObject*)pyclass;
135 if (!PyErr_Occurred())
136 PyErr_SetString(PyExc_TypeError,
const_cast<char*
>(
155 PyErr_Format(PyExc_TypeError,
"cannot instantiate abstract class \'%s\'"
156 " (from derived classes, use super() instead)",
166 PyErr_Format(PyExc_TypeError,
"cannot instantiate namespace \'%s\'",
176 PyErr_Format(PyExc_TypeError,
"cannot instantiate incomplete class \'%s\'",
#define CPyCppyy_PyText_FromFormat
Cppyy::TCppType_t fUnderlyingType
virtual PyObject * Call(CPPInstance *&, PyObject *, PyObject *, CallContext *=nullptr)
virtual PyObject * GetDocString()
virtual bool InitExecutor_(Executor *&, CallContext *ctxt=nullptr)
virtual PyObject * Call(CPPInstance *&self, PyObject *args, PyObject *kwds, CallContext *ctxt=nullptr)
virtual PyObject * Call(CPPInstance *&, PyObject *, PyObject *, CallContext *=nullptr)
void Set(void *address, EFlags flags=kDefault)
void SetSmart(PyObject *smart_type)
Cppyy::TCppType_t ObjectIsA(bool check_smart=true) const
virtual PyObject * Call(CPPInstance *&, PyObject *, PyObject *, CallContext *=nullptr)
static bool RegisterPyObject(CPPInstance *pyobj, void *cppobj)
PyObject * GetScopeProxy(Cppyy::TCppScope_t)
CPYCPPYY_EXTERN Executor * CreateExecutor(const std::string &name)
PyObject * CreateScopeProxy(Cppyy::TCppScope_t)
RPY_EXPORTED std::string GetFinalName(TCppType_t type)
RPY_EXPORTED std::string GetScopedFinalName(TCppType_t type)
RPY_EXPORTED TCppScope_t GetScope(const std::string &scope_name)
void Initialize(Bool_t useTMVAStyle=kTRUE)