cereal/assets/doxygen/classcereal_1_1JSONOutputArchive.html
2022-02-27 19:48:38 -08:00

447 lines
40 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>cereal: cereal::JSONOutputArchive Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">cereal
</div>
<div id="projectbrief">A C++11 library for serialization</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>cereal</b></li><li class="navelem"><a class="el" href="classcereal_1_1JSONOutputArchive.html">JSONOutputArchive</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="classcereal_1_1JSONOutputArchive-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">cereal::JSONOutputArchive Class Reference<div class="ingroups"><a class="el" href="group__Archives.html">Input and Output Archive Types</a></div></div> </div>
</div><!--header-->
<div class="contents">
<p>An output archive designed to save data to JSON.
<a href="classcereal_1_1JSONOutputArchive.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="json_8hpp_source.html">/home/shane/workspace/cereal/include/cereal/archives/json.hpp</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for cereal::JSONOutputArchive:</div>
<div class="dyncontent">
<div class="center">
<img src="classcereal_1_1JSONOutputArchive.png" usemap="#cereal::JSONOutputArchive_map" alt=""/>
<map id="cereal::JSONOutputArchive_map" name="cereal::JSONOutputArchive_map">
<area href="classcereal_1_1OutputArchive.html" alt="cereal::OutputArchive&lt; JSONOutputArchive &gt;" shape="rect" coords="0,56,276,80"/>
<area href="structcereal_1_1traits_1_1TextArchive.html" title="Type traits only struct used to mark an archive as human readable (text based)" alt="cereal::traits::TextArchive" shape="rect" coords="286,56,562,80"/>
<area href="classcereal_1_1detail_1_1OutputArchiveBase.html" alt="cereal::detail::OutputArchiveBase" shape="rect" coords="0,0,276,24"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcereal_1_1JSONOutputArchive_1_1Options.html">Options</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A class containing various advanced options for the JSON archive. <a href="classcereal_1_1JSONOutputArchive_1_1Options.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Common Functionality</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>Common use cases for directly interacting with an <a class="el" href="classcereal_1_1JSONOutputArchive.html" title="An output archive designed to save data to JSON.">JSONOutputArchive</a> </p>
</div></td></tr>
<tr class="memitem:a87fef1f545417ca857e00f1af5a70701"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcereal_1_1JSONOutputArchive.html#a87fef1f545417ca857e00f1af5a70701">JSONOutputArchive</a> (std::ostream &amp;stream, <a class="el" href="classcereal_1_1JSONOutputArchive_1_1Options.html">Options</a> const &amp;options=<a class="el" href="classcereal_1_1JSONOutputArchive_1_1Options.html#a82ac8216b731ffc3669c9a16e18efc86">Options::Default</a>())</td></tr>
<tr class="memdesc:a87fef1f545417ca857e00f1af5a70701"><td class="mdescLeft">&#160;</td><td class="mdescRight">Construct, outputting to the provided stream. <a href="classcereal_1_1JSONOutputArchive.html#a87fef1f545417ca857e00f1af5a70701">More...</a><br /></td></tr>
<tr class="separator:a87fef1f545417ca857e00f1af5a70701"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7402beb96980d4d540c5bb625bf6ea83"><td class="memItemLeft" align="right" valign="top"><a id="a7402beb96980d4d540c5bb625bf6ea83"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcereal_1_1JSONOutputArchive.html#a7402beb96980d4d540c5bb625bf6ea83">~JSONOutputArchive</a> () <a class="el" href="macros_8hpp.html#a6c37b2307b83bbe2a3de58d78a2b8c0b">CEREAL_NOEXCEPT</a></td></tr>
<tr class="memdesc:a7402beb96980d4d540c5bb625bf6ea83"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor, flushes the JSON. <br /></td></tr>
<tr class="separator:a7402beb96980d4d540c5bb625bf6ea83"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1833e8351413e686130e7794c712639b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcereal_1_1JSONOutputArchive.html#a1833e8351413e686130e7794c712639b">saveBinaryValue</a> (const void *data, size_t size, const char *name=nullptr)</td></tr>
<tr class="memdesc:a1833e8351413e686130e7794c712639b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Saves some binary data, encoded as a base64 string, with an optional name. <a href="classcereal_1_1JSONOutputArchive.html#a1833e8351413e686130e7794c712639b">More...</a><br /></td></tr>
<tr class="separator:a1833e8351413e686130e7794c712639b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classcereal_1_1OutputArchive"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classcereal_1_1OutputArchive')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classcereal_1_1OutputArchive.html">cereal::OutputArchive&lt; JSONOutputArchive &gt;</a></td></tr>
<tr class="memitem:a98fbde73bf6d41f4e717e91011e3be7f inherit pub_methods_classcereal_1_1OutputArchive"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcereal_1_1OutputArchive.html#a98fbde73bf6d41f4e717e91011e3be7f">OutputArchive</a> (<a class="el" href="classcereal_1_1JSONOutputArchive.html">JSONOutputArchive</a> *const derived)</td></tr>
<tr class="memdesc:a98fbde73bf6d41f4e717e91011e3be7f inherit pub_methods_classcereal_1_1OutputArchive"><td class="mdescLeft">&#160;</td><td class="mdescRight">Construct the output archive. <a href="classcereal_1_1OutputArchive.html#a98fbde73bf6d41f4e717e91011e3be7f">More...</a><br /></td></tr>
<tr class="separator:a98fbde73bf6d41f4e717e91011e3be7f inherit pub_methods_classcereal_1_1OutputArchive"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c6421d26bc4d2cd95db038c3ce91a49 inherit pub_methods_classcereal_1_1OutputArchive"><td class="memItemLeft" align="right" valign="top"><a id="a2c6421d26bc4d2cd95db038c3ce91a49"></a>
<a class="el" href="classcereal_1_1OutputArchive.html">OutputArchive</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator=</b> (<a class="el" href="classcereal_1_1OutputArchive.html">OutputArchive</a> const &amp;)=delete</td></tr>
<tr class="separator:a2c6421d26bc4d2cd95db038c3ce91a49 inherit pub_methods_classcereal_1_1OutputArchive"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abef67f45c79d199c690359715905987b inherit pub_methods_classcereal_1_1OutputArchive"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classcereal_1_1JSONOutputArchive.html">JSONOutputArchive</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcereal_1_1OutputArchive.html#abef67f45c79d199c690359715905987b">operator()</a> (Types &amp;&amp;... args)</td></tr>
<tr class="memdesc:abef67f45c79d199c690359715905987b inherit pub_methods_classcereal_1_1OutputArchive"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serializes all passed in data. <a href="classcereal_1_1OutputArchive.html#abef67f45c79d199c690359715905987b">More...</a><br /></td></tr>
<tr class="separator:abef67f45c79d199c690359715905987b inherit pub_methods_classcereal_1_1OutputArchive"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac0070bbf21d6a02a48d55b8052b90f64 inherit pub_methods_classcereal_1_1OutputArchive"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcereal_1_1OutputArchive.html#ac0070bbf21d6a02a48d55b8052b90f64">serializeDeferments</a> ()</td></tr>
<tr class="memdesc:ac0070bbf21d6a02a48d55b8052b90f64 inherit pub_methods_classcereal_1_1OutputArchive"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serializes any data marked for deferment using defer. <a href="classcereal_1_1OutputArchive.html#ac0070bbf21d6a02a48d55b8052b90f64">More...</a><br /></td></tr>
<tr class="separator:ac0070bbf21d6a02a48d55b8052b90f64 inherit pub_methods_classcereal_1_1OutputArchive"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0efb18ad82f46327f48449e84222328b inherit pub_methods_classcereal_1_1OutputArchive"><td class="memItemLeft" align="right" valign="top">std::uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcereal_1_1OutputArchive.html#a0efb18ad82f46327f48449e84222328b">registerSharedPointer</a> (const std::shared_ptr&lt; const void &gt; &amp;sharedPointer)</td></tr>
<tr class="memdesc:a0efb18ad82f46327f48449e84222328b inherit pub_methods_classcereal_1_1OutputArchive"><td class="mdescLeft">&#160;</td><td class="mdescRight">Registers a shared pointer with the archive. <a href="classcereal_1_1OutputArchive.html#a0efb18ad82f46327f48449e84222328b">More...</a><br /></td></tr>
<tr class="separator:a0efb18ad82f46327f48449e84222328b inherit pub_methods_classcereal_1_1OutputArchive"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf97e7c48f6d307d6fa87d4b3fd3ad0e inherit pub_methods_classcereal_1_1OutputArchive"><td class="memItemLeft" align="right" valign="top">std::uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcereal_1_1OutputArchive.html#abf97e7c48f6d307d6fa87d4b3fd3ad0e">registerPolymorphicType</a> (char const *name)</td></tr>
<tr class="memdesc:abf97e7c48f6d307d6fa87d4b3fd3ad0e inherit pub_methods_classcereal_1_1OutputArchive"><td class="mdescLeft">&#160;</td><td class="mdescRight">Registers a polymorphic type name with the archive. <a href="classcereal_1_1OutputArchive.html#abf97e7c48f6d307d6fa87d4b3fd3ad0e">More...</a><br /></td></tr>
<tr class="separator:abf97e7c48f6d307d6fa87d4b3fd3ad0e inherit pub_methods_classcereal_1_1OutputArchive"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4788dde3f0691f0dbbfc14fe6e2997cd inherit pub_methods_classcereal_1_1OutputArchive"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classcereal_1_1JSONOutputArchive.html">JSONOutputArchive</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcereal_1_1OutputArchive.html#a4788dde3f0691f0dbbfc14fe6e2997cd">operator&amp;</a> (T &amp;&amp;arg)</td></tr>
<tr class="memdesc:a4788dde3f0691f0dbbfc14fe6e2997cd inherit pub_methods_classcereal_1_1OutputArchive"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serializes passed in data. <a href="classcereal_1_1OutputArchive.html#a4788dde3f0691f0dbbfc14fe6e2997cd">More...</a><br /></td></tr>
<tr class="separator:a4788dde3f0691f0dbbfc14fe6e2997cd inherit pub_methods_classcereal_1_1OutputArchive"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0316f5791b140979aea2c915e4618236 inherit pub_methods_classcereal_1_1OutputArchive"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classcereal_1_1JSONOutputArchive.html">JSONOutputArchive</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcereal_1_1OutputArchive.html#a0316f5791b140979aea2c915e4618236">operator&lt;&lt;</a> (T &amp;&amp;arg)</td></tr>
<tr class="memdesc:a0316f5791b140979aea2c915e4618236 inherit pub_methods_classcereal_1_1OutputArchive"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serializes passed in data. <a href="classcereal_1_1OutputArchive.html#a0316f5791b140979aea2c915e4618236">More...</a><br /></td></tr>
<tr class="separator:a0316f5791b140979aea2c915e4618236 inherit pub_methods_classcereal_1_1OutputArchive"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classcereal_1_1detail_1_1OutputArchiveBase"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classcereal_1_1detail_1_1OutputArchiveBase')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classcereal_1_1detail_1_1OutputArchiveBase.html">cereal::detail::OutputArchiveBase</a></td></tr>
<tr class="memitem:a4cbe03d4e35e298aaab32eaf117021be inherit pub_methods_classcereal_1_1detail_1_1OutputArchiveBase"><td class="memItemLeft" align="right" valign="top"><a id="a4cbe03d4e35e298aaab32eaf117021be"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>OutputArchiveBase</b> (<a class="el" href="classcereal_1_1detail_1_1OutputArchiveBase.html">OutputArchiveBase</a> &amp;&amp;) <a class="el" href="macros_8hpp.html#a6c37b2307b83bbe2a3de58d78a2b8c0b">CEREAL_NOEXCEPT</a></td></tr>
<tr class="separator:a4cbe03d4e35e298aaab32eaf117021be inherit pub_methods_classcereal_1_1detail_1_1OutputArchiveBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afd5f88c3cc3ef044eea98df20b1f01db inherit pub_methods_classcereal_1_1detail_1_1OutputArchiveBase"><td class="memItemLeft" align="right" valign="top"><a id="afd5f88c3cc3ef044eea98df20b1f01db"></a>
<a class="el" href="classcereal_1_1detail_1_1OutputArchiveBase.html">OutputArchiveBase</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator=</b> (<a class="el" href="classcereal_1_1detail_1_1OutputArchiveBase.html">OutputArchiveBase</a> &amp;&amp;) <a class="el" href="macros_8hpp.html#a6c37b2307b83bbe2a3de58d78a2b8c0b">CEREAL_NOEXCEPT</a></td></tr>
<tr class="separator:afd5f88c3cc3ef044eea98df20b1f01db inherit pub_methods_classcereal_1_1detail_1_1OutputArchiveBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Internal Functionality</h2></td></tr>
<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrp8296ede30ade5ce62480f6d69593ed0b"></a>Functionality designed for use by those requiring control over the inner mechanisms of the <a class="el" href="classcereal_1_1JSONOutputArchive.html" title="An output archive designed to save data to JSON.">JSONOutputArchive</a> </p>
</td></tr>
<tr class="memitem:acae7982ee23cacf07cb6c4326818e6b8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcereal_1_1JSONOutputArchive.html#acae7982ee23cacf07cb6c4326818e6b8">startNode</a> ()</td></tr>
<tr class="memdesc:acae7982ee23cacf07cb6c4326818e6b8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Starts a new node in the JSON output. <a href="classcereal_1_1JSONOutputArchive.html#acae7982ee23cacf07cb6c4326818e6b8">More...</a><br /></td></tr>
<tr class="separator:acae7982ee23cacf07cb6c4326818e6b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a32e7d7fe0a75d7e3cc990362c41edf81"><td class="memItemLeft" align="right" valign="top"><a id="a32e7d7fe0a75d7e3cc990362c41edf81"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcereal_1_1JSONOutputArchive.html#a32e7d7fe0a75d7e3cc990362c41edf81">finishNode</a> ()</td></tr>
<tr class="memdesc:a32e7d7fe0a75d7e3cc990362c41edf81"><td class="mdescLeft">&#160;</td><td class="mdescRight">Designates the most recently added node as finished. <br /></td></tr>
<tr class="separator:a32e7d7fe0a75d7e3cc990362c41edf81"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a399c034dd0be17597b4cf9fe2e9bf050"><td class="memItemLeft" align="right" valign="top"><a id="a399c034dd0be17597b4cf9fe2e9bf050"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcereal_1_1JSONOutputArchive.html#a399c034dd0be17597b4cf9fe2e9bf050">setNextName</a> (const char *name)</td></tr>
<tr class="memdesc:a399c034dd0be17597b4cf9fe2e9bf050"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the name for the next node created with startNode. <br /></td></tr>
<tr class="separator:a399c034dd0be17597b4cf9fe2e9bf050"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3279cbcf2b5cd73c4f8299aa4e8702b4"><td class="memItemLeft" align="right" valign="top"><a id="a3279cbcf2b5cd73c4f8299aa4e8702b4"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcereal_1_1JSONOutputArchive.html#a3279cbcf2b5cd73c4f8299aa4e8702b4">saveValue</a> (bool b)</td></tr>
<tr class="memdesc:a3279cbcf2b5cd73c4f8299aa4e8702b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Saves a bool to the current node. <br /></td></tr>
<tr class="separator:a3279cbcf2b5cd73c4f8299aa4e8702b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a62917f155424234bc29cfb0b8280be3a"><td class="memItemLeft" align="right" valign="top"><a id="a62917f155424234bc29cfb0b8280be3a"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcereal_1_1JSONOutputArchive.html#a62917f155424234bc29cfb0b8280be3a">saveValue</a> (int i)</td></tr>
<tr class="memdesc:a62917f155424234bc29cfb0b8280be3a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Saves an int to the current node. <br /></td></tr>
<tr class="separator:a62917f155424234bc29cfb0b8280be3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad0636d0a75fdd4187d572479ce14ae1"><td class="memItemLeft" align="right" valign="top"><a id="aad0636d0a75fdd4187d572479ce14ae1"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcereal_1_1JSONOutputArchive.html#aad0636d0a75fdd4187d572479ce14ae1">saveValue</a> (unsigned u)</td></tr>
<tr class="memdesc:aad0636d0a75fdd4187d572479ce14ae1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Saves a uint to the current node. <br /></td></tr>
<tr class="separator:aad0636d0a75fdd4187d572479ce14ae1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a579aa488b2a27e1afd37516962993876"><td class="memItemLeft" align="right" valign="top"><a id="a579aa488b2a27e1afd37516962993876"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcereal_1_1JSONOutputArchive.html#a579aa488b2a27e1afd37516962993876">saveValue</a> (int64_t i64)</td></tr>
<tr class="memdesc:a579aa488b2a27e1afd37516962993876"><td class="mdescLeft">&#160;</td><td class="mdescRight">Saves an int64 to the current node. <br /></td></tr>
<tr class="separator:a579aa488b2a27e1afd37516962993876"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb683b1f868478d1797b1c19bb5d6375"><td class="memItemLeft" align="right" valign="top"><a id="afb683b1f868478d1797b1c19bb5d6375"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcereal_1_1JSONOutputArchive.html#afb683b1f868478d1797b1c19bb5d6375">saveValue</a> (uint64_t u64)</td></tr>
<tr class="memdesc:afb683b1f868478d1797b1c19bb5d6375"><td class="mdescLeft">&#160;</td><td class="mdescRight">Saves a uint64 to the current node. <br /></td></tr>
<tr class="separator:afb683b1f868478d1797b1c19bb5d6375"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac03a57ce63373432a8b8ef9f0c187b7"><td class="memItemLeft" align="right" valign="top"><a id="aac03a57ce63373432a8b8ef9f0c187b7"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcereal_1_1JSONOutputArchive.html#aac03a57ce63373432a8b8ef9f0c187b7">saveValue</a> (double d)</td></tr>
<tr class="memdesc:aac03a57ce63373432a8b8ef9f0c187b7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Saves a double to the current node. <br /></td></tr>
<tr class="separator:aac03a57ce63373432a8b8ef9f0c187b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aebe0984ef09998ee687217d74e4d6bcd"><td class="memItemLeft" align="right" valign="top"><a id="aebe0984ef09998ee687217d74e4d6bcd"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcereal_1_1JSONOutputArchive.html#aebe0984ef09998ee687217d74e4d6bcd">saveValue</a> (std::string const &amp;s)</td></tr>
<tr class="memdesc:aebe0984ef09998ee687217d74e4d6bcd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Saves a string to the current node. <br /></td></tr>
<tr class="separator:aebe0984ef09998ee687217d74e4d6bcd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad08dc226626239c6e22bf2747a7cf275"><td class="memItemLeft" align="right" valign="top"><a id="ad08dc226626239c6e22bf2747a7cf275"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcereal_1_1JSONOutputArchive.html#ad08dc226626239c6e22bf2747a7cf275">saveValue</a> (char const *s)</td></tr>
<tr class="memdesc:ad08dc226626239c6e22bf2747a7cf275"><td class="mdescLeft">&#160;</td><td class="mdescRight">Saves a const char * to the current node. <br /></td></tr>
<tr class="separator:ad08dc226626239c6e22bf2747a7cf275"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a831d72780e7c42900421a00c372bcf7c"><td class="memItemLeft" align="right" valign="top"><a id="a831d72780e7c42900421a00c372bcf7c"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcereal_1_1JSONOutputArchive.html#a831d72780e7c42900421a00c372bcf7c">saveValue</a> (std::nullptr_t)</td></tr>
<tr class="memdesc:a831d72780e7c42900421a00c372bcf7c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Saves a nullptr to the current node. <br /></td></tr>
<tr class="separator:a831d72780e7c42900421a00c372bcf7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60c9ae47585eb6eb0207ebf3c1f8a345"><td class="memTemplParams" colspan="2"><a id="a60c9ae47585eb6eb0207ebf3c1f8a345"></a>
template&lt;class T , traits::EnableIf&lt; std::is_same&lt; T, long &gt;::value, !std::is_same&lt; T, int &gt;::value, !std::is_same&lt; T, std::int64_t &gt;::value &gt; = traits::sfinae&gt; </td></tr>
<tr class="memitem:a60c9ae47585eb6eb0207ebf3c1f8a345"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classcereal_1_1JSONOutputArchive.html#a60c9ae47585eb6eb0207ebf3c1f8a345">saveValue</a> (T t)</td></tr>
<tr class="memdesc:a60c9ae47585eb6eb0207ebf3c1f8a345"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serialize a long if it would not be caught otherwise. <br /></td></tr>
<tr class="separator:a60c9ae47585eb6eb0207ebf3c1f8a345"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60c9ae47585eb6eb0207ebf3c1f8a345"><td class="memTemplParams" colspan="2"><a id="a60c9ae47585eb6eb0207ebf3c1f8a345"></a>
template&lt;class T , traits::EnableIf&lt; std::is_same&lt; T, unsigned long &gt;::value, !std::is_same&lt; T, unsigned &gt;::value, !std::is_same&lt; T, std::uint64_t &gt;::value &gt; = traits::sfinae&gt; </td></tr>
<tr class="memitem:a60c9ae47585eb6eb0207ebf3c1f8a345"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classcereal_1_1JSONOutputArchive.html#a60c9ae47585eb6eb0207ebf3c1f8a345">saveValue</a> (T t)</td></tr>
<tr class="memdesc:a60c9ae47585eb6eb0207ebf3c1f8a345"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serialize an unsigned long if it would not be caught otherwise. <br /></td></tr>
<tr class="separator:a60c9ae47585eb6eb0207ebf3c1f8a345"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac3918206b9255e0b523ace06e16a02ea"><td class="memTemplParams" colspan="2">template&lt;class T , traits::EnableIf&lt; std::is_arithmetic&lt; T &gt;::value, !std::is_same&lt; T, long &gt;::value, !std::is_same&lt; T, unsigned long &gt;::value, !std::is_same&lt; T, std::int64_t &gt;::value, !std::is_same&lt; T, std::uint64_t &gt;::value,(sizeof(T) &gt;=sizeof(long double)||sizeof(T) &gt;=sizeof(long long))&gt; = traits::sfinae&gt; </td></tr>
<tr class="memitem:ac3918206b9255e0b523ace06e16a02ea"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classcereal_1_1JSONOutputArchive.html#ac3918206b9255e0b523ace06e16a02ea">saveValue</a> (T const &amp;t)</td></tr>
<tr class="memdesc:ac3918206b9255e0b523ace06e16a02ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Save exotic arithmetic as strings to current node. <a href="classcereal_1_1JSONOutputArchive.html#ac3918206b9255e0b523ace06e16a02ea">More...</a><br /></td></tr>
<tr class="separator:ac3918206b9255e0b523ace06e16a02ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5014cca0214e98b2d93be821a9e1ce36"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcereal_1_1JSONOutputArchive.html#a5014cca0214e98b2d93be821a9e1ce36">writeName</a> ()</td></tr>
<tr class="memdesc:a5014cca0214e98b2d93be821a9e1ce36"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write the name of the upcoming node and prepare object/array state. <a href="classcereal_1_1JSONOutputArchive.html#a5014cca0214e98b2d93be821a9e1ce36">More...</a><br /></td></tr>
<tr class="separator:a5014cca0214e98b2d93be821a9e1ce36"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a50fcaa40404675ec6559fd0a191a0627"><td class="memItemLeft" align="right" valign="top"><a id="a50fcaa40404675ec6559fd0a191a0627"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcereal_1_1JSONOutputArchive.html#a50fcaa40404675ec6559fd0a191a0627">makeArray</a> ()</td></tr>
<tr class="memdesc:a50fcaa40404675ec6559fd0a191a0627"><td class="mdescLeft">&#160;</td><td class="mdescRight">Designates that the current node should be output as an array, not an object. <br /></td></tr>
<tr class="separator:a50fcaa40404675ec6559fd0a191a0627"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_types_classcereal_1_1OutputArchive"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classcereal_1_1OutputArchive')"><img src="closed.png" alt="-"/>&#160;Public Types inherited from <a class="el" href="classcereal_1_1OutputArchive.html">cereal::OutputArchive&lt; JSONOutputArchive &gt;</a></td></tr>
<tr class="memitem:a8f3be4fe8a965bbce4eb1cf36068e611 inherit pub_types_classcereal_1_1OutputArchive"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcereal_1_1OutputArchive.html#a8f3be4fe8a965bbce4eb1cf36068e611">is_loading</a> = std::false_type</td></tr>
<tr class="memdesc:a8f3be4fe8a965bbce4eb1cf36068e611 inherit pub_types_classcereal_1_1OutputArchive"><td class="mdescLeft">&#160;</td><td class="mdescRight">Indicates this archive is not intended for loading. <a href="classcereal_1_1OutputArchive.html#a8f3be4fe8a965bbce4eb1cf36068e611">More...</a><br /></td></tr>
<tr class="separator:a8f3be4fe8a965bbce4eb1cf36068e611 inherit pub_types_classcereal_1_1OutputArchive"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad48175118ea9b931ef42a74f8efd0389 inherit pub_types_classcereal_1_1OutputArchive"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcereal_1_1OutputArchive.html#ad48175118ea9b931ef42a74f8efd0389">is_saving</a> = std::true_type</td></tr>
<tr class="memdesc:ad48175118ea9b931ef42a74f8efd0389 inherit pub_types_classcereal_1_1OutputArchive"><td class="mdescLeft">&#160;</td><td class="mdescRight">Indicates this archive is intended for saving. <a href="classcereal_1_1OutputArchive.html#ad48175118ea9b931ef42a74f8efd0389">More...</a><br /></td></tr>
<tr class="separator:ad48175118ea9b931ef42a74f8efd0389 inherit pub_types_classcereal_1_1OutputArchive"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>An output archive designed to save data to JSON. </p>
<p>This archive uses RapidJSON to build serialize data to JSON.</p>
<p>JSON archives provides a human readable output but at decreased performance (both in time and space) compared to binary archives.</p>
<p>JSON archives are only guaranteed to finish flushing their contents upon destruction and should thus be used in an RAII fashion.</p>
<p>JSON benefits greatly from name-value pairs, which if present, will name the nodes in the output. If these are not present, each level of the output will be given an automatically generated delimited name.</p>
<p>The precision of the output archive controls the number of decimals output for floating point numbers and should be sufficiently large (i.e. at least 20) if there is a desire to have binary equality between the numbers output and those read in. In general you should expect a loss of precision when going from floating point to text and back.</p>
<p>JSON archives do not output the size information for any dynamically sized structure and instead infer it from the number of children for a node. This means that data can be hand edited for dynamic sized structures and will still be readable. This is accomplished through the <a class="el" href="classcereal_1_1SizeTag.html" title="A wrapper around size metadata.">cereal::SizeTag</a> object, which will cause the archive to output the data as a JSON array (e.g. marked by [] instead of {}), which indicates that the container is variable sized and may be edited. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a87fef1f545417ca857e00f1af5a70701"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a87fef1f545417ca857e00f1af5a70701">&#9670;&nbsp;</a></span>JSONOutputArchive()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">cereal::JSONOutputArchive::JSONOutputArchive </td>
<td>(</td>
<td class="paramtype">std::ostream &amp;&#160;</td>
<td class="paramname"><em>stream</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classcereal_1_1JSONOutputArchive_1_1Options.html">Options</a> const &amp;&#160;</td>
<td class="paramname"><em>options</em> = <code><a class="el" href="classcereal_1_1JSONOutputArchive_1_1Options.html#a82ac8216b731ffc3669c9a16e18efc86">Options::Default</a>()</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Construct, outputting to the provided stream. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">stream</td><td>The stream to output to. </td></tr>
<tr><td class="paramname">options</td><td>The JSON specific options to use. See the <a class="el" href="classcereal_1_1JSONOutputArchive_1_1Options.html" title="A class containing various advanced options for the JSON archive.">Options</a> struct for the values of default parameters </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a1833e8351413e686130e7794c712639b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1833e8351413e686130e7794c712639b">&#9670;&nbsp;</a></span>saveBinaryValue()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void cereal::JSONOutputArchive::saveBinaryValue </td>
<td>(</td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>name</em> = <code>nullptr</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Saves some binary data, encoded as a base64 string, with an optional name. </p>
<p>This will create a new node, optionally named, and insert a value that consists of the data encoded as a base64 string </p>
</div>
</div>
<a id="ac3918206b9255e0b523ace06e16a02ea"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac3918206b9255e0b523ace06e16a02ea">&#9670;&nbsp;</a></span>saveValue()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T , traits::EnableIf&lt; std::is_arithmetic&lt; T &gt;::value, !std::is_same&lt; T, long &gt;::value, !std::is_same&lt; T, unsigned long &gt;::value, !std::is_same&lt; T, std::int64_t &gt;::value, !std::is_same&lt; T, std::uint64_t &gt;::value,(sizeof(T) &gt;=sizeof(long double)||sizeof(T) &gt;=sizeof(long long))&gt; = traits::sfinae&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void cereal::JSONOutputArchive::saveValue </td>
<td>(</td>
<td class="paramtype">T const &amp;&#160;</td>
<td class="paramname"><em>t</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Save exotic arithmetic as strings to current node. </p>
<p>Handles long long (if distinct from other types), unsigned long (if distinct), and long double </p>
</div>
</div>
<a id="acae7982ee23cacf07cb6c4326818e6b8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acae7982ee23cacf07cb6c4326818e6b8">&#9670;&nbsp;</a></span>startNode()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void cereal::JSONOutputArchive::startNode </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Starts a new node in the JSON output. </p>
<p>The node can optionally be given a name by calling setNextName prior to creating the node</p>
<p>Nodes only need to be started for types that are themselves objects or arrays </p>
</div>
</div>
<a id="a5014cca0214e98b2d93be821a9e1ce36"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5014cca0214e98b2d93be821a9e1ce36">&#9670;&nbsp;</a></span>writeName()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void cereal::JSONOutputArchive::writeName </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Write the name of the upcoming node and prepare object/array state. </p>
<p>Since writeName is called for every value that is output, regardless of whether it has a name or not, it is the place where we will do a deferred check of our node state and decide whether we are in an array or an object.</p>
<p>The general workflow of saving to the JSON archive is:</p>
<ol type="1">
<li>(optional) Set the name for the next node to be created, usually done by an NVP</li>
<li>Start the node</li>
<li>(if there is data to save) Write the name of the node (this function)</li>
<li>(if there is data to save) Save the data (with saveValue)</li>
<li>Finish the node </li>
</ol>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="json_8hpp_source.html">json.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.8.3.1-->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Feb 27 2022 19:46:46 for cereal by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-42360142-1', 'uscilab.github.io');
ga('send', 'pageview');
</script>
</body>
</html>