struct arglist {
/*@null@*/ struct arglist *next;
/*@dependent@*/ char *name;
- int length;
+ size_t length;
int argno;
int rest_args;
};
/* Current maximum length of directory names in the search path
for include files. (Altered as we get more of them.) */
- int max_include_len;
+ size_t max_include_len;
/*@null@*/ struct if_stack *if_stack;
int lineno;
/*@null@*/ /*@observer@*/ struct tm *timebuf;
-
-#ifdef __cplusplus
- ~cppReader () { cppCleanup (this); }
-#endif
};
/*@constant int cppReader_fatalErrorLimit; @*/
extern /*@exposed@*/ char *cpplib_getPWritten (cppReader *) /*@*/ ;
# define cpplib_getPWritten(PFILE) ((PFILE)->limit)
-extern /*@null@*/ macroDef
-cpplib_createDefinition (/*@dependent@*/ cstring p_def, fileloc p_loc,
- bool p_predefinition, bool p_noExpand) ;
-
/* Make sure PFILE->token_buffer has space for at least N more characters. */
extern void cpplib_reserve (/*@sef@*/ cppReader *, /*@sef@*/ size_t);
#define cpplib_reserve(PFILE, N) \
- (cpplib_getWritten (PFILE) + (N) > (PFILE)->token_buffer_size \
- && (cppReader_growBuffer (PFILE, (N)), 0))
+ (((cpplib_getWritten (PFILE) + (N) > (PFILE)->token_buffer_size)) ? cppReader_growBuffer (PFILE, (N)) : (void) 0)
/* Append string STR (of length N) to PFILE's output buffer.
Assume there is enough space. */
/* Name of output file, for error messages. */
/*@dependent@*/ cstring out_fname;
- struct file_name_map_list *map_list;
+ /*@only@*/ struct file_name_map_list *map_list;
/* Non-0 means -v, so print the full set of include dirs. */
bool verbose;
/* First dir to search */
/*@owned@*/ struct file_name_list *include;
+
/* First dir to search for <file> */
/* This is the first element to use for #include <...>.
If it is 0, use the entire chain for such includes. */
/*@uses p_pfile->opts@*/
/*@modifies nothing@*/ ;
-#define cppReader_isTraditional(PFILE) (CPPOPTIONS(PFILE)-> traditional)
+#define cppReader_isTraditional(PFILE) (CPPOPTIONS(PFILE)->traditional)
extern bool cppReader_isPedantic (cppReader *) /*@*/;
#define cppReader_isPedantic(PFILE) (CPPOPTIONS (PFILE)->pedantic)
/* different flavors of hash nodes --- also used in keyword table */
enum node_type {
T_NONE = 0,
- T_DEFINE = 1, /* the `#define' keyword */
- T_INCLUDE, /* the `#include' keyword */
- T_INCLUDE_NEXT, /* the `#include_next' keyword */
- T_IFDEF, /* the `#ifdef' keyword */
- T_IFNDEF, /* the `#ifndef' keyword */
- T_IF, /* the `#if' keyword */
- T_ELSE, /* `#else' */
- T_PRAGMA, /* `#pragma' */
- T_ELIF, /* `#elif' */
- T_UNDEF, /* `#undef' */
- T_LINE, /* `#line' */
- T_ERROR, /* `#error' */
- T_WARNING, /* `#warning' */
- T_ENDIF, /* `#endif' */
- T_IDENT, /* `#ident', used on system V. */
- T_SPECLINE, /* special symbol `__LINE__' */
- T_DATE, /* `__DATE__' */
- T_FILE, /* `__FILE__' */
- T_BASE_FILE, /* `__BASE_FILE__' */
- T_INCLUDE_LEVEL, /* `__INCLUDE_LEVEL__' */
- T_VERSION, /* `__VERSION__' */
- T_SIZE_TYPE, /* `__SIZE_TYPE__' */
- T_PTRDIFF_TYPE, /* `__PTRDIFF_TYPE__' */
- T_WCHAR_TYPE, /* `__WCHAR_TYPE__' */
- T_USER_LABEL_PREFIX_TYPE, /* `__USER_LABEL_PREFIX__' */
- T_REGISTER_PREFIX_TYPE, /* `__REGISTER_PREFIX__' */
- T_TIME, /* `__TIME__' */
- T_CONST, /* Constant value, used by `__STDC__' */
- T_MACRO, /* macro defined by `#define' */
+ T_DEFINE = 1, /* the #define keyword */
+ T_INCLUDE, /* the #include keyword */
+ T_INCLUDE_NEXT, /* the #include_next keyword */
+ T_IFDEF, /* the #ifdef keyword */
+ T_IFNDEF, /* the #ifndef keyword */
+ T_IF, /* the #if keyword */
+ T_ELSE, /* #else */
+ T_PRAGMA, /* #pragma */
+ T_ELIF, /* #elif */
+ T_UNDEF, /* #undef */
+ T_LINE, /* #line */
+ T_ERROR, /* #error */
+ T_WARNING, /* #warning */
+ T_ENDIF, /* #endif */
+ T_IDENT, /* #ident, used on system V. */
+ T_SPECLINE, /* special symbol __LINE__ */
+ T_DATE, /* __DATE__ */
+ T_FILE, /* __FILE__ */
+ T_BASE_FILE, /* __BASE_FILE__ */
+ T_INCLUDE_LEVEL, /* __INCLUDE_LEVEL__ */
+ T_FUNC, /* __func__ */
+ T_VERSION, /* __VERSION__ */
+ T_SIZE_TYPE, /* __SIZE_TYPE__ */
+ T_PTRDIFF_TYPE, /* __PTRDIFF_TYPE__ */
+ T_WCHAR_TYPE, /* __WCHAR_TYPE__ */
+ T_USER_LABEL_PREFIX_TYPE, /* __USER_LABEL_PREFIX__ */
+ T_REGISTER_PREFIX_TYPE, /* __REGISTER_PREFIX__ */
+ T_TIME, /* __TIME__ */
+ T_CONST, /* Constant value, used by __STDC__ */
+ T_MACRO, /* macro defined by #define */
T_DISABLED, /* macro temporarily turned off for rescan */
- T_SPEC_DEFINED, /* special `defined' macro for use in #if statements */
+ T_SPEC_DEFINED, /* special defined macro for use in #if statements */
T_PCSTRING, /* precompiled string (hashval is KEYDEF *) */
T_UNUSED /* Used for something not defined. */
} ;
{
/*@null@*/ struct definition *defn;
/*@exposed@*/ /*@relnull@*/ char *symnam; /* null if defn is null */
- int symlen;
+ size_t symlen;
};
/* Structure allocated for every #define. For a simple replacement
};
typedef struct if_stack cppIfStackFrame;
-extern void cppBuffer_lineAndColumn (/*@null@*/ cppBuffer *, /*@out@*/ int *,
- /*@out@*/ /*@null@*/ int *);
+extern void cppBuffer_getLineAndColumn (/*@null@*/ cppBuffer *, /*@out@*/ int *,
+ /*@out@*/ /*@null@*/ int *);
extern /*@exposed@*/ /*@null@*/ cppBuffer *cppReader_fileBuffer (cppReader *);
extern void cppReader_growBuffer (cppReader *, size_t);
};
extern void cppReader_addIncludeChain (/*@special@*/ cppReader *p_pfile,
- /*@keep@*/ struct file_name_list *p_dir)
+ /*@only@*/ struct file_name_list *p_dir)
/*@uses p_pfile->opts, p_pfile->max_include_len@*/
/*@modifies p_pfile, p_dir@*/ ;
#define INCLUDE_LEN_FUDGE 0
#endif
-extern int cppReader_checkMacroName (cppReader *p_pfile, char *p_symname,
- cstring p_usage);
+extern size_t cppReader_checkMacroName (cppReader *p_pfile, char *p_symname,
+ cstring p_usage);
extern struct operation cppReader_parseNumber (cppReader * p_pfile, char * p_start, int p_olen) /*@requires maxRead(p_start) >= (p_olen - 1) @*/;