7#include <unordered_map>
25 int flags = METH_VARARGS);
35 const std::string& lcname,
const std::string& rcname,
const char* op,
44std::vector<Cpp::TemplateArgInfo>
47 int argoff = 0,
int* pcnt =
nullptr);
53 if (
name ==
"const char*")
55 return PyUnicode_FromString((std::string{
name} + cpd).c_str());
62 const std::vector<std::string>& argtypes,
63 std::ostringstream& code);
65 std::ostringstream& code);
69 const std::string& signature,
void* address);
74std::unordered_map<std::string, char>
const&
TypecodeMap();
85 bool* stubbed =
nullptr);
117#if PY_VERSION_HEX < 0x030c0000
118 std::unique_ptr<PyObject, PyObjectDeleter>
fType;
119 std::unique_ptr<PyObject, PyObjectDeleter>
fTrace;
121 std::unique_ptr<PyObject, PyObjectDeleter>
fValue;
128size_t FetchError(std::vector<PyError_t>&,
bool is_cpp =
false);
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
unsigned long long PY_ULONG_LONG
std::string ConstructTemplateArgs(PyObject *pyname, PyObject *tpArgs, PyObject *args=nullptr, ArgPreference=kNone, int argoff=0, int *pcnt=nullptr)
std::string ClassName(PyObject *pyobj)
void ConstructCallbackPreamble(const std::string &retType, const std::vector< std::string > &argtypes, std::ostringstream &code)
std::string CT2CppNameS(PyObject *pytc, bool allow_voidp)
void RestorePyError(PyError_t &error)
void ConstructCallbackReturn(const std::string &retType, int nArgs, std::ostringstream &code)
size_t FetchError(std::vector< PyError_t > &, bool is_cpp=false)
PyCallable * FindBinaryOperator(PyObject *left, PyObject *right, const char *op, interop::TCppScope_t scope=interop::TCppScope_t{})
bool IsSTLIterator(const std::string &classname)
std::vector< Cpp::TemplateArgInfo > GetTemplateArgsTypes(PyObject *scope, PyObject *tpArgs, PyObject *args=nullptr, ArgPreference=kNone, int argoff=0, int *pcnt=nullptr)
bool AddToClass(PyObject *pyclass, const char *label, PyCFunction cfunc, int flags=METH_VARARGS)
PyObject * PyErr_Occurred_WithGIL()
bool InitProxy(PyObject *module, PyTypeObject *pytype, const char *name)
void SetDetailedException(std::vector< PyError_t > &&errors, PyObject *topmsg, PyObject *defexc)
PyObject * CT2CppName(PyObject *pytc, const char *cpd, bool allow_voidp)
Py_ssize_t GetBuffer(PyObject *pyobject, char tc, int size, void *&buf, bool check=true)
std::unordered_map< std::string, char > const & TypecodeMap()
std::string MapOperatorName(const std::string &name, bool bTakesParames, bool *stubbed=nullptr)
PyObject * FuncPtr2StdFunction(const std::string &retType, const std::string &signature, void *address)
PyCallable * FindUnaryOperator(PyObject *pyclass, const char *op)
unsigned long PyLongOrInt_AsULong(PyObject *pyobject)
PY_ULONG_LONG PyLongOrInt_AsULong64(PyObject *pyobject)
void operator()(PyObject *obj)
std::unique_ptr< PyObject, PyObjectDeleter > fType
std::unique_ptr< PyObject, PyObjectDeleter > fValue
std::unique_ptr< PyObject, PyObjectDeleter > fTrace