#include <iostream>
using namespace std;
enum ETYPE
{
TP1 =1,
TP2 =2,
TP3 =4,
TP4 =8,
};
int g_State = 0;
void add_state(ETYPE type)
{
g_State |= type;
}
void del_state(ETYPE type)
{
g_State &= ~type;
}
void del_all_state()
{
g_State &= ~TP1 &~TP2 &~TP3 &~TP4;
}
bool get_state(ETYPE type)
{
int t = g_State & type;
if(t)
return true;
else
return false;
}
int main()
{
add_state(TP1);
cout<<g_State<<endl;
add_state(TP2);
cout<<g_State<<endl;
add_state(TP3);
cout<<g_State<<endl;
add_state(TP4);
cout<<g_State<<endl;
cout<<endl;
if( get_state(TP1) )
cout<<"TP1"<<endl;
if( get_state(TP2) )
cout<<"TP2"<<endl;
if( get_state(TP3) )
cout<<"TP3"<<endl;
if( get_state(TP4) )
cout<<"TP4"<<endl;
//del_all_state();
cout<<endl;
del_state(TP1);
if( get_state(TP1) )
cout<<"1TP1"<<endl;
if( get_state(TP2) )
cout<<"1TP2"<<endl;
if( get_state(TP3) )
cout<<"1TP3"<<endl;
if( get_state(TP4) )
cout<<"1TP4"<<endl;
cout<<endl;
del_state(TP2);
if( get_state(TP1) )
cout<<"2TP1"<<endl;
if( get_state(TP2) )
cout<<"2TP2"<<endl;
if( get_state(TP3) )
cout<<"2TP3"<<endl;
if( get_state(TP4) )
cout<<"2TP4"<<endl;
cout<<endl;
del_state(TP3);
if( get_state(TP1) )
cout<<"3TP1"<<endl;
if( get_state(TP2) )
cout<<"3TP2"<<endl;
if( get_state(TP3) )
cout<<"3TP3"<<endl;
if( get_state(TP4) )
cout<<"3TP4"<<endl;
cout<<endl;
del_state(TP4);
if( get_state(TP1) )
cout<<"4TP1"<<endl;
if( get_state(TP2) )
cout<<"4TP2"<<endl;
if( get_state(TP3) )
cout<<"4TP3"<<endl;
if( get_state(TP4) )
cout<<"4TP4"<<endl;
system("pause");
return 0;
}