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;

111 free(i->connection);

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 )

assignments

descriptors