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