| /* This program is copyright (c) 2009-2011 by Roderick W. Smith. It is distributed |
| under the terms of the GNU GPL version 2, as detailed in the COPYING file. */ |
| |
| #include <stdint.h> |
| #include <string> |
| |
| #ifndef __GPT_ATTRIBUTES |
| #define __GPT_ATTRIBUTES |
| |
| #define NUM_ATR 64 /* # of attributes -- 64, since it's a 64-bit field */ |
| #define ATR_NAME_SIZE 25 /* maximum size of attribute names */ |
| |
| using namespace std; |
| |
| class Attributes { |
| protected: |
| static string atNames[NUM_ATR]; |
| static int numAttrs; |
| void Setup(void); |
| uint64_t attributes; |
| |
| public: |
| Attributes(void); |
| Attributes(const uint64_t a); |
| ~Attributes(void); |
| void operator=(uint64_t a) {attributes = a;} |
| |
| uint64_t GetAttributes(void) const {return attributes;} |
| void DisplayAttributes(void); |
| void ShowAttributes(const uint32_t partNum); |
| |
| void ChangeAttributes(void); |
| bool OperateOnAttributes(const uint32_t partNum, const string& attributeOperator, const string& attributeBits); |
| |
| static const string& GetAttributeName(const uint32_t bitNum) {return atNames [bitNum];} |
| static void ListAttributes(void); |
| }; // class Attributes |
| |
| ostream & operator<<(ostream & os, const Attributes & data); |
| |
| #endif |