Home | History | Annotate | Line # | Download | only in lint1
      1  1.242    rillig /*	$NetBSD: externs1.h,v 1.242 2025/09/14 11:14:00 rillig Exp $	*/
      2    1.2       cgd 
      3    1.1       cgd /*
      4    1.1       cgd  * Copyright (c) 1994, 1995 Jochen Pohl
      5    1.1       cgd  * All Rights Reserved.
      6    1.1       cgd  *
      7    1.1       cgd  * Redistribution and use in source and binary forms, with or without
      8    1.1       cgd  * modification, are permitted provided that the following conditions
      9    1.1       cgd  * are met:
     10    1.1       cgd  * 1. Redistributions of source code must retain the above copyright
     11    1.1       cgd  *    notice, this list of conditions and the following disclaimer.
     12    1.1       cgd  * 2. Redistributions in binary form must reproduce the above copyright
     13    1.1       cgd  *    notice, this list of conditions and the following disclaimer in the
     14    1.1       cgd  *    documentation and/or other materials provided with the distribution.
     15    1.1       cgd  * 3. All advertising materials mentioning features or use of this software
     16    1.1       cgd  *    must display the following acknowledgement:
     17  1.194    rillig  *	This product includes software developed by Jochen Pohl for
     18    1.1       cgd  *	The NetBSD Project.
     19    1.1       cgd  * 4. The name of the author may not be used to endorse or promote products
     20    1.1       cgd  *    derived from this software without specific prior written permission.
     21    1.1       cgd  *
     22    1.1       cgd  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     23    1.1       cgd  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     24    1.1       cgd  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     25    1.1       cgd  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
     26    1.1       cgd  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
     27    1.1       cgd  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     28    1.1       cgd  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     29    1.1       cgd  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     30    1.1       cgd  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
     31    1.1       cgd  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     32    1.1       cgd  */
     33    1.1       cgd 
     34  1.175    rillig #include <signal.h>
     35  1.175    rillig 
     36  1.242    rillig /* tyname.c */
     37  1.242    rillig const char *expr_type_name(const tnode_t *);
     38  1.242    rillig 
     39    1.1       cgd /*
     40  1.175    rillig  * main1.c
     41    1.1       cgd  */
     42  1.220    rillig extern bool Fflag;
     43  1.220    rillig extern bool Pflag;
     44  1.220    rillig extern bool Tflag;
     45  1.208    rillig extern int aflag;
     46  1.208    rillig extern bool bflag;
     47  1.208    rillig extern bool cflag;
     48  1.208    rillig extern bool eflag;
     49  1.208    rillig extern bool hflag;
     50  1.208    rillig extern bool pflag;
     51  1.208    rillig extern bool rflag;
     52  1.208    rillig extern bool vflag;
     53  1.220    rillig extern bool wflag;
     54  1.208    rillig extern bool yflag;
     55  1.208    rillig extern bool zflag;
     56  1.208    rillig 
     57  1.208    rillig extern bool allow_trad;
     58  1.208    rillig extern bool allow_c90;
     59  1.208    rillig extern bool allow_c99;
     60  1.208    rillig extern bool allow_c11;
     61  1.208    rillig extern bool allow_c23;
     62  1.208    rillig extern bool allow_gcc;
     63  1.155    rillig 
     64  1.175    rillig extern sig_atomic_t fpe;
     65  1.175    rillig 
     66  1.208    rillig void norecover(void);
     67    1.1       cgd 
     68    1.1       cgd /*
     69    1.1       cgd  * cgram.y
     70    1.1       cgd  */
     71  1.208    rillig extern int block_level;
     72  1.208    rillig extern size_t mem_block_level;
     73  1.208    rillig extern int yydebug;
     74    1.1       cgd 
     75  1.208    rillig int yyerror(const char *);
     76  1.208    rillig int yyparse(void);
     77  1.227    rillig extern char *yytext;
     78    1.1       cgd 
     79    1.1       cgd /*
     80  1.220    rillig  * lex.c
     81    1.1       cgd  */
     82  1.208    rillig extern bool in_gcc_attribute;
     83  1.208    rillig extern pos_t curr_pos;
     84  1.208    rillig extern pos_t csrc_pos;
     85  1.208    rillig extern bool in_system_header;
     86  1.212    rillig extern symbol_kind sym_kind;
     87  1.208    rillig extern FILE *yyin;
     88  1.208    rillig 
     89  1.214    rillig void init_lex(void);
     90  1.208    rillig int64_t convert_integer(int64_t, tspec_t, unsigned int);
     91  1.221    rillig void reset_suppressions(void);
     92  1.208    rillig sym_t *getsym(sbuf_t *);
     93  1.208    rillig void clean_up_after_error(void);
     94  1.208    rillig sym_t *pushdown(const sym_t *);
     95  1.208    rillig sym_t *mktempsym(type_t *);
     96  1.221    rillig void symtab_remove_forever(sym_t *);
     97  1.208    rillig void symtab_remove_level(sym_t *);
     98  1.208    rillig void inssym(int, sym_t *);
     99  1.208    rillig void freeyyv(void *, int);
    100  1.208    rillig int yylex(void);
    101    1.1       cgd 
    102    1.1       cgd /*
    103    1.1       cgd  * mem1.c
    104    1.1       cgd  */
    105  1.208    rillig const char *record_filename(const char *, size_t);
    106  1.208    rillig int get_filename_id(const char *);
    107  1.208    rillig void add_directory_replacement(char *);
    108  1.178    rillig const char *transform_filename(const char *, size_t);
    109  1.178    rillig 
    110  1.196    rillig #ifdef DEBUG_MEM
    111  1.208    rillig void *block_zero_alloc(size_t, const char *);
    112  1.208    rillig void *level_zero_alloc(size_t, size_t, const char *);
    113  1.196    rillig #else
    114  1.208    rillig void *block_zero_alloc(size_t);
    115  1.208    rillig void *level_zero_alloc(size_t, size_t);
    116  1.196    rillig #define block_zero_alloc(size, descr) (block_zero_alloc)(size)
    117  1.196    rillig #define level_zero_alloc(level, size, descr) (level_zero_alloc)(level, size)
    118  1.196    rillig #endif
    119  1.208    rillig void level_free_all(size_t);
    120  1.178    rillig 
    121  1.196    rillig #ifdef DEBUG_MEM
    122  1.208    rillig void *expr_zero_alloc(size_t, const char *);
    123  1.196    rillig #else
    124  1.208    rillig void *expr_zero_alloc(size_t);
    125  1.196    rillig #define expr_zero_alloc(size, descr) (expr_zero_alloc)(size)
    126  1.196    rillig #endif
    127  1.208    rillig tnode_t *expr_alloc_tnode(void);
    128  1.208    rillig void expr_free_all(void);
    129  1.178    rillig memory_pool expr_save_memory(void);
    130  1.208    rillig void expr_restore_memory(memory_pool);
    131    1.1       cgd 
    132    1.1       cgd /*
    133  1.124    rillig  * debug.c
    134  1.124    rillig  */
    135  1.124    rillig 
    136  1.124    rillig #ifdef DEBUG
    137  1.232    rillig extern bool debug_enabled;
    138  1.183    rillig const char *decl_level_kind_name(decl_level_kind);
    139  1.149    rillig const char *scl_name(scl_t);
    140  1.212    rillig const char *symbol_kind_name(symbol_kind);
    141  1.195    rillig const char *type_qualifiers_string(type_qualifiers);
    142  1.233    rillig const char *type_attributes_string(type_attributes);
    143  1.191    rillig const char *function_specifier_name(function_specifier);
    144  1.225    rillig const char *named_constant_name(named_constant);
    145  1.208    rillig void debug_dcs(void);
    146  1.208    rillig void debug_dcs_all(void);
    147  1.208    rillig void debug_node(const tnode_t *);
    148  1.208    rillig void debug_type(const type_t *);
    149  1.208    rillig void debug_sym(const char *, const sym_t *, const char *);
    150  1.208    rillig void debug_symtab(void);
    151  1.208    rillig void debug_printf(const char *fmt, ...) __printflike(1, 2);
    152  1.208    rillig void debug_skip_indent(void);
    153  1.208    rillig void debug_indent_inc(void);
    154  1.208    rillig void debug_indent_dec(void);
    155  1.208    rillig bool debug_push_indented(bool);
    156  1.208    rillig void debug_pop_indented(bool);
    157  1.208    rillig void debug_enter_func(const char *);
    158  1.208    rillig void debug_step(const char *fmt, ...) __printflike(1, 2);
    159  1.208    rillig void debug_leave_func(const char *);
    160  1.226    rillig void debug_attribute_list(const attribute_list *);
    161  1.176    rillig #define	debug_enter()		debug_enter_func(__func__)
    162  1.176    rillig #define	debug_leave()		debug_leave_func(__func__)
    163  1.124    rillig #else
    164  1.124    rillig #define	debug_noop()		do { } while (false)
    165  1.204    rillig #define	debug_dcs()		debug_noop()
    166  1.204    rillig #define	debug_dcs_all()		debug_noop()
    167  1.151    rillig #define	debug_sym(p, sym, s)	debug_noop()
    168  1.151    rillig #define	debug_symtab()		debug_noop()
    169  1.128    rillig #define	debug_node(tn)		debug_noop()
    170  1.164    rillig #define	debug_type(tp)		debug_noop()
    171  1.125    rillig #define	debug_printf(...)	debug_noop()
    172  1.203    rillig #define	debug_skip_indent()	debug_noop()
    173  1.124    rillig #define	debug_indent_inc()	debug_noop()
    174  1.124    rillig #define	debug_indent_dec()	debug_noop()
    175  1.204    rillig #define debug_push_indented(c)	true
    176  1.204    rillig #define debug_pop_indented(c)	(void)(c)
    177  1.124    rillig #define	debug_enter()		debug_noop()
    178  1.144    rillig #define	debug_step(...)		debug_noop()
    179  1.124    rillig #define	debug_leave()		debug_noop()
    180  1.226    rillig #define	debug_attribute_list(list) debug_noop()
    181  1.124    rillig #endif
    182  1.124    rillig 
    183  1.124    rillig /*
    184    1.1       cgd  * err.c
    185    1.1       cgd  */
    186  1.208    rillig extern bool seen_error;
    187  1.208    rillig extern bool seen_warning;
    188  1.208    rillig extern int sytxerr;
    189  1.237    rillig extern bool any_query_enabled;
    190  1.209    rillig extern bool is_query_enabled[];
    191  1.208    rillig 
    192  1.208    rillig void msglist(void);
    193  1.208    rillig void error_at(int, const pos_t *, ...);
    194  1.208    rillig void warning_at(int, const pos_t *, ...);
    195  1.208    rillig void message_at(int, const pos_t *, ...);
    196  1.208    rillig void error(int, ...);
    197  1.208    rillig void warning(int, ...);
    198  1.208    rillig bool gnuism(int, ...);
    199  1.208    rillig void c99ism(int, ...);
    200  1.208    rillig void c11ism(int, ...);
    201  1.208    rillig void c23ism(int, ...);
    202  1.208    rillig void assert_failed(const char *, int, const char *, const char *) __dead;
    203  1.208    rillig void update_location(const char *, int, bool, bool);
    204  1.208    rillig void suppress_messages(const char *);
    205    1.1       cgd 
    206  1.208    rillig void query_message(int, ...);
    207  1.208    rillig void enable_queries(const char *);
    208  1.165    rillig 
    209    1.1       cgd /*
    210    1.1       cgd  * decl.c
    211    1.1       cgd  */
    212  1.208    rillig extern decl_level *dcs;
    213  1.208    rillig extern const char unnamed[];
    214  1.208    rillig extern int enumval;
    215  1.208    rillig 
    216  1.214    rillig void init_decl(void);
    217  1.208    rillig type_t *gettyp(tspec_t);
    218  1.208    rillig type_t *block_dup_type(const type_t *);
    219  1.208    rillig type_t *expr_dup_type(const type_t *);
    220  1.208    rillig type_t *expr_unqualified_type(const type_t *);
    221  1.208    rillig bool is_incomplete(const type_t *);
    222  1.208    rillig void dcs_add_function_specifier(function_specifier);
    223  1.208    rillig void dcs_add_storage_class(scl_t);
    224  1.208    rillig void dcs_add_type(type_t *);
    225  1.208    rillig void dcs_add_qualifiers(type_qualifiers);
    226  1.241    rillig void dcs_add_type_attributes(type_attributes);
    227  1.223    rillig void dcs_add_alignas(tnode_t *);
    228  1.208    rillig void dcs_add_packed(void);
    229  1.208    rillig void dcs_set_used(void);
    230  1.208    rillig void begin_declaration_level(decl_level_kind);
    231  1.208    rillig void end_declaration_level(void);
    232  1.208    rillig void dcs_set_asm(void);
    233  1.208    rillig void dcs_begin_type(void);
    234  1.208    rillig void dcs_end_type(void);
    235  1.208    rillig int length_in_bits(const type_t *, const char *);
    236  1.224    rillig unsigned int alignment(const type_t *);
    237  1.208    rillig sym_t *concat_symbols(sym_t *, sym_t *);
    238  1.208    rillig void check_type(sym_t *);
    239  1.208    rillig sym_t *declare_unnamed_member(void);
    240  1.208    rillig sym_t *declare_member(sym_t *);
    241  1.208    rillig sym_t *set_bit_field_width(sym_t *, int);
    242  1.208    rillig void add_type_qualifiers(type_qualifiers *, type_qualifiers);
    243  1.195    rillig qual_ptr *append_qualified_pointer(qual_ptr *, qual_ptr *);
    244  1.208    rillig sym_t *add_pointer(sym_t *, qual_ptr *);
    245  1.208    rillig sym_t *add_array(sym_t *, bool, int);
    246  1.219    rillig sym_t *add_function(sym_t *, parameter_list);
    247  1.208    rillig void check_extern_declaration(const sym_t *);
    248  1.208    rillig void check_function_definition(sym_t *, bool);
    249  1.208    rillig sym_t *declarator_name(sym_t *);
    250  1.208    rillig sym_t *old_style_function_parameter_name(sym_t *);
    251  1.208    rillig type_t *make_tag_type(sym_t *, tspec_t, bool, bool);
    252  1.208    rillig type_t *complete_struct_or_union(sym_t *);
    253  1.208    rillig type_t *complete_enum(sym_t *);
    254  1.208    rillig sym_t *enumeration_constant(sym_t *, int, bool);
    255  1.208    rillig void declare(sym_t *, bool, sbuf_t *);
    256  1.231    rillig void copy_usage_info(sym_t *, const sym_t *);
    257  1.208    rillig bool check_redeclaration(sym_t *, bool *);
    258  1.208    rillig bool pointer_types_are_compatible(const type_t *, const type_t *, bool);
    259  1.208    rillig bool types_compatible(const type_t *, const type_t *, bool, bool, bool *);
    260  1.231    rillig void complete_type(sym_t *, const sym_t *);
    261  1.208    rillig sym_t *declare_parameter(sym_t *, bool);
    262  1.208    rillig void check_func_lint_directives(void);
    263  1.208    rillig void check_func_old_style_parameters(void);
    264  1.208    rillig 
    265  1.208    rillig void declare_local(sym_t *, bool);
    266  1.208    rillig sym_t *abstract_name(void);
    267  1.208    rillig sym_t *abstract_enclosing_name(void);
    268  1.208    rillig void global_clean_up(void);
    269  1.208    rillig sym_t *declare_abstract_type(sym_t *);
    270  1.208    rillig void check_size(const sym_t *);
    271  1.208    rillig void mark_as_set(sym_t *);
    272  1.208    rillig void mark_as_used(sym_t *, bool, bool);
    273  1.208    rillig void check_usage(const decl_level *);
    274  1.208    rillig void check_usage_sym(bool, const sym_t *);
    275  1.208    rillig void end_translation_unit(void);
    276  1.208    rillig void print_previous_declaration(const sym_t *);
    277  1.208    rillig int to_int_constant(tnode_t *, bool);
    278    1.1       cgd 
    279    1.1       cgd /*
    280    1.1       cgd  * tree.c
    281    1.1       cgd  */
    282  1.178    rillig const tnode_t *before_conversion(const tnode_t *);
    283  1.208    rillig type_t *block_derive_type(type_t *, tspec_t);
    284  1.208    rillig type_t *expr_derive_type(type_t *, tspec_t);
    285  1.208    rillig bool is_compiler_builtin(const char *);
    286  1.208    rillig tnode_t *build_constant(type_t *, val_t *);
    287  1.208    rillig tnode_t *build_name(sym_t *, bool);
    288  1.213    rillig tnode_t *build_string(buffer *);
    289  1.208    rillig tnode_t *build_generic_selection(const tnode_t *,
    290  1.115    rillig 		    struct generic_association *);
    291  1.112    rillig 
    292  1.208    rillig tnode_t *build_binary(tnode_t *, op_t, bool, tnode_t *);
    293  1.208    rillig tnode_t *build_unary(op_t, bool, tnode_t *);
    294  1.208    rillig tnode_t *build_member_access(tnode_t *, op_t, bool, sbuf_t *);
    295  1.208    rillig tnode_t *cconv(tnode_t *);
    296  1.228    rillig bool is_typeok_bool_compares_with_zero(const tnode_t *, bool);
    297  1.240    rillig bool typeok(op_t, const function_call *, int,
    298  1.240    rillig     const tnode_t *, const tnode_t *);
    299  1.208    rillig tnode_t *promote(op_t, bool, tnode_t *);
    300  1.208    rillig tnode_t *convert(op_t, int, type_t *, tnode_t *);
    301  1.208    rillig void convert_constant(op_t, int, const type_t *, val_t *, val_t *);
    302  1.208    rillig tnode_t *build_sizeof(const type_t *);
    303  1.210    rillig tnode_t *build_offsetof(const type_t *, designation);
    304  1.208    rillig tnode_t *build_alignof(const type_t *);
    305  1.211    rillig tnode_t *cast(tnode_t *, bool, type_t *);
    306  1.216    rillig void add_function_argument(function_call *, tnode_t *);
    307  1.216    rillig tnode_t *build_function_call(tnode_t *, bool, function_call *);
    308  1.208    rillig val_t *integer_constant(tnode_t *, bool);
    309  1.235    rillig void expr(tnode_t *, bool, bool, bool, bool, const char *);
    310  1.208    rillig void check_expr_misc(const tnode_t *, bool, bool, bool, bool, bool, bool);
    311  1.208    rillig bool constant_addr(const tnode_t *, const sym_t **, ptrdiff_t *);
    312  1.213    rillig buffer *cat_strings(buffer *, buffer *);
    313  1.178    rillig unsigned int type_size_in_bits(const type_t *);
    314  1.208    rillig sym_t *find_member(const struct_or_union *, const char *);
    315  1.218    rillig uint64_t possible_bits(const tnode_t *);
    316  1.230    rillig bool attributes_contain(const attribute_list *, const char *);
    317    1.1       cgd 
    318  1.146    rillig void begin_statement_expr(void);
    319  1.145    rillig void do_statement_expr(tnode_t *);
    320  1.145    rillig tnode_t *end_statement_expr(void);
    321  1.197    rillig bool in_statement_expr(void);
    322  1.145    rillig 
    323    1.1       cgd /*
    324    1.1       cgd  * func.c
    325    1.1       cgd  */
    326  1.208    rillig extern sym_t *funcsym;
    327  1.208    rillig extern bool reached;
    328  1.208    rillig extern bool warn_about_unreachable;
    329  1.208    rillig extern bool suppress_fallthrough;
    330  1.208    rillig extern int nargusg;
    331  1.208    rillig extern pos_t argsused_pos;
    332  1.208    rillig extern int nvararg;
    333  1.208    rillig extern pos_t vapos;
    334  1.208    rillig extern int printflike_argnum;
    335  1.208    rillig extern pos_t printflike_pos;
    336  1.208    rillig extern int scanflike_argnum;
    337  1.208    rillig extern pos_t scanflike_pos;
    338  1.208    rillig extern bool llibflg;
    339  1.208    rillig extern int lwarn;
    340  1.208    rillig extern bool suppress_bitfieldtype;
    341  1.208    rillig extern bool plibflg;
    342  1.208    rillig extern bool suppress_longlong;
    343  1.208    rillig 
    344  1.208    rillig void begin_control_statement(control_statement_kind);
    345  1.208    rillig void end_control_statement(control_statement_kind);
    346  1.235    rillig void check_statement_reachable(const char *);
    347  1.208    rillig void begin_function(sym_t *);
    348  1.208    rillig void end_function(void);
    349  1.208    rillig void named_label(sym_t *);
    350  1.208    rillig void case_label(tnode_t *);
    351  1.208    rillig void default_label(void);
    352  1.208    rillig void stmt_if_expr(tnode_t *);
    353  1.208    rillig void stmt_if_then_stmt(void);
    354  1.208    rillig void stmt_if_else_stmt(bool);
    355  1.208    rillig void stmt_switch_expr(tnode_t *);
    356  1.208    rillig void stmt_switch_expr_stmt(void);
    357  1.208    rillig void stmt_while_expr(tnode_t *);
    358  1.208    rillig void stmt_while_expr_stmt(void);
    359  1.208    rillig void stmt_do(void);
    360  1.208    rillig void stmt_do_while_expr(tnode_t *);
    361  1.208    rillig void stmt_for_exprs(tnode_t *, tnode_t *, tnode_t *);
    362  1.208    rillig void stmt_for_exprs_stmt(void);
    363  1.208    rillig void stmt_goto(sym_t *);
    364  1.208    rillig void stmt_continue(void);
    365  1.208    rillig void stmt_break(void);
    366  1.208    rillig void stmt_return(bool, tnode_t *);
    367  1.234    rillig void stmt_call_noreturn(void);
    368  1.208    rillig void global_clean_up_decl(bool);
    369  1.208    rillig void handle_lint_comment(lint_comment, int);
    370    1.1       cgd 
    371    1.1       cgd /*
    372    1.1       cgd  * init.c
    373    1.1       cgd  */
    374  1.208    rillig void begin_initialization(sym_t *);
    375  1.208    rillig void end_initialization(void);
    376  1.208    rillig sym_t *current_initsym(void);
    377  1.208    rillig 
    378  1.208    rillig void init_rbrace(void);
    379  1.208    rillig void init_lbrace(void);
    380  1.208    rillig void init_expr(tnode_t *);
    381  1.208    rillig void begin_designation(void);
    382  1.208    rillig void add_designator_member(sbuf_t *);
    383  1.208    rillig void add_designator_subscript(range_t);
    384  1.210    rillig void designation_push(designation *, designator_kind, const sym_t *, size_t);
    385    1.1       cgd 
    386    1.1       cgd /*
    387    1.1       cgd  * emit.c
    388    1.1       cgd  */
    389  1.208    rillig void outtype(const type_t *);
    390  1.208    rillig void outsym(const sym_t *, scl_t, def_t);
    391  1.208    rillig void outfdef(const sym_t *, const pos_t *, bool, bool, const sym_t *);
    392  1.208    rillig void outcall(const tnode_t *, bool, bool);
    393  1.208    rillig void outusg(const sym_t *);
    394   1.22  christos 
    395   1.22  christos /*
    396   1.60    rillig  * lex.c
    397   1.60    rillig  */
    398  1.238    rillig void lex_pp_begin(void);
    399  1.238    rillig void lex_pp_identifier(const char *);
    400  1.238    rillig void lex_pp_number(const char *);
    401  1.238    rillig void lex_pp_character_constant(void);
    402  1.238    rillig void lex_pp_string_literal(void);
    403  1.238    rillig void lex_pp_punctuator(const char *);
    404  1.238    rillig void lex_pp_comment(void);
    405  1.238    rillig void lex_pp_whitespace(void);
    406  1.238    rillig void lex_pp_end(void);
    407  1.208    rillig int lex_name(const char *, size_t);
    408  1.208    rillig int lex_integer_constant(const char *, size_t, int);
    409  1.208    rillig int lex_floating_constant(const char *, size_t);
    410  1.208    rillig int lex_operator(int, op_t);
    411  1.208    rillig int lex_string(void);
    412  1.208    rillig int lex_wide_string(void);
    413  1.208    rillig int lex_character_constant(void);
    414  1.208    rillig int lex_wide_character_constant(void);
    415  1.208    rillig void lex_next_line(void);
    416  1.208    rillig void lex_comment(void);
    417  1.208    rillig void lex_slash_slash_comment(void);
    418  1.208    rillig void lex_unknown_character(int);
    419  1.208    rillig int lex_input(void);
    420  1.215    rillig bool quoted_next(const buffer *, quoted_iterator *);
    421  1.227    rillig balanced_token_sequence lex_balanced(void);
    422   1.60    rillig 
    423   1.60    rillig /*
    424  1.101    rillig  * ckbool.c
    425  1.101    rillig  */
    426  1.208    rillig bool typeok_scalar_strict_bool(op_t, const mod_t *, int,
    427  1.101    rillig 		    const tnode_t *, const tnode_t *);
    428  1.208    rillig bool fallback_symbol_strict_bool(sym_t *);
    429  1.101    rillig 
    430  1.101    rillig /*
    431  1.100    rillig  * ckctype.c
    432  1.100    rillig  */
    433  1.216    rillig void check_ctype_function_call(const function_call *);
    434  1.208    rillig void check_ctype_macro_invocation(const tnode_t *, const tnode_t *);
    435  1.100    rillig 
    436  1.100    rillig /*
    437   1.66    rillig  * ckgetopt.c
    438   1.66    rillig  */
    439  1.208    rillig void check_getopt_begin_while(const tnode_t *);
    440  1.208    rillig void check_getopt_begin_switch(void);
    441  1.208    rillig void check_getopt_case_label(int64_t);
    442  1.208    rillig void check_getopt_end_switch(void);
    443  1.208    rillig void check_getopt_end_while(void);
    444  1.217    rillig 
    445  1.217    rillig /* cksnprintb.c */
    446  1.222    rillig void check_snprintb(const function_call *);
    447