| 2324 | // |
| 2325 | |
| 2326 | static void gen_function( const act* function, int column) |
| 2327 | { |
| 2328 | const ref* reference; |
| 2329 | |
| 2330 | const act* action = (const act*) function->act_object; |
| 2331 | |
| 2332 | if (action->act_type != ACT_any) |
| 2333 | { |
| 2334 | CPR_error("can't generate function"); |
| 2335 | return; |
| 2336 | } |
| 2337 | |
| 2338 | const gpre_req* request = action->act_request; |
| 2339 | |
| 2340 | fprintf(gpreGlob.out_file, "static %s_r (Firebird::IRequest* request, Firebird::ITransaction* transaction ", request->req_handle); |
| 2341 | |
| 2342 | TEXT s[MAX_REF_SIZE]; |
| 2343 | gpre_port* port = request->req_vport; |
| 2344 | if (port) |
| 2345 | for (reference = port->por_references; reference; reference = reference->ref_next) |
| 2346 | { |
| 2347 | fprintf(gpreGlob.out_file, ", %s", gen_name(s, reference->ref_source, true)); |
| 2348 | } |
| 2349 | |
| 2350 | fprintf(gpreGlob.out_file, |
| 2351 | ")\n"); |
| 2352 | |
| 2353 | if (port) |
| 2354 | for (reference = port->por_references; reference; reference = reference->ref_next) |
| 2355 | { |
| 2356 | const TEXT* dtype; |
| 2357 | gpre_fld* field = reference->ref_field; |
| 2358 | switch (field->fld_dtype) |
| 2359 | { |
| 2360 | case dtype_short: |
| 2361 | dtype = "short"; |
| 2362 | break; |
| 2363 | |
| 2364 | case dtype_long: |
| 2365 | dtype = DCL_LONG; |
| 2366 | break; |
| 2367 | |
| 2368 | case dtype_cstring: |
| 2369 | case dtype_text: |
| 2370 | dtype = "char*"; |
| 2371 | break; |
| 2372 | |
| 2373 | case dtype_quad: |
| 2374 | dtype = DCL_QUAD; |
| 2375 | break; |
| 2376 | |
| 2377 | // Begin date/time/timestamp |
| 2378 | case dtype_sql_date: |
| 2379 | dtype = "ISC_DATE"; |
| 2380 | break; |
| 2381 | |
| 2382 | case dtype_sql_time: |
| 2383 | dtype = "ISC_TIME"; |
no test coverage detected