23 #ifndef __MYGUI_GUID_H__
24 #define __MYGUI_GUID_H__
36 Guid() { fast._data1 = fast._data2 = fast._data3 = fast._data4 = 0; }
38 explicit Guid(
const std::string& _value) { *
this = parse(_value); }
39 explicit Guid(
unsigned char(&_id)[16]) { ::memcpy((
void*)&vec._data1[0], (
void*)&_id[0], 16); }
43 return _comp.
fast._data1 == fast._data1
44 && _comp.
fast._data2 == fast._data2
45 && _comp.
fast._data3 == fast._data3
46 && _comp.
fast._data4 == fast._data4;
51 return ! (*
this == _comp);
56 if (_comp.
fast._data1 < fast._data1)
return true;
57 else if (_comp.
fast._data1 > fast._data1)
return false;
58 if (_comp.
fast._data2 < fast._data2)
return true;
59 else if (_comp.
fast._data2 > fast._data2)
return false;
60 if (_comp.
fast._data3 < fast._data3)
return true;
61 else if (_comp.
fast._data3 > fast._data3)
return false;
62 if (_comp.
fast._data4 < fast._data4)
return true;
68 fast._data1 = _rvalue.
fast._data1;
69 fast._data2 = _rvalue.
fast._data2;
70 fast._data3 = _rvalue.
fast._data3;
71 fast._data4 = _rvalue.
fast._data4;
77 return fast._data1 == 0
85 fast._data1 = fast._data2 = fast._data3 = fast._data4 = 0;
88 std::string print()
const;
89 static Guid parse(
const std::string& _value);
90 static Guid generate();
92 friend std::ostream& operator << ( std::ostream& _stream,
const Guid& _value )
94 _stream << _value.
print();
98 friend std::istream& operator >> ( std::istream& _stream,
Guid& _value )
102 if (_stream.fail()) _value.
clear();
109 static const char convert_hex[64];
119 uint32 _data1, _data2, _data3, _data4;
123 unsigned char _data1[16];
137 #endif // __MYGUI_GUID_H__