| 660 | } |
| 661 | |
| 662 | void clone_view(const sugoi_chunk_view_t& dstV, const sugoi_chunk_t* srcC, EIndex srcStart) noexcept |
| 663 | { |
| 664 | archetype_t* srcType = srcC->type; |
| 665 | archetype_t* dstType = dstV.chunk->type; |
| 666 | EIndex* srcOffsets = srcType->offsets[srcC->pt]; |
| 667 | EIndex* dstOffsets = dstType->offsets[dstV.chunk->pt]; |
| 668 | uint32_t* srcSizes = srcType->sizes; |
| 669 | uint32_t* srcAligns = srcType->aligns; |
| 670 | uint32_t* srcElemSizes = srcType->elemSizes; |
| 671 | sugoi_type_set_t srcTypes = srcType->type; |
| 672 | uint32_t* srcCallbackFlags = srcType->callbackFlags; |
| 673 | |
| 674 | for(uint32_t i = 0; i < srcType->firstChunkComponent; ++i) |
| 675 | { |
| 676 | type_index_t srcT = srcTypes.data[i]; |
| 677 | decltype(srcType->callbacks[i].move) callback = nullptr; |
| 678 | if((srcCallbackFlags[i] & SUGOI_CALLBACK_FLAG_MOVE) != 0) SUGOI_UNLIKELY |
| 679 | callback = srcType->callbacks[i].move; |
| 680 | move_impl(dstV, srcC, srcStart, srcT, srcOffsets[i], dstOffsets[i], srcSizes[i], srcAligns[i], srcElemSizes[i], callback); |
| 681 | } |
| 682 | } |
| 683 | |
| 684 | bool full_view(const sugoi_chunk_view_t& view) noexcept |
| 685 | { |