Files
rippled/classripple_1_1SharedWeakUnion.html
2025-11-04 00:36:48 -08:00

895 lines
52 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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>rippled: ripple::SharedWeakUnion&lt; T &gt; Class 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 id="projectrow">
<td id="projectalign">
<div id="projectname">rippled
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(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">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespaceripple.html">ripple</a></li><li class="navelem"><a class="el" href="classripple_1_1SharedWeakUnion.html">SharedWeakUnion</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pri-types">Private Types</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="#pri-static-attribs">Static Private Attributes</a> &#124;
<a href="classripple_1_1SharedWeakUnion-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">ripple::SharedWeakUnion&lt; T &gt; Class Template Reference</div></div>
</div><!--header-->
<div class="contents">
<p>A combination of a strong and a weak intrusive pointer stored in the space of a single pointer.
<a href="classripple_1_1SharedWeakUnion.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="IntrusivePointer_8h_source.html">IntrusivePointer.h</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for ripple::SharedWeakUnion&lt; T &gt;:</div>
<div class="dyncontent">
<div class="center"><img src="classripple_1_1SharedWeakUnion__coll__graph.png" border="0" usemap="#aripple_1_1SharedWeakUnion_3_01T_01_4_coll__map" alt="Collaboration graph"/></div>
<map name="aripple_1_1SharedWeakUnion_3_01T_01_4_coll__map" id="aripple_1_1SharedWeakUnion_3_01T_01_4_coll__map">
<area shape="rect" title="A combination of a strong and a weak intrusive pointer stored in the space of a single pointer." alt="" coords="5,123,229,148"/>
<area shape="rect" target="_parent" href="http://en.cppreference.com/w/cpp/types/integer.html" title=" " alt="" coords="65,5,170,31"/>
<area shape="poly" title=" " alt="" coords="120,44,120,123,115,123,115,44"/>
</map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:acdc91cb14ee8873886ed14df1d4319c2" id="r_acdc91cb14ee8873886ed14df1d4319c2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1SharedWeakUnion.html#acdc91cb14ee8873886ed14df1d4319c2">SharedWeakUnion</a> ()=default</td></tr>
<tr class="separator:acdc91cb14ee8873886ed14df1d4319c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afbbfdb0fe9249b5e85b6cb3c53699df9" id="r_afbbfdb0fe9249b5e85b6cb3c53699df9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1SharedWeakUnion.html#afbbfdb0fe9249b5e85b6cb3c53699df9">SharedWeakUnion</a> (<a class="el" href="classripple_1_1SharedWeakUnion.html">SharedWeakUnion</a> const &amp;rhs)</td></tr>
<tr class="separator:afbbfdb0fe9249b5e85b6cb3c53699df9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2192b836ecd7560181cb4745f8529ed" id="r_ac2192b836ecd7560181cb4745f8529ed"><td class="memTemplParams" colspan="2">template&lt;class TT &gt; <br />
requires <a class="elRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::convertible_to</a>&lt;TT*, T*&gt;</td></tr>
<tr class="memitem:ac2192b836ecd7560181cb4745f8529ed"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classripple_1_1SharedWeakUnion.html#ac2192b836ecd7560181cb4745f8529ed">SharedWeakUnion</a> (<a class="el" href="classripple_1_1SharedIntrusive.html">SharedIntrusive</a>&lt; TT &gt; const &amp;rhs)</td></tr>
<tr class="separator:ac2192b836ecd7560181cb4745f8529ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a790821df256ea80c1b49899f01d5ee89" id="r_a790821df256ea80c1b49899f01d5ee89"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1SharedWeakUnion.html#a790821df256ea80c1b49899f01d5ee89">SharedWeakUnion</a> (<a class="el" href="classripple_1_1SharedWeakUnion.html">SharedWeakUnion</a> &amp;&amp;rhs)</td></tr>
<tr class="separator:a790821df256ea80c1b49899f01d5ee89"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9eb69e51cc4154612aa0d5770268f00c" id="r_a9eb69e51cc4154612aa0d5770268f00c"><td class="memTemplParams" colspan="2">template&lt;class TT &gt; <br />
requires <a class="elRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::convertible_to</a>&lt;TT*, T*&gt;</td></tr>
<tr class="memitem:a9eb69e51cc4154612aa0d5770268f00c"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classripple_1_1SharedWeakUnion.html#a9eb69e51cc4154612aa0d5770268f00c">SharedWeakUnion</a> (<a class="el" href="classripple_1_1SharedIntrusive.html">SharedIntrusive</a>&lt; TT &gt; &amp;&amp;rhs)</td></tr>
<tr class="separator:a9eb69e51cc4154612aa0d5770268f00c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb2a49d6f9c45d4bf6c057752626f606" id="r_abb2a49d6f9c45d4bf6c057752626f606"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classripple_1_1SharedWeakUnion.html">SharedWeakUnion</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1SharedWeakUnion.html#abb2a49d6f9c45d4bf6c057752626f606">operator=</a> (<a class="el" href="classripple_1_1SharedWeakUnion.html">SharedWeakUnion</a> const &amp;rhs)</td></tr>
<tr class="separator:abb2a49d6f9c45d4bf6c057752626f606"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a288f438351747d1b5fc0dd940adc5734" id="r_a288f438351747d1b5fc0dd940adc5734"><td class="memTemplParams" colspan="2">template&lt;class TT &gt; <br />
requires <a class="elRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::convertible_to</a>&lt;TT*, T*&gt;</td></tr>
<tr class="memitem:a288f438351747d1b5fc0dd940adc5734"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classripple_1_1SharedWeakUnion.html">SharedWeakUnion</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classripple_1_1SharedWeakUnion.html#a288f438351747d1b5fc0dd940adc5734">operator=</a> (<a class="el" href="classripple_1_1SharedIntrusive.html">SharedIntrusive</a>&lt; TT &gt; const &amp;rhs)</td></tr>
<tr class="separator:a288f438351747d1b5fc0dd940adc5734"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8064ebe45a0e7ba6453f9b0c677fae5c" id="r_a8064ebe45a0e7ba6453f9b0c677fae5c"><td class="memTemplParams" colspan="2">template&lt;class TT &gt; <br />
requires <a class="elRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::convertible_to</a>&lt;TT*, T*&gt;</td></tr>
<tr class="memitem:a8064ebe45a0e7ba6453f9b0c677fae5c"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classripple_1_1SharedWeakUnion.html">SharedWeakUnion</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classripple_1_1SharedWeakUnion.html#a8064ebe45a0e7ba6453f9b0c677fae5c">operator=</a> (<a class="el" href="classripple_1_1SharedIntrusive.html">SharedIntrusive</a>&lt; TT &gt; &amp;&amp;rhs)</td></tr>
<tr class="separator:a8064ebe45a0e7ba6453f9b0c677fae5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7da2d81c733ae46e2ce88a4f83738f71" id="r_a7da2d81c733ae46e2ce88a4f83738f71"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1SharedWeakUnion.html#a7da2d81c733ae46e2ce88a4f83738f71">~SharedWeakUnion</a> ()</td></tr>
<tr class="separator:a7da2d81c733ae46e2ce88a4f83738f71"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0437c282f783e60800e0e53415d56bb0" id="r_a0437c282f783e60800e0e53415d56bb0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classripple_1_1SharedIntrusive.html">SharedIntrusive</a>&lt; T &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1SharedWeakUnion.html#a0437c282f783e60800e0e53415d56bb0">getStrong</a> () const</td></tr>
<tr class="memdesc:a0437c282f783e60800e0e53415d56bb0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a strong pointer if this is already a strong pointer (i.e. <br /></td></tr>
<tr class="separator:a0437c282f783e60800e0e53415d56bb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a6d87dcc1f75c53e5281eea3b4a70d9" id="r_a7a6d87dcc1f75c53e5281eea3b4a70d9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1SharedWeakUnion.html#a7a6d87dcc1f75c53e5281eea3b4a70d9">operator bool</a> () const noexcept</td></tr>
<tr class="memdesc:a7a6d87dcc1f75c53e5281eea3b4a70d9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return true if this is a strong pointer and the strong pointer is seated. <br /></td></tr>
<tr class="separator:a7a6d87dcc1f75c53e5281eea3b4a70d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab5386228e1dc5f481ffe6412038bd6d8" id="r_ab5386228e1dc5f481ffe6412038bd6d8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1SharedWeakUnion.html#ab5386228e1dc5f481ffe6412038bd6d8">reset</a> ()</td></tr>
<tr class="memdesc:ab5386228e1dc5f481ffe6412038bd6d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the pointer to null, decrement the appropriate ref count, and run the appropriate release action. <br /></td></tr>
<tr class="separator:ab5386228e1dc5f481ffe6412038bd6d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aadc1e414a1dbb42a0294cbf9303a2c65" id="r_aadc1e414a1dbb42a0294cbf9303a2c65"><td class="memItemLeft" align="right" valign="top">T *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1SharedWeakUnion.html#aadc1e414a1dbb42a0294cbf9303a2c65">get</a> () const</td></tr>
<tr class="memdesc:aadc1e414a1dbb42a0294cbf9303a2c65"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this is a strong pointer, return the raw pointer. <br /></td></tr>
<tr class="separator:aadc1e414a1dbb42a0294cbf9303a2c65"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab84de095465d02cab0fc56971e0e2e95" id="r_ab84de095465d02cab0fc56971e0e2e95"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1SharedWeakUnion.html#ab84de095465d02cab0fc56971e0e2e95">use_count</a> () const</td></tr>
<tr class="memdesc:ab84de095465d02cab0fc56971e0e2e95"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this is a strong pointer, return the strong count. <br /></td></tr>
<tr class="separator:ab84de095465d02cab0fc56971e0e2e95"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2292bbd1edcd47b40999eab293b4965d" id="r_a2292bbd1edcd47b40999eab293b4965d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1SharedWeakUnion.html#a2292bbd1edcd47b40999eab293b4965d">expired</a> () const</td></tr>
<tr class="memdesc:a2292bbd1edcd47b40999eab293b4965d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return true if there is a non-zero strong count. <br /></td></tr>
<tr class="separator:a2292bbd1edcd47b40999eab293b4965d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a173b54db284aaaf75a783184959d5b64" id="r_a173b54db284aaaf75a783184959d5b64"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classripple_1_1SharedIntrusive.html">SharedIntrusive</a>&lt; T &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1SharedWeakUnion.html#a173b54db284aaaf75a783184959d5b64">lock</a> () const</td></tr>
<tr class="memdesc:a173b54db284aaaf75a783184959d5b64"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this is a strong pointer, return the strong pointer. <br /></td></tr>
<tr class="separator:a173b54db284aaaf75a783184959d5b64"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5f9b80090815d0a5bd676795ddc9bcc4" id="r_a5f9b80090815d0a5bd676795ddc9bcc4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1SharedWeakUnion.html#a5f9b80090815d0a5bd676795ddc9bcc4">isStrong</a> () const</td></tr>
<tr class="memdesc:a5f9b80090815d0a5bd676795ddc9bcc4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return true is this represents a strong pointer. <br /></td></tr>
<tr class="separator:a5f9b80090815d0a5bd676795ddc9bcc4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae0679d0fea0dfed05c013cdb00bcb056" id="r_ae0679d0fea0dfed05c013cdb00bcb056"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1SharedWeakUnion.html#ae0679d0fea0dfed05c013cdb00bcb056">isWeak</a> () const</td></tr>
<tr class="memdesc:ae0679d0fea0dfed05c013cdb00bcb056"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return true is this represents a weak pointer. <br /></td></tr>
<tr class="separator:ae0679d0fea0dfed05c013cdb00bcb056"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac860b63006359c702b68c5a8334e2efa" id="r_ac860b63006359c702b68c5a8334e2efa"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1SharedWeakUnion.html#ac860b63006359c702b68c5a8334e2efa">convertToStrong</a> ()</td></tr>
<tr class="memdesc:ac860b63006359c702b68c5a8334e2efa"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this is a weak pointer, attempt to convert it to a strong pointer. <br /></td></tr>
<tr class="separator:ac860b63006359c702b68c5a8334e2efa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa91b65bd58b070e88a06aba584dbf678" id="r_aa91b65bd58b070e88a06aba584dbf678"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1SharedWeakUnion.html#aa91b65bd58b070e88a06aba584dbf678">convertToWeak</a> ()</td></tr>
<tr class="memdesc:aa91b65bd58b070e88a06aba584dbf678"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this is a strong pointer, attempt to convert it to a weak pointer. <br /></td></tr>
<tr class="separator:aa91b65bd58b070e88a06aba584dbf678"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-types" name="pri-types"></a>
Private Types</h2></td></tr>
<tr class="memitem:ab942abc90076d8d32944861198eb1c4b" id="r_ab942abc90076d8d32944861198eb1c4b"><td class="memItemLeft" align="right" valign="top">enum class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1SharedWeakUnion.html#ab942abc90076d8d32944861198eb1c4b">RefStrength</a> { <a class="el" href="classripple_1_1SharedWeakUnion.html#ab942abc90076d8d32944861198eb1c4ba6f7f9432d35dea629c8384dab312259a">strong</a>
, <a class="el" href="classripple_1_1SharedWeakUnion.html#ab942abc90076d8d32944861198eb1c4ba7ecc19e1a0be36ba2c6f05d06b5d3058">weak</a>
}</td></tr>
<tr class="separator:ab942abc90076d8d32944861198eb1c4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-methods" name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:a1785490c35a0e28b17e18867bb829f01" id="r_a1785490c35a0e28b17e18867bb829f01"><td class="memItemLeft" align="right" valign="top">T *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1SharedWeakUnion.html#a1785490c35a0e28b17e18867bb829f01">unsafeGetRawPtr</a> () const</td></tr>
<tr class="memdesc:a1785490c35a0e28b17e18867bb829f01"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the raw pointer held by this object. <br /></td></tr>
<tr class="separator:a1785490c35a0e28b17e18867bb829f01"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad9aaab0dad22eb64913b6b91a0604656" id="r_ad9aaab0dad22eb64913b6b91a0604656"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1SharedWeakUnion.html#ad9aaab0dad22eb64913b6b91a0604656">unsafeSetRawPtr</a> (T *p, <a class="el" href="classripple_1_1SharedWeakUnion.html#ab942abc90076d8d32944861198eb1c4b">RefStrength</a> rs)</td></tr>
<tr class="memdesc:ad9aaab0dad22eb64913b6b91a0604656"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the raw pointer and tag bit directly. <br /></td></tr>
<tr class="separator:ad9aaab0dad22eb64913b6b91a0604656"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae0b9c5b23d94159923922a17e2b1ad24" id="r_ae0b9c5b23d94159923922a17e2b1ad24"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1SharedWeakUnion.html#ae0b9c5b23d94159923922a17e2b1ad24">unsafeSetRawPtr</a> (<a class="elRef" href="http://en.cppreference.com/w/cpp/types/nullptr_t.html">std::nullptr_t</a>)</td></tr>
<tr class="memdesc:ae0b9c5b23d94159923922a17e2b1ad24"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the raw pointer and tag bit to all zeros (strong null pointer). <br /></td></tr>
<tr class="separator:ae0b9c5b23d94159923922a17e2b1ad24"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca0b34750902d66e6307a331e1abedf5" id="r_aca0b34750902d66e6307a331e1abedf5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1SharedWeakUnion.html#aca0b34750902d66e6307a331e1abedf5">unsafeReleaseNoStore</a> ()</td></tr>
<tr class="memdesc:aca0b34750902d66e6307a331e1abedf5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decrement the appropriate ref count, and run the appropriate release action. <br /></td></tr>
<tr class="separator:aca0b34750902d66e6307a331e1abedf5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-attribs" name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:a944818f4cba4fa28c066009d1ed1a314" id="r_a944818f4cba4fa28c066009d1ed1a314"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uintptr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1SharedWeakUnion.html#a944818f4cba4fa28c066009d1ed1a314">tp_</a> {0}</td></tr>
<tr class="separator:a944818f4cba4fa28c066009d1ed1a314"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-static-attribs" name="pri-static-attribs"></a>
Static Private Attributes</h2></td></tr>
<tr class="memitem:afb18201849c8a318452e441aad380e2a" id="r_afb18201849c8a318452e441aad380e2a"><td class="memItemLeft" align="right" valign="top">static constexpr <a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uintptr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1SharedWeakUnion.html#afb18201849c8a318452e441aad380e2a">tagMask</a> = 1</td></tr>
<tr class="separator:afb18201849c8a318452e441aad380e2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2ee3d1ad8845f46a91ec65fffcc6f98" id="r_ac2ee3d1ad8845f46a91ec65fffcc6f98"><td class="memItemLeft" align="right" valign="top">static constexpr <a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uintptr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1SharedWeakUnion.html#ac2ee3d1ad8845f46a91ec65fffcc6f98">ptrMask</a> = ~<a class="el" href="classripple_1_1SharedWeakUnion.html#afb18201849c8a318452e441aad380e2a">tagMask</a></td></tr>
<tr class="separator:ac2ee3d1ad8845f46a91ec65fffcc6f98"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><div class="compoundTemplParams">template&lt;class T&gt;<br />
class ripple::SharedWeakUnion&lt; T &gt;</div><p>A combination of a strong and a weak intrusive pointer stored in the space of a single pointer. </p>
<p>This class is similar to a <code><a class="elRef" href="http://en.cppreference.com/w/cpp/utility/variant.html">std::variant</a>&lt;<a class="el" href="classripple_1_1SharedIntrusive.html" title="A shared intrusive pointer class that supports weak pointers.">SharedIntrusive</a>,<a class="el" href="classripple_1_1WeakIntrusive.html" title="A weak intrusive pointer class for the SharedIntrusive pointer class.">WeakIntrusive</a>&gt;</code> with some optimizations. In particular, it uses a low-order bit to determine if the raw pointer represents a strong pointer or a weak pointer. It can also be quickly switched between its strong pointer and weak pointer representations. This class is useful for storing intrusive pointers in tagged caches. </p>
<p class="definition">Definition at line <a class="el" href="IntrusivePointer_8h_source.html#l00302">302</a> of file <a class="el" href="IntrusivePointer_8h_source.html">IntrusivePointer.h</a>.</p>
</div><h2 class="groupheader">Member Enumeration Documentation</h2>
<a id="ab942abc90076d8d32944861198eb1c4b" name="ab942abc90076d8d32944861198eb1c4b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab942abc90076d8d32944861198eb1c4b">&#9670;&#160;</a></span>RefStrength</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">enum class <a class="el" href="classripple_1_1SharedWeakUnion.html#ab942abc90076d8d32944861198eb1c4b">ripple::SharedWeakUnion::RefStrength</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">strong</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ab942abc90076d8d32944861198eb1c4ba6f7f9432d35dea629c8384dab312259a" name="ab942abc90076d8d32944861198eb1c4ba6f7f9432d35dea629c8384dab312259a"></a>strong&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ab942abc90076d8d32944861198eb1c4ba7ecc19e1a0be36ba2c6f05d06b5d3058" name="ab942abc90076d8d32944861198eb1c4ba7ecc19e1a0be36ba2c6f05d06b5d3058"></a>weak&#160;</td><td class="fielddoc"></td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="IntrusivePointer_8h_source.html#l00421">421</a> of file <a class="el" href="IntrusivePointer_8h_source.html">IntrusivePointer.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="acdc91cb14ee8873886ed14df1d4319c2" name="acdc91cb14ee8873886ed14df1d4319c2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acdc91cb14ee8873886ed14df1d4319c2">&#9670;&#160;</a></span>SharedWeakUnion() <span class="overload">[1/5]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classripple_1_1SharedWeakUnion.html">ripple::SharedWeakUnion</a>&lt; T &gt;::SharedWeakUnion </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">default</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="afbbfdb0fe9249b5e85b6cb3c53699df9" name="afbbfdb0fe9249b5e85b6cb3c53699df9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afbbfdb0fe9249b5e85b6cb3c53699df9">&#9670;&#160;</a></span>SharedWeakUnion() <span class="overload">[2/5]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classripple_1_1SharedWeakUnion.html">ripple::SharedWeakUnion</a>&lt; T &gt;::SharedWeakUnion </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classripple_1_1SharedWeakUnion.html">SharedWeakUnion</a>&lt; T &gt; const &amp;&#160;</td>
<td class="paramname"><em>rhs</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ac2192b836ecd7560181cb4745f8529ed" name="ac2192b836ecd7560181cb4745f8529ed"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac2192b836ecd7560181cb4745f8529ed">&#9670;&#160;</a></span>SharedWeakUnion() <span class="overload">[3/5]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<div class="memtemplate">
template&lt;class TT &gt; <br />
requires <a class="elRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::convertible_to</a>&lt;TT*, T*&gt;</div>
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classripple_1_1SharedWeakUnion.html">ripple::SharedWeakUnion</a>&lt; T &gt;::SharedWeakUnion </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classripple_1_1SharedIntrusive.html">SharedIntrusive</a>&lt; TT &gt; const &amp;&#160;</td>
<td class="paramname"><em>rhs</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a790821df256ea80c1b49899f01d5ee89" name="a790821df256ea80c1b49899f01d5ee89"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a790821df256ea80c1b49899f01d5ee89">&#9670;&#160;</a></span>SharedWeakUnion() <span class="overload">[4/5]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classripple_1_1SharedWeakUnion.html">ripple::SharedWeakUnion</a>&lt; T &gt;::SharedWeakUnion </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classripple_1_1SharedWeakUnion.html">SharedWeakUnion</a>&lt; T &gt; &amp;&amp;&#160;</td>
<td class="paramname"><em>rhs</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a9eb69e51cc4154612aa0d5770268f00c" name="a9eb69e51cc4154612aa0d5770268f00c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9eb69e51cc4154612aa0d5770268f00c">&#9670;&#160;</a></span>SharedWeakUnion() <span class="overload">[5/5]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<div class="memtemplate">
template&lt;class TT &gt; <br />
requires <a class="elRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::convertible_to</a>&lt;TT*, T*&gt;</div>
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classripple_1_1SharedWeakUnion.html">ripple::SharedWeakUnion</a>&lt; T &gt;::SharedWeakUnion </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classripple_1_1SharedIntrusive.html">SharedIntrusive</a>&lt; TT &gt; &amp;&amp;&#160;</td>
<td class="paramname"><em>rhs</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a7da2d81c733ae46e2ce88a4f83738f71" name="a7da2d81c733ae46e2ce88a4f83738f71"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7da2d81c733ae46e2ce88a4f83738f71">&#9670;&#160;</a></span>~SharedWeakUnion()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classripple_1_1SharedWeakUnion.html">ripple::SharedWeakUnion</a>&lt; T &gt;::~<a class="el" href="classripple_1_1SharedWeakUnion.html">SharedWeakUnion</a> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="abb2a49d6f9c45d4bf6c057752626f606" name="abb2a49d6f9c45d4bf6c057752626f606"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abb2a49d6f9c45d4bf6c057752626f606">&#9670;&#160;</a></span>operator=() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classripple_1_1SharedWeakUnion.html">SharedWeakUnion</a> &amp; <a class="el" href="classripple_1_1SharedWeakUnion.html">ripple::SharedWeakUnion</a>&lt; T &gt;::operator= </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classripple_1_1SharedWeakUnion.html">SharedWeakUnion</a>&lt; T &gt; const &amp;&#160;</td>
<td class="paramname"><em>rhs</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a288f438351747d1b5fc0dd940adc5734" name="a288f438351747d1b5fc0dd940adc5734"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a288f438351747d1b5fc0dd940adc5734">&#9670;&#160;</a></span>operator=() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<div class="memtemplate">
template&lt;class TT &gt; <br />
requires <a class="elRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::convertible_to</a>&lt;TT*, T*&gt;</div>
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classripple_1_1SharedWeakUnion.html">SharedWeakUnion</a> &amp; <a class="el" href="classripple_1_1SharedWeakUnion.html">ripple::SharedWeakUnion</a>&lt; T &gt;::operator= </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classripple_1_1SharedIntrusive.html">SharedIntrusive</a>&lt; TT &gt; const &amp;&#160;</td>
<td class="paramname"><em>rhs</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a8064ebe45a0e7ba6453f9b0c677fae5c" name="a8064ebe45a0e7ba6453f9b0c677fae5c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8064ebe45a0e7ba6453f9b0c677fae5c">&#9670;&#160;</a></span>operator=() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<div class="memtemplate">
template&lt;class TT &gt; <br />
requires <a class="elRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::convertible_to</a>&lt;TT*, T*&gt;</div>
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classripple_1_1SharedWeakUnion.html">SharedWeakUnion</a> &amp; <a class="el" href="classripple_1_1SharedWeakUnion.html">ripple::SharedWeakUnion</a>&lt; T &gt;::operator= </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classripple_1_1SharedIntrusive.html">SharedIntrusive</a>&lt; TT &gt; &amp;&amp;&#160;</td>
<td class="paramname"><em>rhs</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a0437c282f783e60800e0e53415d56bb0" name="a0437c282f783e60800e0e53415d56bb0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0437c282f783e60800e0e53415d56bb0">&#9670;&#160;</a></span>getStrong()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classripple_1_1SharedIntrusive.html">SharedIntrusive</a>&lt; T &gt; <a class="el" href="classripple_1_1SharedWeakUnion.html">ripple::SharedWeakUnion</a>&lt; T &gt;::getStrong </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Return a strong pointer if this is already a strong pointer (i.e. </p>
<p>don't lock the weak pointer. Use the <code>lock</code> method if that's what's needed) </p>
</div>
</div>
<a id="a7a6d87dcc1f75c53e5281eea3b4a70d9" name="a7a6d87dcc1f75c53e5281eea3b4a70d9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7a6d87dcc1f75c53e5281eea3b4a70d9">&#9670;&#160;</a></span>operator bool()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classripple_1_1SharedWeakUnion.html">ripple::SharedWeakUnion</a>&lt; T &gt;::operator bool </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span><span class="mlabel">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Return true if this is a strong pointer and the strong pointer is seated. </p>
</div>
</div>
<a id="ab5386228e1dc5f481ffe6412038bd6d8" name="ab5386228e1dc5f481ffe6412038bd6d8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab5386228e1dc5f481ffe6412038bd6d8">&#9670;&#160;</a></span>reset()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classripple_1_1SharedWeakUnion.html">ripple::SharedWeakUnion</a>&lt; T &gt;::reset </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the pointer to null, decrement the appropriate ref count, and run the appropriate release action. </p>
</div>
</div>
<a id="aadc1e414a1dbb42a0294cbf9303a2c65" name="aadc1e414a1dbb42a0294cbf9303a2c65"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aadc1e414a1dbb42a0294cbf9303a2c65">&#9670;&#160;</a></span>get()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="memname">
<tr>
<td class="memname">T * <a class="el" href="classripple_1_1SharedWeakUnion.html">ripple::SharedWeakUnion</a>&lt; T &gt;::get </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>If this is a strong pointer, return the raw pointer. </p>
<p>Otherwise return null. </p>
</div>
</div>
<a id="ab84de095465d02cab0fc56971e0e2e95" name="ab84de095465d02cab0fc56971e0e2e95"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab84de095465d02cab0fc56971e0e2e95">&#9670;&#160;</a></span>use_count()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> <a class="el" href="classripple_1_1SharedWeakUnion.html">ripple::SharedWeakUnion</a>&lt; T &gt;::use_count </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>If this is a strong pointer, return the strong count. </p>
<p>Otherwise return 0 </p>
</div>
</div>
<a id="a2292bbd1edcd47b40999eab293b4965d" name="a2292bbd1edcd47b40999eab293b4965d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2292bbd1edcd47b40999eab293b4965d">&#9670;&#160;</a></span>expired()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classripple_1_1SharedWeakUnion.html">ripple::SharedWeakUnion</a>&lt; T &gt;::expired </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Return true if there is a non-zero strong count. </p>
</div>
</div>
<a id="a173b54db284aaaf75a783184959d5b64" name="a173b54db284aaaf75a783184959d5b64"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a173b54db284aaaf75a783184959d5b64">&#9670;&#160;</a></span>lock()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classripple_1_1SharedIntrusive.html">SharedIntrusive</a>&lt; T &gt; <a class="el" href="classripple_1_1SharedWeakUnion.html">ripple::SharedWeakUnion</a>&lt; T &gt;::lock </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>If this is a strong pointer, return the strong pointer. </p>
<p>Otherwise attempt to lock the weak pointer. </p>
</div>
</div>
<a id="a5f9b80090815d0a5bd676795ddc9bcc4" name="a5f9b80090815d0a5bd676795ddc9bcc4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5f9b80090815d0a5bd676795ddc9bcc4">&#9670;&#160;</a></span>isStrong()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classripple_1_1SharedWeakUnion.html">ripple::SharedWeakUnion</a>&lt; T &gt;::isStrong </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Return true is this represents a strong pointer. </p>
</div>
</div>
<a id="ae0679d0fea0dfed05c013cdb00bcb056" name="ae0679d0fea0dfed05c013cdb00bcb056"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae0679d0fea0dfed05c013cdb00bcb056">&#9670;&#160;</a></span>isWeak()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classripple_1_1SharedWeakUnion.html">ripple::SharedWeakUnion</a>&lt; T &gt;::isWeak </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Return true is this represents a weak pointer. </p>
</div>
</div>
<a id="ac860b63006359c702b68c5a8334e2efa" name="ac860b63006359c702b68c5a8334e2efa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac860b63006359c702b68c5a8334e2efa">&#9670;&#160;</a></span>convertToStrong()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classripple_1_1SharedWeakUnion.html">ripple::SharedWeakUnion</a>&lt; T &gt;::convertToStrong </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>If this is a weak pointer, attempt to convert it to a strong pointer. </p>
<dl class="section return"><dt>Returns</dt><dd>true if successfully converted to a strong pointer (or was already a strong pointer). Otherwise false. </dd></dl>
</div>
</div>
<a id="aa91b65bd58b070e88a06aba584dbf678" name="aa91b65bd58b070e88a06aba584dbf678"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa91b65bd58b070e88a06aba584dbf678">&#9670;&#160;</a></span>convertToWeak()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classripple_1_1SharedWeakUnion.html">ripple::SharedWeakUnion</a>&lt; T &gt;::convertToWeak </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>If this is a strong pointer, attempt to convert it to a weak pointer. </p>
<dl class="section return"><dt>Returns</dt><dd>false if the pointer is null. Otherwise return true. </dd></dl>
</div>
</div>
<a id="a1785490c35a0e28b17e18867bb829f01" name="a1785490c35a0e28b17e18867bb829f01"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1785490c35a0e28b17e18867bb829f01">&#9670;&#160;</a></span>unsafeGetRawPtr()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">T * <a class="el" href="classripple_1_1SharedWeakUnion.html">ripple::SharedWeakUnion</a>&lt; T &gt;::unsafeGetRawPtr </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the raw pointer held by this object. </p>
</div>
</div>
<a id="ad9aaab0dad22eb64913b6b91a0604656" name="ad9aaab0dad22eb64913b6b91a0604656"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad9aaab0dad22eb64913b6b91a0604656">&#9670;&#160;</a></span>unsafeSetRawPtr() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classripple_1_1SharedWeakUnion.html">ripple::SharedWeakUnion</a>&lt; T &gt;::unsafeSetRawPtr </td>
<td>(</td>
<td class="paramtype">T *&#160;</td>
<td class="paramname"><em>p</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classripple_1_1SharedWeakUnion.html#ab942abc90076d8d32944861198eb1c4b">RefStrength</a>&#160;</td>
<td class="paramname"><em>rs</em>&#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">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the raw pointer and tag bit directly. </p>
</div>
</div>
<a id="ae0b9c5b23d94159923922a17e2b1ad24" name="ae0b9c5b23d94159923922a17e2b1ad24"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae0b9c5b23d94159923922a17e2b1ad24">&#9670;&#160;</a></span>unsafeSetRawPtr() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classripple_1_1SharedWeakUnion.html">ripple::SharedWeakUnion</a>&lt; T &gt;::unsafeSetRawPtr </td>
<td>(</td>
<td class="paramtype"><a class="elRef" href="http://en.cppreference.com/w/cpp/types/nullptr_t.html">std::nullptr_t</a>&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the raw pointer and tag bit to all zeros (strong null pointer). </p>
</div>
</div>
<a id="aca0b34750902d66e6307a331e1abedf5" name="aca0b34750902d66e6307a331e1abedf5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aca0b34750902d66e6307a331e1abedf5">&#9670;&#160;</a></span>unsafeReleaseNoStore()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classripple_1_1SharedWeakUnion.html">ripple::SharedWeakUnion</a>&lt; T &gt;::unsafeReleaseNoStore </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Decrement the appropriate ref count, and run the appropriate release action. </p>
<p>Note: this does <em>not</em> set the raw pointer to null. </p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a944818f4cba4fa28c066009d1ed1a314" name="a944818f4cba4fa28c066009d1ed1a314"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a944818f4cba4fa28c066009d1ed1a314">&#9670;&#160;</a></span>tp_</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uintptr_t</a> <a class="el" href="classripple_1_1SharedWeakUnion.html">ripple::SharedWeakUnion</a>&lt; T &gt;::tp_ {0}</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="IntrusivePointer_8h_source.html#l00411">411</a> of file <a class="el" href="IntrusivePointer_8h_source.html">IntrusivePointer.h</a>.</p>
</div>
</div>
<a id="afb18201849c8a318452e441aad380e2a" name="afb18201849c8a318452e441aad380e2a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afb18201849c8a318452e441aad380e2a">&#9670;&#160;</a></span>tagMask</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uintptr_t</a> <a class="el" href="classripple_1_1SharedWeakUnion.html">ripple::SharedWeakUnion</a>&lt; T &gt;::tagMask = 1</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="IntrusivePointer_8h_source.html#l00412">412</a> of file <a class="el" href="IntrusivePointer_8h_source.html">IntrusivePointer.h</a>.</p>
</div>
</div>
<a id="ac2ee3d1ad8845f46a91ec65fffcc6f98" name="ac2ee3d1ad8845f46a91ec65fffcc6f98"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac2ee3d1ad8845f46a91ec65fffcc6f98">&#9670;&#160;</a></span>ptrMask</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constexpr <a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uintptr_t</a> <a class="el" href="classripple_1_1SharedWeakUnion.html">ripple::SharedWeakUnion</a>&lt; T &gt;::ptrMask = ~<a class="el" href="classripple_1_1SharedWeakUnion.html#afb18201849c8a318452e441aad380e2a">tagMask</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="IntrusivePointer_8h_source.html#l00413">413</a> of file <a class="el" href="IntrusivePointer_8h_source.html">IntrusivePointer.h</a>.</p>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
</small></address>
</body>
</html>