| 505 | // slice |
| 506 | |
| 507 | UArray UArray_stackRange(const UArray *self, size_t start, size_t size) { |
| 508 | UArray s; |
| 509 | |
| 510 | memcpy(&s, self, sizeof(UArray)); |
| 511 | UArray_changed(&s); |
| 512 | |
| 513 | #ifdef UARRAY_DEBUG |
| 514 | s.stackAllocated = 1; |
| 515 | #endif |
| 516 | |
| 517 | if (start < self->size || start == 0) { |
| 518 | s.data = self->data + self->itemSize * start; |
| 519 | } else { |
| 520 | s.data = 0x0; |
| 521 | } |
| 522 | |
| 523 | if (start + size <= self->size) { |
| 524 | s.size = size; |
| 525 | } else { |
| 526 | s.size = 0; |
| 527 | } |
| 528 | |
| 529 | return s; |
| 530 | } |
| 531 | |
| 532 | UArray *UArray_range(const UArray *self, size_t start, size_t size) { |
| 533 | UArray out = UArray_stackRange(self, start, size); |
no test coverage detected