comparison d1/qtd/ArrayOpsPrimitive.d @ 311:8674fd5f34f4 lifetime

Added d1/d2 top directories
author maxter <spambox@d-coding.com>
date Wed, 23 Dec 2009 16:17:22 +0200
parents
children 80b52f5e97b6
comparison
equal deleted inserted replaced
310:5bcfe9e7db7f 311:8674fd5f34f4
1 /**
2 *
3 * Copyright: Copyright QtD Team, 2008-2009
4 * License: <a href="http://www.boost.org/LICENSE_1_0.txt>Boost License 1.0</a>
5 *
6 * Copyright QtD Team, 2008-2009
7 * Distributed under the Boost Software License, Version 1.0.
8 * (See accompanying file boost-license-1.0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9 *
10 */
11
12 module qt.qtd.ArrayOpsPrimitive;
13
14 import qt.QGlobal;
15
16 // int
17 private extern(C) void qtd_allocate_int_array(int[]* arr, size_t len)
18 {
19 *arr = new int[len];
20 }
21
22 private extern(C) void qtd_assign_int_array_element(int[]* arr, size_t pos, int elem)
23 {
24 (*arr)[pos] = elem;
25 }
26
27 private extern(C) void qtd_get_int_from_array(int* arr, size_t pos, int* elem)
28 {
29 *elem = arr[pos];
30 }
31
32 // uint
33 private extern(C) void qtd_allocate_uint_array(int[]* arr, size_t len)
34 {
35 *arr = new int[len];
36 }
37
38 private extern(C) void qtd_assign_uint_array_element(int[]* arr, size_t pos, uint elem)
39 {
40 (*arr)[pos] = elem;
41 }
42
43 private extern(C) void qtd_get_uint_from_array(uint* arr, size_t pos, uint* elem)
44 {
45 *elem = arr[pos];
46 }
47
48 // double
49 private extern(C) void qtd_allocate_double_array(double[]* arr, size_t len)
50 {
51 *arr = new double[len];
52 }
53
54 private extern(C) void qtd_assign_double_array_element(double[]* arr, size_t pos, double elem)
55 {
56 (*arr)[pos] = elem;
57 }
58
59 private extern(C) void qtd_get_double_from_array(double* arr, size_t pos, double* elem)
60 {
61 *elem = arr[pos];
62 }
63
64 // string
65 private extern(C) void qtd_allocate_string_array(string[]* arr, size_t len)
66 {
67 *arr = new string[len];
68 }
69
70 private extern(C) void qtd_assign_string_array_element(string[]* arr, size_t pos, string* elem)
71 {
72 }
73
74 private extern(C) void* qtd_string_from_array(string[]* arr, size_t pos)
75 {
76 return &((*arr)[pos]);
77 }
78 /*
79 private extern(C) void qtd_get_string_from_array(string* arr, size_t pos, char** elem, size_t* elem_size)
80 {
81 *elem = arr[pos].ptr;
82 *elem_size = arr[pos].length;
83 }
84 */
85
86 private extern(C) void qtd_get_string_from_array(string* arr, size_t pos, string* elem)
87 {
88 *elem = arr[pos];
89 }
90
91 version(cpp_shared)
92 {
93 extern (C) void qtd_core_ArrayOps_initCallBacks(void* callbacks);
94
95 static this() {
96 void*[13] callbacks;
97
98 callbacks[0] = &qtd_allocate_int_array;
99 callbacks[1] = &qtd_assign_int_array_element;
100 callbacks[2] = &qtd_get_int_from_array;
101
102 callbacks[3] = &qtd_allocate_uint_array;
103 callbacks[4] = &qtd_assign_uint_array_element;
104 callbacks[5] = &qtd_get_uint_from_array;
105
106 callbacks[6] = &qtd_allocate_double_array;
107 callbacks[7] = &qtd_assign_double_array_element;
108 callbacks[8] = &qtd_get_double_from_array;
109
110 callbacks[9] = &qtd_allocate_string_array;
111 callbacks[10] = &qtd_assign_string_array_element;
112 callbacks[11] = &qtd_string_from_array;
113 callbacks[12] = &qtd_get_string_from_array;
114
115 qtd_core_ArrayOps_initCallBacks(callbacks.ptr);
116 }
117 }