| 454 | |
| 455 | |
| 456 | static ISC_STATUS gen_sdl(ISC_STATUS* status, |
| 457 | const ISC_ARRAY_DESC* desc, |
| 458 | SSHORT* sdl_buffer_length, |
| 459 | UCHAR** sdl_buffer, |
| 460 | SSHORT* sdl_length, |
| 461 | bool internal_flag) |
| 462 | { |
| 463 | /************************************** |
| 464 | * |
| 465 | * g e n _ s d l |
| 466 | * |
| 467 | ************************************** |
| 468 | * |
| 469 | * Functional description |
| 470 | * |
| 471 | **************************************/ |
| 472 | const SSHORT dimensions = desc->array_desc_dimensions; |
| 473 | |
| 474 | if (dimensions > 16) |
| 475 | return error(status, Arg::Gds(isc_invalid_dimension) << Arg::Num(dimensions) << Arg::Num(16)); |
| 476 | |
| 477 | gen_t gen_block; |
| 478 | gen_t* gen = &gen_block; |
| 479 | gen->gen_sdl = *sdl_buffer; |
| 480 | gen->gen_sdl_ptr = sdl_buffer; |
| 481 | gen->gen_end = *sdl_buffer + *sdl_buffer_length; |
| 482 | gen->gen_status = status; |
| 483 | gen->gen_internal = internal_flag ? 0 : -1; |
| 484 | |
| 485 | if (stuff_args(gen, 4, isc_sdl_version1, isc_sdl_struct, 1, desc->array_desc_dtype)) |
| 486 | { |
| 487 | return status[1]; |
| 488 | } |
| 489 | |
| 490 | switch (desc->array_desc_dtype) |
| 491 | { |
| 492 | case blr_short: |
| 493 | case blr_long: |
| 494 | case blr_int64: |
| 495 | case blr_quad: |
| 496 | case blr_int128: |
| 497 | if (stuff_sdl(gen, desc->array_desc_scale)) |
| 498 | return status[1]; |
| 499 | break; |
| 500 | |
| 501 | case blr_text: |
| 502 | case blr_cstring: |
| 503 | case blr_varying: |
| 504 | if (stuff_sdl_word(gen, desc->array_desc_length)) |
| 505 | return status[1]; |
| 506 | break; |
| 507 | default: |
| 508 | break; |
| 509 | } |
| 510 | |
| 511 | if (stuff_string(gen, isc_sdl_relation, desc->array_desc_relation_name)) |
| 512 | return status[1]; |
| 513 |
no test coverage detected