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