cppinit.c (cpp_handle_option): help_only is now part of the cpp_options structure.
[platform/upstream/gcc.git] / gcc / cpplib.h
1 /* Definitions for CPP library.
2    Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001
3    Free Software Foundation, Inc.
4    Written by Per Bothner, 1994-95.
5
6 This program is free software; you can redistribute it and/or modify it
7 under the terms of the GNU General Public License as published by the
8 Free Software Foundation; either version 2, or (at your option) any
9 later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19
20  In other words, you are welcome to use, share and improve this program.
21  You are forbidden to forbid anyone else to use, share and improve
22  what you give them.   Help stamp out software-hoarding!  */
23 #ifndef __GCC_CPPLIB__
24 #define __GCC_CPPLIB__
25
26 #include <sys/types.h>
27
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31
32 /* For complex reasons, cpp_reader is also typedefed in c-pragma.h.  */
33 #ifndef _C_PRAGMA_H
34 typedef struct cpp_reader cpp_reader;
35 #endif
36 typedef struct cpp_buffer cpp_buffer;
37 typedef struct cpp_options cpp_options;
38 typedef struct cpp_token cpp_token;
39 typedef struct cpp_string cpp_string;
40 typedef struct cpp_hashnode cpp_hashnode;
41 typedef struct cpp_pool cpp_pool;
42 typedef struct cpp_macro cpp_macro;
43 typedef struct cpp_lexer_pos cpp_lexer_pos;
44 typedef struct cpp_lookahead cpp_lookahead;
45 typedef struct cpp_callbacks cpp_callbacks;
46
47 struct directive;               /* These are deliberately incomplete.  */
48 struct answer;
49 struct cpp_macro;
50 struct macro_args;
51 struct cpp_chunk;
52 struct file_name_map_list;
53 struct htab;
54
55 /* The first two groups, apart from '=', can appear in preprocessor
56    expressions.  This allows a lookup table to be implemented in
57    _cpp_parse_expr.
58
59    The first group, to CPP_LAST_EQ, can be immediately followed by an
60    '='.  The lexer needs operators ending in '=', like ">>=", to be in
61    the same order as their counterparts without the '=', like ">>".  */
62
63 /* Positions in the table.  */
64 #define CPP_LAST_EQ CPP_MAX
65 #define CPP_FIRST_DIGRAPH CPP_HASH
66 #define CPP_LAST_PUNCTUATOR CPP_DOT_STAR
67
68 #define TTYPE_TABLE                             \
69   OP(CPP_EQ = 0,        "=")                    \
70   OP(CPP_NOT,           "!")                    \
71   OP(CPP_GREATER,       ">")    /* compare */   \
72   OP(CPP_LESS,          "<")                    \
73   OP(CPP_PLUS,          "+")    /* math */      \
74   OP(CPP_MINUS,         "-")                    \
75   OP(CPP_MULT,          "*")                    \
76   OP(CPP_DIV,           "/")                    \
77   OP(CPP_MOD,           "%")                    \
78   OP(CPP_AND,           "&")    /* bit ops */   \
79   OP(CPP_OR,            "|")                    \
80   OP(CPP_XOR,           "^")                    \
81   OP(CPP_RSHIFT,        ">>")                   \
82   OP(CPP_LSHIFT,        "<<")                   \
83   OP(CPP_MIN,           "<?")   /* extension */ \
84   OP(CPP_MAX,           ">?")                   \
85 \
86   OP(CPP_COMPL,         "~")                    \
87   OP(CPP_AND_AND,       "&&")   /* logical */   \
88   OP(CPP_OR_OR,         "||")                   \
89   OP(CPP_QUERY,         "?")                    \
90   OP(CPP_COLON,         ":")                    \
91   OP(CPP_COMMA,         ",")    /* grouping */  \
92   OP(CPP_OPEN_PAREN,    "(")                    \
93   OP(CPP_CLOSE_PAREN,   ")")                    \
94   OP(CPP_EQ_EQ,         "==")   /* compare */   \
95   OP(CPP_NOT_EQ,        "!=")                   \
96   OP(CPP_GREATER_EQ,    ">=")                   \
97   OP(CPP_LESS_EQ,       "<=")                   \
98 \
99   OP(CPP_PLUS_EQ,       "+=")   /* math */      \
100   OP(CPP_MINUS_EQ,      "-=")                   \
101   OP(CPP_MULT_EQ,       "*=")                   \
102   OP(CPP_DIV_EQ,        "/=")                   \
103   OP(CPP_MOD_EQ,        "%=")                   \
104   OP(CPP_AND_EQ,        "&=")   /* bit ops */   \
105   OP(CPP_OR_EQ,         "|=")                   \
106   OP(CPP_XOR_EQ,        "^=")                   \
107   OP(CPP_RSHIFT_EQ,     ">>=")                  \
108   OP(CPP_LSHIFT_EQ,     "<<=")                  \
109   OP(CPP_MIN_EQ,        "<?=")  /* extension */ \
110   OP(CPP_MAX_EQ,        ">?=")                  \
111   /* Digraphs together, beginning with CPP_FIRST_DIGRAPH.  */   \
112   OP(CPP_HASH,          "#")    /* digraphs */  \
113   OP(CPP_PASTE,         "##")                   \
114   OP(CPP_OPEN_SQUARE,   "[")                    \
115   OP(CPP_CLOSE_SQUARE,  "]")                    \
116   OP(CPP_OPEN_BRACE,    "{")                    \
117   OP(CPP_CLOSE_BRACE,   "}")                    \
118   /* The remainder of the punctuation.  Order is not significant.  */   \
119   OP(CPP_SEMICOLON,     ";")    /* structure */ \
120   OP(CPP_ELLIPSIS,      "...")                  \
121   OP(CPP_PLUS_PLUS,     "++")   /* increment */ \
122   OP(CPP_MINUS_MINUS,   "--")                   \
123   OP(CPP_DEREF,         "->")   /* accessors */ \
124   OP(CPP_DOT,           ".")                    \
125   OP(CPP_SCOPE,         "::")                   \
126   OP(CPP_DEREF_STAR,    "->*")                  \
127   OP(CPP_DOT_STAR,      ".*")                   \
128 \
129   TK(CPP_NAME,          SPELL_IDENT)    /* word */                      \
130   TK(CPP_INT,           SPELL_STRING)   /* 23 */                        \
131   TK(CPP_FLOAT,         SPELL_STRING)   /* 3.14159 */                   \
132   TK(CPP_NUMBER,        SPELL_STRING)   /* 34_be+ta  */                 \
133 \
134   TK(CPP_CHAR,          SPELL_STRING)   /* 'char' */                    \
135   TK(CPP_WCHAR,         SPELL_STRING)   /* L'char' */                   \
136   TK(CPP_OTHER,         SPELL_CHAR)     /* stray punctuation */         \
137 \
138   TK(CPP_STRING,        SPELL_STRING)   /* "string" */                  \
139   TK(CPP_WSTRING,       SPELL_STRING)   /* L"string" */                 \
140   TK(CPP_OSTRING,       SPELL_STRING)   /* @"string" - Objective C */   \
141   TK(CPP_HEADER_NAME,   SPELL_STRING)   /* <stdio.h> in #include */     \
142 \
143   TK(CPP_COMMENT,       SPELL_STRING)   /* Only if output comments.  */ \
144   TK(CPP_MACRO_ARG,     SPELL_NONE)     /* Macro argument.  */          \
145   OP(CPP_EOF,           "EOL")          /* End of line or file.  */
146
147 #define OP(e, s) e,
148 #define TK(e, s) e,
149 enum cpp_ttype
150 {
151   TTYPE_TABLE
152   N_TTYPES
153 };
154 #undef OP
155 #undef TK
156
157 /* C language kind, used when calling cpp_reader_init.  */
158 enum c_lang {CLK_GNUC89 = 0, CLK_GNUC99, CLK_STDC89, CLK_STDC94, CLK_STDC99,
159              CLK_GNUCXX, CLK_CXX98, CLK_OBJC, CLK_OBJCXX, CLK_ASM};
160
161 /* Multiple-include optimisation.  */
162 enum mi_state {MI_FAILED = 0, MI_OUTSIDE};
163 enum mi_ind {MI_IND_NONE = 0, MI_IND_NOT};
164
165 /* Payload of a NUMBER, FLOAT, STRING, or COMMENT token.  */
166 struct cpp_string
167 {
168   unsigned int len;
169   const unsigned char *text;
170 };
171
172 /* Flags for the cpp_token structure.  */
173 #define PREV_WHITE      (1 << 0) /* If whitespace before this token.  */
174 #define DIGRAPH         (1 << 1) /* If it was a digraph.  */
175 #define STRINGIFY_ARG   (1 << 2) /* If macro argument to be stringified.  */
176 #define PASTE_LEFT      (1 << 3) /* If on LHS of a ## operator.  */
177 #define NAMED_OP        (1 << 4) /* C++ named operators.  */
178 #define NO_EXPAND       (1 << 5) /* Do not macro-expand this token.  */
179
180 /* A preprocessing token.  This has been carefully packed and should
181    occupy 12 bytes on 32-bit hosts and 16 bytes on 64-bit hosts.  */
182 struct cpp_token
183 {
184   ENUM_BITFIELD(cpp_ttype) type : CHAR_BIT;  /* token type */
185   unsigned char flags;          /* flags - see above */
186
187   union
188   {
189     struct cpp_hashnode *node;  /* An identifier.  */
190     struct cpp_string str;      /* A string, or number.  */
191     unsigned int arg_no;        /* Argument no. for a CPP_MACRO_ARG.  */
192     unsigned char c;            /* Character represented by CPP_OTHER.  */
193   } val;
194 };
195
196 /* The position of a token in the current file.  */
197 struct cpp_lexer_pos
198 {
199   unsigned int line;
200   unsigned int output_line;
201   unsigned short col;
202 };
203
204 typedef struct cpp_token_with_pos cpp_token_with_pos;
205 struct cpp_token_with_pos
206 {
207   cpp_token token;
208   cpp_lexer_pos pos;
209 };
210
211 /* Token lookahead.  */
212 struct cpp_lookahead
213 {
214   struct cpp_lookahead *next;
215   cpp_token_with_pos *tokens;
216   cpp_lexer_pos pos;
217   unsigned int cur, count, cap;
218 };
219
220 /* Memory pools.  */
221 struct cpp_pool
222 {
223   struct cpp_chunk *cur, *locked;
224   unsigned char *pos;           /* Current position.  */
225   unsigned int align;
226   unsigned int locks;
227 };
228
229 typedef struct toklist toklist;
230 struct toklist
231 {
232   cpp_token *first;
233   cpp_token *limit;
234 };
235
236 typedef struct cpp_context cpp_context;
237 struct cpp_context
238 {
239   /* Doubly-linked list.  */
240   cpp_context *next, *prev;
241
242   /* Contexts other than the base context are contiguous tokens.
243      e.g. macro expansions, expanded argument tokens.  */
244   struct toklist list;
245
246   /* For a macro context, these are the macro and its arguments.  */
247   cpp_macro *macro;
248 };
249
250 /* A standalone character.  We may want to make it unsigned for the
251    same reason we use unsigned char - to avoid signedness issues.  */
252 typedef int cppchar_t;
253
254 /* Maximum nesting of cpp_buffers.  We use a static limit, partly for
255    efficiency, and partly to limit runaway recursion.  */
256 #define CPP_STACK_MAX 200
257
258 /* Values for opts.dump_macros.
259   dump_only means inhibit output of the preprocessed text
260              and instead output the definitions of all user-defined
261              macros in a form suitable for use as input to cpp.
262    dump_names means pass #define and the macro name through to output.
263    dump_definitions means pass the whole definition (plus #define) through
264 */
265 enum { dump_none = 0, dump_only, dump_names, dump_definitions };
266
267 /* This structure is nested inside struct cpp_reader, and
268    carries all the options visible to the command line.  */
269 struct cpp_options
270 {
271   /* Name of input and output files.  */
272   const char *in_fname;
273   const char *out_fname;
274
275   /* Characters between tab stops.  */
276   unsigned int tabstop;
277
278   /* Pending options - -D, -U, -A, -I, -ixxx. */
279   struct cpp_pending *pending;
280
281   /* File name which deps are being written to.  This is 0 if deps are
282      being written to stdout.  */
283   const char *deps_file;
284
285   /* Search paths for include files.  */
286   struct file_name_list *quote_include;  /* First dir to search for "file" */
287   struct file_name_list *bracket_include;/* First dir to search for <file> */
288
289   /* Map between header names and file names, used only on DOS where
290      file names are limited in length.  */
291   struct file_name_map_list *map_list;
292
293   /* Directory prefix that should replace `/usr/lib/gcc-lib/TARGET/VERSION'
294      in the standard include file directories.  */
295   const char *include_prefix;
296   unsigned int include_prefix_len;
297
298   /* -fleading_underscore sets this to "_".  */
299   const char *user_label_prefix;
300
301   /* The language we're preprocessing.  */
302   enum c_lang lang;
303
304   /* Non-0 means -v, so print the full set of include dirs.  */
305   unsigned char verbose;
306
307   /* Nonzero means use extra default include directories for C++.  */
308   unsigned char cplusplus;
309
310   /* Nonzero means handle cplusplus style comments */
311   unsigned char cplusplus_comments;
312
313   /* Nonzero means handle #import, for objective C.  */
314   unsigned char objc;
315
316   /* Nonzero means don't copy comments into the output file.  */
317   unsigned char discard_comments;
318
319   /* Nonzero means process the ISO trigraph sequences.  */
320   unsigned char trigraphs;
321
322   /* Nonzero means process the ISO digraph sequences.  */
323   unsigned char digraphs;
324
325   /* Nonzero means to allow hexadecimal floats and LL suffixes.  */
326   unsigned char extended_numbers;
327
328   /* Nonzero means print the names of included files rather than the
329      preprocessed output.  1 means just the #include "...", 2 means
330      #include <...> as well.  */
331   unsigned char print_deps;
332
333   /* Nonzero if phony targets are created for each header.  */
334   unsigned char deps_phony_targets;
335
336   /* Nonzero if missing .h files in -M output are assumed to be
337      generated files and not errors.  */
338   unsigned char print_deps_missing_files;
339
340   /* If true, fopen (deps_file, "a") else fopen (deps_file, "w"). */
341   unsigned char print_deps_append;
342
343   /* Nonzero means print names of header files (-H).  */
344   unsigned char print_include_names;
345
346   /* Nonzero means cpp_pedwarn causes a hard error.  */
347   unsigned char pedantic_errors;
348
349   /* Nonzero means don't print warning messages.  */
350   unsigned char inhibit_warnings;
351
352   /* Nonzero means don't suppress warnings from system headers.  */
353   unsigned char warn_system_headers;
354
355   /* Nonzero means don't print error messages.  Has no option to
356      select it, but can be set by a user of cpplib (e.g. fix-header).  */
357   unsigned char inhibit_errors;
358
359   /* Nonzero means warn if slash-star appears in a comment.  */
360   unsigned char warn_comments;
361
362   /* Nonzero means warn if there are any trigraphs.  */
363   unsigned char warn_trigraphs;
364
365   /* Nonzero means warn if #import is used.  */
366   unsigned char warn_import;
367
368   /* Nonzero means warn about various incompatibilities with
369      traditional C.  */
370   unsigned char warn_traditional;
371
372   /* Nonzero means turn warnings into errors.  */
373   unsigned char warnings_are_errors;
374
375   /* Nonzero causes output not to be done, but directives such as
376      #define that have side effects are still obeyed.  */
377   unsigned char no_output;
378
379   /* Nonzero means we should look for header.gcc files that remap file
380      names.  */
381   unsigned char remap;
382
383   /* Nonzero means don't output line number information.  */
384   unsigned char no_line_commands;
385
386   /* Nonzero means -I- has been seen, so don't look for #include "foo"
387      the source-file directory.  */
388   unsigned char ignore_srcdir;
389
390   /* Zero means dollar signs are punctuation. */
391   unsigned char dollars_in_ident;
392
393   /* Nonzero means warn if undefined identifiers are evaluated in an #if.  */
394   unsigned char warn_undef;
395
396   /* Nonzero for the 1999 C Standard, including corrigenda and amendments.  */
397   unsigned char c99;
398
399   /* Nonzero means give all the error messages the ANSI standard requires.  */
400   unsigned char pedantic;
401
402   /* Nonzero means we're looking at already preprocessed code, so don't
403      bother trying to do macro expansion and whatnot.  */
404   unsigned char preprocessed;
405
406   /* Nonzero disables all the standard directories for headers.  */
407   unsigned char no_standard_includes;
408
409   /* Nonzero disables the C++-specific standard directories for headers.  */
410   unsigned char no_standard_cplusplus_includes;
411
412   /* Nonzero means dump macros in some fashion - see above.  */
413   unsigned char dump_macros;
414
415   /* Nonzero means pass #include lines through to the output.  */
416   unsigned char dump_includes;
417
418   /* Print column number in error messages.  */
419   unsigned char show_column;
420
421   /* Treat C++ alternate operator names special.  */
422   unsigned char operator_names;
423
424   /* True if --help, --version or --target-help appeared in the
425      options.  Stand-alone CPP should then bail out after option
426      parsing; drivers might want to continue printing help.  */
427   unsigned char help_only;
428 };
429
430 struct lexer_state
431 {
432   /* Nonzero if first token on line is CPP_HASH.  */
433   unsigned char in_directive;
434
435   /* Nonzero if in a directive that takes angle-bracketed headers.  */
436   unsigned char angled_headers;
437
438   /* Nonzero to save comments.  Turned off if discard_comments, and in
439      all directives apart from #define.  */
440   unsigned char save_comments;
441
442   /* If nonzero the next token is at the beginning of the line.  */
443   unsigned char next_bol;
444
445   /* Nonzero if we're mid-comment.  */
446   unsigned char lexing_comment;
447
448   /* Nonzero if lexing __VA_ARGS__ is valid.  */
449   unsigned char va_args_ok;
450
451   /* Nonzero if lexing poisoned identifiers is valid.  */
452   unsigned char poisoned_ok;
453
454   /* Nonzero to prevent macro expansion.  */
455   unsigned char prevent_expansion;  
456
457   /* Nonzero when parsing arguments to a function-like macro.  */
458   unsigned char parsing_args;
459
460   /* Nonzero when in a # NUMBER directive.  */
461   unsigned char line_extension;
462 };
463
464 /* Special nodes - identifiers with predefined significance.  */
465 struct spec_nodes
466 {
467   cpp_hashnode *n_L;                    /* L"str" */
468   cpp_hashnode *n_defined;              /* defined operator */
469   cpp_hashnode *n__Pragma;              /* _Pragma operator */
470   cpp_hashnode *n__STRICT_ANSI__;       /* STDC_0_IN_SYSTEM_HEADERS */
471   cpp_hashnode *n__CHAR_UNSIGNED__;     /* plain char is unsigned */
472   cpp_hashnode *n__VA_ARGS__;           /* C99 vararg macros */
473 };
474
475 /* This structure is passed to the call back when changing file.  */
476 enum cpp_fc_reason {FC_ENTER = 0, FC_LEAVE, FC_RENAME};
477
478 struct cpp_file_loc
479 {
480   const char *filename;
481   unsigned int lineno;
482 };
483
484 typedef struct cpp_file_change cpp_file_change;
485 struct cpp_file_change
486 {
487   struct cpp_file_loc from;     /* Line of #include or #line.  */
488   struct cpp_file_loc to;       /* Line after #include or #line, or start.  */
489   enum cpp_fc_reason reason;    /* Reason for change.  */
490   unsigned char sysp;           /* Nonzero if system header.  */
491   unsigned char externc;        /* Nonzero if wrapper needed.  */
492 };
493
494 /* Call backs.  */
495 struct cpp_callbacks
496 {
497     void (*file_change) PARAMS ((cpp_reader *, const cpp_file_change *));
498     void (*include) PARAMS ((cpp_reader *, const unsigned char *,
499                              const cpp_token *));
500     void (*define) PARAMS ((cpp_reader *, cpp_hashnode *));
501     void (*undef) PARAMS ((cpp_reader *, cpp_hashnode *));
502     void (*poison) PARAMS ((cpp_reader *));
503     void (*ident) PARAMS ((cpp_reader *, const cpp_string *));
504     void (*def_pragma) PARAMS ((cpp_reader *));
505 };
506
507 /* A cpp_reader encapsulates the "state" of a pre-processor run.
508    Applying cpp_get_token repeatedly yields a stream of pre-processor
509    tokens.  Usually, there is only one cpp_reader object active.  */
510
511 struct cpp_reader
512 {
513   /* Top of buffer stack.  */
514   cpp_buffer *buffer;
515
516   /* Lexer state.  */
517   struct lexer_state state;
518
519   /* The position of the last lexed token and last lexed directive.  */
520   cpp_lexer_pos lexer_pos;
521   cpp_lexer_pos directive_pos;
522
523   /* Memory pools.  */
524   cpp_pool ident_pool;          /* For all identifiers, and permanent
525                                    numbers and strings.  */
526   cpp_pool macro_pool;          /* For macro definitions.  Permanent.  */
527   cpp_pool argument_pool;       /* For macro arguments.  Temporary.   */
528
529   /* Context stack.  */
530   struct cpp_context base_context;
531   struct cpp_context *context;
532
533   /* If in_directive, the directive if known.  */
534   const struct directive *directive;
535
536   /* Multiple inlcude optimisation.  */
537   enum mi_state mi_state;
538   enum mi_ind mi_if_not_defined;
539   unsigned int mi_lexed;
540   const cpp_hashnode *mi_cmacro;
541   const cpp_hashnode *mi_ind_cmacro;
542
543   /* Token lookahead.  */
544   struct cpp_lookahead *la_read;        /* Read from this lookahead.  */
545   struct cpp_lookahead *la_write;       /* Write to this lookahead.  */
546   struct cpp_lookahead *la_unused;      /* Free store.  */
547   struct cpp_lookahead *la_saved;       /* Backup when entering directive.  */
548
549   /* Error counter for exit code.  */
550   unsigned int errors;
551
552   /* Line and column where a newline was first seen in a string
553      constant (multi-line strings).  */
554   cpp_lexer_pos mlstring_pos;
555
556   /* Buffer to hold macro definition string.  */
557   unsigned char *macro_buffer;
558   unsigned int macro_buffer_len;
559
560   /* Current depth in #include directives that use <...>.  */
561   unsigned int system_include_depth;
562
563   /* Current depth of buffer stack.  */
564   unsigned int buffer_stack_depth;
565
566   /* Current depth in #include directives.  */
567   unsigned int include_depth;
568
569   /* Hash table of macros and assertions.  See cpphash.c.  */
570   struct htab *hashtab;
571
572   /* Tree of other included files.  See cppfiles.c.  */
573   struct splay_tree_s *all_include_files;
574
575   /* Chain of `actual directory' file_name_list entries, for ""
576      inclusion.  */
577   struct file_name_list *actual_dirs;
578
579   /* Current maximum length of directory names in the search path
580      for include files.  (Altered as we get more of them.)  */
581   unsigned int max_include_len;
582
583   /* Date and time tokens.  Calculated together if either is requested.  */
584   cpp_token date;
585   cpp_token time;
586
587   /* Opaque handle to the dependencies of mkdeps.c.  Used by -M etc.  */
588   struct deps *deps;
589
590   /* Obstack holding all macro hash nodes.  This never shrinks.
591      See cpphash.c */
592   struct obstack *hash_ob;
593
594   /* Obstack holding buffer and conditional structures.  This is a
595      real stack.  See cpplib.c */
596   struct obstack *buffer_ob;
597
598   /* Pragma table - dynamic, because a library user can add to the
599      list of recognized pragmas.  */
600   struct pragma_entry *pragmas;
601
602   /* Call backs.  */
603   struct cpp_callbacks cb;
604
605   /* User visible options.  */
606   struct cpp_options opts;
607
608   /* Special nodes - identifiers with predefined significance to the
609      preprocessor.  */
610   struct spec_nodes spec_nodes;
611
612   /* We're printed a warning recommending against using #import.  */
613   unsigned char import_warning;
614
615   /* True after cpp_start_read completes.  Used to inhibit some
616      warnings while parsing the command line.  */
617   unsigned char done_initializing;
618
619   /* True if we are skipping a failed conditional group.  */
620   unsigned char skipping;
621 };
622
623 #define CPP_FATAL_LIMIT 1000
624 /* True if we have seen a "fatal" error. */
625 #define CPP_FATAL_ERRORS(PFILE) (cpp_errors (PFILE) >= CPP_FATAL_LIMIT)
626
627 #define CPP_OPTION(PFILE, OPTION) ((PFILE)->opts.OPTION)
628 #define CPP_BUFFER(PFILE) ((PFILE)->buffer)
629 #define CPP_BUF_LINE(BUF) ((BUF)->lineno)
630 #define CPP_BUF_COLUMN(BUF, CUR) ((CUR) - (BUF)->line_base + (BUF)->col_adjust)
631 #define CPP_BUF_COL(BUF) CPP_BUF_COLUMN(BUF, (BUF)->cur)
632
633 /* Name under which this program was invoked.  */
634 extern const char *progname;
635
636 /* Where does this buffer come from?  A faked include, a source file,
637    a builtin macro, a command-line option, or a _Pragma operator.  */
638 enum cpp_buffer_type {BUF_FAKE, BUF_FILE, BUF_BUILTIN,
639                       BUF_CL_OPTION, BUF_PRAGMA};
640
641 /* The structure of a node in the hash table.  The hash table has
642    entries for all identifiers: either macros defined by #define
643    commands (type NT_MACRO), assertions created with #assert
644    (NT_ASSERTION), or neither of the above (NT_VOID).  Builtin macros
645    like __LINE__ are flagged NODE_BUILTIN.  Poisioned identifiers are
646    flagged NODE_POISONED.  NODE_OPERATOR (C++ only) indicates an
647    identifier that behaves like an operator such as "xor".
648    NODE_DIAGNOSTIC is for speed in lex_token: it indicates a
649    diagnostic may be required for this node.  Currently this only
650    applies to __VA_ARGS__ and poisoned identifiers.  */
651
652 /* Hash node flags.  */
653 #define NODE_OPERATOR   (1 << 0)        /* C++ named operator.  */
654 #define NODE_POISONED   (1 << 1)        /* Poisoned identifier.  */
655 #define NODE_BUILTIN    (1 << 2)        /* Builtin macro.  */
656 #define NODE_DIAGNOSTIC (1 << 3)        /* Possible diagnostic when lexed.  */
657
658 /* Different flavors of hash node.  */
659 enum node_type
660 {
661   NT_VOID = 0,     /* No definition yet.  */
662   NT_MACRO,        /* A macro of some form.  */
663   NT_ASSERTION     /* Predicate for #assert.  */
664 };
665
666 /* Different flavors of builtin macro.  */
667 enum builtin_type
668 {
669   BT_SPECLINE = 0,              /* `__LINE__' */
670   BT_DATE,                      /* `__DATE__' */
671   BT_FILE,                      /* `__FILE__' */
672   BT_BASE_FILE,                 /* `__BASE_FILE__' */
673   BT_INCLUDE_LEVEL,             /* `__INCLUDE_LEVEL__' */
674   BT_TIME,                      /* `__TIME__' */
675   BT_STDC                       /* `__STDC__' */
676 };
677
678 /* There is a slot in the hashnode for use by front ends when integrated
679    with cpplib.  It holds a tree (see tree.h) but we mustn't drag that
680    header into every user of cpplib.h.  cpplib does not do anything with
681    this slot except clear it when a new node is created.  */
682 union tree_node;
683
684 struct cpp_hashnode
685 {
686   const unsigned char *name;            /* Null-terminated name.  */
687   unsigned int hash;                    /* Cached hash value.  */
688   unsigned short length;                /* Length of name excluding null.  */
689   unsigned short arg_index;             /* Macro argument index.  */
690   unsigned char directive_index;        /* Index into directive table.  */
691   ENUM_BITFIELD(node_type) type : 8;    /* Node type.  */
692   unsigned char flags;                  /* Node flags.  */
693
694   union
695   {
696     cpp_macro *macro;                   /* If a macro.  */
697     struct answer *answers;             /* Answers to an assertion.  */
698     enum cpp_ttype operator;            /* Code for a named operator.  */
699     enum builtin_type builtin;          /* Code for a builtin macro.  */
700   } value;
701
702   union tree_node *fe_value;            /* Front end value.  */
703 };
704
705 /* Call this first to get a handle to pass to other functions.  */
706 extern cpp_reader *cpp_create_reader PARAMS ((enum c_lang));
707
708 /* Call these to get pointers to the options and callback structures
709    for a given reader.  These pointers are good until you call
710    cpp_finish on that reader.  You can either edit the callbacks
711    through the pointer returned from cpp_get_callbacks, or set them
712    with cpp_set_callbacks.  */
713 extern cpp_options *cpp_get_options PARAMS ((cpp_reader *));
714 extern cpp_callbacks *cpp_get_callbacks PARAMS ((cpp_reader *));
715 extern void cpp_set_callbacks PARAMS ((cpp_reader *, cpp_callbacks *));
716
717 /* Now call cpp_handle_option[s] to handle 1[or more] switches.  The
718    return value is the number of arguments used.  If
719    cpp_handle_options returns without using all arguments, it couldn't
720    understand the next switch.  When there are no switches left, you
721    must call cpp_post_options before calling cpp_start_read.  Only
722    after cpp_post_options are the contents of the cpp_options
723    structure reliable.  */
724 extern int cpp_handle_options PARAMS ((cpp_reader *, int, char **));
725 extern int cpp_handle_option PARAMS ((cpp_reader *, int, char **));
726 extern void cpp_post_options PARAMS ((cpp_reader *));
727
728 /* Error count.  */
729 extern unsigned int cpp_errors PARAMS ((cpp_reader *));
730
731 extern unsigned int cpp_token_len PARAMS ((const cpp_token *));
732 extern unsigned char *cpp_token_as_text PARAMS ((cpp_reader *,
733                                                  const cpp_token *));
734 extern unsigned char *cpp_spell_token PARAMS ((cpp_reader *, const cpp_token *,
735                                                unsigned char *));
736 extern void cpp_register_pragma PARAMS ((cpp_reader *,
737                                          const char *, const char *,
738                                          void (*) PARAMS ((cpp_reader *))));
739 extern void cpp_register_pragma_space PARAMS ((cpp_reader *, const char *));
740
741 extern int cpp_start_read PARAMS ((cpp_reader *, const char *));
742 extern void cpp_finish PARAMS ((cpp_reader *));
743 extern void cpp_cleanup PARAMS ((cpp_reader *));
744 extern int cpp_avoid_paste PARAMS ((cpp_reader *, const cpp_token *,
745                                     const cpp_token *));
746 extern enum cpp_ttype cpp_can_paste PARAMS ((cpp_reader *, const cpp_token *,
747                                              const cpp_token *, int *));
748 extern void cpp_get_token PARAMS ((cpp_reader *, cpp_token *));
749 extern const cpp_lexer_pos *cpp_get_line PARAMS ((cpp_reader *));
750 extern const unsigned char *cpp_macro_definition PARAMS ((cpp_reader *,
751                                                   const cpp_hashnode *));
752
753 extern void cpp_define PARAMS ((cpp_reader *, const char *));
754 extern void cpp_assert PARAMS ((cpp_reader *, const char *));
755 extern void cpp_undef  PARAMS ((cpp_reader *, const char *));
756 extern void cpp_unassert PARAMS ((cpp_reader *, const char *));
757
758 extern cpp_buffer *cpp_push_buffer PARAMS ((cpp_reader *,
759                                             const unsigned char *, size_t,
760                                             enum cpp_buffer_type,
761                                             const char *));
762 extern cpp_buffer *cpp_pop_buffer PARAMS ((cpp_reader *));
763 extern int cpp_defined PARAMS ((cpp_reader *, const unsigned char *, int));
764
765 /* N.B. The error-message-printer prototypes have not been nicely
766    formatted because exgettext needs to see 'msgid' on the same line
767    as the name of the function in order to work properly.  Only the
768    string argument gets a name in an effort to keep the lines from
769    getting ridiculously oversized.  */
770
771 extern void cpp_ice PARAMS ((cpp_reader *, const char *msgid, ...))
772   ATTRIBUTE_PRINTF_2;
773 extern void cpp_fatal PARAMS ((cpp_reader *, const char *msgid, ...))
774   ATTRIBUTE_PRINTF_2;
775 extern void cpp_error PARAMS ((cpp_reader *, const char *msgid, ...))
776   ATTRIBUTE_PRINTF_2;
777 extern void cpp_warning PARAMS ((cpp_reader *, const char *msgid, ...))
778   ATTRIBUTE_PRINTF_2;
779 extern void cpp_pedwarn PARAMS ((cpp_reader *, const char *msgid, ...))
780   ATTRIBUTE_PRINTF_2;
781 extern void cpp_notice PARAMS ((cpp_reader *, const char *msgid, ...))
782   ATTRIBUTE_PRINTF_2;
783 extern void cpp_error_with_line PARAMS ((cpp_reader *, int, int, const char *msgid, ...))
784   ATTRIBUTE_PRINTF_4;
785 extern void cpp_warning_with_line PARAMS ((cpp_reader *, int, int, const char *msgid, ...))
786   ATTRIBUTE_PRINTF_4;
787 extern void cpp_pedwarn_with_line PARAMS ((cpp_reader *, int, int, const char *msgid, ...))
788   ATTRIBUTE_PRINTF_4;
789 extern void cpp_pedwarn_with_file_and_line PARAMS ((cpp_reader *, const char *, int, int, const char *msgid, ...))
790   ATTRIBUTE_PRINTF_5;
791 extern void cpp_error_from_errno PARAMS ((cpp_reader *, const char *));
792 extern void cpp_notice_from_errno PARAMS ((cpp_reader *, const char *));
793
794 /* In cpplex.c */
795 extern int cpp_ideq                     PARAMS ((const cpp_token *,
796                                                  const char *));
797 extern void cpp_output_line             PARAMS ((cpp_reader *, FILE *));
798 extern void cpp_output_token            PARAMS ((const cpp_token *, FILE *));
799 extern const char *cpp_type2name        PARAMS ((enum cpp_ttype));
800
801 /* In cpphash.c */
802 extern cpp_hashnode *cpp_lookup         PARAMS ((cpp_reader *,
803                                                  const unsigned char *, size_t));
804 extern void cpp_forall_identifiers      PARAMS ((cpp_reader *,
805                                                  int (*) PARAMS ((cpp_reader *,
806                                                                   cpp_hashnode *,
807                                                                   void *)),
808                                                  void *));
809
810 /* In cppmacro.c */
811 extern void cpp_scan_buffer_nooutput    PARAMS ((cpp_reader *, int));
812 extern void cpp_start_lookahead         PARAMS ((cpp_reader *));
813 extern void cpp_stop_lookahead          PARAMS ((cpp_reader *, int));
814
815 /* In cppfiles.c */
816 extern int cpp_included PARAMS ((cpp_reader *, const char *));
817 extern void cpp_make_system_header PARAMS ((cpp_reader *, int, int));
818
819 /* These are inline functions instead of macros so we can get type
820    checking.  */
821 typedef unsigned char U_CHAR;
822 #define U (const U_CHAR *)  /* Intended use: U"string" */
823
824 static inline int ustrcmp       PARAMS ((const U_CHAR *, const U_CHAR *));
825 static inline int ustrncmp      PARAMS ((const U_CHAR *, const U_CHAR *,
826                                          size_t));
827 static inline size_t ustrlen    PARAMS ((const U_CHAR *));
828 static inline U_CHAR *uxstrdup  PARAMS ((const U_CHAR *));
829 static inline U_CHAR *ustrchr   PARAMS ((const U_CHAR *, int));
830 static inline int ufputs        PARAMS ((const U_CHAR *, FILE *));
831
832 static inline int
833 ustrcmp (s1, s2)
834      const U_CHAR *s1, *s2;
835 {
836   return strcmp ((const char *)s1, (const char *)s2);
837 }
838
839 static inline int
840 ustrncmp (s1, s2, n)
841      const U_CHAR *s1, *s2;
842      size_t n;
843 {
844   return strncmp ((const char *)s1, (const char *)s2, n);
845 }
846
847 static inline size_t
848 ustrlen (s1)
849      const U_CHAR *s1;
850 {
851   return strlen ((const char *)s1);
852 }
853
854 static inline U_CHAR *
855 uxstrdup (s1)
856      const U_CHAR *s1;
857 {
858   return (U_CHAR *) xstrdup ((const char *)s1);
859 }
860
861 static inline U_CHAR *
862 ustrchr (s1, c)
863      const U_CHAR *s1;
864      int c;
865 {
866   return (U_CHAR *) strchr ((const char *)s1, c);
867 }
868
869 static inline int
870 ufputs (s, f)
871      const U_CHAR *s;
872      FILE *f;
873 {
874   return fputs ((const char *)s, f);
875 }
876
877 #ifdef __cplusplus
878 }
879 #endif
880 #endif /* __GCC_CPPLIB__ */