| 2000 | // |
| 2001 | |
| 2002 | static void gen_function( const act* function, int column) |
| 2003 | { |
| 2004 | const act* action = (const act*) function->act_object; |
| 2005 | |
| 2006 | if (action->act_type != ACT_any) |
| 2007 | { |
| 2008 | CPR_error("can't generate function"); |
| 2009 | return; |
| 2010 | } |
| 2011 | |
| 2012 | gpre_req* request = action->act_request; |
| 2013 | |
| 2014 | fprintf(gpreGlob.out_file, "static %s_r (request, transaction", request->req_handle); |
| 2015 | |
| 2016 | TEXT s[MAX_REF_SIZE]; |
| 2017 | const gpre_port* port = request->req_vport; |
| 2018 | if (port) |
| 2019 | { |
| 2020 | for (ref* reference = port->por_references; reference; reference = reference->ref_next) |
| 2021 | { |
| 2022 | fprintf(gpreGlob.out_file, ", %s", gen_name(s, reference->ref_source, true)); |
| 2023 | } |
| 2024 | } |
| 2025 | fprintf(gpreGlob.out_file, ")\n isc_req_handle\trequest;\n isc_tr_handle\ttransaction;\n"); |
| 2026 | |
| 2027 | if (port) |
| 2028 | { |
| 2029 | for (ref* reference = port->por_references; reference; reference = reference->ref_next) |
| 2030 | { |
| 2031 | const gpre_fld* field = reference->ref_field; |
| 2032 | const TEXT* dtype; |
| 2033 | |
| 2034 | switch (field->fld_dtype) |
| 2035 | { |
| 2036 | case dtype_short: |
| 2037 | dtype = "short"; |
| 2038 | break; |
| 2039 | |
| 2040 | case dtype_long: |
| 2041 | dtype = "long"; |
| 2042 | break; |
| 2043 | |
| 2044 | case dtype_cstring: |
| 2045 | case dtype_text: |
| 2046 | dtype = "char*"; |
| 2047 | break; |
| 2048 | |
| 2049 | case dtype_quad: |
| 2050 | dtype = "long"; |
| 2051 | break; |
| 2052 | |
| 2053 | case dtype_date: |
| 2054 | case dtype_blob: |
| 2055 | dtype = "ISC_QUAD"; |
| 2056 | break; |
| 2057 | |
| 2058 | case dtype_real: |
| 2059 | dtype = "float"; |
no test coverage detected