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 QPID_TYPES_EXTERN 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 QPID_TYPES_EXTERN Uuid(const char* data16);
00046
00048 QPID_TYPES_EXTERN void generate();
00049
00051 QPID_TYPES_EXTERN void clear();
00052
00054 QPID_TYPES_EXTERN bool isNull() const;
00055 QPID_TYPES_EXTERN operator bool() const;
00056 QPID_TYPES_EXTERN bool operator!() const;
00057
00059 QPID_TYPES_EXTERN std::string str() const;
00060
00061 QPID_TYPES_EXTERN size_t size() const;
00062 QPID_TYPES_EXTERN const unsigned char* data() const;
00063
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 bool operator>=(const Uuid&, const Uuid&);
00070 friend QPID_TYPES_EXTERN std::ostream& operator<<(std::ostream&, Uuid);
00071 friend QPID_TYPES_EXTERN std::istream& operator>>(std::istream&, Uuid&);
00072
00074 QPID_TYPES_EXTERN size_t hash() const;
00075
00077 struct Hasher {
00078 size_t operator()(const Uuid& u) const { return u.hash(); }
00079 };
00080
00081 private:
00082 unsigned char bytes[16];
00083 };
00084
00086 inline size_t hash_value(const Uuid& uuid) { return uuid.hash(); }
00087
00089 QPID_TYPES_EXTERN bool operator==(const Uuid&, const Uuid&);
00091 QPID_TYPES_EXTERN bool operator!=(const Uuid&, const Uuid&);
00092
00093 QPID_TYPES_EXTERN bool operator<(const Uuid&, const Uuid&);
00094 QPID_TYPES_EXTERN bool operator>(const Uuid&, const Uuid&);
00095 QPID_TYPES_EXTERN bool operator<=(const Uuid&, const Uuid&);
00096 QPID_TYPES_EXTERN bool operator>=(const Uuid&, const Uuid&);
00097
00099 QPID_TYPES_EXTERN std::ostream& operator<<(std::ostream&, Uuid);
00100
00102 QPID_TYPES_EXTERN std::istream& operator>>(std::istream&, Uuid&);
00103
00104 }}
00105
00106
00107 #endif