| 4162 | // |
| 4163 | |
| 4164 | static void gen_function(const act* function) |
| 4165 | { |
| 4166 | const act* action = (const act*) function->act_object; |
| 4167 | |
| 4168 | if (action->act_type != ACT_any) |
| 4169 | { |
| 4170 | CPR_error("can't generate function"); |
| 4171 | return; |
| 4172 | } |
| 4173 | |
| 4174 | const gpre_req* request = action->act_request; |
| 4175 | |
| 4176 | fprintf(gpreGlob.out_file, "static %s_r (request, transaction", request->req_handle); |
| 4177 | |
| 4178 | TEXT s[MAX_REF_SIZE]; |
| 4179 | const gpre_port* port = request->req_vport; |
| 4180 | if (port) |
| 4181 | { |
| 4182 | for (const ref* reference = port->por_references; reference; reference = reference->ref_next) |
| 4183 | { |
| 4184 | fprintf(gpreGlob.out_file, ", %s", gen_name(s, reference->ref_source, true)); |
| 4185 | } |
| 4186 | } |
| 4187 | |
| 4188 | fprintf(gpreGlob.out_file, ")\n isc_req_handle\trequest;\n isc_tr_handle\ttransaction;\n"); |
| 4189 | |
| 4190 | if (port) |
| 4191 | { |
| 4192 | for (const ref* reference = port->por_references; reference; reference = reference->ref_next) |
| 4193 | { |
| 4194 | const gpre_fld* field = reference->ref_field; |
| 4195 | const TEXT* dtype = NULL; |
| 4196 | |
| 4197 | switch (field->fld_dtype) |
| 4198 | { |
| 4199 | case dtype_short: |
| 4200 | dtype = "short"; |
| 4201 | break; |
| 4202 | |
| 4203 | case dtype_long: |
| 4204 | // RRK_?: dtype = DCL_LONG; |
| 4205 | break; |
| 4206 | |
| 4207 | case dtype_cstring: |
| 4208 | case dtype_text: |
| 4209 | dtype = "char*"; |
| 4210 | break; |
| 4211 | |
| 4212 | case dtype_quad: |
| 4213 | //dtype = DCL_QUAD; |
| 4214 | break; |
| 4215 | |
| 4216 | case dtype_date: |
| 4217 | case dtype_blob: |
| 4218 | dtype = "ISC_QUAD"; |
| 4219 | break; |
| 4220 | |
| 4221 | case dtype_real: |
no test coverage detected