#include <iostream>
using namespace std;
enum Core { Single, Dual, Quad };
enum Words { Bit32, Bit64 };
enum HyperThread { Support, NotSupport };
class CPU {
public:
CPU(unsigned frequence,Core type,Words lenght,HyperThread mode)
: frequence(frequence),CoreType(type),WordLen(lenght),mode(mode){ }
void show();
private:
unsigned frequence : 32;
Core CoreType : 3;
Words WordLen : 2;
HyperThread mode : 2;
};
void CPU::show() {
cout << "Frequence: " << frequence << endl;
cout << "Core: ";
switch ((unsigned)CoreType) {
case Single: cout << "single-Core"; break;
case Dual: cout << "Dual-Core"; break;
case Quad: cout << "Quad-Core"; break;
}
cout << endl;
cout << "Words: ";
switch ((unsigned)WordLen) {
case Bit32: cout << "32-bits len"; break;
case Bit64: cout << "64-bits len"; break;
}
cout << endl;
cout << "HyperThread: ";
switch ((unsigned)mode) {
case Support: cout << "Support Hyper-Thread"; break;
case NotSupport: cout << "Not Support Hyper-Thread"; break;
}
cout << endl;
}
int main()
{
CPU c(3000000000, Quad, Bit64, Support);
cout << "Size of Class CPU:" << sizeof(CPU) << endl;
c.show();
return 0;
}