Mercurial > projects > qtd
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]; + })); +