From e11bc00a5f1394246d7e0e2a4b78f0b6a67f4d3f Mon Sep 17 00:00:00 2001 From: Amorilia <amorilia@users.sourceforge.net> Date: Sat, 10 Jul 2010 13:25:34 +0100 Subject: [PATCH] Bugfix in array struct when class T is float. --- include/nif_basic_types.h | 60 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/include/nif_basic_types.h b/include/nif_basic_types.h index 07a7c101..4a65b702 100644 --- a/include/nif_basic_types.h +++ b/include/nif_basic_types.h @@ -83,6 +83,9 @@ struct array { for ( size_t i = 0; i < size; ++i ) data[i] = T(); } +// XXX ellipsis does not work when T = float +// XXX see for instance http://support.microsoft.com/kb/71424 +/* array(size_t n, ...) { va_list argptr; va_start(argptr, n); @@ -91,6 +94,63 @@ struct array { for ( size_t i = n; i < size; ++i ) data[i] = T(); } +*/ + array(size_t n, T t0) { + data[0] = t0; + for ( size_t i = 1; i < size; ++i ) + data[i] = T(); + } + array(size_t n, T t0, T t1) { + data[0] = t0; + data[1] = t1; + for ( size_t i = 2; i < size; ++i ) + data[i] = T(); + } + array(size_t n, T t0, T t1, T t2) { + data[0] = t0; + data[1] = t1; + data[2] = t2; + for ( size_t i = 3; i < size; ++i ) + data[i] = T(); + } + array(size_t n, T t0, T t1, T t2, T t3) { + data[0] = t0; + data[1] = t1; + data[2] = t2; + data[3] = t3; + for ( size_t i = 4; i < size; ++i ) + data[i] = T(); + } + array(size_t n, T t0, T t1, T t2, T t3, T t4) { + data[0] = t0; + data[1] = t1; + data[2] = t2; + data[3] = t3; + data[4] = t4; + for ( size_t i = 5; i < size; ++i ) + data[i] = T(); + } + array(size_t n, T t0, T t1, T t2, T t3, T t4, T t5) { + data[0] = t0; + data[1] = t1; + data[2] = t2; + data[3] = t3; + data[4] = t4; + data[5] = t5; + for ( size_t i = 6; i < size; ++i ) + data[i] = T(); + } + array(size_t n, T t0, T t1, T t2, T t3, T t4, T t5, T t6) { + data[0] = t0; + data[1] = t1; + data[2] = t2; + data[3] = t3; + data[4] = t4; + data[5] = t5; + data[6] = t6; + for ( size_t i = 7; i < size; ++i ) + data[i] = T(); + } ~array() {} T & operator[]( unsigned int index ) { return data[index]; -- GitLab