Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef opcua_guid_h_
00012 #define opcua_guid_h_
00013
00014 #include <stdint.h>
00015 #include <string>
00016
00017 namespace OpcUa
00018 {
00019 struct Guid
00020 {
00021 uint32_t Data1;
00022 uint16_t Data2;
00023 uint16_t Data3;
00024 uint8_t Data4[8];
00025
00026 Guid()
00027 : Data1(0)
00028 , Data2(0)
00029 , Data3(0)
00030 {
00031 for (unsigned i = 0; i < 8; ++i)
00032 {
00033 Data4[i] = 0;
00034 }
00035 }
00036
00037 inline bool operator== (const Guid& r) const
00038 {
00039 for (unsigned i = 0; i < 8; ++i)
00040 {
00041 if (Data4[i] != r.Data4[i])
00042 {
00043 return false;
00044 }
00045 }
00046
00047 return Data1 == r.Data1 && Data2 == r.Data2 && Data3 == r.Data3;
00048 }
00049
00050 inline bool operator< (const Guid& r) const
00051 {
00052 if (Data1 > r.Data1)
00053 {
00054 return false;
00055 }
00056
00057 if (Data1 < r.Data1)
00058 {
00059 return true;
00060 }
00061
00062 if (Data2 > r.Data2)
00063 {
00064 return false;
00065 }
00066
00067 if (Data2 < r.Data2)
00068 {
00069 return true;
00070 }
00071
00072 if (Data3 > r.Data3)
00073 {
00074 return false;
00075 }
00076
00077 if (Data3 < r.Data3)
00078 {
00079 return true;
00080 }
00081
00082 for (unsigned i = 0; i < 8; ++i)
00083 {
00084 if (Data4[i] > r.Data4[i])
00085 {
00086 return false;
00087 }
00088
00089 if (Data4[i] < r.Data4[i])
00090 {
00091 return true;
00092 }
00093 }
00094
00095 return false;
00096 }
00097
00098 };
00099
00100 }
00101
00102 #endif // opcua_guid_h_
00103