#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>
#include <assert.h>
#include <ctype.h>
#include "qtbc.h"
#include <qarray.h>
#include <qstack.h>
#include <qfile.h>
#include <qstrlist.h>
#include <qdict.h>
#include <qregexp.h>
#include <qfileinfo.h>
#include <qdir.h>
#include "pre.h"
#include "constexp.h"
#include "define.h"
#include "doxygen.h"
#include "message.h"
#include "util.h"
#include "defargs.h"
#include "debug.h"
#include "bufstr.h"
#include "portable.h"
#include <unistd.h>
Go to the source code of this file.
Classes | |
struct | yy_buffer_state |
struct | yy_trans_info |
struct | FileState |
Defines | |
#define | YY_INT_ALIGNED short int |
#define | FLEX_SCANNER |
#define | YY_FLEX_MAJOR_VERSION 2 |
#define | YY_FLEX_MINOR_VERSION 5 |
#define | YY_FLEX_SUBMINOR_VERSION 33 |
#define | FLEX_BETA |
#define | INT8_MIN (-128) |
#define | INT16_MIN (-32767-1) |
#define | INT32_MIN (-2147483647-1) |
#define | INT8_MAX (127) |
#define | INT16_MAX (32767) |
#define | INT32_MAX (2147483647) |
#define | UINT8_MAX (255U) |
#define | UINT16_MAX (65535U) |
#define | UINT32_MAX (4294967295U) |
#define | yyconst |
#define | YY_NULL 0 |
#define | YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) |
#define | BEGIN (yy_start) = 1 + 2 * |
#define | YY_START (((yy_start) - 1) / 2) |
#define | YYSTATE YY_START |
#define | YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) |
#define | YY_NEW_FILE preYYrestart(preYYin ) |
#define | YY_END_OF_BUFFER_CHAR 0 |
#define | YY_BUF_SIZE 262144 |
#define | YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) |
#define | EOB_ACT_CONTINUE_SCAN 0 |
#define | EOB_ACT_END_OF_FILE 1 |
#define | EOB_ACT_LAST_MATCH 2 |
#define | YY_LESS_LINENO(n) |
#define | yyless(n) |
#define | unput(c) yyunput( c, (yytext_ptr) ) |
#define | YY_BUFFER_NEW 0 |
#define | YY_BUFFER_NORMAL 1 |
#define | YY_BUFFER_EOF_PENDING 2 |
#define | YY_CURRENT_BUFFER |
#define | YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] |
#define | YY_FLUSH_BUFFER preYY_flush_buffer(YY_CURRENT_BUFFER ) |
#define | yy_new_buffer preYY_create_buffer |
#define | yy_set_interactive(is_interactive) |
#define | yy_set_bol(at_bol) |
#define | YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) |
#define | preYYwrap(n) 1 |
#define | YY_SKIP_YYWRAP |
#define | yytext_ptr preYYtext |
#define | YY_DO_BEFORE_ACTION |
#define | YY_NUM_RULES 155 |
#define | YY_END_OF_BUFFER 156 |
#define | YY_TRAILING_MASK 0x2000 |
#define | YY_TRAILING_HEAD_MASK 0x4000 |
#define | REJECT |
#define | yymore() yymore_used_but_not_detected |
#define | YY_MORE_ADJ 0 |
#define | YY_RESTORE_YY_MORE_OFFSET |
#define | YY_NEVER_INTERACTIVE 1 |
#define | YY_INPUT(buf, result, max_size) result=yyread(buf,max_size); |
#define | INITIAL 0 |
#define | Start 1 |
#define | Command 2 |
#define | SkipCommand 3 |
#define | SkipLine 4 |
#define | CopyLine 5 |
#define | CopyString 6 |
#define | Include 7 |
#define | IncludeID 8 |
#define | EndImport 9 |
#define | DefName 10 |
#define | DefineArg 11 |
#define | DefineText 12 |
#define | SkipCPPBlock 13 |
#define | Ifdef 14 |
#define | Ifndef 15 |
#define | SkipCComment 16 |
#define | CopyCComment 17 |
#define | SkipVerbatim 18 |
#define | SkipCPPComment 19 |
#define | RemoveCComment 20 |
#define | RemoveCPPComment 21 |
#define | Guard 22 |
#define | DefinedExpr1 23 |
#define | DefinedExpr2 24 |
#define | SkipDoubleQuote 25 |
#define | SkipSingleQuote 26 |
#define | UndefName 27 |
#define | IgnoreLine 28 |
#define | FindDefineArgs 29 |
#define | ReadString 30 |
#define | CondLine 31 |
#define | YY_EXTRA_TYPE void * |
#define | YY_READ_BUF_SIZE 8192 |
#define | ECHO (void) fwrite( preYYtext, preYYleng, 1, preYYout ) |
#define | yyterminate() return YY_NULL |
#define | YY_START_STACK_INCR 25 |
#define | YY_FATAL_ERROR(msg) yy_fatal_error( msg ) |
#define | YY_DECL_IS_OURS 1 |
#define | YY_DECL int preYYlex (void) |
#define | YY_BREAK break; |
#define | YY_RULE_SETUP |
#define | YY_EXIT_FAILURE 2 |
#define | yyless(n) |
#define | YYTABLES_NAME "yytables" |
Typedefs | |
typedef signed char | flex_int8_t |
typedef short int | flex_int16_t |
typedef int | flex_int32_t |
typedef unsigned char | flex_uint8_t |
typedef unsigned short int | flex_uint16_t |
typedef unsigned int | flex_uint32_t |
typedef yy_buffer_state * | YY_BUFFER_STATE |
typedef unsigned int | yy_size_t |
typedef unsigned char | YY_CHAR |
typedef int | yy_state_type |
Functions | |
void | preYYrestart (FILE *input_file) |
void | preYY_switch_to_buffer (YY_BUFFER_STATE new_buffer) |
YY_BUFFER_STATE | preYY_create_buffer (FILE *file, int size) |
void | preYY_delete_buffer (YY_BUFFER_STATE b) |
void | preYY_flush_buffer (YY_BUFFER_STATE b) |
void | preYYpush_buffer_state (YY_BUFFER_STATE new_buffer) |
void | preYYpop_buffer_state (void) |
YY_BUFFER_STATE | preYY_scan_buffer (char *base, yy_size_t size) |
YY_BUFFER_STATE | preYY_scan_string (yyconst char *yy_str) |
YY_BUFFER_STATE | preYY_scan_bytes (yyconst char *bytes, int len) |
void * | preYYalloc (yy_size_t) |
void * | preYYrealloc (void *, yy_size_t) |
void | preYYfree (void *) |
DefineDict * | getFileDefineDict () |
QCString | removeIdsAndMarkers (const char *s) |
QCString | removeMarkers (const char *s) |
bool | computeExpression (const QCString &expr) |
QCString | expandMacro (const QCString &name) |
Define * | newDefine () |
void | addDefine () |
int | preYYlex (void) |
int | preYYget_lineno (void) |
FILE * | preYYget_in (void) |
FILE * | preYYget_out (void) |
int | preYYget_leng (void) |
char * | preYYget_text (void) |
void | preYYset_lineno (int line_number) |
void | preYYset_in (FILE *in_str) |
void | preYYset_out (FILE *out_str) |
int | preYYget_debug (void) |
void | preYYset_debug (int bdebug) |
int | preYYlex_destroy (void) |
void | addSearchDir (const char *dir) |
void | initPreprocessor () |
void | cleanUpPreprocessor () |
void | preprocessFile (const char *fileName, BufStr &output) |
void | preFreeScanner () |
Variables | |
int | preYYleng |
FILE * | preYYin |
FILE * | preYYout |
int | preYYleng |
FILE * | preYYin = (FILE *) 0 |
FILE * | preYYout = (FILE *) 0 |
int | preYYlineno |
int | preYYlineno = 1 |
char * | preYYtext |
int | preYY_flex_debug |
int | preYY_flex_debug = 0 |
char * | preYYtext |
#define REJECT |
Value:
{ \ *yy_cp = (yy_hold_char); /* undo effects of setting up preYYtext */ \ yy_cp = (yy_full_match); /* restore poss. backed-over text */ \ (yy_lp) = yy_full_lp; /* restore orig. accepting pos. */ \ (yy_state_ptr) = yy_full_state; /* restore orig. state */ \ yy_current_state = *(yy_state_ptr); /* restore curr. state */ \ ++(yy_lp); \ goto find_rule; \ }
#define YY_CURRENT_BUFFER |
#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] |
#define YY_DO_BEFORE_ACTION |
Value:
(yytext_ptr) = yy_bp; \ preYYleng = (size_t) (yy_cp - yy_bp); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp;
#define YY_FLUSH_BUFFER preYY_flush_buffer(YY_CURRENT_BUFFER ) |
#define YY_INPUT | ( | buf, | |||
result, | |||||
max_size | ) | result=yyread(buf,max_size); |
#define YY_RULE_SETUP |
#define YY_SC_TO_UI | ( | c | ) | ((unsigned int) (unsigned char) c) |
#define yy_set_bol | ( | at_bol | ) |
Value:
{ \ if ( ! YY_CURRENT_BUFFER ){\ preYYensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ preYY_create_buffer(preYYin,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ }
#define yy_set_interactive | ( | is_interactive | ) |
Value:
{ \ if ( ! YY_CURRENT_BUFFER ){ \ preYYensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ preYY_create_buffer(preYYin,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ }
#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) |
#define YY_STATE_EOF | ( | state | ) | (YY_END_OF_BUFFER + state + 1) |
#define yyless | ( | n | ) |
Value:
do \ { \ /* Undo effects of setting up preYYtext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ preYYtext[preYYleng] = (yy_hold_char); \ (yy_c_buf_p) = preYYtext + yyless_macro_arg; \ (yy_hold_char) = *(yy_c_buf_p); \ *(yy_c_buf_p) = '\0'; \ preYYleng = yyless_macro_arg; \ } \ while ( 0 )
#define yyless | ( | n | ) |
Value:
do \ { \ /* Undo effects of setting up preYYtext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = (yy_hold_char); \ YY_RESTORE_YY_MORE_OFFSET \ (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up preYYtext again */ \ } \ while ( 0 )
typedef short int flex_int16_t |
typedef int flex_int32_t |
typedef signed char flex_int8_t |
typedef unsigned short int flex_uint16_t |
typedef unsigned int flex_uint32_t |
typedef unsigned char flex_uint8_t |
typedef struct yy_buffer_state* YY_BUFFER_STATE |
typedef int yy_state_type |
void addDefine | ( | ) |
Definition at line 2963 of file pre.cpp.
References SDict< T >::append(), MemberDef::Define, SDict< T >::find(), Doxygen::functionNameSDict, Doxygen::gatherDefines, FileDef::insertMember(), Normal, Public, MemberDef::setArgumentList(), MemberDef::setDefinition(), MemberDef::setFileDef(), MemberDef::setInitializer(), and stringToArgumentList().
void addSearchDir | ( | const char * | dir | ) |
Definition at line 6213 of file pre.cpp.
Referenced by checkConfiguration(), and initPreprocessor().
void cleanUpPreprocessor | ( | ) |
bool computeExpression | ( | const QCString & | expr | ) |
compute the value of the expression in string expr. If needed the function may read additional characters from the input.
Definition at line 2922 of file pre.cpp.
References parseCppExpression(), QCString, and removeIdsAndMarkers().
QCString expandMacro | ( | const QCString & | name | ) |
expands the macro definition in name If needed the function may read additional characters from the input
Definition at line 2937 of file pre.cpp.
References QCString, and removeMarkers().
DefineDict* getFileDefineDict | ( | ) |
void initPreprocessor | ( | ) |
Define* newDefine | ( | ) |
Definition at line 2946 of file pre.cpp.
References Define::definition, Doxygen::expandAsDefinedDict, Define::fileName, Define::isPredefined, Define::lineNr, Define::name, Define::nargs, and Define::varArgs.
void preFreeScanner | ( | ) |
void preprocessFile | ( | const char * | fileName, | |
BufStr & | output | |||
) |
Definition at line 6240 of file pre.cpp.
References BEGIN, Config_getBool, Config_getList, BufStr::curPos(), BufStr::data(), Define::definition, err(), Debug::ExtCmd, getFileFilter(), Debug::isFlagSet(), Define::isPredefined, msg(), Define::name, Define::nargs, Define::nonRecursive, portable_pclose(), portable_popen(), preYYlex(), Debug::print(), QCString, and Start.
YY_BUFFER_STATE preYY_create_buffer | ( | FILE * | file, | |
int | size | |||
) |
void preYY_delete_buffer | ( | YY_BUFFER_STATE | b | ) |
Referenced by preYYlex_destroy(), and preYYpop_buffer_state().
void preYY_flush_buffer | ( | YY_BUFFER_STATE | b | ) |
Discard all buffered characters. On the next scan, YY_INPUT will be called.
b | the buffer state to be flushed, usually YY_CURRENT_BUFFER . |
Definition at line 5722 of file pre.cpp.
References yy_buffer_state::yy_at_bol, yy_buffer_state::yy_buf_pos, YY_BUFFER_NEW, yy_buffer_state::yy_buffer_status, yy_buffer_state::yy_ch_buf, YY_CURRENT_BUFFER, YY_END_OF_BUFFER_CHAR, and yy_buffer_state::yy_n_chars.
YY_BUFFER_STATE preYY_scan_buffer | ( | char * | base, | |
yy_size_t | size | |||
) |
Setup the input buffer state to scan directly from a user-specified character buffer.
base | the character buffer | |
size | the size in bytes of the character buffer |
Definition at line 5845 of file pre.cpp.
References preYY_switch_to_buffer(), preYYalloc(), yy_buffer_state::yy_at_bol, yy_buffer_state::yy_buf_pos, yy_buffer_state::yy_buf_size, YY_BUFFER_NEW, yy_buffer_state::yy_buffer_status, yy_buffer_state::yy_ch_buf, YY_END_OF_BUFFER_CHAR, YY_FATAL_ERROR, yy_buffer_state::yy_fill_buffer, yy_buffer_state::yy_input_file, yy_buffer_state::yy_is_interactive, yy_buffer_state::yy_is_our_buffer, and yy_buffer_state::yy_n_chars.
Referenced by preYY_scan_bytes().
YY_BUFFER_STATE preYY_scan_bytes | ( | yyconst char * | yybytes, | |
int | _yybytes_len | |||
) |
Setup the input buffer state to scan the given bytes. The next call to preYYlex() will scan from a copy of bytes.
bytes | the byte buffer to scan | |
len | the number of bytes in the buffer pointed to by bytes. |
Definition at line 5895 of file pre.cpp.
References preYY_scan_buffer(), preYYalloc(), YY_END_OF_BUFFER_CHAR, YY_FATAL_ERROR, and yy_buffer_state::yy_is_our_buffer.
Referenced by preYY_scan_string().
YY_BUFFER_STATE preYY_scan_string | ( | yyconst char * | yystr | ) |
Setup the input buffer state to scan a string. The next call to preYYlex() will scan from a copy of str.
str | a NUL-terminated string to scan |
Definition at line 5882 of file pre.cpp.
References preYY_scan_bytes().
void preYY_switch_to_buffer | ( | YY_BUFFER_STATE | new_buffer | ) |
Referenced by preYY_scan_buffer().
void * preYYalloc | ( | yy_size_t | ) |
void preYYfree | ( | void * | ) |
int preYYget_leng | ( | void | ) |
FILE* preYYget_out | ( | void | ) |
int preYYlex | ( | void | ) |
Referenced by preprocessFile().
int preYYlex_destroy | ( | void | ) |
Definition at line 6066 of file pre.cpp.
References preYY_delete_buffer(), preYYfree(), preYYpop_buffer_state(), YY_CURRENT_BUFFER, and YY_CURRENT_BUFFER_LVALUE.
Referenced by preFreeScanner().
void preYYpop_buffer_state | ( | void | ) |
Removes and deletes the top of the stack, if present. The next element becomes the new top.
Definition at line 5781 of file pre.cpp.
References preYY_delete_buffer(), YY_CURRENT_BUFFER, and YY_CURRENT_BUFFER_LVALUE.
Referenced by preYYlex_destroy().
void preYYpush_buffer_state | ( | YY_BUFFER_STATE | new_buffer | ) |
Pushes the new state onto the stack. The new state becomes the current state. This function will allocate the stack if necessary.
new_buffer | The new state. |
Definition at line 5751 of file pre.cpp.
References YY_CURRENT_BUFFER, and YY_CURRENT_BUFFER_LVALUE.
void preYYrestart | ( | FILE * | input_file | ) |
void preYYset_in | ( | FILE * | in_str | ) |
Set the input stream. This does not discard the current input buffer.
in_str | A readable stream. |
void preYYset_lineno | ( | int | line_number | ) |
QCString removeIdsAndMarkers | ( | const char * | s | ) |
replaces all occurrences of @@ in s by @ and removes all occurrences of @E. All identifiers found are replaced by 0L
Definition at line 2751 of file pre.cpp.
References isId(), and QCString.
Referenced by computeExpression().
QCString removeMarkers | ( | const char * | s | ) |
replaces all occurrences of @ in s by @
Definition at line 2837 of file pre.cpp.
References QCString.
Referenced by expandMacro().
int preYY_flex_debug = 0 |
int preYY_flex_debug |
int preYYleng |
int preYYleng |
int preYYlineno = 1 |
int preYYlineno |
FILE * preYYout = (FILE *) 0 |
FILE * preYYout |