Logo ROOT  
Reference Guide
Loading...
Searching...
No Matches
PyCallable.h
Go to the documentation of this file.
1#ifndef CPYCPPYY_PYCALLABLE_H
2#define CPYCPPYY_PYCALLABLE_H
3
4#include <climits>
5
6// Bindings
7#include "CPyCppyy/Reflex.h"
8#include "CallContext.h"
9
10
11namespace CPyCppyy {
12
13class CPPInstance;
14
16public:
17 virtual ~PyCallable() {}
18
19public:
20 virtual PyObject* GetSignature(bool show_formalargs = true) = 0;
23 virtual PyObject* GetPrototype(bool show_formalargs = true) = 0;
24 virtual PyObject* GetTypeName() { return GetPrototype(false); }
25 virtual PyObject* GetDocString() { return GetPrototype(); }
28 PyErr_Format(PyExc_ValueError, "unsupported reflex request %d or format %d", request, format);
29 return nullptr;
30 };
31
32 virtual int GetPriority() = 0;
33 virtual bool IsGreedy() = 0;
34
35 virtual int GetMaxArgs() = 0;
36 virtual PyObject* GetCoVarNames() = 0;
37 virtual PyObject* GetArgDefault(int /* iarg */, bool silent=true) = 0;
38 virtual bool IsConst() { return false; }
39
40 virtual PyObject* GetScopeProxy() = 0;
42
43 virtual PyCallable* Clone() = 0;
44
45 virtual int GetArgMatchScore(PyObject* /* args_tuple */) { return INT_MAX; }
46
47public:
48 virtual PyObject* Call(CPPInstance*& self,
49 CPyCppyy_PyArgs_t args, size_t nargsf, PyObject* kwds, CallContext* ctxt = nullptr) = 0;
50};
51
52} // namespace CPyCppyy
53
54#endif // !CPYCPPYY_PYCALLABLE_H
PyObject * CPyCppyy_PyArgs_t
Definition CPyCppyy.h:322
_object PyObject
virtual bool IsConst()
Definition PyCallable.h:38
virtual PyObject * GetScopeProxy()=0
virtual PyObject * GetTypeName()
Definition PyCallable.h:24
virtual PyObject * GetSignatureNames()=0
virtual PyObject * GetCoVarNames()=0
virtual PyObject * Call(CPPInstance *&self, CPyCppyy_PyArgs_t args, size_t nargsf, PyObject *kwds, CallContext *ctxt=nullptr)=0
virtual PyObject * Reflex(Cppyy::Reflex::RequestId_t request, Cppyy::Reflex::FormatId_t format=Cppyy::Reflex::OPTIMAL)
Definition PyCallable.h:26
virtual int GetArgMatchScore(PyObject *)
Definition PyCallable.h:45
virtual PyObject * GetDocString()
Definition PyCallable.h:25
virtual ~PyCallable()
Definition PyCallable.h:17
virtual PyObject * GetPrototype(bool show_formalargs=true)=0
virtual PyCallable * Clone()=0
virtual PyObject * GetSignature(bool show_formalargs=true)=0
virtual int GetPriority()=0
virtual bool IsGreedy()=0
virtual int GetMaxArgs()=0
virtual PyObject * GetSignatureTypes()=0
virtual PyObject * GetArgDefault(int, bool silent=true)=0
virtual Cppyy::TCppFuncAddr_t GetFunctionAddress()=0
int FormatId_t
Definition Reflex.h:21
const FormatId_t OPTIMAL
Definition Reflex.h:22
int RequestId_t
Definition Reflex.h:12
void * TCppFuncAddr_t
Definition cpp_cppyy.h:41