Commit d48f08ac authored by Vladimir Glavnyy's avatar Vladimir Glavnyy Committed by Wouter van Oortmerssen

Add missed defined(clang) and fix the wrong placement of #pragma push/pop for MSVC compiler (#4946)

parent 43132560
...@@ -51,6 +51,12 @@ ...@@ -51,6 +51,12 @@
#include "flatbuffers/stl_emulation.h" #include "flatbuffers/stl_emulation.h"
// Note the __clang__ check is needed, because clang presents itself
// as an older GNUC compiler (4.2).
// Clang 3.3 and later implement all of the ISO C++ 2011 standard.
// Clang 3.4 and later implement all of the ISO C++ 2014 standard.
// http://clang.llvm.org/cxx_status.html
/// @cond FLATBUFFERS_INTERNAL /// @cond FLATBUFFERS_INTERNAL
#if __cplusplus <= 199711L && \ #if __cplusplus <= 199711L && \
(!defined(_MSC_VER) || _MSC_VER < 1600) && \ (!defined(_MSC_VER) || _MSC_VER < 1600) && \
...@@ -110,7 +116,8 @@ ...@@ -110,7 +116,8 @@
#define FLATBUFFERS_STRING(X) FLATBUFFERS_STRING_EXPAND(X) #define FLATBUFFERS_STRING(X) FLATBUFFERS_STRING_EXPAND(X)
#if (!defined(_MSC_VER) || _MSC_VER > 1600) && \ #if (!defined(_MSC_VER) || _MSC_VER > 1600) && \
(!defined(__GNUC__) || (__GNUC__ * 100 + __GNUC_MINOR__ >= 407)) (!defined(__GNUC__) || (__GNUC__ * 100 + __GNUC_MINOR__ >= 407)) || \
defined(__clang__)
#define FLATBUFFERS_FINAL_CLASS final #define FLATBUFFERS_FINAL_CLASS final
#define FLATBUFFERS_OVERRIDE override #define FLATBUFFERS_OVERRIDE override
#else #else
...@@ -119,7 +126,8 @@ ...@@ -119,7 +126,8 @@
#endif #endif
#if (!defined(_MSC_VER) || _MSC_VER >= 1900) && \ #if (!defined(_MSC_VER) || _MSC_VER >= 1900) && \
(!defined(__GNUC__) || (__GNUC__ * 100 + __GNUC_MINOR__ >= 406)) (!defined(__GNUC__) || (__GNUC__ * 100 + __GNUC_MINOR__ >= 406)) || \
(defined(__cpp_constexpr) && __cpp_constexpr >= 200704)
#define FLATBUFFERS_CONSTEXPR constexpr #define FLATBUFFERS_CONSTEXPR constexpr
#else #else
#define FLATBUFFERS_CONSTEXPR #define FLATBUFFERS_CONSTEXPR
...@@ -132,8 +140,9 @@ ...@@ -132,8 +140,9 @@
#define FLATBUFFERS_CONSTEXPR_CPP14 #define FLATBUFFERS_CONSTEXPR_CPP14
#endif #endif
#if defined(__GXX_EXPERIMENTAL_CXX0X__) && __GNUC__ * 10 + __GNUC_MINOR__ >= 46 || \ #if (defined(__GXX_EXPERIMENTAL_CXX0X__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 406)) || \
defined(_MSC_FULL_VER) && _MSC_FULL_VER >= 190023026 (defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 190023026)) || \
defined(__clang__)
#define FLATBUFFERS_NOEXCEPT noexcept #define FLATBUFFERS_NOEXCEPT noexcept
#else #else
#define FLATBUFFERS_NOEXCEPT #define FLATBUFFERS_NOEXCEPT
...@@ -142,17 +151,13 @@ ...@@ -142,17 +151,13 @@
// NOTE: the FLATBUFFERS_DELETE_FUNC macro may change the access mode to // NOTE: the FLATBUFFERS_DELETE_FUNC macro may change the access mode to
// private, so be sure to put it at the end or reset access mode explicitly. // private, so be sure to put it at the end or reset access mode explicitly.
#if (!defined(_MSC_VER) || _MSC_FULL_VER >= 180020827) && \ #if (!defined(_MSC_VER) || _MSC_FULL_VER >= 180020827) && \
(!defined(__GNUC__) || (__GNUC__ * 100 + __GNUC_MINOR__ >= 404)) (!defined(__GNUC__) || (__GNUC__ * 100 + __GNUC_MINOR__ >= 404)) || \
defined(__clang__)
#define FLATBUFFERS_DELETE_FUNC(func) func = delete; #define FLATBUFFERS_DELETE_FUNC(func) func = delete;
#else #else
#define FLATBUFFERS_DELETE_FUNC(func) private: func; #define FLATBUFFERS_DELETE_FUNC(func) private: func;
#endif #endif
#if defined(_MSC_VER)
#pragma warning(push)
#pragma warning(disable: 4127) // C4127: conditional expression is constant
#endif
#ifndef FLATBUFFERS_HAS_STRING_VIEW #ifndef FLATBUFFERS_HAS_STRING_VIEW
// Only provide flatbuffers::string_view if __has_include can be used // Only provide flatbuffers::string_view if __has_include can be used
// to detect a header that provides an implementation // to detect a header that provides an implementation
...@@ -201,6 +206,11 @@ typedef uintmax_t largest_scalar_t; ...@@ -201,6 +206,11 @@ typedef uintmax_t largest_scalar_t;
// We support aligning the contents of buffers up to this size. // We support aligning the contents of buffers up to this size.
#define FLATBUFFERS_MAX_ALIGNMENT 16 #define FLATBUFFERS_MAX_ALIGNMENT 16
#if defined(_MSC_VER)
#pragma warning(push)
#pragma warning(disable: 4127) // C4127: conditional expression is constant
#endif
template<typename T> T EndianSwap(T t) { template<typename T> T EndianSwap(T t) {
#if defined(_MSC_VER) #if defined(_MSC_VER)
#define FLATBUFFERS_BYTESWAP16 _byteswap_ushort #define FLATBUFFERS_BYTESWAP16 _byteswap_ushort
...@@ -239,6 +249,10 @@ template<typename T> T EndianSwap(T t) { ...@@ -239,6 +249,10 @@ template<typename T> T EndianSwap(T t) {
} }
} }
#if defined(_MSC_VER)
#pragma warning(pop)
#endif
template<typename T> T EndianScalar(T t) { template<typename T> T EndianScalar(T t) {
#if FLATBUFFERS_LITTLEENDIAN #if FLATBUFFERS_LITTLEENDIAN
......
...@@ -934,12 +934,12 @@ class FlatBufferBuilder { ...@@ -934,12 +934,12 @@ class FlatBufferBuilder {
} }
/// @brief Get the released pointer to the serialized buffer. /// @brief Get the released pointer to the serialized buffer.
/// @param The size of the memory block containing /// @param The size of the memory block containing
/// the serialized `FlatBuffer`. /// the serialized `FlatBuffer`.
/// @param The offset from the released pointer where the finished /// @param The offset from the released pointer where the finished
/// `FlatBuffer` starts. /// `FlatBuffer` starts.
/// @return A raw pointer to the start of the memory block containing /// @return A raw pointer to the start of the memory block containing
/// the serialized `FlatBuffer`. /// the serialized `FlatBuffer`.
/// @remark If the allocator is owned, it gets deleted during this call. /// @remark If the allocator is owned, it gets deleted during this call.
uint8_t *ReleaseRaw(size_t &size, size_t &offset) { uint8_t *ReleaseRaw(size_t &size, size_t &offset) {
Finished(); Finished();
...@@ -2482,9 +2482,6 @@ volatile __attribute__((weak)) const char *flatbuffer_version_string = ...@@ -2482,9 +2482,6 @@ volatile __attribute__((weak)) const char *flatbuffer_version_string =
/// @endcond /// @endcond
} // namespace flatbuffers } // namespace flatbuffers
#if defined(_MSC_VER)
#pragma warning(pop)
#endif
// clang-format on // clang-format on
#endif // FLATBUFFERS_H_ #endif // FLATBUFFERS_H_
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment