PyNTupleController.cxx

Go to the documentation of this file.
00001 
00012 #ifdef _MSC_VER
00013 // nonstandard extension used 'extern' before...
00014 # pragma warning(disable:4231)  
00015 
00016 // needs to have dll-interface used by client
00017 # pragma warning(disable:4251)  
00018 
00019 // non dll-interface struct
00020 # pragma warning(disable:4275)  
00021 
00022 // 'int' : forcing value to bool 'true' or 'false' (performance warning)
00023 # pragma warning(disable:4800)  
00024 #endif
00025 
00026 #include "PyNTupleController.h"
00027 
00028 #include "PyApp.h"
00029 #include "PyDataSource.h"
00030 #include "PyNTuple.h"
00031 
00032 #include "datasrcs/DataSourceController.h"
00033 #include "datasrcs/NTupleController.h"
00034 
00035 #include <stdexcept>
00036 
00037 using namespace hippodraw;
00038 
00039 NTupleController   * PyNTupleController::m_instance = 0;
00040 PyNTupleController * PyNTupleController::s_instance = 0;
00041 
00042 
00043 PyNTupleController::
00044 PyNTupleController()
00045 {
00046 }
00047 
00048 PyNTupleController *
00049 PyNTupleController::
00050 instance ()
00051 {
00052   if ( s_instance == 0 ) {
00053     s_instance = new PyNTupleController ();
00054     m_instance = NTupleController::instance ();
00055   }
00056 
00057   return s_instance;
00058 }
00059 
00060 NTuple *
00061 PyNTupleController::
00062 createNTuple ( )
00063 {
00064   PyNTuple * ntuple = new PyNTuple ();
00065   DataSourceController * controller = DataSourceController::instance ();
00066   controller -> registerNTuple ( ntuple );
00067 
00068   return ntuple;
00069 }
00070 
00071 DataSource *
00072 PyNTupleController::
00073 createNTuple ( const std::string & filename )
00074 {
00075   PyApp::lock ();
00076   unsigned int columns = 0;
00077   PyNTuple * ntuple = new PyNTuple ( columns );
00078 
00079   try {
00080     m_instance -> fillFromFile ( filename, ntuple );
00081   }
00082   catch ( const std::runtime_error & e ) {
00083     PyApp::unlock ();
00084     delete ntuple;
00085     throw e;
00086   }
00087   PyApp::unlock ();
00088 
00089   return ntuple;
00090 }
00091 
00092 CircularBuffer *
00093 PyNTupleController::
00094 createCircularBuffer ( unsigned int columns )
00095 {
00096   return m_instance -> createCircularBuffer ( columns );
00097 }
00098 
00099 PyDataSource *
00100 PyNTupleController::
00101 createDataArray ( const std::string & filename )
00102 {
00103 #ifdef HAVE_NUMARRAY
00104   DataSource * tuple = createNTuple ( filename );
00105   PyDataSource * ds = new PyDataSource ( "NTuple", tuple );
00106 
00107   return ds;
00108 #else
00109   std::runtime_error e ( "HippoDraw was not built with "
00110                          "numeric Python support" );
00111    throw e;
00112 #endif
00113 }
00114 
00115 DataSource *
00116 PyNTupleController::
00117 findDataSource ( const std::string & name ) const
00118 {
00119   DataSourceController * dsc = DataSourceController::instance ();
00120 
00121   return dsc -> findDataSource ( name );
00122 }
00123 
00124 std::string
00125 PyNTupleController::
00126 registerNTuple ( DataSource * source )
00127 {
00128   PyApp::lock ();
00129   DataSourceController * dsc = DataSourceController::instance ();
00130 
00131   std::string name = dsc -> registerNTuple ( source );
00132   PyApp::unlock ();
00133 
00134   return name;
00135 }
00136 
00137 void
00138 PyNTupleController::
00139 registerNTuple ( const std::string & name, DataSource * source )
00140 {
00141   DataSourceController * dsc = DataSourceController::instance ();
00142 
00143   dsc -> registerNTuple ( name, source );
00144 }
00145 
00146 int
00147 PyNTupleController::
00148 writeNTupleToFile ( DataSource * source,
00149                     const std::string & filename )
00150 {
00151   return m_instance -> writeNTupleToFile ( source, filename );
00152 }
00153 
00154 void
00155 PyNTupleController::
00156 changeName ( DataSource * source, const std::string & new_name )
00157 {
00158   source -> setName ( new_name );
00159 }

Generated for HippoDraw Class Library by doxygen