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)
 {