|
|
@@ -32,6 +32,45 @@ distribution.
|
|
|
# include <cstdarg>
|
|
|
#endif
|
|
|
|
|
|
+// Handle fallthrough attribute for different compilers
|
|
|
+#ifndef __has_attribute
|
|
|
+# define __has_attribute(x) 0
|
|
|
+#endif
|
|
|
+#ifdef __cplusplus
|
|
|
+# ifndef __has_cpp_attribute
|
|
|
+# define __has_cpp_attribute(x) 0
|
|
|
+# endif
|
|
|
+#else
|
|
|
+# ifndef __has_c_attribute
|
|
|
+# define __has_c_attribute(x) 0
|
|
|
+# endif
|
|
|
+#endif
|
|
|
+
|
|
|
+#ifdef __cplusplus
|
|
|
+# if defined(_MSC_VER)
|
|
|
+# define TIXML_FALLTHROUGH (void(0))
|
|
|
+# elif (__cplusplus >= 201703L && __has_cpp_attribute(fallthrough))
|
|
|
+# define TIXML_FALLTHROUGH [[fallthrough]]
|
|
|
+# elif __has_cpp_attribute(clang::fallthrough)
|
|
|
+# define TIXML_FALLTHROUGH [[clang::fallthrough]]
|
|
|
+# elif __has_attribute(fallthrough)
|
|
|
+# define TIXML_FALLTHROUGH __attribute__((fallthrough))
|
|
|
+# else
|
|
|
+# define TIXML_FALLTHROUGH (void(0))
|
|
|
+# endif
|
|
|
+#else
|
|
|
+# if defined(_MSC_VER)
|
|
|
+# define TIXML_FALLTHROUGH (void(0))
|
|
|
+# elif __has_c_attribute(fallthrough)
|
|
|
+# define TIXML_FALLTHROUGH [[fallthrough]]
|
|
|
+# elif __has_attribute(fallthrough)
|
|
|
+# define TIXML_FALLTHROUGH __attribute__((fallthrough))
|
|
|
+# else
|
|
|
+# define TIXML_FALLTHROUGH (void(0))
|
|
|
+# endif
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
#if defined(_MSC_VER) && (_MSC_VER >= 1400 ) && (!defined WINCE)
|
|
|
// Microsoft Visual Studio, version 2005 and higher. Not WinCE.
|
|
|
/*int _snprintf_s(
|
|
|
@@ -446,17 +485,17 @@ void XMLUtil::ConvertUTF32ToUTF8( unsigned long input, char* output, int* length
|
|
|
--output;
|
|
|
*output = static_cast<char>((input | BYTE_MARK) & BYTE_MASK);
|
|
|
input >>= 6;
|
|
|
- //fall through
|
|
|
+ TIXML_FALLTHROUGH;
|
|
|
case 3:
|
|
|
--output;
|
|
|
*output = static_cast<char>((input | BYTE_MARK) & BYTE_MASK);
|
|
|
input >>= 6;
|
|
|
- //fall through
|
|
|
+ TIXML_FALLTHROUGH;
|
|
|
case 2:
|
|
|
--output;
|
|
|
*output = static_cast<char>((input | BYTE_MARK) & BYTE_MASK);
|
|
|
input >>= 6;
|
|
|
- //fall through
|
|
|
+ TIXML_FALLTHROUGH;
|
|
|
case 1:
|
|
|
--output;
|
|
|
*output = static_cast<char>(input | FIRST_BYTE_MARK[*length]);
|