Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
CPPConstructor.h
Go to the documentation of this file.
1#ifndef CPYRT_CPPCONSTRUCTOR_H
2#define CPYRT_CPPCONSTRUCTOR_H
3
4// Bindings
5#include "CPPMethod.h"
6
7namespace cppjit::cpyrt {
8
9class CPPConstructor : public CPPMethod {
10public:
12
13public:
14 PyObject* GetDocString() override;
18
19 PyCallable* Clone() override { return new CPPConstructor(*this); }
20 PyObject* Call(CPPInstance*& self, cpyrt_PyArgs_t args, size_t nargsf,
21 PyObject* kwds, CallContext* ctxt = nullptr) override;
22
23protected:
24 bool InitExecutor_(Executor*&, CallContext* ctxt = nullptr) override;
25 bool ResultIsPyObject() const override { return false; }
26};
27
28// specialization for multiple inheritance disambiguation
30public:
34
35public:
36 PyCallable* Clone() override { return new CPPMultiConstructor(*this); }
37 PyObject* Call(CPPInstance*& self, cpyrt_PyArgs_t args, size_t nargsf,
38 PyObject* kwds, CallContext* ctxt = nullptr) override;
39
40private:
41 Py_ssize_t fNumBases;
42};
43
44// specializations of prohibiting constructors
46public:
47 using CPPConstructor::CPPConstructor;
48
49public:
50 PyCallable* Clone() override {
51 return new CPPAbstractClassConstructor(*this);
52 }
53 PyObject* Call(CPPInstance*& self, cpyrt_PyArgs_t args, size_t nargsf,
54 PyObject* kwds, CallContext* ctxt = nullptr) override;
55};
56
58public:
59 using CPPConstructor::CPPConstructor;
60
61public:
62 PyCallable* Clone() override { return new CPPNamespaceConstructor(*this); }
63 PyObject* Call(CPPInstance*& self, cpyrt_PyArgs_t args, size_t nargsf,
64 PyObject* kwds, CallContext* ctxt = nullptr) override;
65};
66
68public:
69 using CPPConstructor::CPPConstructor;
70
71public:
72 PyCallable* Clone() override {
73 return new CPPIncompleteClassConstructor(*this);
74 }
75 PyObject* Call(CPPInstance*& self, cpyrt_PyArgs_t args, size_t nargsf,
76 PyObject* kwds, CallContext* ctxt = nullptr) override;
77};
78
80public:
81 using CPPConstructor::CPPConstructor;
82
83public:
84 PyCallable* Clone() override {
85 return new CPPAllPrivateClassConstructor(*this);
86 }
87 PyObject* Call(CPPInstance*& self, cpyrt_PyArgs_t args, size_t nargsf,
88 PyObject* kwds, CallContext* ctxt = nullptr) override;
89};
90
91} // namespace cppjit::cpyrt
92
93#endif // !CPYRT_CPPCONSTRUCTOR_H
_object PyObject
PyObject * Call(CPPInstance *&self, cpyrt_PyArgs_t args, size_t nargsf, PyObject *kwds, CallContext *ctxt=nullptr) override
PyObject * Call(CPPInstance *&self, cpyrt_PyArgs_t args, size_t nargsf, PyObject *kwds, CallContext *ctxt=nullptr) override
bool ResultIsPyObject() const override
bool InitExecutor_(Executor *&, CallContext *ctxt=nullptr) override
PyObject * Call(CPPInstance *&self, cpyrt_PyArgs_t args, size_t nargsf, PyObject *kwds, CallContext *ctxt=nullptr) override
PyCallable * Clone() override
PyObject * GetDocString() override
PyObject * Reflex(interop::Reflex::RequestId_t, interop::Reflex::FormatId_t=interop::Reflex::OPTIMAL) override
PyObject * Call(CPPInstance *&self, cpyrt_PyArgs_t args, size_t nargsf, PyObject *kwds, CallContext *ctxt=nullptr) override
CPPMethod(interop::TCppScope_t scope, interop::TCppMethod_t method)
PyObject * Call(CPPInstance *&self, cpyrt_PyArgs_t args, size_t nargsf, PyObject *kwds, CallContext *ctxt=nullptr) override
CPPMultiConstructor(interop::TCppScope_t scope, interop::TCppMethod_t method)
CPPMultiConstructor & operator=(const CPPMultiConstructor &)
PyCallable * Clone() override
PyObject * Call(CPPInstance *&self, cpyrt_PyArgs_t args, size_t nargsf, PyObject *kwds, CallContext *ctxt=nullptr) override
PyObject *const * cpyrt_PyArgs_t
Definition cpyrt.h:81
const FormatId_t OPTIMAL
Definition Reflex.h:22
Cpp::FuncRef TCppMethod_t
Definition API.h:44
Cpp::DeclRef TCppScope_t
Definition API.h:41