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