00001 /* -*- mode: c++ -*- */ 00002 #ifndef __DAQpp_DAQid_h__ 00003 #define __DAQpp_DAQid_h__ 00004 00005 #include <string> 00006 00007 namespace DAQpp 00008 { 00009 00017 class DAQid 00018 { 00019 private: 00021 std::string _str; 00022 00024 void _cpy(const DAQid &id) 00025 { 00026 _str = id._str; 00027 } 00028 public: 00030 DAQid(std::string const &s); 00032 DAQid(const char *s); 00034 DAQid(int v); 00036 DAQid(short v); 00038 DAQid(unsigned long v); 00040 DAQid(unsigned int); 00042 DAQid(unsigned short v); 00044 DAQid(const DAQid &id) : _str(id._str) {} 00046 DAQid &operator=(const DAQid &id) 00047 { 00048 if ( &id != this ) _cpy(id); 00049 return *this; 00050 } 00051 00053 std::string const &str() const 00054 { 00055 return _str; 00056 } 00058 std::string const &operator()() const 00059 { 00060 return _str; 00061 } 00063 operator int() const; 00065 operator unsigned int() const; 00067 operator unsigned long() const; 00069 operator unsigned short() const; 00071 operator const char *() const 00072 { 00073 return _str.c_str(); 00074 } 00076 operator std::string() const 00077 { 00078 return _str; 00079 } 00080 }; 00081 } 00082 inline bool operator==(const DAQpp::DAQid &id1, const DAQpp::DAQid &id2) 00083 { 00084 return (id1.str() == id2.str()); 00085 } 00086 inline bool operator<(const DAQpp::DAQid &id1, const DAQpp::DAQid &id2) 00087 { 00088 return (id1.str() < id2.str()); 00089 } 00090 std::ostream &operator<<( std::ostream &os, const DAQpp::DAQid &id); 00091 00092 #endif