00001 #include "AIDA_HistogramFactoryProvider.h" 00002 #include "AIDA_DevHistogramFactory.h" 00003 #include "AIDA_HistogramFactory.h" 00004 #include "AIDA_Dev/IDevAnalysisFactory.h" 00005 00006 static Anaphe::AIDA_Histogram_native::AIDA_HistogramFactoryProvider factory; 00007 00008 namespace Anaphe { 00009 namespace AIDA_Histogram_native { 00010 class Initializer { 00011 public: 00012 Initializer() { 00013 AIDA::Dev::IDevAnalysisFactory* af = dynamic_cast<AIDA::Dev::IDevAnalysisFactory*>( AIDA_createAnalysisFactory() ); 00014 if ( af ) { 00015 af->registerHistogramFactoryProvider( static_cast<AIDA::Dev::IHistogramFactoryProvider*>( &factory ) ); 00016 delete af; 00017 } 00018 } 00019 ~Initializer() {} 00020 }; 00021 } 00022 } 00023 00024 static Anaphe::AIDA_Histogram_native::Initializer myInitializer; 00025 00026 00027 00028 Anaphe::AIDA_Histogram_native::AIDA_HistogramFactoryProvider::AIDA_HistogramFactoryProvider(): 00029 m_factory( 0 ) 00030 { 00031 m_factory = new Anaphe::AIDA_Histogram_native::AIDA_DevHistogramFactory; 00032 } 00033 00034 00035 Anaphe::AIDA_Histogram_native::AIDA_HistogramFactoryProvider::~AIDA_HistogramFactoryProvider() 00036 { 00037 if ( m_factory ) delete m_factory; 00038 } 00039 00040 00041 AIDA::IHistogramFactory* 00042 Anaphe::AIDA_Histogram_native::AIDA_HistogramFactoryProvider::createFactory( AIDA::Dev::IDevTree & tree ) 00043 { 00044 return new AIDA_HistogramFactory( tree, *m_factory ); 00045 } 00046 00047 00048 AIDA::Dev::IDevHistogramFactory& 00049 Anaphe::AIDA_Histogram_native::AIDA_HistogramFactoryProvider::devHistogramFactory() 00050 { 00051 return *m_factory; 00052 }