| 22 | #include <hl.h> |
| 23 | |
| 24 | HL_PRIM varray *hl_alloc_array( hl_type *at, int size ) { |
| 25 | if( size == 0 && at->kind == HDYN ) { |
| 26 | static varray empty_array = { &hlt_array, &hlt_dyn }; |
| 27 | return &empty_array; |
| 28 | } |
| 29 | int esize = hl_type_size(at); |
| 30 | varray *a; |
| 31 | if( size < 0 ) hl_error("Invalid array size"); |
| 32 | a = (varray*)hl_gc_alloc_gen(&hlt_array, sizeof(varray) + esize*size, (hl_is_ptr(at) ? MEM_KIND_DYNAMIC : MEM_KIND_NOPTR) | MEM_ZERO); |
| 33 | a->t = &hlt_array; |
| 34 | a->at = at; |
| 35 | a->size = size; |
| 36 | return a; |
| 37 | } |
| 38 | |
| 39 | HL_PRIM void hl_array_blit( varray *dst, int dpos, varray *src, int spos, int len ) { |
| 40 | int size = hl_type_size(dst->at); |
no test coverage detected