00001 
00002 
00003 
00004 
00005 #include "PyROOT.h"
00006 #include "ClassMethodHolder.h"
00007 #include "Adapters.h"
00008 
00009 
00010 
00011 template< class T, class M >
00012 PyROOT::TClassMethodHolder< T, M >::TClassMethodHolder( const T& klass, const M& method ) :
00013       TMethodHolder< T, M >( klass, method )
00014 {
00015 }
00016 
00017 
00018 
00019 template< class T, class M >
00020 PyObject* PyROOT::TClassMethodHolder< T, M >::operator()(
00021       ObjectProxy*, PyObject* args, PyObject* kwds, Long_t user )
00022 {
00023 
00024    if ( kwds != 0 && PyDict_Size( kwds ) ) {
00025       PyErr_SetString( PyExc_TypeError, "keyword arguments are not yet supported" );
00026       return 0;
00027    }
00028 
00029 
00030    if ( ! this->Initialize() )
00031       return 0;                              
00032 
00033 
00034    if ( ! this->SetMethodArgs( args, user ) )
00035       return 0;                              
00036 
00037 
00038    return this->Execute( 0 );
00039 }
00040 
00041 
00042 template class PyROOT::TClassMethodHolder< PyROOT::TScopeAdapter, PyROOT::TMemberAdapter >;
00043 #ifdef PYROOT_USE_REFLEX
00044 template class PyROOT::TClassMethodHolder< ROOT::Reflex::Scope, ROOT::Reflex::Member >;
00045 #endif