| 1336 | // |
| 1337 | |
| 1338 | static void cmp_array( gpre_nod* node, gpre_req* request) |
| 1339 | { |
| 1340 | CMP_check(request, 0); |
| 1341 | |
| 1342 | ref* reference = (ref*) node->nod_arg[0]; |
| 1343 | |
| 1344 | if (!reference->ref_context) |
| 1345 | { |
| 1346 | CPR_error("cmp_array: context missing"); |
| 1347 | return; //NULL; |
| 1348 | } |
| 1349 | |
| 1350 | const gpre_fld* field = reference->ref_field; |
| 1351 | if (!field) |
| 1352 | { |
| 1353 | CPR_error("cmp_array: field missing"); |
| 1354 | return; // NULL; |
| 1355 | } |
| 1356 | |
| 1357 | // Header stuff |
| 1358 | |
| 1359 | reference->ref_sdl = reference->ref_sdl_base = MSC_alloc(500); |
| 1360 | reference->ref_sdl_length = 500; |
| 1361 | reference->ref_sdl_ident = CMP_next_ident(); |
| 1362 | reference->add_byte(isc_sdl_version1); |
| 1363 | reference->add_byte(isc_sdl_struct); |
| 1364 | reference->add_byte(1); |
| 1365 | |
| 1366 | // The datatype of the array elements |
| 1367 | |
| 1368 | cmp_sdl_dtype(field->fld_array, reference); |
| 1369 | |
| 1370 | // The relation and field identifiers or strings |
| 1371 | |
| 1372 | if (gpreGlob.sw_ids) |
| 1373 | { |
| 1374 | reference->add_byte(isc_sdl_rid); |
| 1375 | reference->add_byte(reference->ref_id); |
| 1376 | reference->add_byte(isc_sdl_fid); |
| 1377 | reference->add_byte(field->fld_id); |
| 1378 | } |
| 1379 | else |
| 1380 | { |
| 1381 | reference->add_byte(isc_sdl_relation); |
| 1382 | reference->add_byte(static_cast<int>(strlen(field->fld_relation->rel_symbol->sym_string))); |
| 1383 | for (const TEXT* p = field->fld_relation->rel_symbol->sym_string; *p; p++) |
| 1384 | reference->add_byte(*p); |
| 1385 | reference->add_byte(isc_sdl_field); |
| 1386 | reference->add_byte(static_cast<int>(strlen(field->fld_symbol->sym_string))); |
| 1387 | for (const TEXT* p = field->fld_symbol->sym_string; *p; p++) |
| 1388 | reference->add_byte(*p); |
| 1389 | } |
| 1390 | |
| 1391 | // The loops for the dimensions |
| 1392 | |
| 1393 | stuff_sdl_loops(reference, field); |
| 1394 | |
| 1395 | // The array element and its "subscripts" |
no test coverage detected