// @(#)root/pyroot:$Id$ // Author: Wim Lavrijsen, Aug 2004 #ifndef PYROOT_PYCALLABLE_H #define PYROOT_PYCALLABLE_H namespace PyROOT { /** Python callable object interface @author WLAV @date 01/27/2009 @version 5.0 */ class ObjectProxy; class PyCallable { public: virtual ~PyCallable() {} public: virtual PyObject* GetSignature() = 0; virtual PyObject* GetPrototype() = 0; virtual PyObject* GetDocString() { return GetPrototype(); } virtual Int_t GetPriority() { return 0; } virtual Int_t GetMaxArgs() { return 0; } virtual PyObject* GetArgSpec( Int_t /* iarg */ ) { return 0; } virtual PyObject* GetArgDefault( Int_t /* iarg */ ) { return 0; } virtual PyObject* GetScope() { return 0; } virtual PyCallable* Clone() = 0; public: virtual PyObject* operator()( ObjectProxy* self, PyObject* args, PyObject* kwds, Long_t user = 0, Bool_t release_gil = kFALSE ) = 0; }; } // namespace PyROOT #endif // !PYROOT_PYCALLABLE_H