#ifndef PREPROCESSOR_H #define PREPROCESSOR_H typedef enum comment_type comment_type; typedef struct cursor cursor; typedef struct whitespace whitespace; typedef struct comment comment; typedef struct source source; enum comment_type { COMM_NONE, COMM_MULTI, COMM_SINGLE, NUM_COMMS }; struct cursor { int line; int column; }; struct whitespace { int spaces; int bspaces; int tabs; int vtabs; int lines; }; struct comment { enum comment_type type; char *text; cursor start_pos; cursor end_pos; whitespace wsp; }; struct source { source **include_list; char *filename; char *text; int tab_width; cursor cur; }; extern source *preprocess(const char *str, int dbg); #endif