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

Function asgn_to

src/gpre/obj_cxx.cpp:646–703  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

644//
645
646static void asgn_to( const act* action, ref* reference, int column)
647{
648 char s[MAX_REF_SIZE];
649
650 ref* source = reference->ref_friend;
651 const gpre_fld* field = source->ref_field;
652
653 if (field)
654 {
655 act* slice_action;
656 if (field->fld_array_info && (slice_action = (act*) source->ref_slice))
657 {
658 source->ref_value = reference->ref_value;
659 if (slice_action->act_object)
660 {
661 slice_action->act_type = ACT_get_slice;
662 gen_slice(slice_action, source, column);
663 }
664 else
665 gen_get_or_put_slice(action, source, true, column);
666
667 // Pick up NULL value if one is there
668
669 if (reference = reference->ref_null)
670 {
671 align(column);
672 fprintf(gpreGlob.out_file, "%s = %s;", reference->ref_value,
673 gen_name(s, reference, true));
674 }
675 return;
676 }
677
678 gen_name(s, source, true);
679 if (field->fld_dtype > dtype_cstring)
680 fprintf(gpreGlob.out_file, "%s = %s;", reference->ref_value, s);
681 else if (field->fld_sub_type == 1 && field->fld_length == 1)
682 fprintf(gpreGlob.out_file, "%s = %s;", reference->ref_value, s);
683 else if (field->fld_flags & FLD_dbkey)
684 fprintf(gpreGlob.out_file, "isc_ftof (%s, %d, %s, %d);",
685 s, field->fld_length, reference->ref_value, field->fld_length);
686 else if (!gpreGlob.sw_cstring || field->fld_sub_type == 1)
687 fprintf(gpreGlob.out_file, "isc_ftof (%s, %d, %s, sizeof(%s));",
688 s, field->fld_length, reference->ref_value, reference->ref_value);
689 else
690 fprintf(gpreGlob.out_file, isLangCpp(gpreGlob.sw_language) ?
691 "isc_vtov ((const char*) %s, (char*) %s, sizeof(%s));" :
692 "isc_vtov ((char*) %s, (char*) %s, sizeof(%s));",
693 s, reference->ref_value, reference->ref_value);
694 }
695
696 // Pick up NULL value if one is there
697
698 if (reference = reference->ref_null)
699 {
700 align(column);
701 fprintf(gpreGlob.out_file, "%s = %s;", reference->ref_value, gen_name(s, reference, true));
702 }
703}

Callers 2

gen_fetchFunction · 0.70
gen_selectFunction · 0.70

Calls 5

isLangCppFunction · 0.85
gen_sliceFunction · 0.70
gen_get_or_put_sliceFunction · 0.70
alignFunction · 0.70
gen_nameFunction · 0.70

Tested by

no test coverage detected