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

248 lines
13 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::detail::OutputBindingCreator&lt; Archive, T &gt; Struct Template 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"><b>detail</b></li><li class="navelem"><a class="el" href="structcereal_1_1detail_1_1OutputBindingCreator.html">OutputBindingCreator</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="structcereal_1_1detail_1_1OutputBindingCreator-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">cereal::detail::OutputBindingCreator&lt; Archive, T &gt; Struct Template Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Creates a binding (map entry) between an output archive type and a polymorphic type.
<a href="structcereal_1_1detail_1_1OutputBindingCreator.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="polymorphic__impl_8hpp_source.html">/home/shane/workspace/cereal/include/cereal/details/polymorphic_impl.hpp</a>&gt;</code></p>
<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_1detail_1_1OutputBindingCreator_1_1PolymorphicSharedPointerWrapper.html">PolymorphicSharedPointerWrapper</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Holds a properly typed shared_ptr to the polymorphic type. <a href="classcereal_1_1detail_1_1OutputBindingCreator_1_1PolymorphicSharedPointerWrapper.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 class="memitem:ae7fd60f4fd68a90e0fa53141141ed467"><td class="memItemLeft" align="right" valign="top"><a id="ae7fd60f4fd68a90e0fa53141141ed467"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1detail_1_1OutputBindingCreator.html#ae7fd60f4fd68a90e0fa53141141ed467">OutputBindingCreator</a> ()</td></tr>
<tr class="memdesc:ae7fd60f4fd68a90e0fa53141141ed467"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize the binding. <br /></td></tr>
<tr class="separator:ae7fd60f4fd68a90e0fa53141141ed467"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:aa8421ea2f60481abd46f3fd59ab3680a"><td class="memItemLeft" align="right" valign="top"><a id="aa8421ea2f60481abd46f3fd59ab3680a"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1detail_1_1OutputBindingCreator.html#aa8421ea2f60481abd46f3fd59ab3680a">writeMetadata</a> (Archive &amp;ar)</td></tr>
<tr class="memdesc:aa8421ea2f60481abd46f3fd59ab3680a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Writes appropriate metadata to the archive for this polymorphic type. <br /></td></tr>
<tr class="separator:aa8421ea2f60481abd46f3fd59ab3680a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75f9c27414802737b3a040edf9ab9555"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1detail_1_1OutputBindingCreator.html#a75f9c27414802737b3a040edf9ab9555">savePolymorphicSharedPtr</a> (Archive &amp;ar, T const *dptr, std::true_type)</td></tr>
<tr class="memdesc:a75f9c27414802737b3a040edf9ab9555"><td class="mdescLeft">&#160;</td><td class="mdescRight">Does the actual work of saving a polymorphic shared_ptr. <a href="structcereal_1_1detail_1_1OutputBindingCreator.html#a75f9c27414802737b3a040edf9ab9555">More...</a><br /></td></tr>
<tr class="separator:a75f9c27414802737b3a040edf9ab9555"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9ece659f4e7b869b6a8295e8be3847ab"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1detail_1_1OutputBindingCreator.html#a9ece659f4e7b869b6a8295e8be3847ab">savePolymorphicSharedPtr</a> (Archive &amp;ar, T const *dptr, std::false_type)</td></tr>
<tr class="memdesc:a9ece659f4e7b869b6a8295e8be3847ab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Does the actual work of saving a polymorphic shared_ptr. <a href="structcereal_1_1detail_1_1OutputBindingCreator.html#a9ece659f4e7b869b6a8295e8be3847ab">More...</a><br /></td></tr>
<tr class="separator:a9ece659f4e7b869b6a8295e8be3847ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;class Archive, class T&gt;<br />
struct cereal::detail::OutputBindingCreator&lt; Archive, T &gt;</h3>
<p>Creates a binding (map entry) between an output archive type and a polymorphic type. </p>
<p>Bindings are made when types are registered, assuming that at least one archive has already been registered. When this struct is created, it will insert (at run time) an entry into a map that properly handles casting for serializing polymorphic objects </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a9ece659f4e7b869b6a8295e8be3847ab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9ece659f4e7b869b6a8295e8be3847ab">&#9670;&nbsp;</a></span>savePolymorphicSharedPtr() <span class="overload">[1/2]</span></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">static void <a class="el" href="structcereal_1_1detail_1_1OutputBindingCreator.html">cereal::detail::OutputBindingCreator</a>&lt; Archive, T &gt;::savePolymorphicSharedPtr </td>
<td>(</td>
<td class="paramtype">Archive &amp;&#160;</td>
<td class="paramname"><em>ar</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T const *&#160;</td>
<td class="paramname"><em>dptr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::false_type&#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 class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Does the actual work of saving a polymorphic shared_ptr. </p>
<p>This function will properly create a shared_ptr from the void * that is passed in before passing it to the archive for serialization.</p>
<p>This version is for types that do not inherit from std::enable_shared_from_this.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ar</td><td>The archive to serialize to </td></tr>
<tr><td class="paramname">dptr</td><td>Pointer to the actual data held by the shared_ptr </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a75f9c27414802737b3a040edf9ab9555"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a75f9c27414802737b3a040edf9ab9555">&#9670;&nbsp;</a></span>savePolymorphicSharedPtr() <span class="overload">[2/2]</span></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">static void <a class="el" href="structcereal_1_1detail_1_1OutputBindingCreator.html">cereal::detail::OutputBindingCreator</a>&lt; Archive, T &gt;::savePolymorphicSharedPtr </td>
<td>(</td>
<td class="paramtype">Archive &amp;&#160;</td>
<td class="paramname"><em>ar</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T const *&#160;</td>
<td class="paramname"><em>dptr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::true_type&#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 class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Does the actual work of saving a polymorphic shared_ptr. </p>
<p>This function will properly create a shared_ptr from the void * that is passed in before passing it to the archive for serialization.</p>
<p>In addition, this will also preserve the state of any internal enable_shared_from_this mechanisms</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ar</td><td>The archive to serialize to </td></tr>
<tr><td class="paramname">dptr</td><td>Pointer to the actual data held by the shared_ptr </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="polymorphic__impl_8hpp_source.html">polymorphic_impl.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>