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