diff options
Diffstat (limited to 'src/interfaces/ecpg/preproc/preproc_extern.h')
-rw-r--r-- | src/interfaces/ecpg/preproc/preproc_extern.h | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/src/interfaces/ecpg/preproc/preproc_extern.h b/src/interfaces/ecpg/preproc/preproc_extern.h new file mode 100644 index 0000000..992797b --- /dev/null +++ b/src/interfaces/ecpg/preproc/preproc_extern.h @@ -0,0 +1,128 @@ +/* src/interfaces/ecpg/preproc/preproc_extern.h */ + +#ifndef _ECPG_PREPROC_EXTERN_H +#define _ECPG_PREPROC_EXTERN_H + +#include "common/keywords.h" +#include "type.h" + +#ifndef CHAR_BIT +#include <limits.h> +#endif + +/* defines */ + +#define STRUCT_DEPTH 128 +#define EMPTY mm_strdup("") + +/* variables */ + +extern bool autocommit, + auto_create_c, + system_includes, + force_indicator, + questionmarks, + regression_mode, + auto_prepare; +extern int braces_open, + ret_value, + struct_level, + ecpg_internal_var; +extern char *current_function; +extern char *descriptor_name; +extern char *connection; +extern char *input_filename; +extern char *base_yytext, + *token_start; + +#ifdef YYDEBUG +extern int base_yydebug; +#endif +extern int base_yylineno; +extern FILE *base_yyin, + *base_yyout; +extern char *output_filename; + +extern struct _include_path *include_paths; +extern struct cursor *cur; +extern struct typedefs *types; +extern struct _defines *defines; +extern struct declared_list *g_declared_list; +extern struct ECPGtype ecpg_no_indicator; +extern struct variable no_indicator; +extern struct arguments *argsinsert; +extern struct arguments *argsresult; +extern struct when when_error, + when_nf, + when_warn; +extern struct ECPGstruct_member *struct_member_list[STRUCT_DEPTH]; + +/* Globals from keywords.c */ +extern const uint16 SQLScanKeywordTokens[]; + +/* functions */ + +extern const char *get_dtype(enum ECPGdtype); +extern void lex_init(void); +extern void output_line_number(void); +extern void output_statement(char *, int, enum ECPG_statement_type); +extern void output_prepare_statement(char *, char *); +extern void output_deallocate_prepare_statement(char *); +extern void output_simple_statement(char *, int); +extern char *hashline_number(void); +extern int base_yyparse(void); +extern int base_yylex(void); +extern void base_yyerror(const char *); +extern void *mm_alloc(size_t); +extern char *mm_strdup(const char *); +extern void mmerror(int errorcode, enum errortype type, const char *error,...) pg_attribute_printf(3, 4); +extern void mmfatal(int errorcode, const char *error,...) pg_attribute_printf(2, 3) pg_attribute_noreturn(); +extern void output_get_descr_header(char *); +extern void output_get_descr(char *, char *); +extern void output_set_descr_header(char *); +extern void output_set_descr(char *, char *); +extern void push_assignment(char *, enum ECPGdtype); +extern struct variable *find_variable(char *); +extern void whenever_action(int); +extern void add_descriptor(char *, char *); +extern void drop_descriptor(char *, char *); +extern struct descriptor *lookup_descriptor(char *, char *); +extern struct variable *descriptor_variable(const char *name, int input); +extern struct variable *sqlda_variable(const char *name); +extern void add_variable_to_head(struct arguments **, struct variable *, struct variable *); +extern void add_variable_to_tail(struct arguments **, struct variable *, struct variable *); +extern void remove_variable_from_list(struct arguments **list, struct variable *var); +extern void dump_variables(struct arguments *, int); +extern struct typedefs *get_typedef(char *); +extern void adjust_array(enum ECPGttype, char **, char **, char *, char *, int, bool); +extern void reset_variables(void); +extern void check_indicator(struct ECPGtype *); +extern void remove_typedefs(int); +extern void remove_variables(int); +extern struct variable *new_variable(const char *, struct ECPGtype *, int); +extern int ScanCKeywordLookup(const char *text); +extern int ScanECPGKeywordLookup(const char *text); +extern void parser_init(void); +extern int filtered_base_yylex(void); + +/* return codes */ + +#define ILLEGAL_OPTION 1 +#define NO_INCLUDE_FILE 2 +#define PARSE_ERROR 3 +#define INDICATOR_NOT_ARRAY 4 +#define OUT_OF_MEMORY 5 +#define INDICATOR_NOT_STRUCT 6 +#define INDICATOR_NOT_SIMPLE 7 + +enum COMPAT_MODE +{ + ECPG_COMPAT_PGSQL = 0, ECPG_COMPAT_INFORMIX, ECPG_COMPAT_INFORMIX_SE, ECPG_COMPAT_ORACLE +}; +extern enum COMPAT_MODE compat; + +#define INFORMIX_MODE (compat == ECPG_COMPAT_INFORMIX || compat == ECPG_COMPAT_INFORMIX_SE) +#define ORACLE_MODE (compat == ECPG_COMPAT_ORACLE) + + +#endif /* _ECPG_PREPROC_EXTERN_H */ |