From 6e921648d292c81f2d0e62803f45a4f79aa892ca Mon Sep 17 00:00:00 2001 From: KWIML Upstream Date: Tue, 9 Jan 2018 08:49:07 -0500 Subject: KWIML 2018-01-09 (9c2d6cae) Code extracted from: https://gitlab.kitware.com/utils/kwiml.git at commit 9c2d6caecd8cd937b891009c681f90748df85dfd (master). Upstream Shortlog ----------------- Brad King (5): fc9d607a Use static_cast when compiling as C++ ea9336bc Update copyright year 7db8b884 Suppress MSVC static_cast warnings in verification and test code 340af24d Update copyright year 9c2d6cae Fix compilation on Borland C++ 5.8 Richard W.M. Jones (1): 6fc81d88 abi.h: Update RISC-V support for revised macro names --- Copyright.txt | 2 +- include/kwiml/abi.h | 19 +++++++++++++++---- include/kwiml/int.h | 15 +++++++++++++-- src/version.h.in | 2 +- test/test_int_format.h | 9 ++++++++- 5 files changed, 38 insertions(+), 9 deletions(-) diff --git a/Copyright.txt b/Copyright.txt index 515c4eb..fffd6d1 100644 --- a/Copyright.txt +++ b/Copyright.txt @@ -1,5 +1,5 @@ Kitware Information Macro Library -Copyright 2010-2016 Kitware, Inc. +Copyright 2010-2018 Kitware, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/include/kwiml/abi.h b/include/kwiml/abi.h index 5ffd542..da525fd 100644 --- a/include/kwiml/abi.h +++ b/include/kwiml/abi.h @@ -1,6 +1,6 @@ /*============================================================================ Kitware Information Macro Library - Copyright 2010-2016 Kitware, Inc. + Copyright 2010-2018 Kitware, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -468,7 +468,7 @@ suppression macro KWIML_ABI_NO_VERIFY was defined. # define KWIML_ABI_ENDIAN_ID KWIML_ABI_ENDIAN_ID_LITTLE /* RISC-V */ -#elif defined(__riscv__) +#elif defined(__riscv) || defined(__riscv__) # define KWIML_ABI_ENDIAN_ID KWIML_ABI_ENDIAN_ID_LITTLE /* Unknown CPU */ @@ -484,9 +484,16 @@ suppression macro KWIML_ABI_NO_VERIFY was defined. #if defined(_MSC_VER) # pragma warning (push) +# pragma warning (disable:4309) /* static_cast trunction of constant value */ # pragma warning (disable:4310) /* cast truncates constant value */ #endif +#if defined(__cplusplus) && !defined(__BORLANDC__) +#define KWIML_ABI_private_STATIC_CAST(t,v) static_cast(v) +#else +#define KWIML_ABI_private_STATIC_CAST(t,v) (t)(v) +#endif + #define KWIML_ABI_private_VERIFY(n, x, y) KWIML_ABI_private_VERIFY_0(KWIML_ABI_private_VERSION, n, x, y) #define KWIML_ABI_private_VERIFY_0(V, n, x, y) KWIML_ABI_private_VERIFY_1(V, n, x, y) #define KWIML_ABI_private_VERIFY_1(V, n, x, y) extern int (*n##_v##V)[x]; extern int (*n##_v##V)[y] @@ -535,9 +542,11 @@ KWIML_ABI_private_VERIFY_DIFF(KWIML_ABI___INT64_NOT_LONG_LONG, __int64, long lon #endif #if defined(KWIML_ABI_CHAR_IS_UNSIGNED) -KWIML_ABI_private_VERIFY_BOOL(KWIML_ABI_CHAR_IS_UNSIGNED, (char)0x80 > 0); +KWIML_ABI_private_VERIFY_BOOL(KWIML_ABI_CHAR_IS_UNSIGNED, + KWIML_ABI_private_STATIC_CAST(char, 0x80) > 0); #elif defined(KWIML_ABI_CHAR_IS_SIGNED) -KWIML_ABI_private_VERIFY_BOOL(KWIML_ABI_CHAR_IS_SIGNED, (char)0x80 < 0); +KWIML_ABI_private_VERIFY_BOOL(KWIML_ABI_CHAR_IS_SIGNED, + KWIML_ABI_private_STATIC_CAST(char, 0x80) < 0); #endif #undef KWIML_ABI_private_VERIFY_DIFF @@ -557,6 +566,8 @@ KWIML_ABI_private_VERIFY_BOOL(KWIML_ABI_CHAR_IS_SIGNED, (char)0x80 < 0); #undef KWIML_ABI_private_VERIFY_0 #undef KWIML_ABI_private_VERIFY +#undef KWIML_ABI_private_STATIC_CAST + #if defined(_MSC_VER) # pragma warning (pop) #endif diff --git a/include/kwiml/int.h b/include/kwiml/int.h index 489c603..b2e14d5 100644 --- a/include/kwiml/int.h +++ b/include/kwiml/int.h @@ -1,6 +1,6 @@ /*============================================================================ Kitware Information Macro Library - Copyright 2010-2016 Kitware, Inc. + Copyright 2010-2018 Kitware, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -1003,16 +1003,25 @@ An includer may test the following macros after inclusion: #if defined(_MSC_VER) # pragma warning (push) +# pragma warning (disable:4309) /* static_cast trunction of constant value */ # pragma warning (disable:4310) /* cast truncates constant value */ #endif +#if defined(__cplusplus) && !defined(__BORLANDC__) +#define KWIML_INT_private_STATIC_CAST(t,v) static_cast(v) +#else +#define KWIML_INT_private_STATIC_CAST(t,v) (t)(v) +#endif + #define KWIML_INT_private_VERIFY(n, x, y) KWIML_INT_private_VERIFY_0(KWIML_INT_private_VERSION, n, x, y) #define KWIML_INT_private_VERIFY_0(V, n, x, y) KWIML_INT_private_VERIFY_1(V, n, x, y) #define KWIML_INT_private_VERIFY_1(V, n, x, y) extern int (*n##_v##V)[x]; extern int (*n##_v##V)[y] #define KWIML_INT_private_VERIFY_BOOL(m, b) KWIML_INT_private_VERIFY(KWIML_INT_detail_VERIFY_##m, 2, (b)?2:3) #define KWIML_INT_private_VERIFY_TYPE(t, s) KWIML_INT_private_VERIFY(KWIML_INT_detail_VERIFY_##t, s, sizeof(t)) -#define KWIML_INT_private_VERIFY_SIGN(t, u, o) KWIML_INT_private_VERIFY_BOOL(SIGN_##t, (t)((u)1 << ((sizeof(t)<<3)-1)) o 0) +#define KWIML_INT_private_VERIFY_SIGN(t, u, o) \ + KWIML_INT_private_VERIFY_BOOL(SIGN_##t, KWIML_INT_private_STATIC_CAST( \ + t, KWIML_INT_private_STATIC_CAST(u, 1) << ((sizeof(t)<<3)-1)) o 0) KWIML_INT_private_VERIFY_TYPE(KWIML_INT_int8_t, 1); KWIML_INT_private_VERIFY_TYPE(KWIML_INT_uint8_t, 1); @@ -1060,6 +1069,8 @@ KWIML_INT_private_VERIFY_SIGN(KWIML_INT_uintptr_t, KWIML_INT_uintptr_t, >); #undef KWIML_INT_private_VERIFY_0 #undef KWIML_INT_private_VERIFY +#undef KWIML_INT_private_STATIC_CAST + #if defined(_MSC_VER) # pragma warning (pop) #endif diff --git a/src/version.h.in b/src/version.h.in index 0ac8854..5c566bb 100644 --- a/src/version.h.in +++ b/src/version.h.in @@ -1,6 +1,6 @@ /*============================================================================ Kitware Information Macro Library - Copyright 2010-2016 Kitware, Inc. + Copyright 2010-2018 Kitware, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/test/test_int_format.h b/test/test_int_format.h index 24dcdfb..2e0310c 100644 --- a/test/test_int_format.h +++ b/test/test_int_format.h @@ -8,6 +8,7 @@ #if defined(_MSC_VER) # pragma warning (push) +# pragma warning (disable:4309) /* static_cast trunction of constant value */ # pragma warning (disable:4310) /* cast truncates constant value */ #endif @@ -17,7 +18,13 @@ # define LANG "C " #endif -#define VALUE(T, U) (T)((U)0xab << ((sizeof(T)-1)<<3)) +#if defined(__cplusplus) && !defined(__BORLANDC__) +# define STATIC_CAST(t,v) static_cast(v) +#else +# define STATIC_CAST(t,v) (t)(v) +#endif + +#define VALUE(T, U) STATIC_CAST(T, STATIC_CAST(U, 0xab) << ((sizeof(T)-1)<<3)) #define TEST_C_(C, V, PRI, T, U) \ { \ -- cgit v0.12