Mercurial > repos > rhope
comparison 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 |
comparison
equal
deleted
inserted
replaced
109:b7df624895b2 | 110:336da6ce8174 |
---|---|
14 { | 14 { |
15 t_Array * arr = (t_Array *)array; | 15 t_Array * arr = (t_Array *)array; |
16 memcpy(((char *)array) + sizeof(t_Array) + arr->payload.Eltype->bp->size * index, ((char *)val) + sizeof(object), arr->payload.Eltype->bp->size); | 16 memcpy(((char *)array) + sizeof(t_Array) + arr->payload.Eltype->bp->size * index, ((char *)val) + sizeof(object), arr->payload.Eltype->bp->size); |
17 get_blueprint(val)->copy(val); | 17 get_blueprint(val)->copy(val); |
18 release_ref(val); | 18 release_ref(val); |
19 } | |
20 | |
21 void _internal_array_copychunk(object * src, int32_t srcidx, object * dest, int32_t destidx, int32_t len) | |
22 { | |
23 int32_t idx; | |
24 object * cur; | |
25 t_Array *sarr,*darr; | |
26 sarr = (t_Array *)src; | |
27 darr = (t_Array *)dest; | |
28 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); | |
29 cur = (object *)((char *)(darr+1) + darr->payload.Eltype->bp->size * destidx - sizeof(object)); | |
30 for (idx = 0; idx < len; ++idx) | |
31 { | |
32 darr->payload.Eltype->bp->copy(cur); | |
33 cur++; | |
34 } | |
35 release_ref(src); | |
19 } | 36 } |
20 | 37 |
21 object * _internal_array_getboxed(object * array, int32_t index) | 38 object * _internal_array_getboxed(object * array, int32_t index) |
22 { | 39 { |
23 object * ret; | 40 object * ret; |