#include <iostream>
#include <string>
#include <map>
using namespace std;
#define ADD_ENUM_TO_MAP(m,x) m[#x]=x
enum MyEnumType {
quick, brown, fox, jumps, over, the, lazy, dog
};
int main() {
map<string,MyEnumType> nameToEnum;
ADD_ENUM_TO_MAP(nameToEnum, quick);
ADD_ENUM_TO_MAP(nameToEnum, brown);
ADD_ENUM_TO_MAP(nameToEnum, fox);
ADD_ENUM_TO_MAP(nameToEnum, jumps);
ADD_ENUM_TO_MAP(nameToEnum, over);
ADD_ENUM_TO_MAP(nameToEnum, the);
ADD_ENUM_TO_MAP(nameToEnum, lazy);
ADD_ENUM_TO_MAP(nameToEnum, dog);
cout << nameToEnum["fox"] << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8bWFwPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBBRERfRU5VTV9UT19NQVAobSx4KSBtWyN4XT14CgplbnVtIE15RW51bVR5cGUgewoJcXVpY2ssIGJyb3duLCBmb3gsIGp1bXBzLCBvdmVyLCB0aGUsIGxhenksIGRvZwp9OwoKaW50IG1haW4oKSB7CgltYXA8c3RyaW5nLE15RW51bVR5cGU+IG5hbWVUb0VudW07CglBRERfRU5VTV9UT19NQVAobmFtZVRvRW51bSwgcXVpY2spOwoJQUREX0VOVU1fVE9fTUFQKG5hbWVUb0VudW0sIGJyb3duKTsKCUFERF9FTlVNX1RPX01BUChuYW1lVG9FbnVtLCBmb3gpOwoJQUREX0VOVU1fVE9fTUFQKG5hbWVUb0VudW0sIGp1bXBzKTsKCUFERF9FTlVNX1RPX01BUChuYW1lVG9FbnVtLCBvdmVyKTsKCUFERF9FTlVNX1RPX01BUChuYW1lVG9FbnVtLCB0aGUpOwoJQUREX0VOVU1fVE9fTUFQKG5hbWVUb0VudW0sIGxhenkpOwoJQUREX0VOVU1fVE9fTUFQKG5hbWVUb0VudW0sIGRvZyk7Cgljb3V0IDw8IG5hbWVUb0VudW1bImZveCJdIDw8IGVuZGw7CglyZXR1cm4gMDsKfQ==