Mercurial > repos > rhope
diff runtime/array.c @ 110:336da6ce8174
Merge
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Wed, 06 Oct 2010 23:48:32 +0000 |
parents | 439db471f595 |
children | 72c648bca43b |
line wrap: on
line diff
--- a/runtime/array.c Wed Oct 06 23:47:26 2010 +0000 +++ b/runtime/array.c Wed Oct 06 23:48:32 2010 +0000 @@ -18,6 +18,23 @@ release_ref(val); } +void _internal_array_copychunk(object * src, int32_t srcidx, object * dest, int32_t destidx, int32_t len) +{ + int32_t idx; + object * cur; + t_Array *sarr,*darr; + sarr = (t_Array *)src; + darr = (t_Array *)dest; + memcpy((char *)(darr+1) + darr->payload.Eltype->bp->size * destidx, (char *)(sarr+1) + sarr->payload.Eltype->bp->size * srcidx, len*sarr->payload.Eltype->bp->size); + cur = (object *)((char *)(darr+1) + darr->payload.Eltype->bp->size * destidx - sizeof(object)); + for (idx = 0; idx < len; ++idx) + { + darr->payload.Eltype->bp->copy(cur); + cur++; + } + release_ref(src); +} + object * _internal_array_getboxed(object * array, int32_t index) { object * ret;