00001 #include "MemoryHistogramCopier.h" 00002 #include "AIDA_Dev/IDevAnalysisFactory.h" 00003 #include "AIDA_Dev/IHistogramFactoryProvider.h" 00004 #include "AIDA_Dev/IDevHistogramFactory.h" 00005 #include "AIDA_Dev/IDevHistogram1D.h" 00006 #include "AIDA_Dev/IDevHistogram2D.h" 00007 #include "AIDA_Dev/IDevHistogram3D.h" 00008 #include "AIDA_Dev/IDevCloud1D.h" 00009 #include "AIDA_Dev/IDevCloud2D.h" 00010 #include "AIDA_Dev/IDevCloud3D.h" 00011 #include "AIDA_Dev/IDevProfile1D.h" 00012 #include "AIDA_Dev/IDevProfile2D.h" 00013 #include <typeinfo> 00014 00015 00016 Anaphe::AIDA_MemoryStore::MemoryHistogramCopier::MemoryHistogramCopier( AIDA::Dev::IDevAnalysisFactory& af ): 00017 m_af( af ) 00018 {} 00019 00020 00021 AIDA::Dev::IDevManagedObject* 00022 Anaphe::AIDA_MemoryStore::MemoryHistogramCopier::createCopy( const AIDA::IManagedObject& dataObject, 00023 const std::string& type ) 00024 { 00025 AIDA::Dev::IHistogramFactoryProvider* hfp = m_af.histogramFactoryProvider(); 00026 AIDA::Dev::IDevHistogramFactory& factory = hfp->devHistogramFactory(); 00027 00028 try { 00029 if ( type == "IHistogram1D" ) { 00030 return factory.createCopy( dynamic_cast< const AIDA::IHistogram1D& >( dataObject ) ); 00031 } 00032 if ( type == "IHistogram2D" ) { 00033 return factory.createCopy( dynamic_cast< const AIDA::IHistogram2D& >( dataObject ) ); 00034 } 00035 if ( type == "IHistogram3D" ) { 00036 return factory.createCopy( dynamic_cast< const AIDA::IHistogram3D& >( dataObject ) ); 00037 } 00038 if ( type == "ICloud1D" ) { 00039 return factory.createCopy( dynamic_cast< const AIDA::ICloud1D& >( dataObject ) ); 00040 } 00041 if ( type == "ICloud2D" ) { 00042 return factory.createCopy( dynamic_cast< const AIDA::ICloud2D& >( dataObject ) ); 00043 } 00044 if ( type == "ICloud3D" ) { 00045 return factory.createCopy( dynamic_cast< const AIDA::ICloud3D& >( dataObject ) ); 00046 } 00047 if ( type == "IProfile1D" ) { 00048 return factory.createCopy( dynamic_cast< const AIDA::IProfile1D& >( dataObject ) ); 00049 } 00050 if ( type == "IProfile2D" ) { 00051 return factory.createCopy( dynamic_cast< const AIDA::IProfile2D& >( dataObject ) ); 00052 } 00053 } 00054 catch( std::bad_cast ) { 00055 } 00056 return 0; 00057 }