aboutsummaryrefslogtreecommitdiffstats
path: root/native/jni/src
diff options
context:
space:
mode:
authorYohei Yukawa <yukawa@google.com>2014-04-09 11:31:43 +0900
committerYohei Yukawa <yukawa@google.com>2014-04-09 15:51:39 +0900
commitb417d7d69f72f3f8224887f63b6d569dc1b19b02 (patch)
tree28ef4a4f2b31ed780668667a145925f72b597e7b /native/jni/src
parent27a4f2e5e17ef684a94fbd66b5d74ad0fc1fa4f6 (diff)
downloadlatinime-b417d7d69f72f3f8224887f63b6d569dc1b19b02.tar.gz
latinime-b417d7d69f72f3f8224887f63b6d569dc1b19b02.tar.xz
latinime-b417d7d69f72f3f8224887f63b6d569dc1b19b02.zip
Make NELEMS type-safe
Change-Id: I867271665b3c595dc40ac63e93e68c87dc213d08
Diffstat (limited to 'native/jni/src')
-rw-r--r--native/jni/src/defines.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/native/jni/src/defines.h b/native/jni/src/defines.h
index 1719b1c60..3becc79e8 100644
--- a/native/jni/src/defines.h
+++ b/native/jni/src/defines.h
@@ -35,7 +35,13 @@
// Must be equal to ProximityInfo.MAX_PROXIMITY_CHARS_SIZE in Java
#define MAX_PROXIMITY_CHARS_SIZE 16
#define ADDITIONAL_PROXIMITY_CHAR_DELIMITER_CODE 2
-#define NELEMS(x) (sizeof(x) / sizeof((x)[0]))
+
+// TODO: Use size_t instead of int.
+// Disclaimer: You will see a compile error if you use this macro against a variable-length array.
+// Sorry for the inconvenience. It isn't supported.
+template <typename T, int N>
+char (&ArraySizeHelper(T (&array)[N]))[N];
+#define NELEMS(x) (sizeof(ArraySizeHelper(x)))
AK_FORCE_INLINE static int intArrayToCharArray(const int *const source, const int sourceSize,
char *dest, const int destSize) {