1/***********************************************************************
2*                                                                      *
3*               This software is part of the ast package               *
4*          Copyright (c) 1986-2009 AT&T Intellectual Property          *
5*                      and is licensed under the                       *
6*                  Common Public License, Version 1.0                  *
7*                    by AT&T Intellectual Property                     *
8*                                                                      *
9*                A copy of the License is available at                 *
10*            http://www.opensource.org/licenses/cpl1.0.txt             *
11*         (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9)         *
12*                                                                      *
13*              Information and Software Systems Research               *
14*                            AT&T Research                             *
15*                           Florham Park NJ                            *
16*                                                                      *
17*                 Glenn Fowler <gsf@research.att.com>                  *
18*                                                                      *
19***********************************************************************/
20#pragma prototyped
21/*
22 * Glenn Fowler
23 * AT&T Research
24 *
25 * preprocessor C language keyword token values
26 * handles classic, ANSI and C++
27 * additional non-standard keyword tokens are
28 * crammed into T_NOISE and T_X_*
29 */
30
31#ifndef _PPKEY_H
32#define _PPKEY_H
33
34/*
35 * NOTE: preserve the ranges for is*()
36 */
37
38#define ppisnoise(x)	((x)>=T_NOISE&&(x)<T_KEYWORD)
39
40/*
41 * classic
42 */
43
44#define T_AUTO		(T_TOKEN+0)
45#define T_BREAK		(T_TOKEN+1)
46#define T_CASE		(T_TOKEN+2)
47#define T_CHAR		(T_TOKEN+3)
48#define T_CONTINUE	(T_TOKEN+4)
49#define T_DEFAULT	(T_TOKEN+5)
50#define T_DO		(T_TOKEN+6)
51#define T_DOUBLE_T	(T_TOKEN+7)
52#define T_ELSE		(T_TOKEN+8)
53#define T_EXTERN	(T_TOKEN+9)
54#define T_FLOAT_T	(T_TOKEN+10)
55#define T_FOR		(T_TOKEN+11)
56#define T_GOTO		(T_TOKEN+12)
57#define T_IF		(T_TOKEN+13)
58#define T_INT		(T_TOKEN+14)
59#define T_LONG		(T_TOKEN+15)
60#define T_REGISTER	(T_TOKEN+16)
61#define T_RETURN	(T_TOKEN+17)
62#define T_SHORT		(T_TOKEN+18)
63#define T_SIZEOF	(T_TOKEN+19)
64#define T_STATIC	(T_TOKEN+20)
65#define T_STRUCT	(T_TOKEN+21)
66#define T_SWITCH	(T_TOKEN+22)
67#define T_TYPEDEF	(T_TOKEN+23)
68#define T_UNION		(T_TOKEN+24)
69#define T_UNSIGNED	(T_TOKEN+25)
70#define T_WHILE		(T_TOKEN+26)
71
72/*
73 * ANSI
74 */
75
76#define T_CONST		(T_TOKEN+27)
77#define T_ENUM		(T_TOKEN+28)
78#define T_SIGNED	(T_TOKEN+29)
79#define T_VOID		(T_TOKEN+30)
80#define T_VOLATILE	(T_TOKEN+31)
81
82/*
83 * C++
84 */
85
86#define T_ASM		(T_TOKEN+32)
87#define T_BOOL		(T_TOKEN+33)
88#define T_CATCH		(T_TOKEN+34)
89#define T_CLASS		(T_TOKEN+35)
90#define T_CONST_CAST	(T_TOKEN+36)
91#define T_DELETE	(T_TOKEN+37)
92#define T_DYNAMIC_CAST	(T_TOKEN+38)
93#define T_EXPLICIT	(T_TOKEN+39)
94#define T_FALSE		(T_TOKEN+40)
95#define T_FRIEND	(T_TOKEN+41)
96#define T_INLINE	(T_TOKEN+42)
97#define T_MUTABLE	(T_TOKEN+43)
98#define T_NAMESPACE	(T_TOKEN+44)
99#define T_NEW		(T_TOKEN+45)
100#define T_OPERATOR	(T_TOKEN+46)
101#define T_OVERLOAD	(T_TOKEN+47)
102#define T_PRIVATE	(T_TOKEN+48)
103#define T_PROTECTED	(T_TOKEN+49)
104#define T_PUBLIC	(T_TOKEN+50)
105#define T_REINTERPRET_CAST (T_TOKEN+51)
106#define T_STATIC_CAST	(T_TOKEN+52)
107#define T_TEMPLATE	(T_TOKEN+53)
108#define T_THIS		(T_TOKEN+54)
109#define T_THROW		(T_TOKEN+55)
110#define T_TRUE		(T_TOKEN+56)
111#define T_TRY		(T_TOKEN+57)
112#define T_TYPEID	(T_TOKEN+58)
113#define T_USING		(T_TOKEN+59)
114#define T_VIRTUAL	(T_TOKEN+60)
115#define T_WCHAR_T	(T_TOKEN+61)
116
117/*
118 * future
119 */
120
121#define T_INT64		(T_TOKEN+62)
122
123/*
124 * non-standard
125 */
126
127#define T_BUILTIN	(T_TOKEN+63)
128#define T_NOISES	(T_TOKEN+64)
129#define T_NOISE		(T_TOKEN+65)
130#define T_X_GROUP	(T_TOKEN+66)
131#define T_X_LINE	(T_TOKEN+67)
132#define T_X_STATEMENT	(T_TOKEN+68)
133
134/*
135 * first available keyword token value
136 */
137
138#define T_KEYWORD	(T_TOKEN+69)
139
140/*
141 * implementation globals
142 */
143
144extern struct ppkeyword	ppkey[];
145
146#endif
147