]> granicus.if.org Git - postgresql/blob - src/interfaces/ecpg/preproc/extern.h
bc0cceaae9998eb963859cac8c0b926a32a7df34
[postgresql] / src / interfaces / ecpg / preproc / extern.h
1 #ifndef _ECPG_PREPROC_EXTERN_H
2 #define _ECPG_PREPROC_EXTERN_H
3
4 #include "type.h"
5
6 #include <errno.h>
7
8 /* defines */
9
10 #define STRUCT_DEPTH 128
11 #define EMPTY make_str("")
12
13 /* variables */
14
15 extern int      braces_open,
16                         autocommit,
17                         auto_create_c,
18                         system_includes,
19                         ret_value,
20                         struct_level;
21 extern char *descriptor_index;
22 extern char *descriptor_name;
23 extern char *connection;
24 extern char *input_filename;
25 extern char *yytext,
26                    *token_start,
27                         errortext[128];
28
29 #ifdef YYDEBUG
30 extern int      yydebug;
31 #endif
32 extern int      yylineno,
33                         yyleng;
34 extern FILE *yyin,
35                    *yyout;
36
37 extern struct _include_path *include_paths;
38 extern struct cursor *cur;
39 extern struct typedefs *types;
40 extern struct _defines *defines;
41 extern struct ECPGtype ecpg_no_indicator;
42 extern struct variable no_indicator;
43 extern struct arguments *argsinsert;
44 extern struct arguments *argsresult;
45 extern struct when when_error,
46                         when_nf,
47                         when_warn;
48 extern struct ECPGstruct_member *struct_member_list[STRUCT_DEPTH];
49
50 /* functions */
51
52 extern const char *get_dtype(enum ECPGdtype);
53 extern void lex_init(void);
54 extern char *make_str(const char *);
55 extern void output_line_number(void);
56 extern void output_statement(char *, int, char *);
57 extern void output_simple_statement(char *);
58 extern char *hashline_number(void);
59 extern int      yyparse(void);
60 extern int      yylex(void);
61 extern void yyerror(char *);
62 extern void *mm_alloc(size_t), *mm_realloc(void *, size_t);
63 extern char *mm_strdup(const char *);
64 extern void mmerror(int, enum errortype, char *);
65 extern ScanKeyword *ScanECPGKeywordLookup(char *);
66 extern ScanKeyword *ScanCKeywordLookup(char *);
67 extern void output_get_descr_header(char *);
68 extern void output_get_descr(char *, char *);
69 extern void push_assignment(char *, enum ECPGdtype);
70 extern struct variable *find_variable(char *);
71 extern void whenever_action(int);
72 extern void add_descriptor(char *, char *);
73 extern void drop_descriptor(char *, char *);
74 extern struct descriptor *lookup_descriptor(char *, char *);
75 extern struct variable *descriptor_variable(const char *name, int input);
76 extern void add_variable(struct arguments **, struct variable *, struct variable *);
77 extern void append_variable(struct arguments **, struct variable *, struct variable *);
78 extern void dump_variables(struct arguments *, int);
79 extern struct typedefs *get_typedef(char *);
80 extern void adjust_array(enum ECPGttype, char **, char **, char *, char *, int);
81 extern void reset_variables(void);
82 extern void check_indicator(struct ECPGtype *);
83 extern void remove_variables(int);
84 extern struct variable *new_variable(const char *, struct ECPGtype *, int);
85 extern ScanKeyword *ScanKeywordLookup(char *text);
86
87 /* return codes */
88
89 #define ILLEGAL_OPTION          1
90 #define NO_INCLUDE_FILE         2
91 #define PARSE_ERROR                     3
92 #define INDICATOR_NOT_ARRAY 4
93 #define OUT_OF_MEMORY           5
94 #define INDICATOR_NOT_STRUCT    6
95 #define INDICATOR_NOT_SIMPLE    7
96
97 enum COMPAT_MODE { ECPG_COMPAT_PGSQL = 0, ECPG_COMPAT_INFORMIX};
98 extern enum COMPAT_MODE compat;
99
100 #endif /* _ECPG_PREPROC_EXTERN_H */