00001 // @(#)root/pyroot:$Id: ConstructorHolder.h 33356 2010-05-04 00:45:17Z wlav $ 00002 // Author: Wim Lavrijsen, Apr 2004 00003 00004 #ifndef PYROOT_TCONSTRUCTORHOLDER_H 00005 #define PYROOT_TCONSTRUCTORHOLDER_H 00006 00007 // ROOT 00008 class TClass; 00009 class TMethod; 00010 00011 // Bindings 00012 #include "MethodHolder.h" 00013 00014 00015 namespace PyROOT { 00016 00017 /** Python side holder for ROOT constructor 00018 @author WLAV 00019 @date 09/30/2003 00020 @version 3.0 00021 */ 00022 00023 class TExecutor; 00024 00025 template< class T, class M > 00026 class TConstructorHolder : public TMethodHolder< T, M > { 00027 public: 00028 TConstructorHolder( const T& klass, const M& method ); 00029 TConstructorHolder( const T& klass ); 00030 00031 public: 00032 virtual PyObject* GetDocString(); 00033 virtual PyCallable* Clone() { return new TConstructorHolder( *this ); } 00034 00035 public: 00036 virtual PyObject* operator()( ObjectProxy* self, PyObject* args, PyObject* kwds, Long_t = 0 ); 00037 00038 protected: 00039 virtual Bool_t InitExecutor_( TExecutor*& ); 00040 }; 00041 00042 } // namespace PyROOT 00043 00044 #endif // !PYROOT_TCONSTRUCTORHOLDER_H