• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /** \file
2  * Basic type and constant definitions for ANTLR3 Runtime.
3  */
4 #ifndef	_ANTLR3DEFS_HPP
5 #define	_ANTLR3DEFS_HPP
6 
7 // [The "BSD licence"]
8 // Copyright (c) 2005-2009 Gokulakannan Somasundaram, ElectronDB
9 
10 //
11 // All rights reserved.
12 //
13 // Redistribution and use in source and binary forms, with or without
14 // modification, are permitted provided that the following conditions
15 // are met:
16 // 1. Redistributions of source code must retain the above copyright
17 //    notice, this list of conditions and the following disclaimer.
18 // 2. Redistributions in binary form must reproduce the above copyright
19 //    notice, this list of conditions and the following disclaimer in the
20 //    documentation and/or other materials provided with the distribution.
21 // 3. The name of the author may not be used to endorse or promote products
22 //    derived from this software without specific prior written permission.
23 //
24 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
25 // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
26 // OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
27 // IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
28 // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
29 // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
30 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
31 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
33 // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 
35 /* Following are for generated code, they are not referenced internally!!!
36  */
37 #if !defined(ANTLR_HUGE) && !defined(ANTLR_AVERAGE) && !defined(ANTLR_SMALL)
38 #define	ANTLR_AVERAGE
39 #endif
40 
41 #ifdef	ANTLR_HUGE
42 #ifndef	ANTLR_SIZE_HINT
43 #define	ANTLR_SIZE_HINT        2049
44 #endif
45 #ifndef	ANTLR_LIST_SIZE_HINT
46 #define	ANTLR_LIST_SIZE_HINT   127
47 #endif
48 #endif
49 
50 #ifdef	ANTLR_AVERAGE
51 #ifndef	ANTLR_SIZE_HINT
52 #define	ANTLR_SIZE_HINT        1025
53 #define	ANTLR_LIST_SIZE_HINT   63
54 #endif
55 #endif
56 
57 #ifdef	ANTLR_SMALL
58 #ifndef	ANTLR_SIZE_HINT
59 #define	ANTLR_SIZE_HINT        211
60 #define	ANTLR_LIST_SIZE_HINT   31
61 #endif
62 #endif
63 
64 // Definitions that indicate the encoding scheme character streams and strings etc
65 //
66 /// Indicates Big Endian for encodings where this makes sense
67 ///
68 #define ANTLR_BE           1
69 
70 /// Indicates Little Endian for encoidngs where this makes sense
71 ///
72 #define ANTLR_LE           2
73 
74 /// General latin-1 or other 8 bit encoding scheme such as straight ASCII
75 ///
76 #define ANTLR_ENC_8BIT     4
77 
78 /// UTF-8 encoding scheme
79 ///
80 #define ANTLR_ENC_UTF8     8
81 
82 /// UTF-16 encoding scheme (which also covers UCS2 as that does not have surrogates)
83 ///
84 #define ANTLR_ENC_UTF16        16
85 #define ANTLR_ENC_UTF16BE      16 + ANTLR_BE
86 #define ANTLR_ENC_UTF16LE      16 + ANTLR_LE
87 
88 /// UTF-32 encoding scheme (basically straight 32 bit)
89 ///
90 #define ANTLR_ENC_UTF32        32
91 #define ANTLR_ENC_UTF32BE      32 + ANTLR_BE
92 #define ANTLR_ENC_UTF32LE      32 + ANTLR_LE
93 
94 /// Input is 8 bit EBCDIC (which we convert to 8 bit ASCII on the fly
95 ///
96 #define ANTLR_ENC_EBCDIC       64
97 
98 #define ANTLR_BEGIN_NAMESPACE() namespace antlr3 {
99 #define ANTLR_END_NAMESPACE() }
100 
101 #define ANTLR_USE_64BIT
102 
103 /* Common definitions come first
104  */
105 #include    <antlr3errors.hpp>
106 
107 /* Work out what operating system/compiler this is. We just do this once
108  * here and use an internal symbol after this.
109  */
110 #ifdef	_WIN64
111 
112 # ifndef	ANTLR_WINDOWS
113 #   define	ANTLR_WINDOWS
114 # endif
115 # define	ANTLR_WIN64
116 # define	ANTLR_USE_64BIT
117 
118 #else
119 
120 #ifdef	_WIN32
121 # ifndef	ANTLR_WINDOWS
122 #  define	ANTLR_WINDOWS
123 # endif
124 
125 #define	ANTLR_WIN32
126 #endif
127 
128 #endif
129 
130 #ifdef	ANTLR_WINDOWS
131 
132 #ifndef WIN32_LEAN_AND_MEAN
133 #define	WIN32_LEAN_AND_MEAN
134 #endif
135 
136 /* Allow VC 8 (vs2005) and above to use 'secure' versions of various functions such as sprintf
137  */
138 #ifndef	_CRT_SECURE_NO_DEPRECATE
139 #define	_CRT_SECURE_NO_DEPRECATE
140 #endif
141 
142 #include    <stdlib.h>
143 #include    <winsock2.h>
144 #include    <sys/types.h>
145 #include    <sys/stat.h>
146 #include    <stdarg.h>
147 
148 #define	ANTLR_API      __declspec(dllexport)
149 #define	ANTLR_CDECL    __cdecl
150 #define ANTLR_FASTCALL __fastcall
151 
152 
153 #ifndef __MINGW32__
154 // Standard Windows types
155 //
156 typedef	INT32	ANTLR_CHAR;
157 typedef	UINT32	ANTLR_UCHAR;
158 
159 typedef	INT8	ANTLR_INT8;
160 typedef	INT16	ANTLR_INT16;
161 typedef	INT32	ANTLR_INT32;
162 typedef	INT64	ANTLR_INT64;
163 typedef	UINT8	ANTLR_UINT8;
164 typedef	UINT16	ANTLR_UINT16;
165 typedef	UINT32	ANTLR_UINT32;
166 typedef	UINT64	ANTLR_UINT64;
167 typedef UINT64  ANTLR_BITWORD;
168 
169 #else
170 // Mingw uses stdint.h and fails to define standard Microsoft typedefs
171 // such as UINT16, hence we must use stdint.h for Mingw.
172 //
173 #include <stdint.h>
174 typedef int32_t     ANTLR_CHAR;
175 typedef uint32_t    ANTLR_UCHAR;
176 
177 typedef int8_t	    ANTLR_INT8;
178 typedef int16_t	    ANTLR_INT16;
179 typedef int32_t	    ANTLR_INT32;
180 typedef int64_t	    ANTLR_INT64;
181 
182 typedef uint8_t	    ANTLR_UINT8;
183 typedef uint16_t    ANTLR_UINT16;
184 typedef uint32_t    ANTLR_UINT32;
185 typedef uint64_t    ANTLR_UINT64;
186 typedef uint64_t    ANTLR_BITWORD;
187 
188 #endif
189 
190 
191 
192 #define	ANTLR_UINT64_LIT(lit)  lit##ULL
193 
194 #define	ANTLR_INLINE	        __inline
195 
196 typedef FILE *	    ANTLR_FDSC;
197 typedef	struct stat ANTLR_FSTAT_STRUCT;
198 
199 
200 
201 #ifdef	ANTLR_USE_64BIT
202 #define ANTLR_UINT64_CAST(ptr) ((ANTLR_UINT64)(ptr))
203 #define	ANTLR_UINT32_CAST(ptr)	(ANTLR_UINT32)((ANTLR_UINT64)(ptr))
204 typedef ANTLR_INT64		ANTLR_MARKER;
205 typedef ANTLR_UINT64		ANTLR_INTKEY;
206 #else
207 #define ANTLR_UINT64_CAST(ptr) (ANTLR_UINT64)((ANTLR_UINT32)(ptr))
208 #define	ANTLR_UINT32_CAST(ptr)	(ANTLR_UINT32)(ptr)
209 typedef	ANTLR_INT32		ANTLR_MARKER;
210 typedef ANTLR_UINT32	ANTLR_INTKEY;
211 #endif
212 
213 #ifdef	ANTLR_WIN32
214 #endif
215 
216 #ifdef	ANTLR_WIN64
217 #endif
218 
219 
220 typedef	int			ANTLR_SALENT;								// Type used for size of accept structure
221 typedef struct sockaddr_in	ANTLR_SOCKADDRT, * pANTLR_SOCKADDRT;	// Type used for socket address declaration
222 typedef struct sockaddr		ANTLR_SOCKADDRC, * pANTLR_SOCKADDRC;	// Type used for cast on accept()
223 
224 #define	ANTLR_CLOSESOCKET	closesocket
225 
226 /* Warnings that are over-zealous such as complaining about strdup, we
227  * can turn off.
228  */
229 
230 /* Don't complain about "deprecated" functions such as strdup
231  */
232 #pragma warning( disable : 4996 )
233 
234 #else
235 
236 #ifdef __LP64__
237 #define ANTLR_USE_64BIT
238 #endif
239 
240 #include <stdio.h>
241 #include <stdint.h>
242 #include <sys/types.h>
243 #include <sys/stat.h>
244 #include <stdlib.h>
245 #include <stddef.h>
246 #include <stdarg.h>
247 #include <stdlib.h>
248 #include <stdarg.h>
249 #include <inttypes.h>
250 #include <unistd.h>
251 
252 #define _stat stat
253 
254 typedef int SOCKET;
255 
256 /* Inherit type definitions for autoconf
257  */
258 typedef int32_t	    ANTLR_CHAR;
259 typedef uint32_t    ANTLR_UCHAR;
260 
261 typedef int8_t	    ANTLR_INT8;
262 typedef int16_t	    ANTLR_INT16;
263 typedef int32_t	    ANTLR_INT32;
264 typedef int64_t	    ANTLR_INT64;
265 
266 typedef uint8_t	    ANTLR_UINT8;
267 typedef uint16_t    ANTLR_UINT16;
268 typedef uint32_t    ANTLR_UINT32;
269 typedef uint64_t    ANTLR_UINT64;
270 typedef uint64_t    ANTLR_BITWORD;
271 
272 #define ANTLR_INLINE   inline
273 #define	ANTLR_API
274 
275 typedef FILE *	    ANTLR_FDSC;
276 typedef	struct stat ANTLR_FSTAT_STRUCT;
277 
278 #ifdef	ANTLR_USE_64BIT
279 #define	ANTLR_FUNC_PTR(ptr)    (void *)((ANTLR_UINT64)(ptr))
280 #define ANTLR_UINT64_CAST(ptr)	(ANTLR_UINT64)(ptr))
281 #define	ANTLR_UINT32_CAST(ptr) (ANTLR_UINT32)((ANTLR_UINT64)(ptr))
282 typedef ANTLR_INT64		ANTLR_MARKER;
283 typedef ANTLR_UINT64		ANTLR_INTKEY;
284 #else
285 #define	ANTLR_FUNC_PTR(ptr)	(void *)((ANTLR_UINT32)(ptr))
286 #define ANTLR_UINT64_CAST(ptr) (ANTLR_UINT64)((ANTLR_UINT32)(ptr))
287 #define	ANTLR_UINT32_CAST(ptr)	(ANTLR_UINT32)(ptr)
288 typedef	ANTLR_INT32		ANTLR_MARKER;
289 typedef ANTLR_UINT32		ANTLR_INTKEY;
290 #endif
291 #define	ANTLR_UINT64_LIT(lit)	lit##ULL
292 
293 #endif
294 
295 #ifdef ANTLR_USE_64BIT
296 #define ANTLR_TRIE_DEPTH 63
297 #else
298 #define ANTLR_TRIE_DEPTH 31
299 #endif
300 /* Pre declare the typedefs for all the interfaces, then
301  * they can be inter-dependant and we will let the linker
302  * sort it out for us.
303  */
304 #include    <antlr3interfaces.hpp>
305 
306 // Include the unicode.org conversion library header.
307 //
308 #include    <antlr3convertutf.hpp>
309 
310 enum ChannelType
311 {
312 	/** Default channel for a token
313 	*/
314 	TOKEN_DEFAULT_CHANNEL	 = 0
315 	/** Reserved channel number for a HIDDEN token - a token that
316 		*  is hidden from the parser.
317 		*/
318 	,	HIDDEN		=		99
319 };
320 
321 #endif	/* _ANTLR3DEFS_H	*/
322