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

Function make_port

src/gpre/languages/ftn.cpp:3708–3780  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3706//
3707
3708static void make_port( const gpre_port* port)
3709{
3710 const USHORT length = (port->por_length + 3) & ~3;
3711 printa(COLUMN, "CHARACTER isc_%d(%d)", port->por_ident, length);
3712
3713 const ref* reference;
3714 for (reference = port->por_references; reference; reference = reference->ref_next)
3715 {
3716 const gpre_fld* field = reference->ref_field;
3717 const gpre_sym* symbol = field->fld_symbol;
3718 const SCHAR* name;
3719 if (symbol)
3720 name = symbol->sym_string;
3721 else
3722 name = "<expression>";
3723 if (reference->ref_value && (reference->ref_flags & REF_array_elem))
3724 field = field->fld_array;
3725
3726 switch (field->fld_dtype)
3727 {
3728 case dtype_short:
3729 fprintf(gpreGlob.out_file, "%sINTEGER*2 isc_%d %s{ %s }\n",
3730 COLUMN, reference->ref_ident, INLINE_COMMENT, name);
3731 break;
3732
3733 case dtype_long:
3734 fprintf(gpreGlob.out_file, "%sINTEGER*4 isc_%d %s{ %s }\n",
3735 COLUMN, reference->ref_ident, INLINE_COMMENT, name);
3736 break;
3737
3738 case dtype_cstring:
3739 case dtype_text:
3740 fprintf(gpreGlob.out_file, "%sCHARACTER*%d isc_%d %s{ %s }\n",
3741 COLUMN, field->fld_length, reference->ref_ident, INLINE_COMMENT, name);
3742 break;
3743
3744 case dtype_date:
3745 case dtype_quad:
3746 case dtype_blob:
3747 fprintf(gpreGlob.out_file, "%sINTEGER*4 isc_%d(2) %s{ %s }\n",
3748 COLUMN, reference->ref_ident, INLINE_COMMENT, name);
3749 break;
3750
3751 case dtype_real:
3752 fprintf(gpreGlob.out_file, "%sREAL isc_%d %s{ %s }\n",
3753 COLUMN, reference->ref_ident, INLINE_COMMENT, name);
3754 break;
3755
3756 case dtype_double:
3757 fprintf(gpreGlob.out_file, "%s%s isc_%d %s{ %s }\n",
3758 COLUMN, DOUBLE_DCL, reference->ref_ident, INLINE_COMMENT, name);
3759 break;
3760
3761 default:
3762 {
3763 SCHAR s[ERROR_LENGTH];
3764 fb_utils::snprintf(s, sizeof(s), "datatype %d unknown for field %s, msg %d",
3765 field->fld_dtype, name, port->por_msg_number);

Callers 3

gen_database_declsFunction · 0.70
gen_routineFunction · 0.70
gen_functionFunction · 0.70

Calls 3

CPR_errorFunction · 0.85
printaFunction · 0.70
snprintfFunction · 0.50

Tested by

no test coverage detected