Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
json
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Libraries
json
Commits
5b1f69ce
Commit
5b1f69ce
authored
Dec 28, 2014
by
Niels
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
+ overworked comments
parent
45b101d2
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
0 additions
and
249 deletions
+0
-249
src/JSON.cc
src/JSON.cc
+0
-249
No files found.
src/JSON.cc
View file @
5b1f69ce
...
...
@@ -38,8 +38,6 @@ Construct an empty JSON given the type.
@param t the type from the @ref JSON::type enumeration.
@post Memory for array, object, and string are allocated.
@test Tested in block "Basics" for every type.
*/
JSON
::
JSON
(
const
value_type
t
)
noexcept
:
_type
(
t
)
...
...
@@ -85,8 +83,6 @@ JSON::JSON(const value_type t) noexcept
/*!
Construct a null JSON object.
@test Tested in block "Create from value" for "null".
*/
JSON
::
JSON
(
std
::
nullptr_t
)
noexcept
:
JSON
()
{}
...
...
@@ -95,72 +91,43 @@ JSON::JSON(std::nullptr_t) noexcept : JSON()
Construct a string JSON object.
@param s a string to initialize the JSON object with
@test Tested in block "Create from value" for "string".
*/
JSON
::
JSON
(
const
std
::
string
&
s
)
noexcept
:
_type
(
value_type
::
string
),
_value
(
new
string_t
(
s
))
{}
/*!
@test Tested in block "Create from value" for "string".
*/
JSON
::
JSON
(
std
::
string
&&
s
)
noexcept
:
_type
(
value_type
::
string
),
_value
(
new
string_t
(
std
::
move
(
s
)))
{}
/*!
@test Tested in block "Create from value" for "string".
*/
JSON
::
JSON
(
const
char
*
s
)
noexcept
:
_type
(
value_type
::
string
),
_value
(
new
string_t
(
s
))
{}
/*!
@test Tested in block "Create from value" for "boolean".
*/
JSON
::
JSON
(
const
bool
b
)
noexcept
:
_type
(
value_type
::
boolean
),
_value
(
b
)
{}
/*!
@test Tested in block "Create from value" for "number (int)".
*/
JSON
::
JSON
(
const
int
i
)
noexcept
:
_type
(
value_type
::
number
),
_value
(
i
)
{}
/*!
@test Tested in block "Create from value" for "number (float)".
*/
JSON
::
JSON
(
const
double
f
)
noexcept
:
_type
(
value_type
::
number_float
),
_value
(
f
)
{}
/*!
@test Tested in block "Create from value" for "array".
*/
JSON
::
JSON
(
const
array_t
&
a
)
noexcept
:
_type
(
value_type
::
array
),
_value
(
new
array_t
(
a
))
{}
/*!
@test Tested in block "Create from value" for "array".
*/
JSON
::
JSON
(
array_t
&&
a
)
noexcept
:
_type
(
value_type
::
array
),
_value
(
new
array_t
(
std
::
move
(
a
)))
{}
/*!
@test Tested in block "Create from value" for "array".
*/
JSON
::
JSON
(
const
object_t
&
o
)
noexcept
:
_type
(
value_type
::
object
),
_value
(
new
object_t
(
o
))
{}
/*!
@test Tested in block "Create from value" for "array".
*/
JSON
::
JSON
(
object_t
&&
o
)
noexcept
:
_type
(
value_type
::
object
),
_value
(
new
object_t
(
std
::
move
(
o
)))
{}
...
...
@@ -181,9 +148,6 @@ as is to create an array.
first element is again an arrays as array.
@todo Create test case for described bug.
@test Tested in block "Create from value" for "array".
@test Tested in block "Create from value" for "object".
*/
JSON
::
JSON
(
list_init_t
a
)
noexcept
{
...
...
@@ -217,8 +181,6 @@ JSON::JSON(list_init_t a) noexcept
A copy constructor for the JSON class.
@param o the JSON object to copy
@test Tested in block "Basics" for every type.
*/
JSON
::
JSON
(
const
JSON
&
o
)
noexcept
:
_type
(
o
.
_type
)
...
...
@@ -268,8 +230,6 @@ A move constructor for the JSON class.
@param o the JSON object to move
@post The JSON object \p o is invalidated.
@test Tested in block "Basics" for every type.
*/
JSON
::
JSON
(
JSON
&&
o
)
noexcept
:
_type
(
std
::
move
(
o
.
_type
)),
_value
(
std
::
move
(
o
.
_value
))
...
...
@@ -283,8 +243,6 @@ A copy assignment operator for the JSON class, following the copy-and-swap
idiom.
@param o A JSON object to assign to this object.
@test Tested in block "Basics" for every type.
*/
JSON
&
JSON
::
operator
=
(
JSON
o
)
noexcept
{
...
...
@@ -293,9 +251,6 @@ JSON& JSON::operator=(JSON o) noexcept
return
*
this
;
}
/*!
@test Tested in block "Basics" for every type.
*/
JSON
::~
JSON
()
noexcept
{
switch
(
_type
)
...
...
@@ -340,8 +295,6 @@ JSON JSON::parse(std::string& s)
/*!
@param s a string representation of a JSON object
@return a JSON object
@test Teste in block "Parser" for every type.
*/
JSON
JSON
::
parse
(
const
char
*
s
)
{
...
...
@@ -351,9 +304,6 @@ JSON JSON::parse(const char* s)
}
/*!
@test Tested in block "Basics" for every type.
*/
const
std
::
string
JSON
::
_typename
()
const
noexcept
{
switch
(
_type
)
...
...
@@ -397,8 +347,6 @@ const std::string JSON::_typename() const noexcept
/*!
@exception std::logic_error if the function is called for JSON objects whose
type is not string
@test Tested in block "Basics" for every type (including exceptions).
*/
template
<
>
std
::
string
JSON
::
get
()
const
...
...
@@ -415,8 +363,6 @@ std::string JSON::get() const
/*!
@exception std::logic_error if the function is called for JSON objects whose
type is not number (int or float)
@test Tested in block "Basics" for every type (including exceptions).
*/
template
<
>
int
JSON
::
get
()
const
...
...
@@ -435,8 +381,6 @@ int JSON::get() const
/*!
@exception std::logic_error if the function is called for JSON objects whose
type is not number (int or float)
@test Tested in block "Basics" for every type (including exceptions).
*/
template
<
>
double
JSON
::
get
()
const
...
...
@@ -455,8 +399,6 @@ double JSON::get() const
/*!
@exception std::logic_error if the function is called for JSON objects whose
type is not boolean
@test Tested in block "Basics" for every type (including exceptions).
*/
template
<
>
bool
JSON
::
get
()
const
...
...
@@ -473,8 +415,6 @@ bool JSON::get() const
/*!
@exception std::logic_error if the function is called for JSON objects whose
type is an object
@test Tested in block "Basics" for every type (including exceptions).
*/
template
<
>
JSON
::
array_t
JSON
::
get
()
const
...
...
@@ -496,8 +436,6 @@ JSON::array_t JSON::get() const
/*!
@exception std::logic_error if the function is called for JSON objects whose
type is not object
@test Tested in block "Basics" for every type (including exceptions).
*/
template
<
>
JSON
::
object_t
JSON
::
get
()
const
...
...
@@ -512,60 +450,36 @@ JSON::object_t JSON::get() const
}
}
/*!
@test Tested in block "Basics" for every type.
*/
JSON
::
operator
const
std
::
string
()
const
{
return
get
<
std
::
string
>
();
}
/*!
@test Tested in block "Basics" for every type.
@test Tested in block "Create from value" for "number (int)".
*/
JSON
::
operator
int
()
const
{
return
get
<
int
>
();
}
/*!
@test Tested in block "Basics" for every type.
@test Tested in block "Create from value" for "number (float)".
*/
JSON
::
operator
double
()
const
{
return
get
<
double
>
();
}
/*!
@test Tested in block "Basics" for every type.
@test Tested in block "Create from value" for "boolean".
*/
JSON
::
operator
bool
()
const
{
return
get
<
bool
>
();
}
/*!
@test Tested in block "Basics" for every type.
*/
JSON
::
operator
array_t
()
const
{
return
get
<
array_t
>
();
}
/*!
@test Tested in block "Basics" for every type.
*/
JSON
::
operator
object_t
()
const
{
return
get
<
object_t
>
();
}
/*!
@test Tested in block "Basics" for every type.
*/
const
std
::
string
JSON
::
toString
()
const
noexcept
{
switch
(
_type
)
...
...
@@ -634,45 +548,30 @@ const std::string JSON::toString() const noexcept
// ADDING ELEMENTS TO OBJECTS AND ARRAYS //
///////////////////////////////////////////
/*!
@test Tested in block "Array operators" for "array".
*/
JSON
&
JSON
::
operator
+=
(
const
JSON
&
o
)
{
push_back
(
o
);
return
*
this
;
}
/*!
@test Tested in block "Array operators" for "array".
*/
JSON
&
JSON
::
operator
+=
(
const
std
::
string
&
s
)
{
push_back
(
JSON
(
s
));
return
*
this
;
}
/*!
@test Tested in block "Array operators" for "array".
*/
JSON
&
JSON
::
operator
+=
(
const
char
*
s
)
{
push_back
(
JSON
(
s
));
return
*
this
;
}
/*!
@test Tested in block "Array operators" for "array".
*/
JSON
&
JSON
::
operator
+=
(
std
::
nullptr_t
)
{
push_back
(
JSON
());
return
*
this
;
}
/*!
@test Tested in block "Array operators" for "array".
*/
JSON
&
JSON
::
operator
+=
(
bool
b
)
{
push_back
(
JSON
(
b
));
...
...
@@ -684,8 +583,6 @@ Adds a number (int) to the current object. This is done by wrapping the number
into a JSON and call push_back for this.
@param i A number (int) to add to the array.
@test Tested in block "Array operators" for "array".
*/
JSON
&
JSON
::
operator
+=
(
int
i
)
{
...
...
@@ -698,8 +595,6 @@ Adds a number (float) to the current object. This is done by wrapping the
number into a JSON and call push_back for this.
@param f A number (float) to add to the array.
@test Tested in block "Array operators" for "array".
*/
JSON
&
JSON
::
operator
+=
(
double
f
)
{
...
...
@@ -737,8 +632,6 @@ an array, the passed element is added to the array.
does not support addition to an array (e.g., int or string).
@note Null objects are silently transformed into an array before the addition.
@test Tested in block "Array operators" for "array".
*/
void
JSON
::
push_back
(
const
JSON
&
o
)
{
...
...
@@ -776,8 +669,6 @@ an array, the passed element is added to the array using move semantics.
@note Null objects are silently transformed into an array before the addition.
@note This function applies move semantics for the given element.
@test Tested in block "Array operators" for "array".
*/
void
JSON
::
push_back
(
JSON
&&
o
)
{
...
...
@@ -800,33 +691,21 @@ void JSON::push_back(JSON&& o)
_value
.
array
->
emplace_back
(
std
::
move
(
o
));
}
/*!
@test Tested in block "Array operators" for "array".
*/
void
JSON
::
push_back
(
const
std
::
string
&
s
)
{
push_back
(
JSON
(
s
));
}
/*!
@test Tested in block "Array operators" for "array".
*/
void
JSON
::
push_back
(
const
char
*
s
)
{
push_back
(
JSON
(
s
));
}
/*!
@test Tested in block "Array operators" for "array".
*/
void
JSON
::
push_back
(
std
::
nullptr_t
)
{
push_back
(
JSON
());
}
/*!
@test Tested in block "Array operators" for "array".
*/
void
JSON
::
push_back
(
bool
b
)
{
push_back
(
JSON
(
b
));
...
...
@@ -837,8 +716,6 @@ Adds a number (int) to the current object. This is done by wrapping the number
into a JSON and call push_back for this.
@param i A number (int) to add to the array.
@test Tested in block "Array operators" for "array".
*/
void
JSON
::
push_back
(
int
i
)
{
...
...
@@ -850,8 +727,6 @@ Adds a number (float) to the current object. This is done by wrapping the
number into a JSON and call push_back for this.
@param f A number (float) to add to the array.
@test Tested in block "Array operators" for "array".
*/
void
JSON
::
push_back
(
double
f
)
{
...
...
@@ -919,8 +794,6 @@ index. Bounds will not be checked.
@pre Object is an array.
@exception std::domain_error if object is not an array
@test Tested in block "Array operators" for "array" (including exceptions).
*/
JSON
&
JSON
::
operator
[](
const
int
index
)
{
...
...
@@ -952,8 +825,6 @@ index. Bounds will not be checked.
@pre Object is an array.
@exception std::domain_error if object is not an array
@test Tested in block "Array operators" for "array" (including exceptions).
*/
const
JSON
&
JSON
::
operator
[](
const
int
index
)
const
{
...
...
@@ -984,8 +855,6 @@ index. Bounds will be checked.
@pre Object is an array.
@exception std::domain_error if object is not an array
@exception std::out_of_range if index is out of range (via std::vector::at)
@test Tested in block "Array operators" for "array" (including exceptions).
*/
JSON
&
JSON
::
at
(
const
int
index
)
{
...
...
@@ -1018,8 +887,6 @@ index. Bounds will be checked.
@pre Object is an array.
@exception std::domain_error if object is not an array
@exception std::out_of_range if index is out of range (via std::vector::at)
@test Tested in block "Array operators" for "array" (including exceptions).
*/
const
JSON
&
JSON
::
at
(
const
int
index
)
const
{
...
...
@@ -1193,8 +1060,6 @@ Returns the size of the JSON object.
string), and 0 for null.
@invariant The size is reported as 0 if and only if empty() would return true.
@test Tested in block "Basics" for every type.
*/
size_t
JSON
::
size
()
const
noexcept
{
...
...
@@ -1230,8 +1095,6 @@ Returns whether a JSON object is empty.
(array and object).
@invariant Empty would report true if and only if size() would return 0.
@test Tested in block "Basics" for every type.
*/
bool
JSON
::
empty
()
const
noexcept
{
...
...
@@ -1309,33 +1172,21 @@ void JSON::clear() noexcept
}
}
/*!
@test Tested in block "Basics" for every type.
*/
JSON
::
value_type
JSON
::
type
()
const
noexcept
{
return
_type
;
}
/*!
@test Tested in block "Object operators" for "object".
*/
JSON
::
iterator
JSON
::
find
(
const
std
::
string
&
key
)
{
return
find
(
key
.
c_str
());
}
/*!
@test Tested in block "Object operators" for "object".
*/
JSON
::
const_iterator
JSON
::
find
(
const
std
::
string
&
key
)
const
{
return
find
(
key
.
c_str
());
}
/*!
@test Tested in block "Object operators" for "object".
*/
JSON
::
iterator
JSON
::
find
(
const
char
*
key
)
{
if
(
_type
!=
value_type
::
object
)
...
...
@@ -1358,9 +1209,6 @@ JSON::iterator JSON::find(const char* key)
}
}
/*!
@test Tested in block "Object operators" for "object".
*/
JSON
::
const_iterator
JSON
::
find
(
const
char
*
key
)
const
{
if
(
_type
!=
value_type
::
object
)
...
...
@@ -1385,25 +1233,17 @@ JSON::const_iterator JSON::find(const char* key) const
/*!
@return the payload of the JSON object.
@test Tested in block "Basics" for every type.
*/
JSON
::
value
JSON
::
data
()
noexcept
{
return
_value
;
}
/*!
@test Tested in block "Basics" for every type.
*/
const
JSON
::
value
JSON
::
data
()
const
noexcept
{
return
_value
;
}
/*!
@test Tested in block "Basics" for every type.
*/
bool
JSON
::
operator
==
(
const
JSON
&
o
)
const
noexcept
{
switch
(
_type
)
...
...
@@ -1483,55 +1323,31 @@ bool JSON::operator!=(const JSON& o) const noexcept
}
/*!
@test Tested in block "Iterators" for "array".
@test Tested in block "Iterators" for "object".
*/
JSON
::
iterator
JSON
::
begin
()
noexcept
{
return
JSON
::
iterator
(
this
);
}
/*!
@test Tested in block "Iterators" for "array".
@test Tested in block "Iterators" for "object".
*/
JSON
::
iterator
JSON
::
end
()
noexcept
{
return
JSON
::
iterator
();
}
/*!
@test Tested in block "Iterators" for "array".
@test Tested in block "Iterators" for "object".
*/
JSON
::
const_iterator
JSON
::
begin
()
const
noexcept
{
return
JSON
::
const_iterator
(
this
);
}
/*!
@test Tested in block "Iterators" for "array".
@test Tested in block "Iterators" for "object".
*/
JSON
::
const_iterator
JSON
::
end
()
const
noexcept
{
return
JSON
::
const_iterator
();
}
/*!
@test Tested in block "Iterators" for "array".
@test Tested in block "Iterators" for "object".
*/
JSON
::
const_iterator
JSON
::
cbegin
()
const
noexcept
{
return
JSON
::
const_iterator
(
this
);
}
/*!
@test Tested in block "Iterators" for "array".
@test Tested in block "Iterators" for "object".
*/
JSON
::
const_iterator
JSON
::
cend
()
const
noexcept
{
return
JSON
::
const_iterator
();
...
...
@@ -1596,10 +1412,6 @@ JSON::iterator::~iterator()
delete
_oi
;
}
/*!
@test Tested in block "Iterators" for "array".
@test Tested in block "Iterators" for "object".
*/
JSON
::
iterator
&
JSON
::
iterator
::
operator
=
(
JSON
::
iterator
o
)
{
std
::
swap
(
_object
,
o
.
_object
);
...
...
@@ -1608,10 +1420,6 @@ JSON::iterator& JSON::iterator::operator=(JSON::iterator o)
return
*
this
;
}
/*!
@test Tested in block "Iterators" for "array".
@test Tested in block "Object operators" for "object".
*/
bool
JSON
::
iterator
::
operator
==
(
const
JSON
::
iterator
&
o
)
const
{
if
(
_object
!=
o
.
_object
)
...
...
@@ -1651,20 +1459,11 @@ bool JSON::iterator::operator==(const JSON::iterator& o) const
return
true
;
}
/*!
@test Tested in block "Iterators" for "array".
@test Tested in block "Object operators" for "object".
@test Tested in block "Iterators" for "object".
*/
bool
JSON
::
iterator
::
operator
!=
(
const
JSON
::
iterator
&
o
)
const
{
return
not
operator
==
(
o
);
}
/*!
@test Tested in block "Iterators" for "array".
@test Tested in block "Iterators" for "object".
*/
JSON
::
iterator
&
JSON
::
iterator
::
operator
++
()
{
// iterator cannot be incremented
...
...
@@ -1703,10 +1502,6 @@ JSON::iterator& JSON::iterator::operator++()
return
*
this
;
}
/*!
@test Tested in block "Iterators" for "array".
@test Tested in block "Iterators" for "object".
*/
JSON
&
JSON
::
iterator
::
operator
*
()
const
{
if
(
_object
==
nullptr
)
...
...
@@ -1735,10 +1530,6 @@ JSON& JSON::iterator::operator*() const
}
}
/*!
@test Tested in block "Iterators" for "array".
@test Tested in block "Iterators" for "object".
*/
JSON
*
JSON
::
iterator
::
operator
->
()
const
{
if
(
_object
==
nullptr
)
...
...
@@ -1767,10 +1558,6 @@ JSON* JSON::iterator::operator->() const
}
}
/*!
@test Tested in block "Object operators" for "object".
@test Tested in block "Iterators" for "object".
*/
std
::
string
JSON
::
iterator
::
key
()
const
{
if
(
_object
!=
nullptr
and
_object
->
_type
==
value_type
::
object
)
...
...
@@ -1783,10 +1570,6 @@ std::string JSON::iterator::key() const
}
}
/*!
@test Tested in block "Object operators" for "object".
@test Tested in block "Iterators" for "object".
*/
JSON
&
JSON
::
iterator
::
value
()
const
{
if
(
_object
==
nullptr
)
...
...
@@ -1900,10 +1683,6 @@ JSON::const_iterator::~const_iterator()
delete
_oi
;
}
/*!
@test Tested in block "Iterators" for "array".
@test Tested in block "Iterators" for "object".
*/
JSON
::
const_iterator
&
JSON
::
const_iterator
::
operator
=
(
JSON
::
const_iterator
o
)
{
std
::
swap
(
_object
,
o
.
_object
);
...
...
@@ -1912,10 +1691,6 @@ JSON::const_iterator& JSON::const_iterator::operator=(JSON::const_iterator o)
return
*
this
;
}
/*!
@test Tested in block "Object operators" for "object".
@test Tested in block "Iterators" for "object".
*/
bool
JSON
::
const_iterator
::
operator
==
(
const
JSON
::
const_iterator
&
o
)
const
{
if
(
_object
!=
o
.
_object
)
...
...
@@ -1955,19 +1730,11 @@ bool JSON::const_iterator::operator==(const JSON::const_iterator& o) const
return
true
;
}
/*!
@test Tested in block "Object operators" for "object".
@test Tested in block "Iterators" for "object".
*/
bool
JSON
::
const_iterator
::
operator
!=
(
const
JSON
::
const_iterator
&
o
)
const
{
return
not
operator
==
(
o
);
}
/*!
@test Tested in block "Iterators" for "array".
@test Tested in block "Iterators" for "object".
*/
JSON
::
const_iterator
&
JSON
::
const_iterator
::
operator
++
()
{
// iterator cannot be incremented
...
...
@@ -2006,10 +1773,6 @@ JSON::const_iterator& JSON::const_iterator::operator++()
return
*
this
;
}
/*!
@test Tested in block "Iterators" for "array".
@test Tested in block "Iterators" for "object".
*/
const
JSON
&
JSON
::
const_iterator
::
operator
*
()
const
{
if
(
_object
==
nullptr
)
...
...
@@ -2038,10 +1801,6 @@ const JSON& JSON::const_iterator::operator*() const
}
}
/*!
@test Tested in block "Iterators" for "array".
@test Tested in block "Iterators" for "object".
*/
const
JSON
*
JSON
::
const_iterator
::
operator
->
()
const
{
if
(
_object
==
nullptr
)
...
...
@@ -2070,10 +1829,6 @@ const JSON* JSON::const_iterator::operator->() const
}
}
/*!
@test Tested in block "Object operators" for "object".
@test Tested in block "Iterators" for "object".
*/
std
::
string
JSON
::
const_iterator
::
key
()
const
{
if
(
_object
!=
nullptr
and
_object
->
_type
==
value_type
::
object
)
...
...
@@ -2086,10 +1841,6 @@ std::string JSON::const_iterator::key() const
}
}
/*!
@test Tested in block "Object operators" for "object".
@test Tested in block "Iterators" for "object".
*/
const
JSON
&
JSON
::
const_iterator
::
value
()
const
{
if
(
_object
==
nullptr
)
...
...
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