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

Function gen_function

src/gpre/languages/rmc.cpp:2622–2710  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2620//
2621
2622static void gen_function( const act* function)
2623{
2624 const ref* reference;
2625
2626 const act* action = (const act*) function->act_object;
2627
2628 if (action->act_type != ACT_any)
2629 {
2630 CPR_error("can't generate function");
2631 return;
2632 }
2633
2634 const gpre_req* request = action->act_request;
2635
2636 fprintf(gpreGlob.out_file, "static %s_r (request, transaction", request->req_handle);
2637
2638 TEXT s[MAX_REF_SIZE];
2639 const gpre_port* port = request->req_vport;
2640 if (port)
2641 for (reference = port->por_references; reference; reference = reference->ref_next)
2642 {
2643 fprintf(gpreGlob.out_file, ", %s", gen_name(s, reference->ref_source, true));
2644 }
2645
2646 fprintf(gpreGlob.out_file, ")\n isc_req_handle\trequest;\n isc_tr_handle\ttransaction;\n");
2647
2648 if (port)
2649 for (reference = port->por_references; reference; reference = reference->ref_next)
2650 {
2651 const char* dtype;
2652 const gpre_fld* field = reference->ref_field;
2653 switch (field->fld_dtype)
2654 {
2655 case dtype_short:
2656 dtype = "short";
2657 break;
2658
2659 case dtype_long:
2660 dtype = "long";
2661 break;
2662
2663 case dtype_cstring:
2664 case dtype_text:
2665 dtype = "char*";
2666 break;
2667
2668 case dtype_quad:
2669 dtype = "ISC_QUAD";
2670 break;
2671
2672 case dtype_date:
2673 case dtype_blob:
2674 dtype = "ISC_QUAD";
2675 break;
2676
2677 case dtype_real:
2678 dtype = "float";
2679 break;

Callers 1

RMC_actionFunction · 0.70

Calls 6

CPR_errorFunction · 0.85
gen_nameFunction · 0.70
make_portFunction · 0.70
gen_s_startFunction · 0.70
gen_receiveFunction · 0.70
gen_get_or_put_sliceFunction · 0.70

Tested by

no test coverage detected