Go to the documentation of this file.00001 #ifndef QPID_TYPES_UUID_H
00002 #define QPID_TYPES_UUID_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "qpid/types/ImportExport.h"
00026 #include <iosfwd>
00027 #include <string>
00028
00029 namespace qpid {
00030 namespace types {
00031
00032 class QPID_TYPES_CLASS_EXTERN Uuid
00033 {
00034 public:
00035 static const size_t SIZE;
00040 QPID_TYPES_EXTERN Uuid(bool unique=false);
00041 QPID_TYPES_EXTERN Uuid(const Uuid&);
00042 QPID_TYPES_EXTERN Uuid& operator=(const Uuid&);
00044 QPID_TYPES_EXTERN Uuid(const unsigned char* data16);
00045
00047 QPID_TYPES_EXTERN void generate();
00048
00050 QPID_TYPES_EXTERN void clear();
00051
00053 QPID_TYPES_EXTERN bool isNull() const;
00054 QPID_TYPES_EXTERN operator bool() const;
00055 QPID_TYPES_EXTERN bool operator!() const;
00056
00058 QPID_TYPES_EXTERN std::string str() const;
00059
00060 QPID_TYPES_EXTERN size_t size() const;
00061 QPID_TYPES_EXTERN const unsigned char* data() const;
00062
00063 friend QPID_TYPES_EXTERN bool operator==(const Uuid&, const Uuid&);
00064 friend QPID_TYPES_EXTERN bool operator!=(const Uuid&, const Uuid&);
00065 friend QPID_TYPES_EXTERN bool operator<(const Uuid&, const Uuid&);
00066 friend QPID_TYPES_EXTERN bool operator>(const Uuid&, const Uuid&);
00067 friend QPID_TYPES_EXTERN bool operator<=(const Uuid&, const Uuid&);
00068 friend QPID_TYPES_EXTERN bool operator>=(const Uuid&, const Uuid&);
00069 friend QPID_TYPES_EXTERN std::ostream& operator<<(std::ostream&, Uuid);
00070 friend QPID_TYPES_EXTERN std::istream& operator>>(std::istream&, Uuid&);
00071
00073 QPID_TYPES_EXTERN size_t hash() const;
00074
00076 struct Hasher {
00077 size_t operator()(const Uuid& u) const { return u.hash(); }
00078 };
00079
00080 private:
00081 unsigned char bytes[16];
00082 };
00083
00085 QPID_TYPES_EXTERN bool operator==(const Uuid&, const Uuid&);
00087 QPID_TYPES_EXTERN bool operator!=(const Uuid&, const Uuid&);
00088
00089 QPID_TYPES_EXTERN bool operator<(const Uuid&, const Uuid&);
00090 QPID_TYPES_EXTERN bool operator>(const Uuid&, const Uuid&);
00091 QPID_TYPES_EXTERN bool operator<=(const Uuid&, const Uuid&);
00092 QPID_TYPES_EXTERN bool operator>=(const Uuid&, const Uuid&);
00093
00095 QPID_TYPES_EXTERN std::ostream& operator<<(std::ostream&, Uuid);
00096
00098 QPID_TYPES_EXTERN std::istream& operator>>(std::istream&, Uuid&);
00099
00100 }}
00101
00102
00103 #endif