diff d2/qtd/ArrayOpsPrimitive.d @ 357:9784459f0750

An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables Q_CLASSINFO implementation Now Qtd can be built on Windows
author Max Samukha <maxter@spambox.com>
date Wed, 02 Jun 2010 19:38:05 +0300
parents 96a75b1e5b26
children
line wrap: on
line diff
--- a/d2/qtd/ArrayOpsPrimitive.d	Tue May 25 20:14:04 2010 +0300
+++ b/d2/qtd/ArrayOpsPrimitive.d	Wed Jun 02 19:38:05 2010 +0300
@@ -1,117 +1,76 @@
 /**
-*
-*  Copyright: Copyright QtD Team, 2008-2009
-*  License: <a href="http://www.boost.org/LICENSE_1_0.txt>Boost License 1.0</a>
-*
-*  Copyright QtD Team, 2008-2009
-*  Distributed under the Boost Software License, Version 1.0.
-*  (See accompanying file boost-license-1.0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-*
-*/
+    Copyright: Copyright QtD Team, 2008-2010
+    License: Boost License 1.0
+ */
 
 module qtd.ArrayOpsPrimitive;
-
-import qt.QGlobal;
+import qtd.Core;
 
 // int
-private extern(C) void qtd_allocate_int_array(int[]* arr, size_t len)
-{
-    *arr = new int[len];
-}
+mixin (qtdExport("void", "allocate_int_array", "int[]* arr, size_t len",
+    q{
+        *arr = new int[len];
+    }));
 
-private extern(C) void qtd_assign_int_array_element(int[]* arr, size_t pos, int elem)
-{
-    (*arr)[pos] = elem;
-}
+mixin (qtdExport("void", "assign_int_array_element", "int[]* arr, size_t pos, int elem",
+    q{
+        (*arr)[pos] = elem;
+    }));
 
-private extern(C) void qtd_get_int_from_array(int* arr, size_t pos, int* elem)
-{
-    *elem = arr[pos];
-}
+mixin (qtdExport("void", "get_int_from_array", "int* arr, size_t pos, int* elem",
+    q{
+        *elem = arr[pos];
+    }));
 
 // uint
-private extern(C) void qtd_allocate_uint_array(int[]* arr, size_t len)
-{
-    *arr = new int[len];
-}
+mixin (qtdExport("void", "allocate_uint_array", "int[]* arr, size_t len",
+    q{
+        *arr = new int[len];
+    }));
 
-private extern(C) void qtd_assign_uint_array_element(int[]* arr, size_t pos, uint elem)
-{
-    (*arr)[pos] = elem;
-}
+mixin (qtdExport("void", "assign_uint_array_element", "int[]* arr, size_t pos, uint elem",
+    q{
+        (*arr)[pos] = elem;
+    }));
 
-private extern(C) void qtd_get_uint_from_array(uint* arr, size_t pos, uint* elem)
-{
-    *elem = arr[pos];
-}
+mixin (qtdExport("void", "get_uint_from_array", "uint* arr, size_t pos, uint* elem",
+    q{
+        *elem = arr[pos];
+    }));
 
 // double
-private extern(C) void qtd_allocate_double_array(double[]* arr, size_t len)
-{
-    *arr = new double[len];
-}
+mixin (qtdExport("void", "allocate_double_array", "double[]* arr, size_t len",
+    q{
+        *arr = new double[len];
+    }));
 
-private extern(C) void qtd_assign_double_array_element(double[]* arr, size_t pos, double elem)
-{
-    (*arr)[pos] = elem;
-}
+mixin (qtdExport("void", "assign_double_array_element", "double[]* arr, size_t pos, double elem",
+    q{
+        (*arr)[pos] = elem;
+    }));
 
-private extern(C) void qtd_get_double_from_array(double* arr, size_t pos, double* elem)
-{
-    *elem = arr[pos];
-}
+mixin (qtdExport("void", "get_double_from_array", "double* arr, size_t pos, double* elem",
+    q{
+        *elem = arr[pos];
+    }));
 
 // string
-private extern(C) void qtd_allocate_string_array(string[]* arr, size_t len)
-{
-    *arr = new string[len];
-}
-
-private extern(C) void qtd_assign_string_array_element(string[]* arr, size_t pos, string* elem)
-{
-}
+mixin (qtdExport("void", "allocate_string_array", "string[]* arr, size_t len",
+    q{
+        *arr = new string[len];
+    }));
 
-private extern(C) void* qtd_string_from_array(string[]* arr, size_t pos)
-{
-    return &((*arr)[pos]);
-}
-/*
-private extern(C) void qtd_get_string_from_array(string* arr, size_t pos, char** elem, size_t* elem_size)
-{
-    *elem = arr[pos].ptr;
-    *elem_size = arr[pos].length;
-}
-*/
-
-private extern(C) void qtd_get_string_from_array(string* arr, size_t pos, string* elem)
-{
-    *elem = arr[pos];
-}
+mixin (qtdExport("void", "assign_string_array_element", "string[]* arr, size_t pos, string* elem",
+    q{
+    }));
 
-version(cpp_shared)
-{
-    extern (C) void qtd_core_ArrayOps_initCallBacks(void* callbacks);
-
-    static this() {
-        void*[13] callbacks;
+mixin (qtdExport("void*", "string_from_array", "string[]* arr, size_t pos",
+    q{
+        return &((*arr)[pos]);
+    }));
 
-        callbacks[0] = &qtd_allocate_int_array;
-        callbacks[1] = &qtd_assign_int_array_element;
-        callbacks[2] = &qtd_get_int_from_array;
-        
-        callbacks[3] = &qtd_allocate_uint_array;
-        callbacks[4] = &qtd_assign_uint_array_element;
-        callbacks[5] = &qtd_get_uint_from_array;
-        
-        callbacks[6] = &qtd_allocate_double_array;
-        callbacks[7] = &qtd_assign_double_array_element;
-        callbacks[8] = &qtd_get_double_from_array;
-        
-        callbacks[9] = &qtd_allocate_string_array;
-        callbacks[10] = &qtd_assign_string_array_element;
-        callbacks[11] = &qtd_string_from_array;
-        callbacks[12] = &qtd_get_string_from_array;
-        
-        qtd_core_ArrayOps_initCallBacks(callbacks.ptr);
-    }
-}
+mixin (qtdExport("void", "get_string_from_array", "string* arr, size_t pos, string* elem",
+    q{
+        *elem = arr[pos];
+    }));
+