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