]>
Commit | Line | Data |
---|---|---|
bb3290d9 LT |
1 | static struct resword { |
2 | const char *name; | |
3 | int token; | |
4 | } keywords[] = { | |
5 | { "EXPORT_SYMBOL", EXPORT_SYMBOL_KEYW }, | |
6 | { "EXPORT_SYMBOL_GPL", EXPORT_SYMBOL_KEYW }, | |
7 | { "EXPORT_SYMBOL_GPL_FUTURE", EXPORT_SYMBOL_KEYW }, | |
8 | { "EXPORT_UNUSED_SYMBOL", EXPORT_SYMBOL_KEYW }, | |
9 | { "EXPORT_UNUSED_SYMBOL_GPL", EXPORT_SYMBOL_KEYW }, | |
10 | { "__asm", ASM_KEYW }, | |
11 | { "__asm__", ASM_KEYW }, | |
12 | { "__attribute", ATTRIBUTE_KEYW }, | |
13 | { "__attribute__", ATTRIBUTE_KEYW }, | |
14 | { "__const", CONST_KEYW }, | |
15 | { "__const__", CONST_KEYW }, | |
16 | { "__extension__", EXTENSION_KEYW }, | |
17 | { "__inline", INLINE_KEYW }, | |
18 | { "__inline__", INLINE_KEYW }, | |
19 | { "__signed", SIGNED_KEYW }, | |
20 | { "__signed__", SIGNED_KEYW }, | |
21 | { "__typeof", TYPEOF_KEYW }, | |
22 | { "__typeof__", TYPEOF_KEYW }, | |
23 | { "__volatile", VOLATILE_KEYW }, | |
24 | { "__volatile__", VOLATILE_KEYW }, | |
25 | { "__builtin_va_list", VA_LIST_KEYW }, | |
26 | ||
27 | // According to rth, c99 defines "_Bool", __restrict", __restrict__", "restrict". KAO | |
28 | { "_Bool", BOOL_KEYW }, | |
29 | { "_restrict", RESTRICT_KEYW }, | |
30 | { "__restrict__", RESTRICT_KEYW }, | |
31 | { "restrict", RESTRICT_KEYW }, | |
32 | { "asm", ASM_KEYW }, | |
33 | ||
34 | // attribute commented out in modutils 2.4.2. People are using 'attribute' as a | |
35 | // field name which breaks the genksyms parser. It is not a gcc keyword anyway. | |
36 | // KAO. }, | |
37 | // { "attribute", ATTRIBUTE_KEYW }, | |
38 | ||
39 | { "auto", AUTO_KEYW }, | |
40 | { "char", CHAR_KEYW }, | |
41 | { "const", CONST_KEYW }, | |
42 | { "double", DOUBLE_KEYW }, | |
43 | { "enum", ENUM_KEYW }, | |
44 | { "extern", EXTERN_KEYW }, | |
45 | { "float", FLOAT_KEYW }, | |
46 | { "inline", INLINE_KEYW }, | |
47 | { "int", INT_KEYW }, | |
48 | { "long", LONG_KEYW }, | |
49 | { "register", REGISTER_KEYW }, | |
50 | { "short", SHORT_KEYW }, | |
51 | { "signed", SIGNED_KEYW }, | |
52 | { "static", STATIC_KEYW }, | |
53 | { "struct", STRUCT_KEYW }, | |
54 | { "typedef", TYPEDEF_KEYW }, | |
55 | { "typeof", TYPEOF_KEYW }, | |
56 | { "union", UNION_KEYW }, | |
57 | { "unsigned", UNSIGNED_KEYW }, | |
58 | { "void", VOID_KEYW }, | |
59 | { "volatile", VOLATILE_KEYW }, | |
60 | }; | |
61 | ||
62 | #define NR_KEYWORDS (sizeof(keywords)/sizeof(struct resword)) | |
63 | ||
64 | static int is_reserved_word(register const char *str, register unsigned int len) | |
65 | { | |
66 | int i; | |
67 | for (i = 0; i < NR_KEYWORDS; i++) { | |
68 | struct resword *r = keywords + i; | |
69 | int l = strlen(r->name); | |
70 | if (len == l && !memcmp(str, r->name, len)) | |
71 | return r->token; | |
72 | } | |
73 | return -1; | |
74 | } |