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

326 lines
19 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: Internal Functionality</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>
</div><!-- top -->
<!-- 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 class="header">
<div class="summary">
<a href="#files">Files</a> &#124;
<a href="#nested-classes">Classes</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">Internal Functionality</div> </div>
</div><!--header-->
<div class="contents">
<p>Various classes and functions that are critical for the operation of cereal but of no interest to users.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
Files</h2></td></tr>
<tr class="memitem:helpers_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers_8hpp.html">helpers.hpp</a></td></tr>
<tr class="memdesc:helpers_8hpp"><td class="mdescLeft">&#160;</td><td class="mdescRight">Internal helper functionality. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:polymorphic__impl_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="polymorphic__impl_8hpp.html">polymorphic_impl.hpp</a></td></tr>
<tr class="memdesc:polymorphic__impl_8hpp"><td class="mdescLeft">&#160;</td><td class="mdescRight">Internal polymorphism support. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:polymorphic__impl__fwd_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="polymorphic__impl__fwd_8hpp.html">polymorphic_impl_fwd.hpp</a></td></tr>
<tr class="memdesc:polymorphic__impl__fwd_8hpp"><td class="mdescLeft">&#160;</td><td class="mdescRight">Internal polymorphism support forward declarations. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:static__object_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="static__object_8hpp.html">static_object.hpp</a></td></tr>
<tr class="memdesc:static__object_8hpp"><td class="mdescLeft">&#160;</td><td class="mdescRight">Internal polymorphism static object support. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:traits_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="traits_8hpp.html">traits.hpp</a></td></tr>
<tr class="memdesc:traits_8hpp"><td class="mdescLeft">&#160;</td><td class="mdescRight">Internal type trait support. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:util_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="util_8hpp.html">util.hpp</a></td></tr>
<tr class="memdesc:util_8hpp"><td class="mdescLeft">&#160;</td><td class="mdescRight">Internal misc utilities. <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="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_1OutputArchive.html">cereal::OutputArchive&lt; ArchiveType, Flags &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">The base output archive class. <a href="classcereal_1_1OutputArchive.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</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_1InputArchive.html">cereal::InputArchive&lt; ArchiveType, Flags &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">The base input archive class. <a href="classcereal_1_1InputArchive.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="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga80fe42796f7a4d6132ade9cb632cb1d1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Internal.html#ga80fe42796f7a4d6132ade9cb632cb1d1">CEREAL_REGISTER_ARCHIVE</a>(Archive)</td></tr>
<tr class="memdesc:ga80fe42796f7a4d6132ade9cb632cb1d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Registers a specific Archive type with cereal. <a href="group__Internal.html#ga80fe42796f7a4d6132ade9cb632cb1d1">More...</a><br /></td></tr>
<tr class="separator:ga80fe42796f7a4d6132ade9cb632cb1d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:ga95185aa9f39e4ac382bb6631beb68a67"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Internal.html#ga95185aa9f39e4ac382bb6631beb68a67">cereal::Flags</a> { <b>AllowEmptyClassElision</b> = 1
}</td></tr>
<tr class="memdesc:ga95185aa9f39e4ac382bb6631beb68a67"><td class="mdescLeft">&#160;</td><td class="mdescRight">Special flags for archives. <a href="group__Internal.html#ga95185aa9f39e4ac382bb6631beb68a67">More...</a><br /></td></tr>
<tr class="separator:ga95185aa9f39e4ac382bb6631beb68a67"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gaf6b38e7a8684beae31e15212978d7c14"><td class="memItemLeft" align="right" valign="top"><a id="gaf6b38e7a8684beae31e15212978d7c14"></a>
std::uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Internal.html#gaf6b38e7a8684beae31e15212978d7c14">cereal::portable_binary_detail::is_little_endian</a> ()</td></tr>
<tr class="memdesc:gaf6b38e7a8684beae31e15212978d7c14"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the current machine is little endian. <br /></td></tr>
<tr class="separator:gaf6b38e7a8684beae31e15212978d7c14"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga91b73b5db765823861316afa20228a7b"><td class="memTemplParams" colspan="2">template&lt;std::size_t DataSize&gt; </td></tr>
<tr class="memitem:ga91b73b5db765823861316afa20228a7b"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__Internal.html#ga91b73b5db765823861316afa20228a7b">cereal::portable_binary_detail::swap_bytes</a> (std::uint8_t *data)</td></tr>
<tr class="memdesc:ga91b73b5db765823861316afa20228a7b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Swaps the order of bytes for some chunk of memory. <a href="group__Internal.html#ga91b73b5db765823861316afa20228a7b">More...</a><br /></td></tr>
<tr class="separator:ga91b73b5db765823861316afa20228a7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8093b5f7cfd618fae6350ef7b2c09453"><td class="memTemplParams" colspan="2">template&lt;class Archive , class T &gt; </td></tr>
<tr class="memitem:ga8093b5f7cfd618fae6350ef7b2c09453"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__Internal.html#ga8093b5f7cfd618fae6350ef7b2c09453">cereal::prologue</a> (Archive &amp;, T const &amp;)</td></tr>
<tr class="separator:ga8093b5f7cfd618fae6350ef7b2c09453"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1153b7ce7ffbb86e2c81e076a252938e"><td class="memTemplParams" colspan="2">template&lt;class Archive , class T &gt; </td></tr>
<tr class="memitem:ga1153b7ce7ffbb86e2c81e076a252938e"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__Internal.html#ga1153b7ce7ffbb86e2c81e076a252938e">cereal::epilogue</a> (Archive &amp;, T const &amp;)</td></tr>
<tr class="separator:ga1153b7ce7ffbb86e2c81e076a252938e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>Various classes and functions that are critical for the operation of cereal but of no interest to users. </p>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a id="ga80fe42796f7a4d6132ade9cb632cb1d1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga80fe42796f7a4d6132ade9cb632cb1d1">&#9670;&nbsp;</a></span>CEREAL_REGISTER_ARCHIVE</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CEREAL_REGISTER_ARCHIVE</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">Archive</td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"> <span class="keyword">namespace </span>cereal { <span class="keyword">namespace </span>detail { \</div>
<div class="line"> template &lt;class T, class BindingTag&gt; \</div>
<div class="line"> typename polymorphic_serialization_support&lt;Archive, T&gt;::type \</div>
<div class="line"> instantiate_polymorphic_binding( T*, Archive*, BindingTag, adl_tag ); \</div>
<div class="line"> } } <span class="comment">/* end namespaces */</span></div>
</div><!-- fragment -->
<p>Registers a specific Archive type with cereal. </p>
<p>This registration should be done once per archive. A good place to put this is immediately following the definition of your archive. Archive registration is only strictly necessary if you wish to support pointers to polymorphic data types. All archives that come with cereal are already registered. </p>
</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a id="ga95185aa9f39e4ac382bb6631beb68a67"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga95185aa9f39e4ac382bb6631beb68a67">&#9670;&nbsp;</a></span>Flags</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__Internal.html#ga95185aa9f39e4ac382bb6631beb68a67">cereal::Flags</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Special flags for archives. </p>
<p>AllowEmptyClassElision This allows for empty classes to be serialized even if they do not provide a serialization function. Classes with no data members are considered to be empty. Be warned that if this is enabled and you attempt to serialize an empty class with improperly formed serialize or load/save functions, no static error will occur - the error will propogate silently and your intended serialization functions may not be called. You can manually ensure that your classes that have custom serialization are correct by using the traits is_output_serializable and is_input_serializable in <a class="el" href="traits_8hpp.html" title="Internal type trait support.">cereal/details/traits.hpp</a>. </p>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="ga1153b7ce7ffbb86e2c81e076a252938e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1153b7ce7ffbb86e2c81e076a252938e">&#9670;&nbsp;</a></span>epilogue()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class Archive , class T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void cereal::epilogue </td>
<td>(</td>
<td class="paramtype">Archive &amp;&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T const &amp;&#160;</td>
<td class="paramname">&#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>Called after a type is serialized to tear down any special archive state for processing some type </p>
</div>
</div>
<a id="ga8093b5f7cfd618fae6350ef7b2c09453"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8093b5f7cfd618fae6350ef7b2c09453">&#9670;&nbsp;</a></span>prologue()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class Archive , class T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void cereal::prologue </td>
<td>(</td>
<td class="paramtype">Archive &amp;&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T const &amp;&#160;</td>
<td class="paramname">&#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>Called before a type is serialized to set up any special archive state for processing some type</p>
<p>If designing a serializer that needs to set up any kind of special state or output extra information for a type, specialize this function for the archive type and the types that require the extra information. </p>
</div>
</div>
<a id="ga91b73b5db765823861316afa20228a7b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga91b73b5db765823861316afa20228a7b">&#9670;&nbsp;</a></span>swap_bytes()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;std::size_t DataSize&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void cereal::portable_binary_detail::swap_bytes </td>
<td>(</td>
<td class="paramtype">std::uint8_t *&#160;</td>
<td class="paramname"><em>data</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>Swaps the order of bytes for some chunk of memory. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">data</td><td>The data as a uint8_t pointer </td></tr>
</table>
</dd>
</dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">DataSize</td><td>The true size of the data </td></tr>
</table>
</dd>
</dl>
</div>
</div>
</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>