comparison qt/qtd/ArrayOpsPrimitive.d @ 1:e78566595089

initial import
author mandel
date Mon, 11 May 2009 16:01:50 +0000
parents
children cf8a415f3f32
comparison
equal deleted inserted replaced
0:36fb74dc547d 1:e78566595089
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 version(Windows)
86 {
87 extern (C) void qtd_core_ArrayOps_initCallBacks(void* callbacks);
88
89 static this() {
90 void*[13] callbacks;
91
92 callbacks[0] = &qtd_allocate_int_array;
93 callbacks[1] = &qtd_assign_int_array_element;
94 callbacks[2] = &qtd_get_int_from_array;
95
96 callbacks[3] = &qtd_allocate_uint_array;
97 callbacks[4] = &qtd_assign_uint_array_element;
98 callbacks[5] = &qtd_get_uint_from_array;
99
100 callbacks[6] = &qtd_allocate_double_array;
101 callbacks[7] = &qtd_assign_double_array_element;
102 callbacks[8] = &qtd_get_double_from_array;
103
104 callbacks[9] = &qtd_allocate_string_array;
105 callbacks[10] = &qtd_assign_string_array_element;
106 callbacks[11] = &qtd_string_from_array;
107 callbacks[12] = &qtd_get_string_from_array;
108
109 qtd_core_ArrayOps_initCallBacks(callbacks.ptr);
110 }
111 }