00001 #include "AIDA_DataPointSetFactory.h" 00002 #include "AIDA_Dev/IDevTree.h" 00003 #include "AIDA_Dev/IDevDataPointSetFactory.h" 00004 #include "AIDA_Dev/IDevDataPointSet.h" 00005 00006 #ifdef ANAPHE_DATAPOINTSET_NO_EXCEPTIONS_TO_USER 00007 #include <exception> 00008 #include <iostream> 00009 #define DATAPOINTSET_REPORT_ERROR( XXX ) std::cerr << XXX << std::endl 00010 #endif 00011 00012 static const std::string emptyString = ""; 00013 00014 Anaphe::AIDA_DataPointSet_native::AIDA_DataPointSetFactory::AIDA_DataPointSetFactory( AIDA::Dev::IDevTree& tree, 00015 AIDA::Dev::IDevDataPointSetFactory& factory ): 00016 m_tree( tree ), 00017 m_factory( factory ) 00018 {} 00019 00020 00021 bool 00022 Anaphe::AIDA_DataPointSet_native::AIDA_DataPointSetFactory::destroy( AIDA::IDataPointSet* dps ) 00023 { 00024 AIDA::IManagedObject* object = dynamic_cast< AIDA::IManagedObject* >( dps ); 00025 if ( ! object ) return false; 00026 return m_tree.rm( m_tree.findPath( *object ) ); 00027 } 00028 00029 00030 AIDA::IDataPointSet* 00031 Anaphe::AIDA_DataPointSet_native::AIDA_DataPointSetFactory::create( const std::string& name, 00032 const std::string& title, 00033 int dimensionOfPoint ) 00034 { 00035 #ifdef ANAPHE_DATAPOINTSET_NO_EXCEPTIONS_TO_USER 00036 try{ 00037 #endif 00038 AIDA::Dev::IDevDataPointSet* p = m_factory.create( title, dimensionOfPoint ); 00039 return registerObject( p, name ); 00040 #ifdef ANAPHE_DATAPOINTSET_NO_EXCEPTIONS_TO_USER 00041 } 00042 catch( std::exception& e ) { 00043 DATAPOINTSET_REPORT_ERROR( e.what() ); 00044 return 0; 00045 } 00046 #endif 00047 } 00048 00049 00050 AIDA::IDataPointSet* 00051 Anaphe::AIDA_DataPointSet_native::AIDA_DataPointSetFactory::create( const std::string& name, 00052 int dimensionOfPoint ) 00053 { 00054 #ifdef ANAPHE_DATAPOINTSET_NO_EXCEPTIONS_TO_USER 00055 try{ 00056 #endif 00057 AIDA::Dev::IDevDataPointSet* p = m_factory.create( dimensionOfPoint ); 00058 return registerObject( p, name ); 00059 #ifdef ANAPHE_DATAPOINTSET_NO_EXCEPTIONS_TO_USER 00060 } 00061 catch( std::exception& e ) { 00062 DATAPOINTSET_REPORT_ERROR( e.what() ); 00063 return 0; 00064 } 00065 #endif 00066 } 00067 00068 00069 AIDA::IDataPointSet* 00070 Anaphe::AIDA_DataPointSet_native::AIDA_DataPointSetFactory::createCopy( const std::string& name, 00071 const AIDA::IDataPointSet & original ) 00072 { 00073 #ifdef ANAPHE_DATAPOINTSET_NO_EXCEPTIONS_TO_USER 00074 try{ 00075 #endif 00076 AIDA::Dev::IDevDataPointSet* p = m_factory.createCopy( original ); 00077 return registerObject( p, name ); 00078 #ifdef ANAPHE_DATAPOINTSET_NO_EXCEPTIONS_TO_USER 00079 } 00080 catch( std::exception& e ) { 00081 DATAPOINTSET_REPORT_ERROR( e.what() ); 00082 return 0; 00083 } 00084 #endif 00085 } 00086 00087 00088 AIDA::IDataPointSet* 00089 Anaphe::AIDA_DataPointSet_native::AIDA_DataPointSetFactory::create( const std::string& name, 00090 const AIDA::IHistogram1D & h ) 00091 { 00092 #ifdef ANAPHE_DATAPOINTSET_NO_EXCEPTIONS_TO_USER 00093 try{ 00094 #endif 00095 AIDA::Dev::IDevDataPointSet* p = m_factory.create( h ); 00096 return registerObject( p, name ); 00097 #ifdef ANAPHE_DATAPOINTSET_NO_EXCEPTIONS_TO_USER 00098 } 00099 catch( std::exception& e ) { 00100 DATAPOINTSET_REPORT_ERROR( e.what() ); 00101 return 0; 00102 } 00103 #endif 00104 } 00105 00106 00107 AIDA::IDataPointSet* 00108 Anaphe::AIDA_DataPointSet_native::AIDA_DataPointSetFactory::create( const std::string& name, 00109 const AIDA::IHistogram2D & h ) 00110 { 00111 #ifdef ANAPHE_DATAPOINTSET_NO_EXCEPTIONS_TO_USER 00112 try{ 00113 #endif 00114 AIDA::Dev::IDevDataPointSet* p = m_factory.create( h ); 00115 return registerObject( p, name ); 00116 #ifdef ANAPHE_DATAPOINTSET_NO_EXCEPTIONS_TO_USER 00117 } 00118 catch( std::exception& e ) { 00119 DATAPOINTSET_REPORT_ERROR( e.what() ); 00120 return 0; 00121 } 00122 #endif 00123 } 00124 00125 00126 AIDA::IDataPointSet* 00127 Anaphe::AIDA_DataPointSet_native::AIDA_DataPointSetFactory::create( const std::string& name, 00128 const AIDA::IHistogram3D & h ) 00129 { 00130 #ifdef ANAPHE_DATAPOINTSET_NO_EXCEPTIONS_TO_USER 00131 try{ 00132 #endif 00133 AIDA::Dev::IDevDataPointSet* p = m_factory.create( h ); 00134 return registerObject( p, name ); 00135 #ifdef ANAPHE_DATAPOINTSET_NO_EXCEPTIONS_TO_USER 00136 } 00137 catch( std::exception& e ) { 00138 DATAPOINTSET_REPORT_ERROR( e.what() ); 00139 return 0; 00140 } 00141 #endif 00142 } 00143 00144 00145 AIDA::IDataPointSet* 00146 Anaphe::AIDA_DataPointSet_native::AIDA_DataPointSetFactory::create( const std::string& name, 00147 const AIDA::ICloud1D & c ) 00148 { 00149 #ifdef ANAPHE_DATAPOINTSET_NO_EXCEPTIONS_TO_USER 00150 try{ 00151 #endif 00152 AIDA::Dev::IDevDataPointSet* p = m_factory.create( c ); 00153 return registerObject( p, name ); 00154 #ifdef ANAPHE_DATAPOINTSET_NO_EXCEPTIONS_TO_USER 00155 } 00156 catch( std::exception& e ) { 00157 DATAPOINTSET_REPORT_ERROR( e.what() ); 00158 return 0; 00159 } 00160 #endif 00161 } 00162 00163 00164 AIDA::IDataPointSet* 00165 Anaphe::AIDA_DataPointSet_native::AIDA_DataPointSetFactory::create( const std::string& name, 00166 const AIDA::ICloud2D & c ) 00167 { 00168 #ifdef ANAPHE_DATAPOINTSET_NO_EXCEPTIONS_TO_USER 00169 try{ 00170 #endif 00171 AIDA::Dev::IDevDataPointSet* p = m_factory.create( c ); 00172 return registerObject( p, name ); 00173 #ifdef ANAPHE_DATAPOINTSET_NO_EXCEPTIONS_TO_USER 00174 } 00175 catch( std::exception& e ) { 00176 DATAPOINTSET_REPORT_ERROR( e.what() ); 00177 return 0; 00178 } 00179 #endif 00180 } 00181 00182 00183 AIDA::IDataPointSet* 00184 Anaphe::AIDA_DataPointSet_native::AIDA_DataPointSetFactory::create( const std::string& name, 00185 const AIDA::ICloud3D & c ) 00186 { 00187 #ifdef ANAPHE_DATAPOINTSET_NO_EXCEPTIONS_TO_USER 00188 try{ 00189 #endif 00190 AIDA::Dev::IDevDataPointSet* p = m_factory.create( c ); 00191 return registerObject( p, name ); 00192 #ifdef ANAPHE_DATAPOINTSET_NO_EXCEPTIONS_TO_USER 00193 } 00194 catch( std::exception& e ) { 00195 DATAPOINTSET_REPORT_ERROR( e.what() ); 00196 return 0; 00197 } 00198 #endif 00199 } 00200 00201 00202 AIDA::IDataPointSet* 00203 Anaphe::AIDA_DataPointSet_native::AIDA_DataPointSetFactory::create( const std::string& name, 00204 const AIDA::IProfile1D & ph ) 00205 { 00206 #ifdef ANAPHE_DATAPOINTSET_NO_EXCEPTIONS_TO_USER 00207 try{ 00208 #endif 00209 AIDA::Dev::IDevDataPointSet* p = m_factory.create( ph ); 00210 return registerObject( p, name ); 00211 #ifdef ANAPHE_DATAPOINTSET_NO_EXCEPTIONS_TO_USER 00212 } 00213 catch( std::exception& e ) { 00214 DATAPOINTSET_REPORT_ERROR( e.what() ); 00215 return 0; 00216 } 00217 #endif 00218 } 00219 00220 00221 AIDA::IDataPointSet* 00222 Anaphe::AIDA_DataPointSet_native::AIDA_DataPointSetFactory::create( const std::string& name, 00223 const AIDA::IProfile2D & ph ) 00224 { 00225 #ifdef ANAPHE_DATAPOINTSET_NO_EXCEPTIONS_TO_USER 00226 try{ 00227 #endif 00228 AIDA::Dev::IDevDataPointSet* p = m_factory.create( ph ); 00229 return registerObject( p, name ); 00230 #ifdef ANAPHE_DATAPOINTSET_NO_EXCEPTIONS_TO_USER 00231 } 00232 catch( std::exception& e ) { 00233 DATAPOINTSET_REPORT_ERROR( e.what() ); 00234 return 0; 00235 } 00236 #endif 00237 } 00238 00239 00240 AIDA::IDataPointSet* 00241 Anaphe::AIDA_DataPointSet_native::AIDA_DataPointSetFactory::add( const std::string & name, 00242 const AIDA::IDataPointSet& a, 00243 const AIDA::IDataPointSet& b ) 00244 { 00245 #ifdef ANAPHE_DATAPOINTSET_NO_EXCEPTIONS_TO_USER 00246 try{ 00247 #endif 00248 AIDA::Dev::IDevDataPointSet* p = m_factory.add( a, b, emptyString ); 00249 return registerObject( p, name ); 00250 #ifdef ANAPHE_DATAPOINTSET_NO_EXCEPTIONS_TO_USER 00251 } 00252 catch( std::exception& e ) { 00253 DATAPOINTSET_REPORT_ERROR( e.what() ); 00254 return 0; 00255 } 00256 #endif 00257 } 00258 00259 00260 AIDA::IDataPointSet* 00261 Anaphe::AIDA_DataPointSet_native::AIDA_DataPointSetFactory::subtract( const std::string & name, 00262 const AIDA::IDataPointSet& a, 00263 const AIDA::IDataPointSet& b ) 00264 { 00265 #ifdef ANAPHE_DATAPOINTSET_NO_EXCEPTIONS_TO_USER 00266 try{ 00267 #endif 00268 AIDA::Dev::IDevDataPointSet* p = m_factory.subtract( a, b, emptyString ); 00269 return registerObject( p, name ); 00270 #ifdef ANAPHE_DATAPOINTSET_NO_EXCEPTIONS_TO_USER 00271 } 00272 catch( std::exception& e ) { 00273 DATAPOINTSET_REPORT_ERROR( e.what() ); 00274 return 0; 00275 } 00276 #endif 00277 } 00278 00279 00280 AIDA::IDataPointSet* 00281 Anaphe::AIDA_DataPointSet_native::AIDA_DataPointSetFactory::multiply( const std::string & name, 00282 const AIDA::IDataPointSet& a, 00283 const AIDA::IDataPointSet& b ) 00284 { 00285 #ifdef ANAPHE_DATAPOINTSET_NO_EXCEPTIONS_TO_USER 00286 try{ 00287 #endif 00288 AIDA::Dev::IDevDataPointSet* p = m_factory.multiply( a, b, emptyString ); 00289 return registerObject( p, name ); 00290 #ifdef ANAPHE_DATAPOINTSET_NO_EXCEPTIONS_TO_USER 00291 } 00292 catch( std::exception& e ) { 00293 DATAPOINTSET_REPORT_ERROR( e.what() ); 00294 return 0; 00295 } 00296 #endif 00297 } 00298 00299 00300 AIDA::IDataPointSet* 00301 Anaphe::AIDA_DataPointSet_native::AIDA_DataPointSetFactory::divide( const std::string & name, 00302 const AIDA::IDataPointSet& a, 00303 const AIDA::IDataPointSet& b ) 00304 { 00305 #ifdef ANAPHE_DATAPOINTSET_NO_EXCEPTIONS_TO_USER 00306 try{ 00307 #endif 00308 AIDA::Dev::IDevDataPointSet* p = m_factory.divide( a, b, emptyString ); 00309 return registerObject( p, name ); 00310 #ifdef ANAPHE_DATAPOINTSET_NO_EXCEPTIONS_TO_USER 00311 } 00312 catch( std::exception& e ) { 00313 DATAPOINTSET_REPORT_ERROR( e.what() ); 00314 return 0; 00315 } 00316 #endif 00317 } 00318 00319 00320 AIDA::IDataPointSet* 00321 Anaphe::AIDA_DataPointSet_native::AIDA_DataPointSetFactory::weightedMean( const std::string & name, 00322 const AIDA::IDataPointSet& a, 00323 const AIDA::IDataPointSet& b ) 00324 { 00325 #ifdef ANAPHE_DATAPOINTSET_NO_EXCEPTIONS_TO_USER 00326 try{ 00327 #endif 00328 AIDA::Dev::IDevDataPointSet* p = m_factory.weightedMean( a, b, emptyString ); 00329 return registerObject( p, name ); 00330 #ifdef ANAPHE_DATAPOINTSET_NO_EXCEPTIONS_TO_USER 00331 } 00332 catch( std::exception& e ) { 00333 DATAPOINTSET_REPORT_ERROR( e.what() ); 00334 return 0; 00335 } 00336 #endif 00337 }