Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
R
rapidjson
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
rapidjson
Commits
a6eb15d2
Commit
a6eb15d2
authored
Jan 23, 2016
by
Milo Yip
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix warnings in clang for C++11
parent
534da223
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
121 additions
and
11 deletions
+121
-11
CMakeLists.txt
CMakeLists.txt
+8
-0
serialize.cpp
example/serialize/serialize.cpp
+3
-0
document.h
include/rapidjson/document.h
+2
-2
stack.h
include/rapidjson/internal/stack.h
+9
-0
swap.h
include/rapidjson/internal/swap.h
+9
-0
stringbuffer.h
include/rapidjson/stringbuffer.h
+9
-0
documenttest.cpp
test/unittest/documenttest.cpp
+10
-0
readertest.cpp
test/unittest/readertest.cpp
+1
-0
stringbuffertest.cpp
test/unittest/stringbuffertest.cpp
+9
-0
unittest.cpp
test/unittest/unittest.cpp
+11
-0
unittest.h
test/unittest/unittest.h
+12
-0
valuetest.cpp
test/unittest/valuetest.cpp
+38
-9
No files found.
CMakeLists.txt
View file @
a6eb15d2
...
...
@@ -20,6 +20,8 @@ option(RAPIDJSON_BUILD_TESTS "Build rapidjson perftests and unittests." ON)
option
(
RAPIDJSON_BUILD_THIRDPARTY_GTEST
"Use gtest installation in `thirdparty/gtest` by default if available"
OFF
)
option
(
RAPIDJSON_BUILD_CXX11
"Build rapidjson with C++11 (gcc/clang)"
ON
)
option
(
RAPIDJSON_HAS_STDSTRING
""
OFF
)
if
(
RAPIDJSON_HAS_STDSTRING
)
add_definitions
(
-DRAPIDJSON_HAS_STDSTRING
)
...
...
@@ -27,8 +29,14 @@ endif()
if
(
"
${
CMAKE_CXX_COMPILER_ID
}
"
STREQUAL
"GNU"
)
set
(
CMAKE_CXX_FLAGS
"
${
CMAKE_CXX_FLAGS
}
-march=native -Wall -Wextra -Werror"
)
if
(
RAPIDJSON_BUILD_CXX11
)
set
(
CMAKE_CXX_FLAGS
"
${
CMAKE_CXX_FLAGS
}
-std=c++11"
)
endif
()
elseif
(
CMAKE_CXX_COMPILER_ID MATCHES
"Clang"
)
set
(
CMAKE_CXX_FLAGS
"
${
CMAKE_CXX_FLAGS
}
-march=native -Wall -Wextra -Werror -Wno-missing-field-initializers"
)
if
(
RAPIDJSON_BUILD_CXX11
)
set
(
CMAKE_CXX_FLAGS
"
${
CMAKE_CXX_FLAGS
}
-std=c++11"
)
endif
()
elseif
(
"
${
CMAKE_CXX_COMPILER_ID
}
"
STREQUAL
"MSVC"
)
add_definitions
(
-D_CRT_SECURE_NO_WARNINGS=1
)
endif
()
...
...
example/serialize/serialize.cpp
View file @
a6eb15d2
...
...
@@ -11,6 +11,7 @@ using namespace rapidjson;
class
Person
{
public
:
Person
(
const
std
::
string
&
name
,
unsigned
age
)
:
name_
(
name
),
age_
(
age
)
{}
Person
(
const
Person
&
rhs
)
:
name_
(
rhs
.
name_
),
age_
(
rhs
.
age_
)
{}
virtual
~
Person
();
protected
:
...
...
@@ -38,6 +39,7 @@ Person::~Person() {
class
Education
{
public
:
Education
(
const
std
::
string
&
school
,
double
GPA
)
:
school_
(
school
),
GPA_
(
GPA
)
{}
Education
(
const
Education
&
rhs
)
:
school_
(
rhs
.
school_
),
GPA_
(
rhs
.
GPA_
)
{}
template
<
typename
Writer
>
void
Serialize
(
Writer
&
writer
)
const
{
...
...
@@ -102,6 +104,7 @@ Dependent::~Dependent() {
class
Employee
:
public
Person
{
public
:
Employee
(
const
std
::
string
&
name
,
unsigned
age
,
bool
married
)
:
Person
(
name
,
age
),
dependents_
(),
married_
(
married
)
{}
Employee
(
const
Employee
&
rhs
)
:
Person
(
rhs
),
dependents_
(
rhs
.
dependents_
),
married_
(
rhs
.
married_
)
{}
virtual
~
Employee
();
void
AddDependent
(
const
Dependent
&
dependent
)
{
...
...
include/rapidjson/document.h
View file @
a6eb15d2
...
...
@@ -31,6 +31,7 @@ RAPIDJSON_DIAG_OFF(4127) // conditional expression is constant
RAPIDJSON_DIAG_PUSH
RAPIDJSON_DIAG_OFF
(
padded
)
RAPIDJSON_DIAG_OFF
(
switch
-
enum
)
RAPIDJSON_DIAG_OFF
(
c
++
98
-
compat
)
#endif
#ifdef __GNUC__
...
...
@@ -141,6 +142,7 @@ public:
Otherwise, the copy constructor is implicitly defined.
*/
GenericMemberIterator
(
const
NonConstIterator
&
it
)
:
ptr_
(
it
.
ptr_
)
{}
Iterator
&
operator
=
(
const
NonConstIterator
&
it
)
{
ptr_
=
it
.
ptr_
;
return
*
this
;
}
//! @name stepping
//@{
...
...
@@ -314,8 +316,6 @@ struct GenericStringRef {
const
SizeType
length
;
//!< length of the string (excluding the trailing NULL terminator)
private
:
//! Disallow copy-assignment
GenericStringRef
operator
=
(
const
GenericStringRef
&
);
//! Disallow construction from non-const array
template
<
SizeType
N
>
GenericStringRef
(
CharType
(
&
str
)[
N
])
/* = delete */
;
...
...
include/rapidjson/internal/stack.h
View file @
a6eb15d2
...
...
@@ -18,6 +18,11 @@
#include "../rapidjson.h"
#include "swap.h"
#if defined(__clang__)
RAPIDJSON_DIAG_PUSH
RAPIDJSON_DIAG_OFF
(
c
++
98
-
compat
)
#endif
RAPIDJSON_NAMESPACE_BEGIN
namespace
internal
{
...
...
@@ -203,4 +208,8 @@ private:
}
// namespace internal
RAPIDJSON_NAMESPACE_END
#if defined(__clang__)
RAPIDJSON_DIAG_POP
#endif
#endif // RAPIDJSON_STACK_H_
include/rapidjson/internal/swap.h
View file @
a6eb15d2
...
...
@@ -17,6 +17,11 @@
#include "../rapidjson.h"
#if defined(__clang__)
RAPIDJSON_DIAG_PUSH
RAPIDJSON_DIAG_OFF
(
c
++
98
-
compat
)
#endif
RAPIDJSON_NAMESPACE_BEGIN
namespace
internal
{
...
...
@@ -34,4 +39,8 @@ inline void Swap(T& a, T& b) RAPIDJSON_NOEXCEPT {
}
// namespace internal
RAPIDJSON_NAMESPACE_END
#if defined(__clang__)
RAPIDJSON_DIAG_POP
#endif
#endif // RAPIDJSON_INTERNAL_SWAP_H_
include/rapidjson/stringbuffer.h
View file @
a6eb15d2
...
...
@@ -23,6 +23,11 @@
#include "internal/stack.h"
#if defined(__clang__)
RAPIDJSON_DIAG_PUSH
RAPIDJSON_DIAG_OFF
(
c
++
98
-
compat
)
#endif
RAPIDJSON_NAMESPACE_BEGIN
//! Represents an in-memory output stream.
...
...
@@ -103,4 +108,8 @@ inline void PutN(GenericStringBuffer<UTF8<> >& stream, char c, size_t n) {
RAPIDJSON_NAMESPACE_END
#if defined(__clang__)
RAPIDJSON_DIAG_POP
#endif
#endif // RAPIDJSON_STRINGBUFFER_H_
test/unittest/documenttest.cpp
View file @
a6eb15d2
...
...
@@ -21,6 +21,12 @@
#include <sstream>
#include <algorithm>
#ifdef __clang__
RAPIDJSON_DIAG_PUSH
RAPIDJSON_DIAG_OFF
(
c
++
98
-
compat
)
RAPIDJSON_DIAG_OFF
(
missing
-
variable
-
declarations
)
#endif
using
namespace
rapidjson
;
template
<
typename
DocumentType
>
...
...
@@ -573,3 +579,7 @@ TYPED_TEST(DocumentMove, MoveAssignmentStack) {
// Document d2;
// d1 = d2;
//}
#ifdef __clang__
RAPIDJSON_DIAG_POP
#endif
test/unittest/readertest.cpp
View file @
a6eb15d2
...
...
@@ -31,6 +31,7 @@ RAPIDJSON_DIAG_OFF(missing-noreturn)
#ifdef __clang__
RAPIDJSON_DIAG_PUSH
RAPIDJSON_DIAG_OFF
(
variadic
-
macros
)
RAPIDJSON_DIAG_OFF
(
c
++
98
-
compat
-
pedantic
)
#endif
template
<
bool
expect
>
...
...
test/unittest/stringbuffertest.cpp
View file @
a6eb15d2
...
...
@@ -16,6 +16,11 @@
#include "rapidjson/stringbuffer.h"
#include "rapidjson/writer.h"
#ifdef __clang__
RAPIDJSON_DIAG_PUSH
RAPIDJSON_DIAG_OFF
(
c
++
98
-
compat
)
#endif
using
namespace
rapidjson
;
TEST
(
StringBuffer
,
InitialSize
)
{
...
...
@@ -148,3 +153,7 @@ TEST(StringBuffer, MoveAssignment) {
}
#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS
#ifdef __clang__
RAPIDJSON_DIAG_POP
#endif
test/unittest/unittest.cpp
View file @
a6eb15d2
...
...
@@ -15,8 +15,19 @@
#include "unittest.h"
#include "rapidjson/rapidjson.h"
#ifdef __clang__
#pragma GCC diagnostic push
#if __has_warning("-Wdeprecated")
#pragma GCC diagnostic ignored "-Wdeprecated"
#endif
#endif
AssertException
::~
AssertException
()
throw
()
{}
#ifdef __clang__
#pragma GCC diagnostic pop
#endif
int
main
(
int
argc
,
char
**
argv
)
{
::
testing
::
InitGoogleTest
(
&
argc
,
argv
);
...
...
test/unittest/unittest.h
View file @
a6eb15d2
...
...
@@ -99,12 +99,24 @@ inline FILE* TempFile(char *filename) {
#pragma warning(disable : 4127)
#endif
#ifdef __clang__
#pragma GCC diagnostic push
#if __has_warning("-Wdeprecated")
#pragma GCC diagnostic ignored "-Wdeprecated"
#endif
#endif
class
AssertException
:
public
std
::
logic_error
{
public
:
AssertException
(
const
char
*
w
)
:
std
::
logic_error
(
w
)
{}
AssertException
(
const
AssertException
&
rhs
)
:
std
::
logic_error
(
rhs
)
{}
virtual
~
AssertException
()
throw
();
};
#ifdef __clang__
#pragma GCC diagnostic pop
#endif
#define RAPIDJSON_ASSERT(x) if (!(x)) throw AssertException(RAPIDJSON_STRINGIFY(x))
class
Random
{
...
...
test/unittest/valuetest.cpp
View file @
a6eb15d2
...
...
@@ -16,6 +16,11 @@
#include "rapidjson/document.h"
#include <algorithm>
#ifdef __clang__
RAPIDJSON_DIAG_PUSH
RAPIDJSON_DIAG_OFF
(
c
++
98
-
compat
)
#endif
using
namespace
rapidjson
;
TEST
(
Value
,
DefaultConstructor
)
{
...
...
@@ -764,15 +769,15 @@ TEST(Value, Array) {
#if RAPIDJSON_HAS_CXX11_RVALUE_REFS
// PushBack(GenericValue&&, Allocator&);
{
Value
y
(
kArrayType
);
y
.
PushBack
(
Value
(
true
),
allocator
);
y
.
PushBack
(
std
::
move
(
Value
(
kArrayType
).
PushBack
(
Value
(
1
),
allocator
).
PushBack
(
"foo"
,
allocator
)),
allocator
);
EXPECT_EQ
(
2u
,
y
.
Size
());
EXPECT_TRUE
(
y
[
0
].
IsTrue
());
EXPECT_TRUE
(
y
[
1
].
IsArray
());
EXPECT_EQ
(
2u
,
y
[
1
].
Size
());
EXPECT_TRUE
(
y
[
1
][
0
].
IsInt
());
EXPECT_TRUE
(
y
[
1
][
1
].
IsString
());
Value
y
2
(
kArrayType
);
y
2
.
PushBack
(
Value
(
true
),
allocator
);
y
2
.
PushBack
(
std
::
move
(
Value
(
kArrayType
).
PushBack
(
Value
(
1
),
allocator
).
PushBack
(
"foo"
,
allocator
)),
allocator
);
EXPECT_EQ
(
2u
,
y
2
.
Size
());
EXPECT_TRUE
(
y
2
[
0
].
IsTrue
());
EXPECT_TRUE
(
y
2
[
1
].
IsArray
());
EXPECT_EQ
(
2u
,
y
2
[
1
].
Size
());
EXPECT_TRUE
(
y
2
[
1
][
0
].
IsInt
());
EXPECT_TRUE
(
y
2
[
1
][
1
].
IsString
());
}
#endif
...
...
@@ -1354,3 +1359,27 @@ TEST(Value, AcceptTerminationByHandler) {
TEST_TERMINATION
(
11
,
"{
\"
a
\"
:[]}"
);
TEST_TERMINATION
(
12
,
"{
\"
a
\"
:[]}"
);
}
struct
ValueIntComparer
{
bool
operator
()(
const
Value
&
lhs
,
const
Value
&
rhs
)
const
{
return
lhs
.
GetInt
()
<
rhs
.
GetInt
();
}
};
#if RAPIDJSON_HAS_CXX11_RVALUE_REFS
TEST
(
Value
,
Sorting
)
{
Value
::
AllocatorType
allocator
;
Value
a
(
kArrayType
);
a
.
PushBack
(
5
,
allocator
);
a
.
PushBack
(
1
,
allocator
);
a
.
PushBack
(
3
,
allocator
);
std
::
sort
(
a
.
Begin
(),
a
.
End
(),
ValueIntComparer
());
EXPECT_EQ
(
1
,
a
[
0
].
GetInt
());
EXPECT_EQ
(
3
,
a
[
1
].
GetInt
());
EXPECT_EQ
(
5
,
a
[
2
].
GetInt
());
}
#endif
#ifdef __clang__
RAPIDJSON_DIAG_POP
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment