| // |
| // C++ Interface: GUIDData |
| // |
| // Description: GUIDData class header |
| // Implements the GUIDData data structure and support methods |
| // |
| // |
| // Author: Rod Smith <rodsmith@rodsbooks.com>, (C) 2010-2011 |
| // |
| // Copyright: See COPYING file that comes with this distribution |
| // |
| // |
| |
| #ifndef __GUIDDATA_CLASS |
| #define __GUIDDATA_CLASS |
| |
| #include <stdint.h> |
| #include <string> |
| |
| // Have to play games with uuid_t since it's defined in incompatible ways |
| // for Unix (libuuid) vs. Windows (in rpc.h) |
| #ifdef _WIN32 |
| #include <rpc.h> |
| #ifdef _MSC_VER |
| #pragma comment(lib, "Rpcrt4.lib") |
| #endif |
| typedef unsigned char my_uuid_t[16]; |
| #else // Not Windows |
| #include <uuid/uuid.h> |
| typedef uuid_t my_uuid_t; |
| #endif |
| |
| using namespace std; |
| |
| // Note: This class's data size is critical. If data elements must be added, |
| // it will be necessary to modify various GPT classes to compensate. |
| class GUIDData { |
| private: |
| static bool firstInstance; |
| protected: |
| my_uuid_t uuidData; |
| string DeleteSpaces(string s); |
| public: |
| GUIDData(void); |
| GUIDData(const GUIDData & orig); |
| GUIDData(const string & orig); |
| GUIDData(const char * orig); |
| ~GUIDData(void); |
| |
| // Data assignment operators.... |
| GUIDData & operator=(const GUIDData & orig); |
| GUIDData & operator=(const string & orig); |
| GUIDData & operator=(const char * orig); |
| void Zero(void); |
| void Randomize(void); |
| |
| // Data tests.... |
| int operator==(const GUIDData & orig) const; |
| int operator!=(const GUIDData & orig) const; |
| |
| // Data retrieval.... |
| string AsString(void) const; |
| }; // class GUIDData |
| |
| ostream & operator<<(ostream & os, const GUIDData & data); |
| |
| #endif |