36 #define HOST_N_REFS(p) ((p) ? (p)->n_refs : 0) 37 #define HOST_REFS(p) ((p) ? (p)->refs : NULL) 38 #define HOST_DESC(p) ((p) ? (p)->desc : NULL) 39 #define CHECK_HOST_REF(hvars, n) \ 40 ((hvars) && (n) < (hvars)->n_refs ? \ 41 &(hvars)->refs[(n)] : NULL) 42 #define MEMBER(set, val) ((set) & (1 << (val))) 43 #define NEWSET(val) (1 << (val)) 44 #define ECHO (*echo_fn)(esql_yytext, strlen(esql_yytext)) 45 #define ECHO_STR(str,length) (*echo_fn)((str), length) 46 #define ECHO_SP ECHO_STR(" ",strlen(" ")) 47 #define ECHO_NL ECHO_STR("\n",strlen("\n")) 49 #define IS_SPECIFIER(p) ( (p)->class_ == SPECIFIER ) 50 #define IS_DECLARATOR(p) ( (p)->class_ == DECLARATOR ) 52 #define IS_ARRAY(p) ( IS_DECLARATOR(p) && \ 53 (p)->decl.d.dcl_type == D_ARRAY ) 54 #define IS_POINTER(p) ( IS_DECLARATOR(p) && \ 55 (p)->decl.d.dcl_type == D_POINTER) 56 #define IS_FUNCT(p) ( IS_DECLARATOR(p) && \ 57 (p)->decl.d.dcl_type == D_FUNCTION) 58 #define IS_CHAR(p) ( IS_SPECIFIER(p) && (p)->decl.s.noun == N_CHR ) 59 #define IS_INT(p) ( IS_SPECIFIER(p) && (p)->decl.s.noun == N_INT ) 60 #define IS_UINT(p) ( IS_INT(p) && (p)->decl.s.is_unsigned ) 61 #define IS_LONG(p) ( IS_INT(p) && (p)->decl.s.is_long ) 62 #define IS_ULONG(p) ( IS_INT(p) && (p)->decl.s.is_long && \ 63 (p)->decl.s.is_unsigned ) 64 #define IS_UNSIGNED(p) ( (p)->decl.s.is_unsigned ) 66 #define IS_STRUCT(p) ( IS_SPECIFIER(p) && \ 67 (p)->decl.s.noun == N_STRUCTURE ) 68 #define IS_LABEL(p) ( IS_SPECIFIER(p) && \ 69 (p)->decl.s.noun == N_LABEL ) 70 #define IS_VARCHAR(p) ( IS_SPECIFIER(p) && \ 71 (p)->decl.s.noun == N_VARCHAR ) 72 #define IS_BIT(p) ( IS_SPECIFIER(p) && \ 73 (p)->decl.s.noun == N_BIT ) 74 #define IS_VARBIT(p) ( IS_SPECIFIER(p) && \ 75 (p)->decl.s.noun == N_VARBIT ) 76 #define IS_PSEUDO_TYPE(p) ( IS_SPECIFIER(p) && \ 77 ((p)->decl.s.noun == N_VARCHAR || \ 78 (p)->decl.s.noun == N_BIT || \ 79 (p)->decl.s.noun == N_VARBIT) ) 80 #define IS_VAR_TYPE(p) ( IS_SPECIFIER(p) && \ 81 ((p)->decl.s.noun == N_VARCHAR || \ 82 (p)->decl.s.noun == N_VARBIT) ) 84 #define IS_AGGREGATE(p) ( IS_ARRAY(p) || IS_STRUCT(p) ) 85 #define IS_PTR_TYPE(p) ( IS_ARRAY(p) || IS_POINTER(p) ) 87 #define IS_TYPEDEF(p) ( IS_SPECIFIER(p) && \ 88 (p)->decl.s.sclass == C_TYPEDEF ) 89 #define IS_CONSTANT(p) ( IS_SPECIFIER(p) && \ 90 (p)->decl.s.sclass == C_CONSTANT) 91 #define IS_INT_CONSTANT(p) ( IS_CONSTANT(p) && \ 92 (p)->decl.s.noun == N_INT) 95 typedef void (*
ECHO_FN) (
const char *, int);
251 extern char *
pp_strdup (
const char *str);
257 extern const char *
pp_get_msg (
int msg_set,
int msg_num);
273 extern void echo_vstr (
const char *,
int);
274 #if defined (ENABLE_UNUSED_FUNCTION) 275 extern void echo_devnull (
const char *,
int);
unsigned int pp_generic_case_hash(void *p)
void pp_add_initializer(SYMBOL *sym)
void pp_remove_symbols_from_table(SYMBOL *sym_chain)
int pp_ptr_vec_n_elems(PTR_VEC *vec)
void pp_add_whenever_to_scope(WHEN_CONDITION cond, WHEN_ACTION action, char *name)
SYMBOL * pp_findsym(SYMTAB *symtab, unsigned char *name)
void esql_yyvwarn(const char *,...)
void pp_clear_host_lod(HOST_LOD *lod)
void pp_add_type_adj(int adj)
SYMBOL * pp_new_symbol(const char *name, int scope)
PTR_VEC * pp_new_ptr_vec(PTR_VEC *vec)
HOST_VAR * pp_new_host_var(HOST_VAR *var, SYMBOL *sym)
HOST_LOD * pp_output_refs(void)
void pp_symbol_init(void)
LINK * pp_clone_type(LINK *tchain, LINK **endp)
void pp_suppress_echo(int)
CURSOR * pp_new_cursor(char *name, char *static_stmt, int stmtLength, STMT *dynamic_stmt, HOST_LOD *host_refs)
void esql_yy_enter(enum scanner_mode)
void pp_print_syms(FILE *fp)
HOST_LOD * pp_detach_host_refs(void)
char * pp_switch_to_descriptor(void)
void pp_free_symtab(SYMTAB *, HT_FREE_FN)
void echo_stream(const char *, int)
void esql_yyverror(const char *,...)
CURSOR * pp_lookup_cursor(char *name)
void pp_cursor_finish(void)
unsigned int pp_generic_hash(void *p)
void pp_print_cursors(FILE *fp)
const char * pp_get_msg(int msg_set, int msg_num)
void pp_finish_whenever_scope(WHENEVER_SCOPE *scope, WHENEVER_SCOPE *new_scope)
void pp_free_stmt(STMT *stmt)
int pp_generic_case_cmp(void *p1, void *p2)
void esql_yy_check_mode(void)
const char * pp_type_str(LINK *link)
int pp_generic_cmp(void *p1, void *p2)
HOST_LOD * pp_input_refs(void)
void pp_add_struct_spec(STRUCTDEF *sdef)
void(* HT_FREE_FN)(void *)
void pp_push_name_scope(void)
void pp_print_specs(LINK *link)
void pp_symbol_finish(void)
int pp_recognizing_typedef_names
void esql_yyerror(const char *)
void esql_yy_erase_last_token(void)
enum when_action WHEN_ACTION
void pp_symbol_stats(FILE *fp)
int pp_emit_line_directives
void pp_add_type_noun(int type)
void pp_check_host_var_list(void)
void pp_gather_input_refs(void)
HOST_LOD * pp_copy_host_refs(void)
void pp_add_typedefed_spec(LINK *spec)
STMT * pp_new_stmt(char *name)
enum specifier_noun SPECIFIER_NOUN
void pp_translate_string(varstring *vstr, const char *str, int in_string)
const char * VARCHAR_ARRAY_NAME
static HOST_LOD * input_refs
HOST_LOD * pp_new_host_lod(void)
void pp_discard_link(LINK *p)
void pp_do_enum(SYMBOL *sym)
void pp_add_declarator(SYMBOL *sym, int type)
HOST_REF * pp_add_host_ref(HOST_VAR *, HOST_VAR *, bool, int *)
const char * pp_include_path
char * pp_sclass_str(int class_)
void ** pp_ptr_vec_elems(PTR_VEC *vec)
void pp_free_cursor(CURSOR *cursor)
HOST_VAR * pp_addr_of(HOST_VAR *var)
void esql_yy_sync_lineno(void)
void pp_disallow_storage_classes(void)
char * pp_attr_str(LINK *type)
void pp_reset_current_type_spec(void)
ECHO_FN pp_set_echo(ECHO_FN)
void emit_line_directive(void)
void pp_discard_link_chain(LINK *p)
void pp_free_host_ref(HOST_REF *ref)
void pp_discard_structdef(STRUCTDEF *sdef)
void pp_add_symbols_to_table(SYMBOL *sym)
enum when_condition WHEN_CONDITION
void pp_free_host_lod(HOST_LOD *lod)
HOST_VAR * pp_struct_deref(HOST_VAR *var, char *field, int indirect)
void pp_discard_symbol(SYMBOL *sym)
void pp_print_decls(SYMBOL *sym_chain, int preechoed)
void pp_gather_output_refs(void)
varstring pt_statement_buf
void echo_vstr(const char *, int)
void pp_remove_cursors_from_table(CURSOR *chain)
STRUCTDEF * pp_new_pseudo_def(SPECIFIER_NOUN type, const char *subscript)
const char * VARCHAR_LENGTH_NAME
LINK * pp_current_type_spec(void)
void esql_yy_pop_mode(void)
static HOST_LOD * output_refs
void pp_pop_spec_scope(void)
void pp_add_cursor_to_scope(CURSOR *cursor)
void esql_yy_echo(const char *str)
varstring pp_host_var_buf
void pp_init_whenever_scope(WHENEVER_SCOPE *scope, WHENEVER_SCOPE *old_scope)
void pp_cursor_init(void)
void pp_free_ptr_vec(PTR_VEC *vec)
HOST_REF * pp_add_host_str(char *str)
SYMBOL * pp_clone_symbol(SYMBOL *sym)
PTR_VEC * pp_add_ptr(PTR_VEC *vec, void *new_elem)
STRUCTDEF * pp_new_structdef(const char *tag)
void pp_clear_host_refs(void)
void esql_yyredef(char *)
void pp_push_spec_scope(void)
HOST_VAR * pp_ptr_deref(HOST_VAR *var, int style)
HOST_REF * pp_check_type(HOST_REF *ref, BITSET typeset, const char *msg)
int pp_the_same_type(LINK *p1, LINK *p2, int relax)
void pp_make_typedef_names_visible(int)
varstring pp_subscript_buf
void(* ECHO_FN)(const char *, int)
void pp_free_host_var(HOST_VAR *var)
int pp_disable_varchar_length
void pp_discard_structdef_chain(STRUCTDEF *sdef)
SYMTAB * pp_new_symtab(void)
void pp_discard_symbol_chain(SYMBOL *sym)
void pp_discard_cursor_chain(CURSOR *chain)
char * pp_strdup(const char *str)
void esql_yy_push_mode(enum scanner_mode)
void pp_decl_finish(void)
void pp_pop_name_scope(void)
void pp_add_spec_to_decl(LINK *p_spec, SYMBOL *decl_chain)
void pp_add_storage_class(int sc)