File indexing completed on 2024-04-06 12:13:12
0001 #ifndef FWCOre_Utilities_Guid_h
0002 #define FWCOre_Utilities_Guid_h
0003
0004 #include "uuid/uuid.h"
0005 #include <string>
0006
0007
0008
0009
0010 namespace edm {
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026 class Guid {
0027 public:
0028
0029 Guid() { init(); }
0030
0031 explicit Guid(bool usetime) { init(usetime); }
0032
0033 explicit Guid(char const* s, bool binary = false) { binary ? fromBinary(s) : fromString(s); }
0034
0035 explicit Guid(std::string const& s, bool binary = false) { binary ? fromBinary(s) : fromString(s); }
0036
0037 Guid(Guid const& c) { *this = c; }
0038
0039 Guid& operator=(Guid const& g) {
0040 if (this != &g) {
0041 ::uuid_copy(data_, g.data_);
0042 }
0043 return *this;
0044 }
0045
0046 bool operator<(Guid const& g) const;
0047
0048 bool operator==(Guid const& g) const {
0049 if (this != &g) {
0050 return ::uuid_compare(data_, g.data_) == 0;
0051 }
0052 return true;
0053 }
0054
0055 bool operator!=(Guid const& g) const { return !(this->operator==(g)); }
0056
0057 std::string const toBinary() const;
0058
0059 Guid const& fromBinary(std::string const& s);
0060
0061 std::string const toString() const;
0062
0063 Guid const& fromString(std::string const& s);
0064
0065 static bool isValidString(std::string const& s);
0066
0067 private:
0068
0069 void init(bool usetime = false);
0070 uuid_t data_;
0071 };
0072 }
0073 #endif