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
4bb51265
Commit
4bb51265
authored
Jun 21, 2015
by
Niels
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
more documentation
parent
d972483b
Changes
9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
186 additions
and
32 deletions
+186
-32
Makefile
Makefile
+1
-0
docs/examples/basic_json__copyassignment.cpp
docs/examples/basic_json__copyassignment.cpp
+17
-0
docs/examples/basic_json__copyassignment.output
docs/examples/basic_json__copyassignment.output
+2
-0
docs/examples/basic_json__moveconstructor.cpp
docs/examples/basic_json__moveconstructor.cpp
+16
-0
docs/examples/basic_json__moveconstructor.output
docs/examples/basic_json__moveconstructor.output
+2
-0
docs/examples/dump.cpp
docs/examples/dump.cpp
+20
-0
docs/examples/dump.output
docs/examples/dump.output
+34
-0
src/json.hpp
src/json.hpp
+47
-16
src/json.hpp.re2c
src/json.hpp.re2c
+47
-16
No files found.
Makefile
View file @
4bb51265
...
@@ -50,6 +50,7 @@ update_doxygen_online:
...
@@ -50,6 +50,7 @@ update_doxygen_online:
rm
-fr
html
rm
-fr
html
mv
/tmp/github-html html
mv
/tmp/github-html html
-
cd
html
;
git
rm
$(
shell
git ls-files
--deleted
)
-
cd
html
;
git
rm
$(
shell
git ls-files
--deleted
)
git add html
git commit
-m
"Doxygen update"
git commit
-m
"Doxygen update"
git checkout master
git checkout master
...
...
docs/examples/basic_json__copyassignment.cpp
0 → 100644
View file @
4bb51265
#include <json.hpp>
using
namespace
nlohmann
;
int
main
()
{
// create JSON values
json
a
=
23
;
json
b
=
42
;
// copy-assign a to b
b
=
a
;
// serialize the JSON arrays
std
::
cout
<<
a
<<
'\n'
;
std
::
cout
<<
b
<<
'\n'
;
}
docs/examples/basic_json__copyassignment.output
0 → 100644
View file @
4bb51265
23
23
docs/examples/basic_json__moveconstructor.cpp
0 → 100644
View file @
4bb51265
#include <json.hpp>
using
namespace
nlohmann
;
int
main
()
{
// create a JSON value
json
a
=
23
;
// move contents of a to b
json
b
(
std
::
move
(
a
));
// serialize the JSON arrays
std
::
cout
<<
a
<<
'\n'
;
std
::
cout
<<
b
<<
'\n'
;
}
docs/examples/basic_json__moveconstructor.output
0 → 100644
View file @
4bb51265
null
23
docs/examples/dump.cpp
0 → 100644
View file @
4bb51265
#include <json.hpp>
using
namespace
nlohmann
;
int
main
()
{
// create JSON values
json
j_object
=
{{
"one"
,
1
},
{
"two"
,
2
}};
json
j_array
=
{
1
,
2
,
4
,
8
,
16
};
// call dump()
std
::
cout
<<
j_object
.
dump
()
<<
"
\n\n
"
;
std
::
cout
<<
j_object
.
dump
(
-
1
)
<<
"
\n\n
"
;
std
::
cout
<<
j_object
.
dump
(
0
)
<<
"
\n\n
"
;
std
::
cout
<<
j_object
.
dump
(
4
)
<<
"
\n\n
"
;
std
::
cout
<<
j_array
.
dump
()
<<
"
\n\n
"
;
std
::
cout
<<
j_array
.
dump
(
-
1
)
<<
"
\n\n
"
;
std
::
cout
<<
j_array
.
dump
(
0
)
<<
"
\n\n
"
;
std
::
cout
<<
j_array
.
dump
(
4
)
<<
"
\n\n
"
;
}
docs/examples/dump.output
0 → 100644
View file @
4bb51265
{"one":1,"two":2}
{"one":1,"two":2}
{
"one": 1,
"two": 2
}
{
"one": 1,
"two": 2
}
[1,2,4,8,16]
[1,2,4,8,16]
[
1,
2,
4,
8,
16
]
[
1,
2,
4,
8,
16
]
src/json.hpp
View file @
4bb51265
...
@@ -85,16 +85,16 @@ struct has_mapped_type
...
@@ -85,16 +85,16 @@ struct has_mapped_type
(@c std::allocator by default)
(@c std::allocator by default)
@requirement This class satisfies the Container requirements (see http://en.cppreference.com/w/cpp/concept/Container):
@requirement This class satisfies the Container requirements (see http://en.cppreference.com/w/cpp/concept/Container):
-
@ref
basic_json()
- basic_json()
-
@ref
basic_json(const basic_json&)
- basic_json(const basic_json&)
-
@ref
reference& operator=(basic_json)
- reference& operator=(basic_json)
-
@ref
~basic_json()
- ~basic_json()
-
@ref iterator begin(), @ref const_iterator begin(), @ref
const_iterator cbegin()
-
iterator begin(), const_iterator begin(),
const_iterator cbegin()
-
@ref iterator end(), @ref const_iterator end(), @ref
const_iterator cend()
-
iterator end(), const_iterator end(),
const_iterator cend()
-
@ref bool operator==(const_reference, const_reference), @ref
bool operator!=(const_reference, const_reference)
-
bool operator==(const_reference, const_reference),
bool operator!=(const_reference, const_reference)
-
@ref
void swap(reference other)
- void swap(reference other)
-
@ref size_type size(), @ref
size_type max_size()
-
size_type size(),
size_type max_size()
-
@ref
bool empty()
- bool empty()
@note ObjectType trick from http://stackoverflow.com/a/9860911
@note ObjectType trick from http://stackoverflow.com/a/9860911
...
@@ -686,7 +686,8 @@ class basic_json
...
@@ -686,7 +686,8 @@ class basic_json
3. In all other cases, the initializer list could not be interpreted as
3. In all other cases, the initializer list could not be interpreted as
JSON object type, so interpreting it as JSON array type is safe.
JSON object type, so interpreting it as JSON array type is safe.
With the rules described above, the following JSON values cannot be expressed by an initializer list:
With the rules described above, the following JSON values cannot be
expressed by an initializer list:
- the empty array (`[]`): use @ref array(list_init_t) with an empty
- the empty array (`[]`): use @ref array(list_init_t) with an empty
initializer list in this case
initializer list in this case
...
@@ -1037,7 +1038,22 @@ class basic_json
...
@@ -1037,7 +1038,22 @@ class basic_json
}
}
}
}
/// move constructor
/*!
@brief move constructor
Move constructor. Constructs a JSON value with the contents of the given
value @a other using move semantics. It "steals" the resources from @a
other and leaves it as JSON null value.
@param other value to move to this object
@post @a other is a JSON null value
@complexity Constant.
@liveexample{The code below shows the move constructor explicitly called
via std::move.,basic_json__moveconstructor}
*/
basic_json
(
basic_json
&&
other
)
noexcept
basic_json
(
basic_json
&&
other
)
noexcept
:
m_type
(
std
::
move
(
other
.
m_type
)),
:
m_type
(
std
::
move
(
other
.
m_type
)),
m_value
(
std
::
move
(
other
.
m_value
))
m_value
(
std
::
move
(
other
.
m_value
))
...
@@ -1050,14 +1066,22 @@ class basic_json
...
@@ -1050,14 +1066,22 @@ class basic_json
/*!
/*!
@brief copy assignment
@brief copy assignment
The copy assignment operator is expressed in terms of the copy constructor,
Copy assignment operator. Copies a JSON value via the "copy and swap"
destructor, and the swap() member function.
strategy: It is expressed in terms of the copy constructor, destructor, and
the swap() member function.
@param other value to copy from
@complexity Linear.
@complexity Linear.
@requirement This function satisfies the Container requirements:
@requirement This function satisfies the Container requirements:
- The complexity is linear.
- The complexity is linear.
@liveexample{The code below shows and example for the copy assignment. It
creates a copy of value `a` which is then swapped with `b`. Finally\, the
copy of `a` (which is the null value after the swap) is
destroyed.,basic_json__copyassignment}
@ingroup container
@ingroup container
*/
*/
reference
&
operator
=
(
basic_json
other
)
noexcept
(
reference
&
operator
=
(
basic_json
other
)
noexcept
(
...
@@ -1076,7 +1100,7 @@ class basic_json
...
@@ -1076,7 +1100,7 @@ class basic_json
/*!
/*!
@brief destructor
@brief destructor
Destroys the JSON value and frees all memory.
Destroys the JSON value and frees all
allocated
memory.
@complexity Linear.
@complexity Linear.
...
@@ -1137,7 +1161,7 @@ class basic_json
...
@@ -1137,7 +1161,7 @@ class basic_json
/*!
/*!
@brief serialization
@brief serialization
Serialization function for JSON
object
s. The function tries to mimick
Serialization function for JSON
value
s. The function tries to mimick
Python's @p json.dumps() function, and currently supports its @p indent
Python's @p json.dumps() function, and currently supports its @p indent
parameter.
parameter.
...
@@ -1146,6 +1170,13 @@ class basic_json
...
@@ -1146,6 +1170,13 @@ class basic_json
will only insert newlines. -1 (the default) selects the most compact
will only insert newlines. -1 (the default) selects the most compact
representation
representation
@return string containing the serialization of the JSON value
@complexity Linear.
@liveexample{The following example shows the effect of different @a indent
parameters to the result of the serializaion.,dump}
@see https://docs.python.org/2/library/json.html#json.dump
@see https://docs.python.org/2/library/json.html#json.dump
*/
*/
string_t
dump
(
const
int
indent
=
-
1
)
const
noexcept
string_t
dump
(
const
int
indent
=
-
1
)
const
noexcept
...
...
src/json.hpp.re2c
View file @
4bb51265
...
@@ -85,16 +85,16 @@ struct has_mapped_type
...
@@ -85,16 +85,16 @@ struct has_mapped_type
(@c std::allocator by default)
(@c std::allocator by default)
@requirement This class satisfies the Container requirements (see http://en.cppreference.com/w/cpp/concept/Container):
@requirement This class satisfies the Container requirements (see http://en.cppreference.com/w/cpp/concept/Container):
-
@ref
basic_json()
- basic_json()
-
@ref
basic_json(const basic_json&)
- basic_json(const basic_json&)
-
@ref
reference& operator=(basic_json)
- reference& operator=(basic_json)
-
@ref
~basic_json()
- ~basic_json()
-
@ref iterator begin(), @ref const_iterator begin(), @ref
const_iterator cbegin()
-
iterator begin(), const_iterator begin(),
const_iterator cbegin()
-
@ref iterator end(), @ref const_iterator end(), @ref
const_iterator cend()
-
iterator end(), const_iterator end(),
const_iterator cend()
-
@ref bool operator==(const_reference, const_reference), @ref
bool operator!=(const_reference, const_reference)
-
bool operator==(const_reference, const_reference),
bool operator!=(const_reference, const_reference)
-
@ref
void swap(reference other)
- void swap(reference other)
-
@ref size_type size(), @ref
size_type max_size()
-
size_type size(),
size_type max_size()
-
@ref
bool empty()
- bool empty()
@note ObjectType trick from http://stackoverflow.com/a/9860911
@note ObjectType trick from http://stackoverflow.com/a/9860911
...
@@ -686,7 +686,8 @@ class basic_json
...
@@ -686,7 +686,8 @@ class basic_json
3. In all other cases, the initializer list could not be interpreted as
3. In all other cases, the initializer list could not be interpreted as
JSON object type, so interpreting it as JSON array type is safe.
JSON object type, so interpreting it as JSON array type is safe.
With the rules described above, the following JSON values cannot be expressed by an initializer list:
With the rules described above, the following JSON values cannot be
expressed by an initializer list:
- the empty array (`[]`): use @ref array(list_init_t) with an empty
- the empty array (`[]`): use @ref array(list_init_t) with an empty
initializer list in this case
initializer list in this case
...
@@ -1037,7 +1038,22 @@ class basic_json
...
@@ -1037,7 +1038,22 @@ class basic_json
}
}
}
}
/// move constructor
/*!
@brief move constructor
Move constructor. Constructs a JSON value with the contents of the given
value @a other using move semantics. It "steals" the resources from @a
other and leaves it as JSON null value.
@param other value to move to this object
@post @a other is a JSON null value
@complexity Constant.
@liveexample{The code below shows the move constructor explicitly called
via std::move.,basic_json__moveconstructor}
*/
basic_json(basic_json&& other) noexcept
basic_json(basic_json&& other) noexcept
: m_type(std::move(other.m_type)),
: m_type(std::move(other.m_type)),
m_value(std::move(other.m_value))
m_value(std::move(other.m_value))
...
@@ -1050,14 +1066,22 @@ class basic_json
...
@@ -1050,14 +1066,22 @@ class basic_json
/*!
/*!
@brief copy assignment
@brief copy assignment
The copy assignment operator is expressed in terms of the copy constructor,
Copy assignment operator. Copies a JSON value via the "copy and swap"
destructor, and the swap() member function.
strategy: It is expressed in terms of the copy constructor, destructor, and
the swap() member function.
@param other value to copy from
@complexity Linear.
@complexity Linear.
@requirement This function satisfies the Container requirements:
@requirement This function satisfies the Container requirements:
- The complexity is linear.
- The complexity is linear.
@liveexample{The code below shows and example for the copy assignment. It
creates a copy of value `a` which is then swapped with `b`. Finally\, the
copy of `a` (which is the null value after the swap) is
destroyed.,basic_json__copyassignment}
@ingroup container
@ingroup container
*/
*/
reference& operator=(basic_json other) noexcept (
reference& operator=(basic_json other) noexcept (
...
@@ -1076,7 +1100,7 @@ class basic_json
...
@@ -1076,7 +1100,7 @@ class basic_json
/*!
/*!
@brief destructor
@brief destructor
Destroys the JSON value and frees all memory.
Destroys the JSON value and frees all
allocated
memory.
@complexity Linear.
@complexity Linear.
...
@@ -1137,7 +1161,7 @@ class basic_json
...
@@ -1137,7 +1161,7 @@ class basic_json
/*!
/*!
@brief serialization
@brief serialization
Serialization function for JSON
object
s. The function tries to mimick
Serialization function for JSON
value
s. The function tries to mimick
Python's @p json.dumps() function, and currently supports its @p indent
Python's @p json.dumps() function, and currently supports its @p indent
parameter.
parameter.
...
@@ -1146,6 +1170,13 @@ class basic_json
...
@@ -1146,6 +1170,13 @@ class basic_json
will only insert newlines. -1 (the default) selects the most compact
will only insert newlines. -1 (the default) selects the most compact
representation
representation
@return string containing the serialization of the JSON value
@complexity Linear.
@liveexample{The following example shows the effect of different @a indent
parameters to the result of the serializaion.,dump}
@see https://docs.python.org/2/library/json.html#json.dump
@see https://docs.python.org/2/library/json.html#json.dump
*/
*/
string_t dump(const int indent = -1) const noexcept
string_t dump(const int indent = -1) const noexcept
...
...
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