Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
PyCallable.h
Go to the documentation of this file.
1#ifndef CPYRT_PYCALLABLE_H
2#define CPYRT_PYCALLABLE_H
3
4#include <climits>
5
6// Bindings
7#include "CallContext.h"
8#include "cppjit_interop.h"
9#include "cpyrt/Reflex.h"
10
11namespace cppjit::cpyrt {
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(); }
26 virtual PyObject*
29 PyErr_Format(PyExc_ValueError, "unsupported reflex request %d or format %d",
30 request, format);
31 return nullptr;
32 };
33
34 virtual int GetPriority() = 0;
35 virtual bool IsGreedy() = 0;
36
37 virtual int GetMaxArgs() = 0;
38 virtual PyObject* GetCoVarNames() = 0;
39 virtual PyObject* GetArgDefault(int /* iarg */, bool silent = true) = 0;
40 virtual bool IsConst() { return false; }
41
42 virtual PyObject* GetScopeProxy() = 0;
44
45 virtual PyCallable* Clone() = 0;
46
47 virtual int GetArgMatchScore(PyObject* /* args_tuple */) { return INT_MAX; }
48
49 virtual bool
50 IsSimilarFnType([[maybe_unused]] cppjit::interop::TCppType_t fn_type) {
51 return false;
52 }
53
54public:
55 virtual PyObject* Call(CPPInstance*& self, cpyrt_PyArgs_t args, size_t nargsf,
56 PyObject* kwds, CallContext* ctxt = nullptr) = 0;
57};
58
59} // namespace cppjit::cpyrt
60
61#endif // !CPYRT_PYCALLABLE_H
_object PyObject
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t format
virtual PyObject * GetSignatureTypes()=0
virtual bool IsGreedy()=0
virtual bool IsSimilarFnType(cppjit::interop::TCppType_t fn_type)
Definition PyCallable.h:50
virtual PyObject * GetScopeProxy()=0
virtual bool IsConst()
Definition PyCallable.h:40
virtual PyObject * Call(CPPInstance *&self, cpyrt_PyArgs_t args, size_t nargsf, PyObject *kwds, CallContext *ctxt=nullptr)=0
virtual PyObject * GetArgDefault(int, bool silent=true)=0
virtual PyObject * GetDocString()
Definition PyCallable.h:25
virtual PyObject * GetSignature(bool show_formalargs=true)=0
virtual PyObject * GetSignatureNames()=0
virtual int GetArgMatchScore(PyObject *)
Definition PyCallable.h:47
virtual PyObject * GetCoVarNames()=0
virtual PyCallable * Clone()=0
virtual int GetPriority()=0
virtual PyObject * GetPrototype(bool show_formalargs=true)=0
virtual PyObject * Reflex(interop::Reflex::RequestId_t request, interop::Reflex::FormatId_t format=interop::Reflex::OPTIMAL)
Definition PyCallable.h:27
virtual PyObject * GetTypeName()
Definition PyCallable.h:24
virtual int GetMaxArgs()=0
virtual interop::TCppFuncAddr_t GetFunctionAddress()=0
PyObject *const * cpyrt_PyArgs_t
Definition cpyrt.h:81
const FormatId_t OPTIMAL
Definition Reflex.h:22
Cpp::TypeRef TCppType_t
Definition API.h:42
void * TCppFuncAddr_t
Definition API.h:46