22// source code is governed by an MIT license that can be found in the LICENSE
33// file.
44
5+ import ./mem;
6+
57#[boxed]
68struct DynArray {
79 mut ptr: rawptr;
@@ -11,19 +13,19 @@ struct DynArray {
1113
1214 #[unsafe; inline]
1315 func new(elem_size: uint, cap: uint) -> Self {
14- return Self(mem_zeroed (cap * elem_size), elem_size, 0, cap);
16+ return Self(mem.raw_zeroed (cap * elem_size), elem_size, 0, cap);
1517 }
1618
1719 #[unsafe; inline]
1820 func new_with_len(elem_size: uint, len: uint, cap: uint) -> Self {
1921 cap_ := if cap < len { len } else { cap };
20- return Self(mem_zeroed (cap_ * elem_size), elem_size, len, cap);
22+ return Self(mem.raw_zeroed (cap_ * elem_size), elem_size, len, cap);
2123 }
2224
2325 #[unsafe; inline]
2426 func new_with_init(init: rawptr, elem_size: uint, len: uint, cap: uint) -> Self {
2527 cap_ := if cap < len { len } else { cap };
26- dyn_array := Self(mem_alloc (cap_ * elem_size), elem_size, len, cap);
28+ dyn_array := Self(mem.raw_alloc (cap_ * elem_size), elem_size, len, cap);
2729 mut i: uint := 0;
2830 while i < len : i += 1 {
2931 unsafe {
@@ -35,8 +37,8 @@ struct DynArray {
3537
3638 #[unsafe]
3739 func from_array(arr: rawptr, elem_size: uint, len: uint) -> Self {
38- dyn_array := Self(mem_alloc (len * elem_size), elem_size, len, len);
39- mem_copy (dyn_array.ptr, arr, len * elem_size);
40+ dyn_array := Self(mem.raw_alloc (len * elem_size), elem_size, len, len);
41+ mem.copy (dyn_array.ptr, arr, len * elem_size);
4042 return dyn_array;
4143 }
4244
@@ -60,7 +62,7 @@ struct DynArray {
6062 #[unsafe; inline]
6163 func raw_set(self, idx: uint, val: rawptr) {
6264 unsafe {
63- mem_copy (
65+ mem.copy (
6466 @ptr_add(@as([&]mut uint8, self.ptr), self.elem_size * idx),
6567 val, self.elem_size
6668 );
@@ -72,7 +74,7 @@ struct DynArray {
7274 runtime_error("dynamic array index out of range (index: {}, len: {})", idx, self.len);
7375 }
7476 unsafe {
75- mem_copy (
77+ mem.copy (
7678 @ptr_add(@as([&]mut uint8, self.ptr), self.elem_size * idx),
7779 val, self.elem_size
7880 );
@@ -84,7 +86,7 @@ struct DynArray {
8486 self.reserve(self.len + 1);
8587 }
8688 unsafe {
87- mem_copy (@ptr_add(self.ptr, self.elem_size * self.len), val, self.elem_size);
89+ mem.copy (@ptr_add(self.ptr, self.elem_size * self.len), val, self.elem_size);
8890 }
8991 self.len += 1;
9092 }
@@ -117,16 +119,16 @@ struct DynArray {
117119 old_ptr := self.ptr;
118120 new_size := self.len - size;
119121 new_cap: uint := if new_size == 0 { 1 } else { new_size };
120- self.ptr = mem_zeroed (new_cap * self.elem_size);
121- mem_copy (self.ptr, old_ptr, i * self.elem_size);
122+ self.ptr = mem.raw_zeroed (new_cap * self.elem_size);
123+ mem.copy (self.ptr, old_ptr, i * self.elem_size);
122124 unsafe {
123- mem_copy (
125+ mem.copy (
124126 @ptr_add(self.ptr, i * self.elem_size),
125127 @ptr_add(old_ptr, (i + size) * self.elem_size),
126128 (self.len - i - size) * self.elem_size
127129 );
128130 if no_slices {
129- mem_dealloc (old_ptr);
131+ mem.raw_dealloc (old_ptr);
130132 }
131133 }
132134 self.len = new_size;
@@ -154,7 +156,7 @@ struct DynArray {
154156 if self.len != rhs.len {
155157 return false;
156158 }
157- return mem_cmp (self.ptr, rhs.ptr, self.len) == 0;
159+ return mem.cmp (self.ptr, rhs.ptr, self.len) == 0;
158160 }
159161
160162 #[inline]
@@ -171,8 +173,8 @@ struct DynArray {
171173 cap *= 2;
172174 }
173175 new_size := cap * self.elem_size;
174- new_ptr := mem_alloc (new_size);
175- mem_copy (new_ptr, self.ptr, self.len * self.elem_size);
176+ new_ptr := mem.raw_alloc (new_size);
177+ mem.copy (new_ptr, self.ptr, self.len * self.elem_size);
176178 self.ptr = new_ptr;
177179 self.cap = cap;
178180 }
@@ -204,14 +206,14 @@ struct DynArray {
204206 if size == 0 {
205207 size = 1;
206208 }
207- dyn_array := Self(mem_zeroed (size), self.elem_size, self.len, self.cap);
208- mem_copy (dyn_array.ptr, self.ptr, size);
209+ dyn_array := Self(mem.raw_zeroed (size), self.elem_size, self.len, self.cap);
210+ mem.copy (dyn_array.ptr, self.ptr, size);
209211 return dyn_array;
210212 }
211213
212214 func __destroy__(self) {
213215 unsafe {
214- mem_dealloc (self.ptr);
216+ mem.raw_dealloc (self.ptr);
215217 }
216218 }
217219}
0 commit comments