4 #ifndef PYROOT_TMETHODHOLDER_H
5 #define PYROOT_TMETHODHOLDER_H
20 class TMethodHolder :
public PyCallable {
22 TMethodHolder( Cppyy::TCppScope_t scope, Cppyy::TCppMethod_t method );
23 TMethodHolder(
const TMethodHolder& );
24 TMethodHolder& operator=(
const TMethodHolder& );
25 virtual ~TMethodHolder();
28 virtual PyObject* GetSignature();
29 virtual PyObject* GetPrototype();
30 virtual Int_t GetPriority();
32 virtual Int_t GetMaxArgs();
33 virtual PyObject* GetCoVarNames();
34 virtual PyObject* GetArgDefault( Int_t iarg );
35 virtual PyObject* GetScopeProxy();
37 virtual PyCallable* Clone() {
return new TMethodHolder( *
this ); }
40 virtual PyObject* Call(
41 ObjectProxy*&
self, PyObject* args, PyObject* kwds, TCallContext* ctxt = 0 );
43 virtual Bool_t Initialize( TCallContext* ctxt = 0 );
44 virtual PyObject* PreProcessArgs( ObjectProxy*&
self, PyObject* args, PyObject* kwds );
45 virtual Bool_t ConvertAndSetArgs( PyObject* args, TCallContext* ctxt = 0 );
46 virtual PyObject* Execute(
void*
self, ptrdiff_t offset, TCallContext* ctxt = 0 );
49 Cppyy::TCppMethod_t GetMethod() {
return fMethod; }
50 Cppyy::TCppScope_t GetScope() {
return fScope; }
51 TExecutor* GetExecutor() {
return fExecutor; }
52 std::string GetSignatureString();
53 std::string GetReturnTypeName();
55 virtual Bool_t InitExecutor_( TExecutor*&, TCallContext* ctxt = 0 );
58 void Copy_(
const TMethodHolder& );
59 void Destroy_()
const;
61 PyObject* CallFast(
void*, ptrdiff_t, TCallContext* );
62 PyObject* CallSafe(
void*, ptrdiff_t, TCallContext* );
64 Bool_t InitConverters_();
66 void SetPyError_( PyObject* msg );
70 Cppyy::TCppMethod_t fMethod;
71 Cppyy::TCppScope_t fScope;
75 std::vector< TConverter* > fConverters;
81 Bool_t fIsInitialized;
86 #endif // !PYROOT_METHODHOLDER_H