00001 #include "AIDA_TupleFactoryProvider.h" 00002 #include "AIDA_DevTupleFactory.h" 00003 #include "AIDA_DevFilterFactory.h" 00004 #include "AIDA_DevEvaluatorFactory.h" 00005 #include "AIDA_TupleFactory.h" 00006 #include "AIDA_Dev/IDevAnalysisFactory.h" 00007 00008 static Anaphe::AIDA_Tuple_native::AIDA_TupleFactoryProvider factory; 00009 00010 namespace Anaphe { 00011 namespace AIDA_Tuple_native { 00012 class Initializer { 00013 public: 00014 Initializer() { 00015 AIDA::Dev::IDevAnalysisFactory* af = dynamic_cast<AIDA::Dev::IDevAnalysisFactory*>( AIDA_createAnalysisFactory() ); 00016 if ( af ) { 00017 af->registerTupleFactoryProvider( static_cast<AIDA::Dev::ITupleFactoryProvider*>( &factory ) ); 00018 delete af; 00019 } 00020 } 00021 ~Initializer() {} 00022 }; 00023 } 00024 } 00025 00026 static Anaphe::AIDA_Tuple_native::Initializer myInitializer; 00027 00028 00029 Anaphe::AIDA_Tuple_native::AIDA_TupleFactoryProvider::AIDA_TupleFactoryProvider(): 00030 m_tupleFactory( new Anaphe::AIDA_Tuple_native::AIDA_DevTupleFactory ), 00031 m_filterFactory( new Anaphe::AIDA_Tuple_native::AIDA_DevFilterFactory ), 00032 m_evaluatorFactory( new Anaphe::AIDA_Tuple_native::AIDA_DevEvaluatorFactory ) 00033 {} 00034 00035 00036 Anaphe::AIDA_Tuple_native::AIDA_TupleFactoryProvider::~AIDA_TupleFactoryProvider() 00037 { 00038 if ( m_tupleFactory ) delete m_tupleFactory; 00039 if ( m_filterFactory ) delete m_filterFactory; 00040 if ( m_evaluatorFactory ) delete m_evaluatorFactory; 00041 } 00042 00043 00044 AIDA::ITupleFactory* 00045 Anaphe::AIDA_Tuple_native::AIDA_TupleFactoryProvider::createFactory( AIDA::Dev::IDevTree& tree ) 00046 { 00047 return new AIDA_TupleFactory( tree, *m_tupleFactory, *m_filterFactory, *m_evaluatorFactory ); 00048 } 00049 00050 00051 AIDA::Dev::IDevTupleFactory& 00052 Anaphe::AIDA_Tuple_native::AIDA_TupleFactoryProvider::devTupleFactory() 00053 { 00054 return *m_tupleFactory; 00055 }