MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / make_port

Function make_port

src/gpre/languages/pas.cpp:3273–3336  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3271//
3272
3273static void make_port( const gpre_port* port, int column)
3274{
3275 bool flag = false;
3276
3277 printa(column, "gds__%dt = record", port->por_ident);
3278
3279 for (const ref* reference = port->por_references; reference; reference = reference->ref_next)
3280 {
3281 if (flag)
3282 fprintf(gpreGlob.out_file, ";");
3283 flag = true;
3284 align(column + INDENT);
3285 const gpre_fld* field = reference->ref_field;
3286 const TEXT* name;
3287 const gpre_sym* symbol = field->fld_symbol;
3288 if (symbol)
3289 name = symbol->sym_string;
3290 else
3291 name = "<expression>";
3292 if (reference->ref_value && (reference->ref_flags & REF_array_elem))
3293 field = field->fld_array;
3294
3295 switch (field->fld_dtype)
3296 {
3297 case dtype_real:
3298 fprintf(gpreGlob.out_file, "gds__%d\t: real\t(* %s *)", reference->ref_ident, name);
3299 break;
3300
3301 case dtype_double:
3302 fprintf(gpreGlob.out_file, "gds__%d\t: double\t(* %s *)", reference->ref_ident, name);
3303 break;
3304
3305 case dtype_short:
3306 fprintf(gpreGlob.out_file, "gds__%d\t: %s\t(* %s *)", reference->ref_ident, SHORT_DCL, name);
3307 break;
3308
3309 case dtype_long:
3310 fprintf(gpreGlob.out_file, "gds__%d\t: %s\t(* %s *)", reference->ref_ident, LONG_DCL, name);
3311 break;
3312
3313 case dtype_date:
3314 case dtype_quad:
3315 case dtype_blob:
3316 fprintf(gpreGlob.out_file, "gds__%d\t: gds__quad\t(* %s *)", reference->ref_ident, name);
3317 break;
3318
3319 case dtype_text:
3320 fprintf(gpreGlob.out_file, "gds__%d\t: %s [1..%d] of char\t(* %s *)",
3321 reference->ref_ident, PACKED_ARRAY, field->fld_length, name);
3322 break;
3323
3324 default:
3325 {
3326 TEXT s[ERROR_LENGTH];
3327 fb_utils::snprintf(s, sizeof(s), "datatype %d unknown for field %s, msg %d",
3328 field->fld_dtype, name, port->por_msg_number);
3329 CPR_error(s);
3330 return;

Callers 2

gen_databaseFunction · 0.70
gen_routineFunction · 0.70

Calls 4

CPR_errorFunction · 0.85
printaFunction · 0.70
alignFunction · 0.70
snprintfFunction · 0.50

Tested by

no test coverage detected