Mercurial > projects > ldc
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; |