00001 #if !defined(AFX_SPECTRUMFACTORYTABLE_H__E3EDA893_F360_4B4D_9537_0831B21DD02F__INCLUDED_) 00002 #define AFX_SPECTRUMFACTORYTABLE_H__E3EDA893_F360_4B4D_9537_0831B21DD02F__INCLUDED_ 00003 00011 #if _MSC_VER > 1000 00012 #pragma once 00013 #endif // _MSC_VER > 1000 00014 00015 #include <map> 00016 #include <string> 00017 #include <map> 00018 #include <list> 00019 #include "FluxSvc/ISpectrumFactory.h" 00020 00021 class SpectrumFactoryTable : public std::map<std::string, const ISpectrumFactory* > 00022 { 00023 public: 00024 void addFactory(std::string name, const ISpectrumFactory* factory ) { 00025 insert(std::make_pair<std::string, const ISpectrumFactory*>(name, factory)); 00026 } 00027 00029 ISpectrum* instantiate(const std::string& name, const std::string& params) const ; 00030 ISpectrum* instantiate(const std::string& name) const ; 00031 00032 static SpectrumFactoryTable* instance(){ 00033 return (s_instance==0)? new SpectrumFactoryTable : s_instance; 00034 } 00035 00036 00037 std::list<std::string> spectrumList()const; 00038 00039 private: 00040 static SpectrumFactoryTable* s_instance; 00041 SpectrumFactoryTable(){s_instance=this;} 00042 00043 00044 }; 00045 00046 00047 #endif // !defined(AFX_SPECTRUMFACTORYTABLE_H__E3EDA893_F360_4B4D_9537_0831B21DD02F__INCLUDED_)
1.2.13.1 written by Dimitri van Heesch,
© 1997-2001