ROOT  6.07/01
Reference Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Executors.h
Go to the documentation of this file.
1 // @(#)root/pyroot:$Id$
2 // Author: Wim Lavrijsen, Jan 2005
3 #ifndef PYROOT_EXECUTORS_H
4 #define PYROOT_EXECUTORS_H
5 
6 // Bindings
7 #include "TCallContext.h"
8 
9 // Standard
10 #include <string>
11 #include <map>
12 
13 
14 namespace PyROOT {
15 
16  class TExecutor {
17  public:
18  virtual ~TExecutor() {}
19  virtual PyObject* Execute(
21  };
22 
23 #define PYROOT_DECLARE_BASIC_EXECUTOR( name ) \
24  class T##name##Executor : public TExecutor { \
25  public: \
26  virtual PyObject* Execute( \
27  Cppyy::TCppMethod_t, Cppyy::TCppObject_t, TCallContext* ); \
28  }
29 
30 // executors for built-ins
32  PYROOT_DECLARE_BASIC_EXECUTOR( BoolConstRef );
34  PYROOT_DECLARE_BASIC_EXECUTOR( CharConstRef );
36  PYROOT_DECLARE_BASIC_EXECUTOR( UCharConstRef );
41  PYROOT_DECLARE_BASIC_EXECUTOR( ULongLong );
44  PYROOT_DECLARE_BASIC_EXECUTOR( LongDouble );
47 
48 // pointer/array executors
49  PYROOT_DECLARE_BASIC_EXECUTOR( VoidArray );
50  PYROOT_DECLARE_BASIC_EXECUTOR( BoolArray );
51  PYROOT_DECLARE_BASIC_EXECUTOR( ShortArray );
52  PYROOT_DECLARE_BASIC_EXECUTOR( UShortArray );
54  PYROOT_DECLARE_BASIC_EXECUTOR( UIntArray );
55  PYROOT_DECLARE_BASIC_EXECUTOR( LongArray );
56  PYROOT_DECLARE_BASIC_EXECUTOR( ULongArray );
57  PYROOT_DECLARE_BASIC_EXECUTOR( FloatArray );
58  PYROOT_DECLARE_BASIC_EXECUTOR( DoubleArray );
59 
60 // special cases
61  PYROOT_DECLARE_BASIC_EXECUTOR( STLString );
63 
64  class TCppObjectExecutor : public TExecutor {
65  public:
67  virtual PyObject* Execute(
69 
70  protected:
72  };
73 
75  public:
77  virtual PyObject* Execute(
79  };
80 
81  class TRefExecutor : public TExecutor {
82  public:
84 
85  public:
86  virtual Bool_t SetAssignable( PyObject* );
87 
88  protected:
90  };
91 
92  PYROOT_DECLARE_BASIC_EXECUTOR( Constructor );
94 
95 #define PYROOT_DECLARE_BASIC_REFEXECUTOR( name ) \
96  class T##name##RefExecutor : public TRefExecutor { \
97  public: \
98  virtual PyObject* Execute( \
99  Cppyy::TCppMethod_t, Cppyy::TCppObject_t, TCallContext* ); \
100  }
101 
115  PYROOT_DECLARE_BASIC_REFEXECUTOR( LongDouble );
117 
118 // special cases
120  public:
122  virtual PyObject* Execute(
124 
125  protected:
127  };
128 
130  public:
132  virtual PyObject* Execute(
134  };
135 
137  public:
139  virtual PyObject* Execute(
141  };
142 
144  public:
146  : TCppObjectExecutor ( klass ), fArraySize( array_size ) {}
147  virtual PyObject* Execute(
149 
150  protected:
152  };
153 
154 // smart pointer executors
156  public:
158  Cppyy::TCppMethod_t deref ) : fClass( klass ), fRawPtrType( rawPtrType ), fDereferencer( deref ) {}
159 
160  virtual PyObject* Execute(
162 
163  protected:
167  };
168 
170  public:
172 
173  virtual PyObject* Execute(
175  };
176 
178  public:
180  Cppyy::TCppMethod_t deref ) : fClass( klass ), fRawPtrType( rawPtrType ), fDereferencer( deref ) {}
181 
182  virtual PyObject* Execute(
184 
185  protected:
189  };
190 
191 // create executor from fully qualified type
192  TExecutor* CreateExecutor( const std::string& fullType,
193  Bool_t manage_smart_ptr = kTRUE );
194 
195 } // namespace PyROOT
196 
197 #endif // !PYROOT_EXECUTORS_H
virtual PyObject * Execute(Cppyy::TCppMethod_t, Cppyy::TCppObject_t, TCallContext *)
Definition: Executors.cxx:535
PyObject * fAssignable
Definition: Executors.h:89
virtual ~TExecutor()
Definition: Executors.h:18
PYROOT_DECLARE_BASIC_REFEXECUTOR(Bool)
TCppScope_t TCppType_t
Definition: Cppyy.h:13
virtual PyObject * Execute(Cppyy::TCppMethod_t, Cppyy::TCppObject_t, TCallContext *)
execute <method> with argument <self, ctxt>, construct python ROOT object (ignoring ref) return ptr v...
Definition: Executors.cxx:485
const char * Int
TCppObjectArrayExecutor(Cppyy::TCppType_t klass, Py_ssize_t array_size)
Definition: Executors.h:145
PYROOT_DECLARE_BASIC_EXECUTOR(Bool)
TExecutor * CreateExecutor(const std::string &fullType, Bool_t manage_smart_ptr=kTRUE)
Definition: Executors.cxx:625
virtual PyObject * Execute(Cppyy::TCppMethod_t, Cppyy::TCppObject_t, TCallContext *)=0
const char * Long
bool Bool_t
Definition: RtypesCore.h:59
const char * Char
const char * UShort
Cppyy::TCppType_t fClass
Definition: Executors.h:71
const char * UInt
virtual PyObject * Execute(Cppyy::TCppMethod_t, Cppyy::TCppObject_t, TCallContext *)
execute <method> with argument <self, ctxt>, construct python ROOT object return ptr value ...
Definition: Executors.cxx:476
virtual PyObject * Execute(Cppyy::TCppMethod_t, Cppyy::TCppObject_t, TCallContext *)
execute <method> with argument <self, ctxt>, construct TTupleOfInstances from return value ...
Definition: Executors.cxx:598
TCppObjectBySmartPtrRefExecutor(Cppyy::TCppType_t klass, Cppyy::TCppType_t rawPtrType, Cppyy::TCppMethod_t deref)
Definition: Executors.h:179
const char * UChar
const char * Float
virtual PyObject * Execute(Cppyy::TCppMethod_t, Cppyy::TCppObject_t, TCallContext *)
smart pointer excutor
Definition: Executors.cxx:495
ptrdiff_t TCppMethod_t
Definition: Cppyy.h:15
virtual PyObject * Execute(Cppyy::TCppMethod_t, Cppyy::TCppObject_t, TCallContext *)
execute <method> with argument <self, ctxt>, construct python proxy object return value ...
Definition: Executors.cxx:399
virtual PyObject * Execute(Cppyy::TCppMethod_t, Cppyy::TCppObject_t, TCallContext *)
execution will bring a temporary in existence
Definition: Executors.cxx:408
virtual PyObject * Execute(Cppyy::TCppMethod_t, Cppyy::TCppObject_t, TCallContext *)
smart pointer excutor
Definition: Executors.cxx:518
const char * ULong
const char * Double
virtual Bool_t SetAssignable(PyObject *)
prepare "buffer" for by-ref returns, used with setitem
Definition: Executors.cxx:237
Cppyy::TCppType_t fClass
Definition: Executors.h:126
Global variables class (global variables are obtained from CINT).
Definition: TGlobal.h:29
void * TCppObject_t
Definition: Cppyy.h:14
const char * Bool
TCppObjectRefExecutor(Cppyy::TCppType_t klass)
Definition: Executors.h:121
TCppObjectBySmartPtrExecutor(Cppyy::TCppType_t klass, Cppyy::TCppType_t rawPtrType, Cppyy::TCppMethod_t deref)
Definition: Executors.h:157
int Py_ssize_t
Definition: PyROOT.h:154
virtual PyObject * Execute(Cppyy::TCppMethod_t, Cppyy::TCppObject_t, TCallContext *)
executor binds the result to the left-hand side, overwriting if an old object
Definition: Executors.cxx:433
Cppyy::TCppMethod_t fDereferencer
Definition: Executors.h:166
TCppObjectExecutor(Cppyy::TCppType_t klass)
Definition: Executors.h:66
const Bool_t kTRUE
Definition: Rtypes.h:91
_object PyObject
Definition: TPyArg.h:22
const char * Short