311
|
1 /**
|
|
2 *
|
|
3 * Copyright: Copyright QtD Team, 2008-2009
|
|
4 * Authors: Max Samukha
|
|
5 * License: <a href="http://www.boost.org/LICENSE_1_0.txt>Boost License 1.0</a>
|
|
6 *
|
|
7 * Copyright QtD Team, 2008-2009
|
|
8 * Distributed under the Boost Software License, Version 1.0.
|
|
9 * (See accompanying file boost-license-1.0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
10 *
|
|
11 */
|
|
12 module qt.Array;
|
|
13
|
|
14 import
|
|
15 core.stdc.string,
|
|
16 qt.Memory;
|
|
17
|
|
18 void append(alias alloc = GCAlloc, T)(ref T[] array, T elem)
|
|
19 {
|
|
20 auto newLen = array.length + 1;
|
|
21 alloc.realloc(array.ptr, newLen * T.sizeof);
|
|
22 array = array.ptr[0..newLen];
|
|
23 array[$ - 1] = elem;
|
|
24 }
|
|
25
|
|
26 void remove(alias alloc = GCAlloc, T)(ref T[] haystack, T needle)
|
|
27 {
|
|
28 foreach (i, e; haystack)
|
|
29 {
|
|
30 if (e == needle)
|
|
31 {
|
|
32 if (haystack.length > 1)
|
|
33 {
|
|
34 memmove(haystack.ptr + i, haystack.ptr + i + 1, (haystack.length - i - 1) * T.sizeof);
|
|
35 auto newLen = haystack.length - 1;
|
|
36 alloc.realloc(haystack.ptr, newLen * T.sizeof);
|
|
37 haystack = haystack[0..newLen];
|
|
38 }
|
|
39 else
|
|
40 {
|
|
41 alloc.realloc(haystack.ptr, 0);
|
|
42 haystack = haystack[0..0];
|
|
43 }
|
|
44
|
|
45 break;
|
|
46 }
|
|
47 }
|
|
48 }
|
|
49
|
|
50 void free(alias alloc = GCAlloc)(ref T[] array)
|
|
51 {
|
|
52 free(array.ptr, array.length * T.sizeof);
|
|
53 } |