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 13using namespace std; 14 15class Attributes { 16protected: 17 static string atNames[NUM_ATR]; 18 static int numAttrs; 19 void Setup(void); 20 uint64_t attributes; 21 22public: 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 39ostream & operator<<(ostream & os, const Attributes & data); 40 41#endif 42