comparison 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
comparison
equal deleted inserted replaced
63:2c39b5292cf3 64:b688ad419f8c
1 module internal.arrays; 1 module internal.arrays;
2 2
3 private import llvm.intrinsic;
4
3 extern(C): 5 extern(C):
6
7 int memcmp(void*,void*,size_t);
8
9 version(LLVM64)
10 alias llvm_memcpy_i64 llvm_memcpy;
11 else
12 alias llvm_memcpy_i32 llvm_memcpy;
4 13
5 // per-element array init routines 14 // per-element array init routines
6 15
7 void _d_array_init_i1(bool* a, size_t n, bool v) 16 void _d_array_init_i1(bool* a, size_t n, bool v)
8 { 17 {
66 auto end = a+n; 75 auto end = a+n;
67 while (p !is end) 76 while (p !is end)
68 *p++ = v; 77 *p++ = v;
69 } 78 }
70 79
80 void _d_array_init(void* a, size_t na, void* v, size_t nv)
81 {
82 auto p = a;
83 auto end = a + na*nv;
84 while (p !is end) {
85 llvm_memcpy(p,v,nv,0);
86 p += nv;
87 }
88 }
89
71 // array comparison routines 90 // array comparison routines
72 int memcmp(void*,void*,size_t);
73 91
74 bool _d_static_array_eq(void* lhs, void* rhs, size_t bytesize) 92 bool _d_static_array_eq(void* lhs, void* rhs, size_t bytesize)
75 { 93 {
76 if (lhs is rhs) 94 if (lhs is rhs)
77 return true; 95 return true;