00001 #ifndef PSENV_IEXPNAMEPROVIDER_H 00002 #define PSENV_IEXPNAMEPROVIDER_H 00003 00004 //-------------------------------------------------------------------------- 00005 // File and Version Information: 00006 // $Id: IExpNameProvider.h 3031 2012-03-08 21:58:18Z salnikov@SLAC.STANFORD.EDU $ 00007 // 00008 // Description: 00009 // Class IExpNameProvider. 00010 // 00011 //------------------------------------------------------------------------ 00012 00013 //----------------- 00014 // C/C++ Headers -- 00015 //----------------- 00016 #include <string> 00017 #include <boost/utility.hpp> 00018 00019 //---------------------- 00020 // Base Class Headers -- 00021 //---------------------- 00022 00023 //------------------------------- 00024 // Collaborating Class Headers -- 00025 //------------------------------- 00026 00027 //------------------------------------ 00028 // Collaborating Class Declarations -- 00029 //------------------------------------ 00030 00031 // --------------------- 00032 // -- Class Interface -- 00033 // --------------------- 00034 00035 namespace PSEnv { 00036 00037 /** 00038 * @ingroup PSEnv 00039 * 00040 * @brief CLass which defines an interface for obtaining instrument and 00041 * experiment names. 00042 * 00043 * This software was developed for the LCLS project. If you use all or 00044 * part of it, please give an appropriate acknowledgment. 00045 * 00046 * @see AdditionalClass 00047 * 00048 * @version $Id: IExpNameProvider.h 3031 2012-03-08 21:58:18Z salnikov@SLAC.STANFORD.EDU $ 00049 * 00050 * @author Andy Salnikov 00051 */ 00052 00053 class IExpNameProvider : boost::noncopyable { 00054 public: 00055 00056 // Destructor 00057 virtual ~IExpNameProvider() {} 00058 00059 /// Returns instrument name 00060 virtual const std::string& instrument() const = 0; 00061 00062 /// Returns experiment name 00063 virtual const std::string& experiment() const = 0; 00064 00065 /// Returns experiment number or 0 00066 virtual unsigned expNum() const = 0; 00067 00068 protected: 00069 00070 // Constructor 00071 IExpNameProvider () {} 00072 00073 private: 00074 00075 }; 00076 00077 } // namespace PSEnv 00078 00079 #endif // PSENV_IEXPNAMEPROVIDER_H