1 // 2 // C++ Interface: GUIDData 3 // 4 // Description: GUIDData class header 5 // Implements the GUIDData data structure and support methods 6 // 7 // 8 // Author: Rod Smith <rodsmith@rodsbooks.com>, (C) 2010-2011 9 // 10 // Copyright: See COPYING file that comes with this distribution 11 // 12 // 13 14 #ifndef __GUIDDATA_CLASS 15 #define __GUIDDATA_CLASS 16 17 #include <stdint.h> 18 #include <string> 19 20 // Have to play games with uuid_t since it's defined in incompatible ways 21 // for Unix (libuuid) vs. Windows (in rpc.h) 22 #ifdef _WIN32 23 #include <rpc.h> 24 #ifdef _MSC_VER 25 #pragma comment(lib, "Rpcrt4.lib") 26 #endif 27 typedef unsigned char my_uuid_t[16]; 28 #else // Not Windows 29 #include <uuid/uuid.h> 30 typedef uuid_t my_uuid_t; 31 #endif 32 33 using namespace std; 34 35 // Note: This class's data size is critical. If data elements must be added, 36 // it will be necessary to modify various GPT classes to compensate. 37 class GUIDData { 38 private: 39 static bool firstInstance; 40 protected: 41 my_uuid_t uuidData; 42 string DeleteSpaces(string s); 43 public: 44 GUIDData(void); 45 GUIDData(const GUIDData & orig); 46 GUIDData(const string & orig); 47 GUIDData(const char * orig); 48 ~GUIDData(void); 49 50 // Data assignment operators.... 51 GUIDData & operator=(const GUIDData & orig); 52 GUIDData & operator=(const string & orig); 53 GUIDData & operator=(const char * orig); 54 void Zero(void); 55 void Randomize(void); 56 57 // Data tests.... 58 int operator==(const GUIDData & orig) const; 59 int operator!=(const GUIDData & orig) const; 60 61 // Data retrieval.... 62 string AsString(void) const; 63 }; // class GUIDData 64 65 ostream & operator<<(ostream & os, const GUIDData & data); 66 67 #endif 68