Mercurial > projects > ldc
diff lphobos/internal/arrays.d @ 64:b688ad419f8c trunk
[svn r68] Added support for multi-dimensional static arrays.
Several bugfixes to array support.
author | lindquist |
---|---|
date | Thu, 25 Oct 2007 12:09:13 +0200 |
parents | 0c77619e803b |
children | 3f949c6e2e9d |
line wrap: on
line diff
--- a/lphobos/internal/arrays.d Thu Oct 25 10:05:21 2007 +0200 +++ b/lphobos/internal/arrays.d Thu Oct 25 12:09:13 2007 +0200 @@ -1,7 +1,16 @@ module internal.arrays; +private import llvm.intrinsic; + extern(C): +int memcmp(void*,void*,size_t); + +version(LLVM64) +alias llvm_memcpy_i64 llvm_memcpy; +else +alias llvm_memcpy_i32 llvm_memcpy; + // per-element array init routines void _d_array_init_i1(bool* a, size_t n, bool v) @@ -68,8 +77,17 @@ *p++ = v; } +void _d_array_init(void* a, size_t na, void* v, size_t nv) +{ + auto p = a; + auto end = a + na*nv; + while (p !is end) { + llvm_memcpy(p,v,nv,0); + p += nv; + } +} + // array comparison routines -int memcmp(void*,void*,size_t); bool _d_static_array_eq(void* lhs, void* rhs, size_t bytesize) {