PostgreSQL Source Code: src/interfaces/ecpg/preproc/descriptor.c File Reference (original) (raw)
Go to the source code of this file.
Functions | |
---|---|
void | push_assignment (const char *var, enum ECPGdtype value) |
static void | drop_assignments (void) |
static void | ECPGnumeric_lvalue (char *name) |
void | add_descriptor (const char *name, const char *connection) |
void | drop_descriptor (const char *name, const char *connection) |
struct descriptor * | lookup_descriptor (const char *name, const char *connection) |
void | output_get_descr_header (const char *desc_name) |
void | output_get_descr (const char *desc_name, const char *index) |
void | output_set_descr_header (const char *desc_name) |
static const char * | descriptor_item_name (enum ECPGdtype itemcode) |
void | output_set_descr (const char *desc_name, const char *index) |
struct variable * | descriptor_variable (const char *name, int input) |
struct variable * | sqlda_variable (const char *name) |
◆ MAX_DESCRIPTOR_NAMELEN
#define MAX_DESCRIPTOR_NAMELEN 128
◆ add_descriptor()
void add_descriptor | ( | const char * | name, |
---|---|---|---|
const char * | connection | ||
) |
◆ descriptor_item_name()
static const char * descriptor_item_name ( enum ECPGdtype itemcode) | static |
---|
Definition at line 227 of file descriptor.c.
228{
229 switch (itemcode)
230 {
232 return "CARDINALITY";
234 return "COUNT";
236 return "DATA";
238 return "DATETIME_INTERVAL_CODE";
240 return "DATETIME_INTERVAL_PRECISION";
242 return "INDICATOR";
244 return "KEY_MEMBER";
246 return "LENGTH";
248 return "NAME";
250 return "NULLABLE";
252 return "OCTET_LENGTH";
254 return "PRECISION";
256 return "RETURNED_LENGTH";
258 return "RETURNED_OCTET_LENGTH";
260 return "SCALE";
262 return "TYPE";
263 default:
264 return NULL;
265 }
266}
References ECPGd_cardinality, ECPGd_count, ECPGd_data, ECPGd_di_code, ECPGd_di_precision, ECPGd_indicator, ECPGd_key_member, ECPGd_length, ECPGd_name, ECPGd_nullable, ECPGd_octet, ECPGd_precision, ECPGd_ret_length, ECPGd_ret_octet, ECPGd_scale, and ECPGd_type.
Referenced by output_set_descr().
◆ descriptor_variable()
struct variable * descriptor_variable | ( | const char * | name, |
---|---|---|---|
int | input | ||
) |
Definition at line 331 of file descriptor.c.
332{
335 static struct variable varspace[2] = {
336 {descriptor_names[0], &descriptor_type, 0, NULL},
337 {descriptor_names[1], &descriptor_type, 0, NULL}
338 };
339
341 return &varspace[input];
342}
size_t strlcpy(char *dst, const char *src, size_t siz)
#define MAX_DESCRIPTOR_NAMELEN
References ECPGt_descriptor, input, MAX_DESCRIPTOR_NAMELEN, name, and strlcpy().
◆ drop_assignments()
static void drop_assignments ( void ) | static |
---|
◆ drop_descriptor()
void drop_descriptor | ( | const char * | name, |
---|---|---|---|
const char * | connection | ||
) |
Definition at line 94 of file descriptor.c.
95{
98
99 if (name[0] != '"')
100 return;
101
103 {
104 if (strcmp(name, i->name) == 0)
105 {
108 && strcmp(connection, i->connection) == 0))
109 {
110 *lastptr = i->next;
114 return;
115 }
116 }
117 }
120 else
122}
void mmerror(int error_code, enum errortype type, const char *error,...) pg_attribute_printf(3
References descriptors, ET_WARNING, free, i, mmerror(), name, and PARSE_ERROR.
◆ ECPGnumeric_lvalue()
static void ECPGnumeric_lvalue ( char * name) | static |
---|
Definition at line 45 of file descriptor.c.
46{
48
49 switch (v->type->type)
50 {
61 break;
62 default:
64 break;
65 }
66}
@ ECPGt_unsigned_long_long
struct variable * find_variable(const char *name)
References base_yyout, ECPGt_const, ECPGt_int, ECPGt_long, ECPGt_long_long, ECPGt_short, ECPGt_unsigned_int, ECPGt_unsigned_long, ECPGt_unsigned_long_long, ECPGt_unsigned_short, ET_ERROR, find_variable(), mmerror(), name, PARSE_ERROR, and variable::type.
Referenced by output_get_descr_header(), and output_set_descr_header().
◆ lookup_descriptor()
struct descriptor * lookup_descriptor | ( | const char * | name, |
---|---|---|---|
const char * | connection | ||
) |
◆ output_get_descr()
void output_get_descr | ( | const char * | desc_name, |
---|---|---|---|
const char * | index | ||
) |
Definition at line 175 of file descriptor.c.
176{
178
180 for (results = assignments; results != NULL; results = results->next)
181 {
184
185 switch (results->value)
186 {
189 break;
192 break;
193 default:
194 break;
195 }
198 NULL, NULL, -1, NULL, NULL, str_zero, NULL, NULL);
199 free(str_zero);
200 }
203
205}
#define fprintf(file, fmt, msg)
void whenever_action(int mode)
static void drop_assignments(void)
const char * get_dtype(enum ECPGdtype)
void ECPGdump_a_type(FILE *o, const char *name, struct ECPGtype *type, const int brace_level, const char *ind_name, struct ECPGtype *ind_type, const int ind_brace_level, const char *prefix, const char *ind_prefix, char *arr_str_size, const char *struct_sizeof, const char *ind_struct_sizeof)
References assignments, base_yyout, variable::brace_level, drop_assignments(), ECPGd_key_member, ECPGd_nullable, ECPGdump_a_type(), ET_WARNING, find_variable(), fprintf, free, get_dtype(), mm_strdup(), mmerror(), variable::name, assignment::next, PARSE_ERROR, variable::type, assignment::value, assignment::variable, and whenever_action().
◆ output_get_descr_header()
void output_get_descr_header | ( | const char * | desc_name | ) |
---|
Definition at line 156 of file descriptor.c.
157{
159
160 fprintf(base_yyout, "{ ECPGget_desc_header(__LINE__, %s, &(", desc_name);
161 for (results = assignments; results != NULL; results = results->next)
162 {
165 else
167 }
168
172}
static void ECPGnumeric_lvalue(char *name)
References assignments, base_yyout, drop_assignments(), ECPGd_count, ECPGnumeric_lvalue(), ET_WARNING, fprintf, mmerror(), assignment::next, PARSE_ERROR, assignment::value, assignment::variable, and whenever_action().
◆ output_set_descr()
void output_set_descr | ( | const char * | desc_name, |
---|---|---|---|
const char * | index | ||
) |
Definition at line 269 of file descriptor.c.
270{
272
274 for (results = assignments; results != NULL; results = results->next)
275 {
277
278 switch (results->value)
279 {
287 break;
288
297 break;
298
303 {
305
308 NULL, NULL, -1, NULL, NULL, str_zero, NULL, NULL);
309 free(str_zero);
310 }
311 break;
312
313 default:
314 ;
315 }
316 }
319
321}
static const char * descriptor_item_name(enum ECPGdtype itemcode)
void pg_noreturn void mmfatal(int error_code, const char *error,...) pg_attribute_printf(2
References assignments, base_yyout, variable::brace_level, descriptor_item_name(), drop_assignments(), ECPGd_cardinality, ECPGd_data, ECPGd_di_code, ECPGd_di_precision, ECPGd_indicator, ECPGd_key_member, ECPGd_length, ECPGd_name, ECPGd_nullable, ECPGd_octet, ECPGd_precision, ECPGd_ret_length, ECPGd_ret_octet, ECPGd_scale, ECPGd_type, ECPGdump_a_type(), find_variable(), fprintf, free, get_dtype(), mm_strdup(), mmfatal(), variable::name, assignment::next, PARSE_ERROR, variable::type, assignment::value, assignment::variable, and whenever_action().
◆ output_set_descr_header()
void output_set_descr_header | ( | const char * | desc_name | ) |
---|
Definition at line 208 of file descriptor.c.
209{
211
212 fprintf(base_yyout, "{ ECPGset_desc_header(__LINE__, %s, (int)(", desc_name);
213 for (results = assignments; results != NULL; results = results->next)
214 {
217 else
219 }
220
224}
References assignments, base_yyout, drop_assignments(), ECPGd_count, ECPGnumeric_lvalue(), ET_WARNING, fprintf, mmerror(), assignment::next, PARSE_ERROR, assignment::value, assignment::variable, and whenever_action().
◆ push_assignment()
void push_assignment | ( | const char * | var, |
---|---|---|---|
enum ECPGdtype | value | ||
) |
◆ sqlda_variable()
struct variable * sqlda_variable | ( | const char * | name | ) |
---|