Skip to content

Commit 0fdd804

Browse files
author
Zoltan Kovago
committed
fix compilation on windows with clang
1 parent 8022a5f commit 0fdd804

File tree

12 files changed

+41
-55
lines changed

12 files changed

+41
-55
lines changed

include/rapidjson/document.h

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,13 @@
2626
#include <limits>
2727

2828
RAPIDJSON_DIAG_PUSH
29-
#ifdef _MSC_VER
30-
RAPIDJSON_DIAG_OFF(4127) // conditional expression is constant
31-
RAPIDJSON_DIAG_OFF(4244) // conversion from kXxxFlags to 'uint16_t', possible loss of data
32-
#endif
33-
3429
#ifdef __clang__
3530
RAPIDJSON_DIAG_OFF(padded)
3631
RAPIDJSON_DIAG_OFF(switch-enum)
3732
RAPIDJSON_DIAG_OFF(c++98-compat)
33+
#elif defined(_MSC_VER)
34+
RAPIDJSON_DIAG_OFF(4127) // conditional expression is constant
35+
RAPIDJSON_DIAG_OFF(4244) // conversion from kXxxFlags to 'uint16_t', possible loss of data
3836
#endif
3937

4038
#ifdef __GNUC__

include/rapidjson/encodings.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
#include "rapidjson.h"
1919

20-
#ifdef _MSC_VER
20+
#if defined(_MSC_VER) && !defined(__clang__)
2121
RAPIDJSON_DIAG_PUSH
2222
RAPIDJSON_DIAG_OFF(4244) // conversion from 'type1' to 'type2', possible loss of data
2323
RAPIDJSON_DIAG_OFF(4702) // unreachable code
@@ -709,7 +709,7 @@ struct Transcoder<Encoding, Encoding> {
709709

710710
RAPIDJSON_NAMESPACE_END
711711

712-
#if defined(__GNUC__) || defined(_MSC_VER)
712+
#if defined(__GNUC__) || (defined(_MSC_VER) && !defined(__clang__))
713713
RAPIDJSON_DIAG_POP
714714
#endif
715715

include/rapidjson/internal/meta.h

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@
2121
RAPIDJSON_DIAG_PUSH
2222
RAPIDJSON_DIAG_OFF(effc++)
2323
#endif
24-
#if defined(_MSC_VER)
24+
25+
#if defined(_MSC_VER) && !defined(__clang__)
2526
RAPIDJSON_DIAG_PUSH
2627
RAPIDJSON_DIAG_OFF(6334)
2728
#endif
@@ -174,7 +175,11 @@ template <typename T> struct RemoveSfinaeTag<SfinaeTag&(*)(T)> { typedef T Type;
174175
RAPIDJSON_NAMESPACE_END
175176
//@endcond
176177

177-
#if defined(__GNUC__) || defined(_MSC_VER)
178+
#if defined(_MSC_VER) && !defined(__clang__)
179+
RAPIDJSON_DIAG_POP
180+
#endif
181+
182+
#ifdef __GNUC__
178183
RAPIDJSON_DIAG_POP
179184
#endif
180185

include/rapidjson/internal/regex.h

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ RAPIDJSON_DIAG_PUSH
2424
RAPIDJSON_DIAG_OFF(padded)
2525
RAPIDJSON_DIAG_OFF(switch-enum)
2626
RAPIDJSON_DIAG_OFF(implicit-fallthrough)
27+
#elif defined(_MSC_VER)
28+
RAPIDJSON_DIAG_PUSH
29+
RAPIDJSON_DIAG_OFF(4512) // assignment operator could not be generated
2730
#endif
2831

2932
#ifdef __GNUC__
@@ -34,11 +37,6 @@ RAPIDJSON_DIAG_OFF(implicit-fallthrough)
3437
#endif
3538
#endif
3639

37-
#ifdef _MSC_VER
38-
RAPIDJSON_DIAG_PUSH
39-
RAPIDJSON_DIAG_OFF(4512) // assignment operator could not be generated
40-
#endif
41-
4240
#ifndef RAPIDJSON_REGEX_VERBOSE
4341
#define RAPIDJSON_REGEX_VERBOSE 0
4442
#endif
@@ -723,11 +721,11 @@ typedef GenericRegexSearch<Regex> RegexSearch;
723721
} // namespace internal
724722
RAPIDJSON_NAMESPACE_END
725723

726-
#ifdef __clang__
724+
#ifdef __GNUC__
727725
RAPIDJSON_DIAG_POP
728726
#endif
729727

730-
#ifdef _MSC_VER
728+
#if defined(__clang__) || defined(_MSC_VER)
731729
RAPIDJSON_DIAG_POP
732730
#endif
733731

include/rapidjson/istreamwrapper.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,7 @@
2121
#ifdef __clang__
2222
RAPIDJSON_DIAG_PUSH
2323
RAPIDJSON_DIAG_OFF(padded)
24-
#endif
25-
26-
#ifdef _MSC_VER
24+
#elif defined(_MSC_VER)
2725
RAPIDJSON_DIAG_PUSH
2826
RAPIDJSON_DIAG_OFF(4351) // new behavior: elements of array 'array' will be default initialized
2927
#endif

include/rapidjson/pointer.h

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,7 @@
2121
#ifdef __clang__
2222
RAPIDJSON_DIAG_PUSH
2323
RAPIDJSON_DIAG_OFF(switch-enum)
24-
#endif
25-
26-
#ifdef _MSC_VER
24+
#elif defined(_MSC_VER)
2725
RAPIDJSON_DIAG_PUSH
2826
RAPIDJSON_DIAG_OFF(4512) // assignment operator could not be generated
2927
#endif
@@ -1352,11 +1350,7 @@ bool EraseValueByPointer(T& root, const CharType(&source)[N]) {
13521350

13531351
RAPIDJSON_NAMESPACE_END
13541352

1355-
#ifdef __clang__
1356-
RAPIDJSON_DIAG_POP
1357-
#endif
1358-
1359-
#ifdef _MSC_VER
1353+
#if defined(__clang__) || defined(_MSC_VER)
13601354
RAPIDJSON_DIAG_POP
13611355
#endif
13621356

include/rapidjson/rapidjson.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -433,7 +433,7 @@ template <> struct STATIC_ASSERTION_FAILURE<true> { enum { value = 1 }; };
433433
template <size_t x> struct StaticAssertTest {};
434434
RAPIDJSON_NAMESPACE_END
435435

436-
#if defined(__GNUC__)
436+
#if defined(__GNUC__) || defined(__clang__)
437437
#define RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE __attribute__((unused))
438438
#else
439439
#define RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE

include/rapidjson/reader.h

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -37,17 +37,15 @@
3737
#include <arm_neon.h>
3838
#endif
3939

40-
#ifdef _MSC_VER
41-
RAPIDJSON_DIAG_PUSH
42-
RAPIDJSON_DIAG_OFF(4127) // conditional expression is constant
43-
RAPIDJSON_DIAG_OFF(4702) // unreachable code
44-
#endif
45-
4640
#ifdef __clang__
4741
RAPIDJSON_DIAG_PUSH
4842
RAPIDJSON_DIAG_OFF(old-style-cast)
4943
RAPIDJSON_DIAG_OFF(padded)
5044
RAPIDJSON_DIAG_OFF(switch-enum)
45+
#elif defined(_MSC_VER)
46+
RAPIDJSON_DIAG_PUSH
47+
RAPIDJSON_DIAG_OFF(4127) // conditional expression is constant
48+
RAPIDJSON_DIAG_OFF(4702) // unreachable code
5149
#endif
5250

5351
#ifdef __GNUC__
@@ -2206,7 +2204,7 @@ typedef GenericReader<UTF8<>, UTF8<> > Reader;
22062204

22072205
RAPIDJSON_NAMESPACE_END
22082206

2209-
#ifdef __clang__
2207+
#if defined(__clang__) || defined(_MSC_VER)
22102208
RAPIDJSON_DIAG_POP
22112209
#endif
22122210

@@ -2215,8 +2213,4 @@ RAPIDJSON_DIAG_POP
22152213
RAPIDJSON_DIAG_POP
22162214
#endif
22172215

2218-
#ifdef _MSC_VER
2219-
RAPIDJSON_DIAG_POP
2220-
#endif
2221-
22222216
#endif // RAPIDJSON_READER_H_

include/rapidjson/schema.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,7 @@ RAPIDJSON_DIAG_OFF(weak-vtables)
6363
RAPIDJSON_DIAG_OFF(exit-time-destructors)
6464
RAPIDJSON_DIAG_OFF(c++98-compat-pedantic)
6565
RAPIDJSON_DIAG_OFF(variadic-macros)
66-
#endif
67-
68-
#ifdef _MSC_VER
66+
#elif defined(_MSC_VER)
6967
RAPIDJSON_DIAG_OFF(4512) // assignment operator could not be generated
7068
#endif
7169

include/rapidjson/writer.h

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -36,16 +36,14 @@
3636
#include <arm_neon.h>
3737
#endif
3838

39-
#ifdef _MSC_VER
40-
RAPIDJSON_DIAG_PUSH
41-
RAPIDJSON_DIAG_OFF(4127) // conditional expression is constant
42-
#endif
43-
4439
#ifdef __clang__
4540
RAPIDJSON_DIAG_PUSH
4641
RAPIDJSON_DIAG_OFF(padded)
4742
RAPIDJSON_DIAG_OFF(unreachable-code)
4843
RAPIDJSON_DIAG_OFF(c++98-compat)
44+
#elif defined(_MSC_VER)
45+
RAPIDJSON_DIAG_PUSH
46+
RAPIDJSON_DIAG_OFF(4127) // conditional expression is constant
4947
#endif
5048

5149
RAPIDJSON_NAMESPACE_BEGIN
@@ -705,11 +703,7 @@ inline bool Writer<StringBuffer>::ScanWriteUnescapedString(StringStream& is, siz
705703

706704
RAPIDJSON_NAMESPACE_END
707705

708-
#ifdef _MSC_VER
709-
RAPIDJSON_DIAG_POP
710-
#endif
711-
712-
#ifdef __clang__
706+
#if defined(_MSC_VER) || defined(__clang__)
713707
RAPIDJSON_DIAG_POP
714708
#endif
715709

0 commit comments

Comments
 (0)