xref: /aosp_15_r20/external/gptfdisk/guid.h (revision 57696d54d05c64fd1b1787f8371dbcf104911cfb)
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