33 #include "esql_grammar.h" 40 #define BAD_C_TYPE ((C_TYPE) -1) 41 #define UNINIT_C_TYPE ((C_TYPE) -2) 42 #define C_TYPE_STRUCT ((C_TYPE) -3) 43 #define UNINITIALIZED(p) ((p) == UNINIT_C_TYPE) 169 if (host_lod_chain !=
NULL)
190 host_lod_chain =
NULL;
294 uci_type =
pp_check (var, structs_allowed);
311 if (pp_host_refs ==
NULL)
314 if (pp_host_refs ==
NULL)
328 memcpy ((
char *) new_refs, (
char *) pp_host_refs->
real_refs,
338 ref = &pp_host_refs->
refs[pp_host_refs->
n_refs++];
342 ref->
ind = indicator;
364 if (indicator !=
NULL)
397 for (; field; field = next)
478 *pp_gathering = pp_host_refs =
NULL;
507 link = &((*link)->next);
564 if (
MEMBER (typeset, type))
593 if (pp_host_refs ==
NULL)
598 for (i = 0; i < pp_host_refs->
n_refs; ++
i)
714 const char *size_str =
NULL;
726 size_str =
"sizeof(short)";
729 size_str =
"sizeof(int)";
732 size_str =
"sizeof(long)";
735 size_str =
"sizeof(float)";
738 size_str =
"sizeof(double)";
741 size_str =
"sizeof(DB_TIME)";
744 size_str =
"sizeof(DB_TIMESTAMP)";
747 size_str =
"sizeof(DB_DATE)";
750 size_str =
"sizeof(DB_MONETARY)";
753 size_str =
"sizeof(DB_VALUE)";
756 size_str =
"sizeof(DB_SET *)";
759 size_str =
"sizeof(DB_MULTISET *)";
762 size_str =
"sizeof(DB_SEQ *)";
765 size_str =
"sizeof(DB_COLLECTION *)";
768 size_str =
"sizeof(DB_OBJECT *)";
794 if (size_str !=
NULL)
813 char *size_str =
NULL;
936 return (
char *)
"&uci_null_ind";
940 return (
char *)
"NULL";
1030 else if (structs_allowed)
1091 for (i = 0; i < DIM (builtin_types); ++
i)
1095 return builtin_types[
i].
c_type;
1129 result = (
char *)
"NULL";
1177 var->
type = result_type;
1210 var->
type = base_type;
1221 if (field_def ==
NULL)
1249 if (new_link !=
NULL)
1253 var->
type = new_link;
1270 for (sym = sdef->
fields; sym; sym = sym->
next)
1272 if (STREQ (field, (
char *) sym->
name))
1309 *symp = dummy_symbol;
1330 host_lod_chain =
NULL;
1331 host_lod_free_list =
NULL;
1334 pp_host_refs =
NULL;
1360 if (
sizeof (
int) < 4)
1368 for (i = 0; i < DIM (builtin_types); ++
i)
1384 while (host_lod_chain)
1388 host_lod_chain = next;
1390 while (host_lod_free_list)
1394 host_lod_free_list = next;
1423 host_lod_free_list = lod->
next;
1433 host_lod_chain = lod;
1510 pp_host_refs->
n_refs = 0;
1513 return (
char *) pp_host_refs->
desc;
1534 unsigned const char *
p = (
unsigned const char *) str;
1543 vs_strcat (vstr, in_string ?
"\\\"" :
"\"");
1545 for (++p; *p !=
'"'; ++
p)
1570 vs_strcat (vstr, in_string ?
"\\\"" :
"\"");
1574 vs_putc (vstr, in_string ?
'\'' :
'"');
1581 if (*(p + 1) ==
'\n')
1592 if (*(p + 1) ==
'\'')
1613 vs_putc (vstr, in_string ?
'\'' :
'"');
static HOST_LOD * host_lod_chain
static char * pp_expr(HOST_VAR *var)
void *(* add_symbol)(HASH_TAB *tbl, void *sym)
void pp_print_host_ref(HOST_REF *ref, FILE *fp)
unsigned char is_unsigned
char * pp_strdup(const char *str)
varstring * vs_new(varstring *vstr)
SYMBOL * pp_new_symbol(const char *name, int scope)
varstring * ind_addr_expr_buf
HOST_LOD * pp_copy_host_refs(void)
HOST_LOD * pp_detach_host_refs(void)
LINK * pp_clone_type(LINK *tchain, LINK **endp)
HOST_LOD * pp_new_host_lod(void)
LINK * pp_current_type_spec(void)
HOST_VAR * pp_struct_deref(HOST_VAR *var, char *field, int indirect)
static SYMBOL * string_dummy
static HOST_LOD * host_lod_free_list
void esql_yyverror(const char *,...)
HOST_VAR * pp_new_host_var(HOST_VAR *var, SYMBOL *sym)
void pp_add_type_adj(int adj)
int vs_prepend(varstring *vstr, const char *prefix)
char * pp_get_ind_addr_expr(HOST_REF *ref)
const char * pp_get_msg(int msg_set, int msg_num)
int vs_strcpy(varstring *vstr, const char *str)
HOST_REF * pp_add_host_str(char *str)
int vs_sprintf(varstring *vstr, const char *fmt,...)
const char * pp_type_str(LINK *link)
void pp_clear_host_refs(void)
varstring * precision_buf
char * vs_str(varstring *vstr)
char * pp_get_expr(HOST_REF *ref)
void vs_free(varstring *vstr)
HOST_LOD * pp_output_refs(void)
HOST_REF * pp_check_type(HOST_REF *ref, BITSET typeset, const char *msg)
#define IS_PSEUDO_TYPE(p)
varstring * output_size_buf
HOST_VAR * pp_addr_of(HOST_VAR *var)
void pp_free_host_var(HOST_VAR *var)
const char * VARCHAR_ARRAY_NAME
static HOST_LOD * input_refs
void pp_discard_link(LINK *p)
void pp_add_declarator(SYMBOL *sym, int type)
static SYMBOL * pp_find_field(STRUCTDEF *sdef, const char *field)
int vs_putc(varstring *vstr, int ch)
static HOST_LOD * pp_host_refs
varstring * addr_expr_buf
static C_TYPE pp_check(HOST_VAR *var, bool structs_allowed)
void pp_reset_current_type_spec(void)
void vs_clear(varstring *vstr)
char * pp_get_output_size(HOST_REF *ref)
void pp_discard_link_chain(LINK *p)
char * pp_get_ind_expr(HOST_REF *ref)
void pp_discard_symbol(SYMBOL *sym)
char * pp_get_input_size(HOST_REF *ref)
static HOST_LOD ** pp_gathering
HOST_REF * pp_add_host_ref(HOST_VAR *var, HOST_VAR *indicator, bool structs_allowed, int *n_refs)
void pp_add_spec_to_decl(LINK *p_spec, SYMBOL *decl_chain)
static HOST_REF * pp_add_struct_field_refs(HOST_VAR *var, int *n_refs)
static BUILTIN_TYPE builtin_types[]
void pp_add_struct_spec(STRUCTDEF *sdef)
const char * VARCHAR_LENGTH_NAME
int vs_strcat(varstring *vstr, const char *str)
#define free_and_init(ptr)
static HOST_LOD * output_refs
void pp_gather_output_refs(void)
void pp_free_host_lod(HOST_LOD *lod)
varstring * input_size_buf
C_TYPE pp_get_type(HOST_REF *ref)
void pp_add_type_noun(int type)
HOST_LOD * pp_input_refs(void)
void pp_add_storage_class(int sc)
STRUCTDEF * pp_new_structdef(const char *tag)
char * pp_get_addr_expr(HOST_REF *ref)
static char * pp_addr_expr(HOST_VAR *var)
int pp_the_same_type(LINK *p1, LINK *p2, int relax)
void pp_check_host_var_list(void)
char * pp_get_precision(HOST_REF *ref)
void pp_free_host_ref(HOST_REF *ref)
void pp_add_symbols_to_table(SYMBOL *sym)
#define NUM_C_VARIABLE_TYPES
HOST_VAR * pp_ptr_deref(HOST_VAR *var, int style)
static void pp_add_dummy_structdef(SYMBOL **symp, const char *name)
void pp_clear_host_lod(HOST_LOD *lod)
void pp_gather_input_refs(void)
static C_TYPE pp_check_builtin_type(LINK *type, bool mode)
const unsigned char * type_string
char * pp_switch_to_descriptor(void)
void pp_translate_string(varstring *vstr, const char *str, int in_string)