1#ifndef CPYRT_CPPOVERLOAD_H
2#define CPYRT_CPPOVERLOAD_H
21 for (Py_ssize_t i = 0; i < nargs; ++i) {
25 hash += (uint64_t)Py_TYPE(pyobj);
26#if PY_VERSION_HEX >= 0x030e0000
31 hash += (uint64_t)(Py_REFCNT(pyobj) == 1 ? 1 : 0);
69 void Set(
const std::string&
name, std::vector<PyCallable*>& methods);
104 std::vector<PyCallable*>& methods) {
115 std::vector<PyCallable*>
p;
bool PyUnstable_Object_IsUniqueReferencedTemporary(PyObject *pyobject)
winID h TVirtualViewer3D TVirtualGLPainter p
void AdoptMethod(PyCallable *pc)
void MergeOverload(CPPOverload *meth)
std::vector< std::pair< uint64_t, PyCallable * > > DispatchMap_t
MethodInfo_t * fMethodInfo
std::vector< PyCallable * > Methods_t
PyObject * FindOverload(const std::string &signature, int want_const=-1)
const std::string & GetName() const
vectorcallfunc fVectorCall
void Set(const std::string &name, std::vector< PyCallable * > &methods)
PyObject_HEAD CPPInstance * fSelf
PyObject *const * cpyrt_PyArgs_t
static Py_ssize_t cpyrt_PyArgs_GET_SIZE(cpyrt_PyArgs_t, size_t nargsf)
static PyObject * cpyrt_PyArgs_GET_ITEM(cpyrt_PyArgs_t args, Py_ssize_t i)
bool CPPOverload_Check(T *object)
uint64_t HashSignature(cpyrt_PyArgs_t args, size_t nargsf)
PyTypeObject CPPOverload_Type
bool CPPOverload_CheckExact(T *object)
CPPOverload * CPPOverload_New(const std::string &name, std::vector< PyCallable * > &methods)
MethodInfo_t & operator=(const MethodInfo_t &)=delete
CPPOverload::DispatchMap_t fDispatchMap
CPPOverload::Methods_t fMethods
MethodInfo_t(const MethodInfo_t &)=delete