xref: /aosp_15_r20/external/gptfdisk/attributes.h (revision 57696d54d05c64fd1b1787f8371dbcf104911cfb)
1*57696d54SAkhilesh Sanikop /* This program is copyright (c) 2009-2011 by Roderick W. Smith. It is distributed
2*57696d54SAkhilesh Sanikop   under the terms of the GNU GPL version 2, as detailed in the COPYING file. */
3*57696d54SAkhilesh Sanikop 
4*57696d54SAkhilesh Sanikop #ifndef __GPT_ATTRIBUTES
5*57696d54SAkhilesh Sanikop #define __GPT_ATTRIBUTES
6*57696d54SAkhilesh Sanikop 
7*57696d54SAkhilesh Sanikop #include <stdint.h>
8*57696d54SAkhilesh Sanikop #include <string>
9*57696d54SAkhilesh Sanikop 
10*57696d54SAkhilesh Sanikop #define NUM_ATR 64 /* # of attributes -- 64, since it's a 64-bit field */
11*57696d54SAkhilesh Sanikop #define ATR_NAME_SIZE 25 /* maximum size of attribute names */
12*57696d54SAkhilesh Sanikop 
13*57696d54SAkhilesh Sanikop class Attributes {
14*57696d54SAkhilesh Sanikop protected:
15*57696d54SAkhilesh Sanikop    static std::string atNames[NUM_ATR];
16*57696d54SAkhilesh Sanikop    static int numAttrs;
17*57696d54SAkhilesh Sanikop    void Setup(void);
18*57696d54SAkhilesh Sanikop    uint64_t attributes;
19*57696d54SAkhilesh Sanikop 
20*57696d54SAkhilesh Sanikop public:
21*57696d54SAkhilesh Sanikop    Attributes(void);
22*57696d54SAkhilesh Sanikop    Attributes(const uint64_t a);
23*57696d54SAkhilesh Sanikop    ~Attributes(void);
24*57696d54SAkhilesh Sanikop    void operator=(uint64_t a) {attributes = a;}
25*57696d54SAkhilesh Sanikop 
GetAttributes(void)26*57696d54SAkhilesh Sanikop    uint64_t GetAttributes(void) const {return attributes;}
27*57696d54SAkhilesh Sanikop    void DisplayAttributes(void);
28*57696d54SAkhilesh Sanikop    void ShowAttributes(const uint32_t partNum);
29*57696d54SAkhilesh Sanikop 
30*57696d54SAkhilesh Sanikop    void ChangeAttributes(void);
31*57696d54SAkhilesh Sanikop    bool OperateOnAttributes(const uint32_t partNum, const std::string& attributeOperator, const std::string& attributeBits);
32*57696d54SAkhilesh Sanikop 
GetAttributeName(const uint32_t bitNum)33*57696d54SAkhilesh Sanikop    static const std::string& GetAttributeName(const uint32_t bitNum) {return atNames [bitNum];}
34*57696d54SAkhilesh Sanikop    static void ListAttributes(void);
35*57696d54SAkhilesh Sanikop }; // class Attributes
36*57696d54SAkhilesh Sanikop 
37*57696d54SAkhilesh Sanikop std::ostream & operator<<(std::ostream & os, const Attributes & data);
38*57696d54SAkhilesh Sanikop 
39*57696d54SAkhilesh Sanikop #endif
40