1 // iskeyword.cpp
2 
3 #ifdef _MSC_VER
4 #pragma warning ( disable : 4786 )
5 #endif//_MSC_VER
6 
7 #include <string>
8 
9 #include "iskeyword.h"
10 
11 using std::string;
12 
13 bool iskeyword ( const string& ident )
14 {
15 #define I(s) if ( ident == #s ) return true;
16 	switch ( ident[0] )
17 	{
18 	case '_':
19 		I(__cdecl);
20 		I(__declspec);
21 		I(__except);
22 		I(__fastcall);
23 		I(__finally);
24 		I(__inline);
25 		I(__int8);
26 		I(__int16);
27 		I(__int32);
28 		I(__int64);
29 		I(__leave);
30 		I(__stdcall);
31 		I(__try);
32 		break;
33 	case 'b':
34 		I(bool);
35 		I(break);
36 		break;
37 	case 'c':
38 		I(case);
39 		I(catch);
40 		I(char);
41 		I(class);
42 		I(const);
43 		I(const_cast);
44 		I(continue);
45 		break;
46 	case 'd':
47 		I(default);
48 		I(delete);
49 		I(dllexport);
50 		I(dllimport);
51 		I(do);
52 		I(double);
53 		I(dynamic_cast);
54 		break;
55 	case 'e':
56 		I(else);
57 		I(enum);
58 		I(explicit);
59 		I(extern);
60 		break;
61 	case 'f':
62 		I(false);
63 		I(float);
64 		I(for);
65 		I(friend);
66 		break;
67 	case 'g':
68 		I(goto);
69 		break;
70 	case 'i':
71 		I(if);
72 		I(inline);
73 		I(int);
74 		break;
75 	case 'l':
76 		I(long);
77 		break;
78 	case 'm':
79 		I(mutable);
80 		break;
81 	case 'n':
82 		I(naked);
83 		I(namespace);
84 		I(new);
85 		I(noreturn);
86 		break;
87 	case 'o':
88 		I(operator);
89 		break;
90 	case 'p':
91 		I(private);
92 		I(protected);
93 		I(public);
94 		break;
95 	case 'r':
96 		I(register);
97 		I(reinterpret_cast);
98 		I(return);
99 		break;
100 	case 's':
101 		I(short);
102 		I(signed);
103 		I(sizeof);
104 		I(static);
105 		I(static_cast);
106 		I(struct);
107 		I(switch);
108 		break;
109 	case 't':
110 		I(template);
111 		I(this);
112 		I(thread);
113 		I(throw);
114 		I(true);
115 		I(try);
116 		I(typedef);
117 		I(typeid);
118 		I(typename);
119 		break;
120 	case 'u':
121 		I(union);
122 		I(unsigned);
123 		I(using);
124 		I(uuid);
125 		I(__uuidof);
126 		break;
127 	case 'v':
128 		I(virtual);
129 		I(void);
130 		I(volatile);
131 		break;
132 	case 'w':
133 		I(wmain);
134 		I(while);
135 		break;
136 	}
137 	return false;
138 }
139