| 2507 | // |
| 2508 | |
| 2509 | static void gen_function( const act* function) |
| 2510 | { |
| 2511 | const ref* reference; |
| 2512 | |
| 2513 | const act* action = (const act*) function->act_object; |
| 2514 | |
| 2515 | if (action->act_type != ACT_any) |
| 2516 | { |
| 2517 | CPR_error("can't generate function"); |
| 2518 | return; |
| 2519 | } |
| 2520 | |
| 2521 | const gpre_req* request = action->act_request; |
| 2522 | |
| 2523 | fprintf(gpreGlob.out_file, "static %s_r (request, transaction", request->req_handle); |
| 2524 | |
| 2525 | TEXT s[MAX_REF_SIZE]; |
| 2526 | const gpre_port* port = request->req_vport; |
| 2527 | if (port) |
| 2528 | for (reference = port->por_references; reference; reference = reference->ref_next) |
| 2529 | { |
| 2530 | fprintf(gpreGlob.out_file, ", %s", gen_name(s, reference->ref_source, true)); |
| 2531 | } |
| 2532 | |
| 2533 | fprintf(gpreGlob.out_file, |
| 2534 | ")\n isc_req_handle\trequest;\n isc_tr_handle\ttransaction;\n"); |
| 2535 | |
| 2536 | if (port) |
| 2537 | for (reference = port->por_references; reference; reference = reference->ref_next) |
| 2538 | { |
| 2539 | const char* dtype; |
| 2540 | const gpre_fld* field = reference->ref_field; |
| 2541 | switch (field->fld_dtype) |
| 2542 | { |
| 2543 | case dtype_short: |
| 2544 | dtype = "short"; |
| 2545 | break; |
| 2546 | |
| 2547 | case dtype_long: |
| 2548 | dtype = "long"; |
| 2549 | break; |
| 2550 | |
| 2551 | case dtype_cstring: |
| 2552 | case dtype_text: |
| 2553 | dtype = "char*"; |
| 2554 | break; |
| 2555 | |
| 2556 | case dtype_quad: |
| 2557 | dtype = "ISC_QUAD"; |
| 2558 | break; |
| 2559 | |
| 2560 | case dtype_date: |
| 2561 | case dtype_blob: |
| 2562 | dtype = "ISC_QUAD"; |
| 2563 | break; |
| 2564 | |
| 2565 | case dtype_real: |
| 2566 | dtype = "float"; |
no test coverage detected