00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef VRS_ID_H_
00021 #define VRS_ID_H_
00022
00023 #include <vrs/config.h>
00024
00025 namespace VRS {
00026
00028 class VRS_CORE_API ID {
00029
00030 public:
00031 ID();
00032 ID(const char* id);
00038 bool operator==(const ID& id) const;
00039 bool operator!=(const ID& id) const;
00040 bool operator< (const ID& id) const;
00041 bool operator> (const ID& id) const;
00047 const char* text() const;
00049
00050 private:
00051 const char* id_;
00052 };
00053
00054 inline ID::ID() : id_(NULL) { }
00055
00056 inline bool ID::operator==(const ID& id) const { return (id_ == id.id_); }
00057 inline bool ID::operator!=(const ID& id) const { return (id_ != id.id_); }
00058
00059 inline bool ID::operator<(const ID& id) const { return (id_ < id.id_); }
00060 inline bool ID::operator>(const ID& id) const { return (id_ > id.id_); }
00061
00062 inline const char* ID::text() const { return id_; }
00063
00064 inline unsigned int HashValue(const ID& id) {
00065 return (static_cast<unsigned int>(id.text() - static_cast<const char*>(NULL)));
00066 }
00067
00068 extern VRS_CORE_API std::ostream& operator<<(std::ostream& out, const ID& id);
00069
00070 }
00071
00072 #endif // VRS_ID_H_