| 3340 | // |
| 3341 | |
| 3342 | static void make_port( const gpre_port* port, int column) |
| 3343 | { |
| 3344 | printa(column, "type isc_%dt is record", port->por_ident); |
| 3345 | |
| 3346 | for (const ref* reference = port->por_references; reference; reference = reference->ref_next) |
| 3347 | { |
| 3348 | const gpre_fld* field = reference->ref_field; |
| 3349 | const TEXT* name; |
| 3350 | const gpre_sym* symbol = field->fld_symbol; |
| 3351 | if (symbol) |
| 3352 | name = symbol->sym_string; |
| 3353 | else |
| 3354 | name = "<expression>"; |
| 3355 | if (reference->ref_value && (reference->ref_flags & REF_array_elem)) |
| 3356 | field = field->fld_array; |
| 3357 | |
| 3358 | switch (field->fld_dtype) |
| 3359 | { |
| 3360 | case dtype_real: |
| 3361 | printa(column + INDENT, "isc_%d\t: %s;\t-- %s --", reference->ref_ident, REAL_DCL, name); |
| 3362 | break; |
| 3363 | |
| 3364 | case dtype_double: |
| 3365 | printa(column + INDENT, "isc_%d\t: %s;\t-- %s --", reference->ref_ident, DOUBLE_DCL, name); |
| 3366 | break; |
| 3367 | |
| 3368 | case dtype_short: |
| 3369 | printa(column + INDENT, "isc_%d\t: %s;\t-- %s --", reference->ref_ident, SHORT_DCL, name); |
| 3370 | break; |
| 3371 | |
| 3372 | case dtype_long: |
| 3373 | printa(column + INDENT, "isc_%d\t: %s;\t-- %s --", reference->ref_ident, LONG_DCL, name); |
| 3374 | break; |
| 3375 | |
| 3376 | case dtype_date: |
| 3377 | case dtype_quad: |
| 3378 | case dtype_blob: |
| 3379 | printa(column + INDENT, "isc_%d\t: firebird.quad;\t-- %s --", reference->ref_ident, name); |
| 3380 | break; |
| 3381 | |
| 3382 | case dtype_text: |
| 3383 | if (strcmp(name, "isc_slack")) |
| 3384 | { |
| 3385 | if (field->fld_sub_type == 1) |
| 3386 | { |
| 3387 | if (field->fld_length == 1) |
| 3388 | printa(column + INDENT, "isc_%d\t: %s;\t-- %s --", |
| 3389 | reference->ref_ident, BYTE_DCL, name); |
| 3390 | else |
| 3391 | printa(column + INDENT, "isc_%d\t: %s (1..%d);\t-- %s --", |
| 3392 | reference->ref_ident, BYTE_VECTOR_DCL, field->fld_length, name); |
| 3393 | } |
| 3394 | else |
| 3395 | { |
| 3396 | if (field->fld_length == 1) |
| 3397 | printa(column + INDENT, "isc_%d\t: firebird.isc_character;\t-- %s --", |
| 3398 | reference->ref_ident, name); |
| 3399 | else |
no test coverage detected