This commit is contained in:
2025-11-24 14:19:51 +05:30
commit f5c1412b28
6734 changed files with 1527575 additions and 0 deletions

View File

@ -0,0 +1,124 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Source/src/UDPProxyClient.cpp File 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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../files.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/d15/_u_d_p_proxy_client_8cpp.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">UDPProxyClient.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="../../de/ddb/_native_feature_includes_8h_source.xhtml">slikenet/NativeFeatureIncludes.h</a>&quot;</code><br/>
</div>
<p><a href="../../da/d15/_u_d_p_proxy_client_8cpp_source.xhtml">Go to the source code of this file.</a></p>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_d1eb22c2ecfd8b50f59e9cbaf8260105.xhtml">src</a></li><li class="navelem"><a class="el" href="../../da/d15/_u_d_p_proxy_client_8cpp.xhtml">UDPProxyClient.cpp</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,443 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Source/src/UDPProxyClient.cpp Source File</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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../files.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/d15/_u_d_p_proxy_client_8cpp_source.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">UDPProxyClient.cpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../da/d15/_u_d_p_proxy_client_8cpp.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Original work: Copyright (c) 2014, Oculus VR, Inc.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This source code is licensed under the BSD-style license found in the</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * RakNet License.txt file in the licenses directory of this source tree. An additional grant </span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of patent rights can be found in the RakNet Patents.txt file in the same directory.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Modified work: Copyright (c) 2016-2018, SLikeSoft UG (haftungsbeschränkt)</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * license found in the license.txt file in the root directory of this source tree.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../de/ddb/_native_feature_includes_8h.xhtml">slikenet/NativeFeatureIncludes.h</a>&quot;</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#if _RAKNET_SUPPORT_UDPProxyClient==1</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../df/d5e/_u_d_p_proxy_client_8h.xhtml" title="A RakNet plugin performing networking to communicate with UDPProxyCoordinator. Ultimately used to tel...">slikenet/UDPProxyClient.h</a>&quot;</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d7/dc3/_bit_stream_8h.xhtml" title="This class allows you to write and read native types as a string of bits.">slikenet/BitStream.h</a>&quot;</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d7/de7/_u_d_p_proxy_common_8h.xhtml">slikenet/UDPProxyCommon.h</a>&quot;</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../dd/d85/peerinterface_8h.xhtml" title="An interface for RakPeer. Simply contains all user functions as pure virtuals.">slikenet/peerinterface.h</a>&quot;</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d6/d83/_message_identifiers_8h.xhtml" title="All the message identifiers used by RakNet. Message identifiers comprise the first byte of any messag...">slikenet/MessageIdentifiers.h</a>&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d6/d76/_get_time_8h.xhtml" title="Returns the value from QueryPerformanceCounter. This is the function RakNet uses to represent time...">slikenet/GetTime.h</a>&quot;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="keyword">using namespace </span>SLNet;</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> DEFAULT_UNRESPONSIVE_PING_TIME_COORDINATOR=1000;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">// bool operator&lt;( const DataStructures::MLKeyRef&lt;UDPProxyClient::ServerWithPing&gt; &amp;inputKey, const UDPProxyClient::ServerWithPing &amp;cls ) {return inputKey.Get().serverAddress &lt; cls.serverAddress;}</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment">// bool operator&gt;( const DataStructures::MLKeyRef&lt;UDPProxyClient::ServerWithPing&gt; &amp;inputKey, const UDPProxyClient::ServerWithPing &amp;cls ) {return inputKey.Get().serverAddress &gt; cls.serverAddress;}</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment">// bool operator==( const DataStructures::MLKeyRef&lt;UDPProxyClient::ServerWithPing&gt; &amp;inputKey, const UDPProxyClient::ServerWithPing &amp;cls ) {return inputKey.Get().serverAddress == cls.serverAddress;}</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<a class="code" href="../../db/dbd/_export_8h.xhtml#aa00165c970bdb25e1c757b432509533b">STATIC_FACTORY_DEFINITIONS</a>(<a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#db/d22/class_s_l_net_1_1_u_d_p_proxy_client" title="Communicates with UDPProxyCoordinator, in order to find a UDPProxyServer to forward our datagrams...">UDPProxyClient</a>,<a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#db/d22/class_s_l_net_1_1_u_d_p_proxy_client" title="Communicates with UDPProxyCoordinator, in order to find a UDPProxyServer to forward our datagrams...">UDPProxyClient</a>);</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#af09d6f497031044ebaf001b611af30bf">UDPProxyClient::UDPProxyClient</a>()</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a8c9efd3c354efd886461107e778ee317">resultHandler</a>=0;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;}</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a4cd72ed5a0926d3e5c37d6121647c8bb">UDPProxyClient::~UDPProxyClient</a>()</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;{</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a174cdae717e67b8db79a8a2bd40a1bd3">Clear</a>();</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;}</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a4b099f11400ecb90650d83ee4354d927">UDPProxyClient::SetResultHandler</a>(<a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#d7/db0/struct_s_l_net_1_1_u_d_p_proxy_client_result_handler">UDPProxyClientResultHandler</a> *rh)</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;{</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a8c9efd3c354efd886461107e778ee317">resultHandler</a>=rh;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;}</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#adf2632176b8b6238da541e9ef5546fac">UDPProxyClient::RequestForwarding</a>(<a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> proxyCoordinator, <a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> sourceAddress, <a class="code" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml">RakNetGUID</a> targetGuid, <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a26b4eb1be8467562f791e3c5af4a67ae">SLNet::TimeMS</a> timeoutOnNoDataMS, <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *serverSelectionBitstream)</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;{</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="comment">// Return false if not connected </span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ad3fc8b60e351dfe5eb05cdba41d8c7a3" title="Returned from RakPeerInterface::GetConnectionState()">ConnectionState</a> cs = <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#adac8deadf450a4e1d69c11b1db588bec">rakPeerInterface</a>-&gt;<a class="code" href="../../da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a723925024fb74b89b2af6e0c2d19ad22">GetConnectionState</a>(proxyCoordinator);</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> (cs!=<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ad3fc8b60e351dfe5eb05cdba41d8c7a3a042290df226826435b62d02f647281ff" title="Is connected and able to communicate.">IS_CONNECTED</a>)</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="comment">// Pretty much a bug not to set the result handler, as otherwise you won&#39;t know if the operation succeeed or not</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(<a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a8c9efd3c354efd886461107e778ee317">resultHandler</a>!=0);</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a8c9efd3c354efd886461107e778ee317">resultHandler</a>==0)</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">BitStream</a> outgoingBs;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; outgoingBs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>)<a class="code" href="../../d6/d83/_message_identifiers_8h.xhtml#ac1b471af280629f5ace02e586d5bcfd3ad56b0bee1058a1be9f8634faeeb94874" title="UDP proxy messages. Second byte indicates type.">ID_UDP_PROXY_GENERAL</a>);</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; outgoingBs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>)<a class="code" href="../../d7/de7/_u_d_p_proxy_common_8h.xhtml#a29484f0e9e8b610f2ef941aa44a1f9a2a400d1d70525fb49c6f172e873e6716ef">ID_UDP_PROXY_FORWARDING_REQUEST_FROM_CLIENT_TO_COORDINATOR</a>);</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; outgoingBs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(sourceAddress);</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; outgoingBs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(<span class="keyword">false</span>);</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; outgoingBs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(targetGuid);</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; outgoingBs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(timeoutOnNoDataMS);</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">if</span> (serverSelectionBitstream &amp;&amp; serverSelectionBitstream-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a0efe4cd010ac7ccc0a7aa8868e0c54c8" title="Returns the length in bits of the stream.">GetNumberOfBitsUsed</a>()&gt;0)</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; outgoingBs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(<span class="keyword">true</span>);</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; outgoingBs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(serverSelectionBitstream);</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; }</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; {</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; outgoingBs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(<span class="keyword">false</span>);</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; }</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#adac8deadf450a4e1d69c11b1db588bec">rakPeerInterface</a>-&gt;<a class="code" href="../../da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#ab817d74d4aa4ff1edf593543bbf7b8fb">Send</a>(&amp;outgoingBs, <a class="code" href="../../d7/d03/_packet_priority_8h.xhtml#a659378374e516180f93640c79f59705ca06b314d863076d54942e065d90c179c4">MEDIUM_PRIORITY</a>, <a class="code" href="../../d7/d03/_packet_priority_8h.xhtml#ae41fa01235e99dced384d137fa874a7eaff2d39b163bcf3e142744962bfb0849f">RELIABLE_ORDERED</a>, 0, proxyCoordinator, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;}</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#adf2632176b8b6238da541e9ef5546fac">UDPProxyClient::RequestForwarding</a>(<a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> proxyCoordinator, <a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> sourceAddress, <a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> targetAddressAsSeenFromCoordinator, <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a26b4eb1be8467562f791e3c5af4a67ae">SLNet::TimeMS</a> timeoutOnNoDataMS, <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *serverSelectionBitstream)</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;{</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="comment">// Return false if not connected </span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ad3fc8b60e351dfe5eb05cdba41d8c7a3" title="Returned from RakPeerInterface::GetConnectionState()">ConnectionState</a> cs = <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#adac8deadf450a4e1d69c11b1db588bec">rakPeerInterface</a>-&gt;<a class="code" href="../../da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a723925024fb74b89b2af6e0c2d19ad22">GetConnectionState</a>(proxyCoordinator);</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">if</span> (cs!=<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ad3fc8b60e351dfe5eb05cdba41d8c7a3a042290df226826435b62d02f647281ff" title="Is connected and able to communicate.">IS_CONNECTED</a>)</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="comment">// Pretty much a bug not to set the result handler, as otherwise you won&#39;t know if the operation succeeed or not</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(<a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a8c9efd3c354efd886461107e778ee317">resultHandler</a>!=0);</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a8c9efd3c354efd886461107e778ee317">resultHandler</a>==0)</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">BitStream</a> outgoingBs;</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; outgoingBs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>)ID_UDP_PROXY_GENERAL);</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; outgoingBs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>)ID_UDP_PROXY_FORWARDING_REQUEST_FROM_CLIENT_TO_COORDINATOR);</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; outgoingBs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(sourceAddress);</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; outgoingBs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(<span class="keyword">true</span>);</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; outgoingBs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(targetAddressAsSeenFromCoordinator);</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; outgoingBs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(timeoutOnNoDataMS);</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">if</span> (serverSelectionBitstream &amp;&amp; serverSelectionBitstream-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a0efe4cd010ac7ccc0a7aa8868e0c54c8" title="Returns the length in bits of the stream.">GetNumberOfBitsUsed</a>()&gt;0)</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; outgoingBs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(<span class="keyword">true</span>);</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; outgoingBs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(serverSelectionBitstream);</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; {</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; outgoingBs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(<span class="keyword">false</span>);</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#adac8deadf450a4e1d69c11b1db588bec">rakPeerInterface</a>-&gt;<a class="code" href="../../da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#ab817d74d4aa4ff1edf593543bbf7b8fb">Send</a>(&amp;outgoingBs, <a class="code" href="../../d7/d03/_packet_priority_8h.xhtml#a659378374e516180f93640c79f59705ca06b314d863076d54942e065d90c179c4">MEDIUM_PRIORITY</a>, <a class="code" href="../../d7/d03/_packet_priority_8h.xhtml#ae41fa01235e99dced384d137fa874a7eaff2d39b163bcf3e142744962bfb0849f">RELIABLE_ORDERED</a>, 0, proxyCoordinator, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;}</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a277b8fe12aa2621f040fac133e4a1a9d" title="Update is called every time a packet is checked for .">UDPProxyClient::Update</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;{</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx1=0;</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">while</span> (idx1 &lt; <a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a85757bc363fb304a4c797d5417a67c4f">pingServerGroups</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>())</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; {</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; PingServerGroup *psg = <a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a85757bc363fb304a4c797d5417a67c4f">pingServerGroups</a>[idx1];</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">if</span> (psg-&gt;serversToPing.Size() &gt; 0 &amp;&amp; </div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a4772a177cb3fcb5d9e699a6670c3fb8a">SLNet::GetTimeMS</a>() &gt; psg-&gt;startPingTime+DEFAULT_UNRESPONSIVE_PING_TIME_COORDINATOR)</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; {</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="comment">// If they didn&#39;t reply within DEFAULT_UNRESPONSIVE_PING_TIME_COORDINATOR, just give up on them</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; psg-&gt;SendPingedServersToCoordinator(<a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#adac8deadf450a4e1d69c11b1db588bec">rakPeerInterface</a>);</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a79772d09451f784e87bec85694fad1ed">SLNet::OP_DELETE</a>(psg,<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a85757bc363fb304a4c797d5417a67c4f">pingServerGroups</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a79621376e92b605c4dbdb77aafbb6b60" title="Delete the element at position position.">RemoveAtIndex</a>(idx1);</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; idx1++;</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;}</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#ga5c8f613a7c294e0b96deccbdabc38f18">PluginReceiveResult</a> <a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a66a4a896d6dd933e331ecd8d46f548b1">UDPProxyClient::OnReceive</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#d8/d23/struct_s_l_net_1_1_packet" title="This represents a user message from another system.">Packet</a> *packet)</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;{</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">if</span> (packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>[0]==<a class="code" href="../../d6/d83/_message_identifiers_8h.xhtml#ac1b471af280629f5ace02e586d5bcfd3a8af0f7a44aada9fd51e33d7e61704250">ID_UNCONNECTED_PONG</a>)</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; {</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx1, idx2;</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; PingServerGroup *psg;</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">for</span> (idx1=0; idx1 &lt; <a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a85757bc363fb304a4c797d5417a67c4f">pingServerGroups</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); idx1++)</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; {</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; psg = <a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a85757bc363fb304a4c797d5417a67c4f">pingServerGroups</a>[idx1];</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">for</span> (idx2=0; idx2 &lt; psg-&gt;serversToPing.Size(); idx2++)</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; {</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">if</span> (psg-&gt;serversToPing[idx2].serverAddress==packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5c9d18515892239712a5d8fcb46c4245" title="The system that send this packet.">systemAddress</a>)</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; {</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> bsIn(packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>,packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a75dfd0a23cc4c14dd338caedabe19341" title="The length of the data in bytes.">length</a>,<span class="keyword">false</span>);</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; bsIn.IgnoreBytes(<span class="keyword">sizeof</span>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>));</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a26b4eb1be8467562f791e3c5af4a67ae">SLNet::TimeMS</a> sentTime;</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; bsIn.Read(sentTime);</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a26b4eb1be8467562f791e3c5af4a67ae">SLNet::TimeMS</a> curTime = <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a4772a177cb3fcb5d9e699a6670c3fb8a">SLNet::GetTimeMS</a>();</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordtype">int</span> ping;</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">if</span> (curTime&gt;sentTime)</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; ping=(int) (curTime-sentTime);</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; ping=0;</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; psg-&gt;serversToPing[idx2].ping=(<span class="keywordtype">unsigned</span> short) ping;</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="comment">// If all servers to ping are now pinged, reply to coordinator</span></div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">if</span> (psg-&gt;AreAllServersPinged())</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; {</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; psg-&gt;SendPingedServersToCoordinator(<a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#adac8deadf450a4e1d69c11b1db588bec">rakPeerInterface</a>);</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a79772d09451f784e87bec85694fad1ed">SLNet::OP_DELETE</a>(psg,<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a85757bc363fb304a4c797d5417a67c4f">pingServerGroups</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a79621376e92b605c4dbdb77aafbb6b60" title="Delete the element at position position.">RemoveAtIndex</a>(idx1);</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; }</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#gga5c8f613a7c294e0b96deccbdabc38f18a9f27ed7ccb7513dceb7ed4da3d99a1bf" title="The plugin used this message and it shouldn&#39;t be given to the user.">RR_STOP_PROCESSING_AND_DEALLOCATE</a>;</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; }</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; }</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; }</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; }</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>[0]==ID_UDP_PROXY_GENERAL &amp;&amp; packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a75dfd0a23cc4c14dd338caedabe19341" title="The length of the data in bytes.">length</a>&gt;1)</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; {</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">switch</span> (packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>[1])</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; {</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../d7/de7/_u_d_p_proxy_common_8h.xhtml#a29484f0e9e8b610f2ef941aa44a1f9a2adaede22cc5ac6f085fe8d96646344384">ID_UDP_PROXY_PING_SERVERS_FROM_COORDINATOR_TO_CLIENT</a>:</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; {</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a641647d1cb6bd51c888c44e6c2d637b2">OnPingServers</a>(packet);</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; }</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../d7/de7/_u_d_p_proxy_common_8h.xhtml#a29484f0e9e8b610f2ef941aa44a1f9a2a1d2c2a6d2aead0447309d8c21fbb43eb">ID_UDP_PROXY_FORWARDING_SUCCEEDED</a>:</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../d7/de7/_u_d_p_proxy_common_8h.xhtml#a29484f0e9e8b610f2ef941aa44a1f9a2a38d5adfb5ecad1a743e422c069be724b">ID_UDP_PROXY_ALL_SERVERS_BUSY</a>:</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../d7/de7/_u_d_p_proxy_common_8h.xhtml#a29484f0e9e8b610f2ef941aa44a1f9a2ac07bc5c17f5f021e491e542b352d32e6">ID_UDP_PROXY_IN_PROGRESS</a>:</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../d7/de7/_u_d_p_proxy_common_8h.xhtml#a29484f0e9e8b610f2ef941aa44a1f9a2a37f6ba98425f3077ca47e1a0bd269e9d">ID_UDP_PROXY_NO_SERVERS_ONLINE</a>:</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../d7/de7/_u_d_p_proxy_common_8h.xhtml#a29484f0e9e8b610f2ef941aa44a1f9a2a7f6b879378bbf37a7acaa89eb6f5714d">ID_UDP_PROXY_RECIPIENT_GUID_NOT_CONNECTED_TO_COORDINATOR</a>:</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../d7/de7/_u_d_p_proxy_common_8h.xhtml#a29484f0e9e8b610f2ef941aa44a1f9a2a78973d656e0baf3f4a44dd001d0b704c">ID_UDP_PROXY_FORWARDING_NOTIFICATION</a>:</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; {</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <a class="code" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml">RakNetGUID</a> targetGuid;</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> senderAddress, targetAddress;</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> incomingBs(packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>, packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a75dfd0a23cc4c14dd338caedabe19341" title="The length of the data in bytes.">length</a>, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; incomingBs.IgnoreBytes(<span class="keyword">sizeof</span>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>)*2);</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; incomingBs.Read(senderAddress);</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; incomingBs.Read(targetAddress);</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; incomingBs.Read(targetGuid);</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">switch</span> (packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>[1])</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; {</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../d7/de7/_u_d_p_proxy_common_8h.xhtml#a29484f0e9e8b610f2ef941aa44a1f9a2a78973d656e0baf3f4a44dd001d0b704c">ID_UDP_PROXY_FORWARDING_NOTIFICATION</a>:</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../d7/de7/_u_d_p_proxy_common_8h.xhtml#a29484f0e9e8b610f2ef941aa44a1f9a2a1d2c2a6d2aead0447309d8c21fbb43eb">ID_UDP_PROXY_FORWARDING_SUCCEEDED</a>:</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../d7/de7/_u_d_p_proxy_common_8h.xhtml#a29484f0e9e8b610f2ef941aa44a1f9a2ac07bc5c17f5f021e491e542b352d32e6">ID_UDP_PROXY_IN_PROGRESS</a>:</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; {</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> forwardingPort;</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> serverIP;</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; incomingBs.Read(serverIP);</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; incomingBs.Read(forwardingPort);</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">if</span> (packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>[1]==<a class="code" href="../../d7/de7/_u_d_p_proxy_common_8h.xhtml#a29484f0e9e8b610f2ef941aa44a1f9a2a1d2c2a6d2aead0447309d8c21fbb43eb">ID_UDP_PROXY_FORWARDING_SUCCEEDED</a>)</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; {</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a8c9efd3c354efd886461107e778ee317">resultHandler</a>)</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a8c9efd3c354efd886461107e778ee317">resultHandler</a>-&gt;<a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#abac83935607552cf2c965f5804b9c14c">OnForwardingSuccess</a>(serverIP.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>(), forwardingPort, packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5c9d18515892239712a5d8fcb46c4245" title="The system that send this packet.">systemAddress</a>, senderAddress, targetAddress, targetGuid, <span class="keyword">this</span>);</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; }</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>[1]==<a class="code" href="../../d7/de7/_u_d_p_proxy_common_8h.xhtml#a29484f0e9e8b610f2ef941aa44a1f9a2ac07bc5c17f5f021e491e542b352d32e6">ID_UDP_PROXY_IN_PROGRESS</a>)</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; {</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a8c9efd3c354efd886461107e778ee317">resultHandler</a>)</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a8c9efd3c354efd886461107e778ee317">resultHandler</a>-&gt;<a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a00b8e44b1c4c04a233e8253f4e4a3786">OnForwardingInProgress</a>(serverIP.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>(), forwardingPort, packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5c9d18515892239712a5d8fcb46c4245" title="The system that send this packet.">systemAddress</a>, senderAddress, targetAddress, targetGuid, <span class="keyword">this</span>);</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; }</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; {</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="comment">// Send a datagram to the proxy, so if we are behind a router, that router adds an entry to the routing table.</span></div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="comment">// Otherwise the router would block the incoming datagrams from source</span></div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="comment">// It doesn&#39;t matter if the message actually arrives as long as it goes through the router</span></div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#adac8deadf450a4e1d69c11b1db588bec">rakPeerInterface</a>-&gt;<a class="code" href="../../da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a18d454a23ef3a710edf125d3852deef0">Ping</a>(serverIP.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>(), forwardingPort, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a8c9efd3c354efd886461107e778ee317">resultHandler</a>)</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a8c9efd3c354efd886461107e778ee317">resultHandler</a>-&gt;<a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a33932be9ada52b6409a3fb758112b714">OnForwardingNotification</a>(serverIP.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>(), forwardingPort, packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5c9d18515892239712a5d8fcb46c4245" title="The system that send this packet.">systemAddress</a>, senderAddress, targetAddress, targetGuid, <span class="keyword">this</span>);</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; }</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; }</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../d7/de7/_u_d_p_proxy_common_8h.xhtml#a29484f0e9e8b610f2ef941aa44a1f9a2a38d5adfb5ecad1a743e422c069be724b">ID_UDP_PROXY_ALL_SERVERS_BUSY</a>:</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a8c9efd3c354efd886461107e778ee317">resultHandler</a>)</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a8c9efd3c354efd886461107e778ee317">resultHandler</a>-&gt;<a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#af90178f8d77f810bf3aaa79b7732d1b7">OnAllServersBusy</a>(packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5c9d18515892239712a5d8fcb46c4245" title="The system that send this packet.">systemAddress</a>, senderAddress, targetAddress, targetGuid, <span class="keyword">this</span>);</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../d7/de7/_u_d_p_proxy_common_8h.xhtml#a29484f0e9e8b610f2ef941aa44a1f9a2a37f6ba98425f3077ca47e1a0bd269e9d">ID_UDP_PROXY_NO_SERVERS_ONLINE</a>:</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a8c9efd3c354efd886461107e778ee317">resultHandler</a>)</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a8c9efd3c354efd886461107e778ee317">resultHandler</a>-&gt;<a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#adc59e0a4b4c2bb2b558acac0bad1d9e5">OnNoServersOnline</a>(packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5c9d18515892239712a5d8fcb46c4245" title="The system that send this packet.">systemAddress</a>, senderAddress, targetAddress, targetGuid, <span class="keyword">this</span>);</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../d7/de7/_u_d_p_proxy_common_8h.xhtml#a29484f0e9e8b610f2ef941aa44a1f9a2a7f6b879378bbf37a7acaa89eb6f5714d">ID_UDP_PROXY_RECIPIENT_GUID_NOT_CONNECTED_TO_COORDINATOR</a>:</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; {</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a8c9efd3c354efd886461107e778ee317">resultHandler</a>)</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a8c9efd3c354efd886461107e778ee317">resultHandler</a>-&gt;<a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a914c3ccc1fbe39b6e6a736c2d5f47550">OnRecipientNotConnected</a>(packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5c9d18515892239712a5d8fcb46c4245" title="The system that send this packet.">systemAddress</a>, senderAddress, targetAddress, targetGuid, <span class="keyword">this</span>);</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; }</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; }</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; </div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; }</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#gga5c8f613a7c294e0b96deccbdabc38f18a9f27ed7ccb7513dceb7ed4da3d99a1bf" title="The plugin used this message and it shouldn&#39;t be given to the user.">RR_STOP_PROCESSING_AND_DEALLOCATE</a>;</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; }</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#gga5c8f613a7c294e0b96deccbdabc38f18a5b5a476b87be78212057efd5535345d4" title="This message will be processed by other plugins, and at last by the user.">RR_CONTINUE_PROCESSING</a>;</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;}</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a83a6abb6ad3088d55c0ba091b9d5a8a4" title="Called when RakPeer is shutdown.">UDPProxyClient::OnRakPeerShutdown</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;{</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a174cdae717e67b8db79a8a2bd40a1bd3">Clear</a>();</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;}</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a641647d1cb6bd51c888c44e6c2d637b2">UDPProxyClient::OnPingServers</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#d8/d23/struct_s_l_net_1_1_packet" title="This represents a user message from another system.">Packet</a> *packet)</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;{</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> incomingBs(packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>, packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a75dfd0a23cc4c14dd338caedabe19341" title="The length of the data in bytes.">length</a>, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; incomingBs.IgnoreBytes(2);</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; PingServerGroup *psg = SLNet::OP_NEW&lt;PingServerGroup&gt;(<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; </div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; ServerWithPing swp;</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; incomingBs.Read(psg-&gt;sata.senderClientAddress);</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; incomingBs.Read(psg-&gt;sata.targetClientAddress);</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="comment">// #med - might be possible to drop - see pull request 35 - however kept as is to ensure ABI</span></div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="comment">// compatibility to RakNet in MaxNet 0.x - see #39</span></div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <a class="code" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml">RakNetGUID</a> targetGuid;</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; incomingBs.Read(targetGuid);</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; psg-&gt;startPingTime= <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a4772a177cb3fcb5d9e699a6670c3fb8a">SLNet::GetTimeMS</a>();</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; psg-&gt;coordinatorAddressForPings=packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5c9d18515892239712a5d8fcb46c4245" title="The system that send this packet.">systemAddress</a>;</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> serverListSize;</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; incomingBs.Read(serverListSize);</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> serverAddress;</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> serverListIndex;</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordtype">char</span> ipStr[64];</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">for</span> (serverListIndex=0; serverListIndex&lt;serverListSize; serverListIndex++)</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; {</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; incomingBs.Read(swp.serverAddress);</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; swp.ping=DEFAULT_UNRESPONSIVE_PING_TIME_COORDINATOR;</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; psg-&gt;serversToPing.Push(swp, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a> );</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; swp.serverAddress.<a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml#a7a994f9c414b5fd7094017b43e7c102b">ToString</a>(<span class="keyword">false</span>,ipStr,static_cast&lt;size_t&gt;(64));</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#adac8deadf450a4e1d69c11b1db588bec">rakPeerInterface</a>-&gt;<a class="code" href="../../da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a18d454a23ef3a710edf125d3852deef0">Ping</a>(ipStr,swp.serverAddress.GetPort(),<span class="keyword">false</span>,0);</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; }</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a85757bc363fb304a4c797d5417a67c4f">pingServerGroups</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a771fc63e3b0d892fbb605a379a78bacb" title="Push an element at the end of the stack.">Push</a>(psg,<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;}</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a976e941c89fa01f85ae8eec865ac37d5">UDPProxyClient::PingServerGroup::AreAllServersPinged</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> serversToPingIndex;</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">for</span> (serversToPingIndex=0; serversToPingIndex &lt; <a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a57f7b078742e0418e99fc2efada5991d">serversToPing</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); serversToPingIndex++)</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; {</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a57f7b078742e0418e99fc2efada5991d">serversToPing</a>[serversToPingIndex].ping==DEFAULT_UNRESPONSIVE_PING_TIME_COORDINATOR)</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; }</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;}</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a0f59ed840cc1d610df62f4ba87657e68">UDPProxyClient::PingServerGroup::SendPingedServersToCoordinator</a>(<a class="code" href="../../da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml" title="The main interface for network communications.">RakPeerInterface</a> *rakPeer)</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;{</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">BitStream</a> outgoingBs;</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; outgoingBs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>)ID_UDP_PROXY_GENERAL);</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; outgoingBs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>)<a class="code" href="../../d7/de7/_u_d_p_proxy_common_8h.xhtml#a29484f0e9e8b610f2ef941aa44a1f9a2a1ff614b051970e3bf9ea356458707ae3">ID_UDP_PROXY_PING_SERVERS_REPLY_FROM_CLIENT_TO_COORDINATOR</a>);</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; outgoingBs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(sata.senderClientAddress);</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; outgoingBs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(sata.targetClientAddress);</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> serversToPingSize = (<span class="keywordtype">unsigned</span> short) serversToPing.Size();</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; outgoingBs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(serversToPingSize);</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> serversToPingIndex;</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">for</span> (serversToPingIndex=0; serversToPingIndex &lt; serversToPingSize; serversToPingIndex++)</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; {</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; outgoingBs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(serversToPing[serversToPingIndex].serverAddress);</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; outgoingBs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(serversToPing[serversToPingIndex].ping);</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; }</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; rakPeer-&gt;<a class="code" href="../../da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#ab817d74d4aa4ff1edf593543bbf7b8fb">Send</a>(&amp;outgoingBs, <a class="code" href="../../d7/d03/_packet_priority_8h.xhtml#a659378374e516180f93640c79f59705ca06b314d863076d54942e065d90c179c4">MEDIUM_PRIORITY</a>, <a class="code" href="../../d7/d03/_packet_priority_8h.xhtml#ae41fa01235e99dced384d137fa874a7eaff2d39b163bcf3e142744962bfb0849f">RELIABLE_ORDERED</a>, 0, coordinatorAddressForPings, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;}</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a174cdae717e67b8db79a8a2bd40a1bd3">UDPProxyClient::Clear</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;{</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i &lt; <a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a85757bc363fb304a4c797d5417a67c4f">pingServerGroups</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a79772d09451f784e87bec85694fad1ed">SLNet::OP_DELETE</a>(<a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a85757bc363fb304a4c797d5417a67c4f">pingServerGroups</a>[i],<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <a class="code" href="../../d1/d95/group___u_d_p___p_r_o_x_y___g_r_o_u_p.xhtml#a85757bc363fb304a4c797d5417a67c4f">pingServerGroups</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a34219a5ce92981102d06fb1da7842a6b" title="Clear the list.">Clear</a>(<span class="keyword">false</span>, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;}</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;<span class="preprocessor">#endif // _RAKNET_SUPPORT_*</span></div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;<span class="preprocessor"></span></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_d1eb22c2ecfd8b50f59e9cbaf8260105.xhtml">src</a></li><li class="navelem"><a class="el" href="../../da/d15/_u_d_p_proxy_client_8cpp.xhtml">UDPProxyClient.cpp</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,91 @@
var class_s_l_net_1_1_rak_peer_interface =
[
[ "~RakPeerInterface", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a80e1bedeb306c872cae6cbc7ef6e0c9d", null ],
[ "AddToBanList", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a3b10ced4928f92596b272f97b9bae6be", null ],
[ "AddToSecurityExceptionList", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#af209b3df93da38569048a4c3ca33a427", null ],
[ "AdvertiseSystem", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a21d9f487c41e02c6b54b15c9eae4882d", null ],
[ "AllocatePacket", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#af5503de4f7ae80f6734056842921178e", null ],
[ "AllowConnectionResponseIPMigration", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a121d74f7388b0c00479f8827f8fa4622", null ],
[ "ApplyNetworkSimulator", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a04d4f3a948bfb57cf6222515315954bf", null ],
[ "AttachPlugin", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a425f7501caa01d0f4cd9afb45311dce9", null ],
[ "CancelConnectionAttempt", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a3e5adfa537943e7b56a309ee2c2849a1", null ],
[ "ChangeSystemAddress", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a362345ac549856ad557be08cb82ed97b", null ],
[ "ClearBanList", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#ae12a72bcad0fb5a55afa0266181b2e43", null ],
[ "CloseConnection", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a7932ecbd7d2ce5db099f55397781d6f2", null ],
[ "Connect", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a2f75a0ccc500acaa25ab8fdf63572227", null ],
[ "ConnectWithSocket", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#aa187973d2a41d5efdde05687580cfbd8", null ],
[ "DeallocatePacket", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a5cdb5adac2c66a9950ecb6d47d63159a", null ],
[ "DetachPlugin", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#af479bdf353341b0788263bb18985470d", null ],
[ "DisableSecurity", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a217385be7a630efbcd0b0ca48d882a8c", null ],
[ "Get64BitUniqueRandomNumber", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#aaf48ba4b7fd51925799c67990dff617d", null ],
[ "GetAveragePing", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a1b53f6cb799f840b8a724cc53419d9d4", null ],
[ "GetClientPublicKeyFromSystemAddress", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#aa898a056055a8d2917afee8732a1824c", null ],
[ "GetClockDifferential", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a1aa9fde72207e18550f2a6bf4960971c", null ],
[ "GetConnectionList", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#ad664548e0c2fe14d11f043529ec3ba8c", null ],
[ "GetConnectionState", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a723925024fb74b89b2af6e0c2d19ad22", null ],
[ "GetExternalID", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a46e8e541e8cc489c2b15aafcbce95222", null ],
[ "GetGUIDFromIndex", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a864c4b6701add713589c810353128a72", null ],
[ "GetGuidFromSystemAddress", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a19e5960d76ee5af2ca108978daa2fcff", null ],
[ "GetIncomingPassword", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a9af3c9444586bb235481a54e09c79b78", null ],
[ "GetIndexFromSystemAddress", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a74dede99dac1603379f5999cc365e695", null ],
[ "GetInternalID", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#ad3e572620ed2fc1bb127589ddb5245c3", null ],
[ "GetLastPing", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a95131bd3e189df6f992b7daa6136ec64", null ],
[ "GetLocalIP", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a319a8f2b0b8038b9e9027dc933c6b01b", null ],
[ "GetLowestPing", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a67a292d0028a41507c43c680065d4922", null ],
[ "GetMaximumIncomingConnections", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#afd5caa27aec86e3bd0bfa0f3efe59806", null ],
[ "GetMaximumNumberOfPeers", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a937fc65f6d7d0f9e78500046cb5c5384", null ],
[ "GetMTUSize", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#aaf024e7b099989ac165800d8aa1b183f", null ],
[ "GetMyBoundAddress", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a09a73f68392108d8d97fa3a9d0f78709", null ],
[ "GetMyGUID", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a1b84bba5f2e64578ac7d05899bd5967e", null ],
[ "GetNextSendReceipt", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a9b0c3aadd98bede4bfbf1cb55dbc1401", null ],
[ "GetNumberOfAddresses", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a0b70136b3ba83744a28ff1f701a37e79", null ],
[ "GetOfflinePingResponse", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a81e46570c0fce9fffeec263c81c0397a", null ],
[ "GetReceiveBufferSize", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#ae9600a414e10699241ce9a9484012848", null ],
[ "GetSocket", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#ac8c061837b6eb0e75282811ae473f2bb", null ],
[ "GetSockets", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a8cb053f3d6574b9a050dd05d92fbe5bd", null ],
[ "GetSplitMessageProgressInterval", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a583c0776e6f48e8ab35978582c1b860b", null ],
[ "GetStatistics", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#ad3de82f619e6ae9ab5f618f1d9646dc9", null ],
[ "GetStatistics", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a67f225744b13892b31fea3370d9d0bb8", null ],
[ "GetStatisticsList", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a1f179cacb1bd50fa557e4c7dcb2576d4", null ],
[ "GetSystemAddressFromGuid", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a3f89be676f51ee2f03138ea0014c2605", null ],
[ "GetSystemAddressFromIndex", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a90f82d2d0d71566c0238873db1ca22cf", null ],
[ "GetSystemList", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#aa3b4f34af0368b53b037cab21be2bc34", null ],
[ "GetTimeoutTime", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a1e2be5756640b09167e463516d415260", null ],
[ "IncrementNextSendReceipt", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a2a0119371a5336c8fd5eea6cec8fbe75", null ],
[ "InitializeSecurity", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#afbb2033285e990cd5555562c41eff821", null ],
[ "IsActive", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a50c7a3418a831307ead038c341e2f5df", null ],
[ "IsBanned", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#afcb618e1c5e8e0f747d413f880c5f5db", null ],
[ "IsInSecurityExceptionList", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a7b7bb3f34db251e1ca81301f8121b574", null ],
[ "IsLocalIP", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#ab6f239f66aadd26ec82053a53f8980e6", null ],
[ "IsNetworkSimulatorActive", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a605e0a63c67af5bf69df1da2b51a1919", null ],
[ "NumberOfConnections", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#aaa25058350d275c224f2518e49842946", null ],
[ "Ping", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a18d454a23ef3a710edf125d3852deef0", null ],
[ "Ping", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a48825ba6e2a75a77fc06f0b57b185df9", null ],
[ "PushBackPacket", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a55e4b5cdc35701904e451e81ff237d08", null ],
[ "Receive", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a99738a11165d8d6feda63f2dfde1bf28", null ],
[ "ReleaseSockets", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a63c30e14cb32990c96f83e5b1cd11f4e", null ],
[ "RemoveFromBanList", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a90789243352dfddce2db178c3206a5c3", null ],
[ "RemoveFromSecurityExceptionList", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a2ba2d7b9c0d4df5cbe24423e65110ca5", null ],
[ "RunUpdateCycle", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a5db09abf27a28258be325164c881682e", null ],
[ "Send", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#ab817d74d4aa4ff1edf593543bbf7b8fb", null ],
[ "Send", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#aea7f8484df107d438e8c34b89534091b", null ],
[ "SendList", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a0b8b4e445203943f0a7fb2bf15ee1509", null ],
[ "SendLoopback", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a767b0d7cceca6daebaea5b65560ffb77", null ],
[ "SendOutOfBand", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a140d96badf3a631b7a2ab9c069dde0fc", null ],
[ "SendTTL", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#adb227b3ddbb8af1a6a85f210d87b19e4", null ],
[ "SetIncomingDatagramEventHandler", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a782f6f8005a2c9d825a7f59a7a9267ff", null ],
[ "SetIncomingPassword", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a001604ab942bc1596763580722ad2453", null ],
[ "SetInternalID", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#acac3c54c35b4c6ad2ee68b6e44665145", null ],
[ "SetLimitIPConnectionFrequency", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#abf63ca5f734ae5783faf3b2e8f5c2e26", null ],
[ "SetMaximumIncomingConnections", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#ab3c4f0ee163038e6ca99e0fca6e7ca33", null ],
[ "SetOccasionalPing", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a73e76ac97adba1ae15f51a7cc51237cf", null ],
[ "SetOfflinePingResponse", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#ac7f02742265312f6686830cf7a29a777", null ],
[ "SetPerConnectionOutgoingBandwidthLimit", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a24624c98ae72fe6a589434b560aae363", null ],
[ "SetSplitMessageProgressInterval", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a2e64cbb911fdbf12e343480089d51011", null ],
[ "SetTimeoutTime", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#abc60bd2de326ebcff60307462f587957", null ],
[ "SetUnreliableTimeout", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a75092caa4adcc7a5d025e4b69ea057f9", null ],
[ "SetUserUpdateThread", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a06710f27181a75be3769f2d42b5c1ff4", null ],
[ "Shutdown", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a99cc5c1155fd3c79872d0d25f2ec9d8b", null ],
[ "Startup", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#ab8ee304b8ab80bbc2e5a1082d3682c2a", null ],
[ "WriteOutOfBandHeader", "da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#ac72791cc636b9a08b7b6f51f29cc58a4", null ]
];

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,3 @@
<map id="SLNet::NatPunchthroughServer" name="SLNet::NatPunchthroughServer">
<area shape="rect" id="node2" href="$de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2" title="{SLNet::PluginInterface2\n|# rakPeerInterface\l# tcpInterface\l|+ PluginInterface2()\l+ ~PluginInterface2()\l+ OnAttach()\l+ OnDetach()\l+ Update()\l+ OnReceive()\l+ OnRakPeerStartup()\l+ OnRakPeerShutdown()\l+ OnClosedConnection()\l+ OnNewConnection()\land 12 more...\l# SendUnified()\l# SendUnified()\l# SendListUnified()\l# AllocatePacketUnified()\l# PushBackPacketUnified()\l# DeallocPacketUnified()\l}" alt="" coords="20,5,201,332"/>
</map>

View File

@ -0,0 +1 @@
67aa956a82affdd62bd047f12542fb19

View File

@ -0,0 +1,148 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
-->
<!-- Title: SLNet::NatPunchthroughServer Pages: 1 -->
<!--zoomable 556 -->
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" onload="init(evt)">
<defs>
<circle id="rim" cx="0" cy="0" r="7"/>
<circle id="rim2" cx="0" cy="0" r="3.5"/>
<g id="zoomPlus">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="zoomplus.mouseover" end="zoomplus.mouseout"/>
</use>
<path d="M-4,0h8M0,-4v8" fill="none" stroke="white" stroke-width="1.5" pointer-events="none"/>
</g>
<g id="zoomMin">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="zoomminus.mouseover" end="zoomminus.mouseout"/>
</use>
<path d="M-4,0h8" fill="none" stroke="white" stroke-width="1.5" pointer-events="none"/>
</g>
<g id="dirArrow">
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
<g id="resetDef">
<use xlink:href="#rim2" fill="#404040">
<set attributeName="fill" to="#808080" begin="reset.mouseover" end="reset.mouseout"/>
</use>
</g>
</defs>
<script type="text/javascript">
var viewWidth = 166;
var viewHeight = 556;
var sectionId = 'dynsection-7';
</script>
<script xlink:href="../../svgpan.js"/>
<svg id="graph" class="graph">
<g id="viewport">
<title>SLNet::NatPunchthroughServer</title>
<!-- Node1 -->
<g id="node1" class="node"><title>Node1</title>
<polygon fill="#bfbfbf" stroke="black" points="0,-0.5 0,-266.5 158,-266.5 158,-0.5 0,-0.5"/>
<text text-anchor="middle" x="79" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">SLNet::NatPunchthroughServer</text>
<polyline fill="none" stroke="black" points="0,-247.5 158,-247.5 "/>
<text text-anchor="start" x="8" y="-235.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lastUpdate</text>
<text text-anchor="start" x="8" y="-224.5" font-family="Helvetica,sans-Serif" font-size="10.00"># users</text>
<text text-anchor="start" x="8" y="-213.5" font-family="Helvetica,sans-Serif" font-size="10.00"># sessionId</text>
<text text-anchor="start" x="8" y="-202.5" font-family="Helvetica,sans-Serif" font-size="10.00"># natPunchthroughServerDebug</text>
<text text-anchor="start" x="8" y="-191.5" font-family="Helvetica,sans-Serif" font-size="10.00">Interface</text>
<text text-anchor="start" x="8" y="-180.5" font-family="Helvetica,sans-Serif" font-size="10.00"># boundAddresses</text>
<text text-anchor="start" x="8" y="-169.5" font-family="Helvetica,sans-Serif" font-size="10.00"># boundAddressCount</text>
<polyline fill="none" stroke="black" points="0,-162.5 158,-162.5 "/>
<text text-anchor="start" x="8" y="-150.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ NatPunchthroughServer()</text>
<text text-anchor="start" x="8" y="-139.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~NatPunchthroughServer()</text>
<text text-anchor="start" x="8" y="-128.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SetDebugInterface()</text>
<text text-anchor="start" x="8" y="-117.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Update()</text>
<text text-anchor="start" x="8" y="-106.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnReceive()</text>
<text text-anchor="start" x="8" y="-95.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnClosedConnection()</text>
<text text-anchor="start" x="8" y="-84.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnNewConnection()</text>
<text text-anchor="start" x="8" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ NatPunchthroughUserComp()</text>
<text text-anchor="start" x="8" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00"># OnNATPunchthroughRequest()</text>
<text text-anchor="start" x="8" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00"># OnGetMostRecentPort()</text>
<text text-anchor="start" x="8" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00"># OnClientReady()</text>
<text text-anchor="start" x="8" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendTimestamps()</text>
<text text-anchor="start" x="8" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00"># StartPendingPunchthrough()</text>
<text text-anchor="start" x="8" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00"># StartPunchthroughForUser()</text>
</g>
<!-- Node2 -->
<g id="node2" class="node"><title>Node2</title>
<g id="a_node2"><a xlink:href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2" target="_top" xlink:title="{SLNet::PluginInterface2\n|# rakPeerInterface\l# tcpInterface\l|+ PluginInterface2()\l+ ~PluginInterface2()\l+ OnAttach()\l+ OnDetach()\l+ Update()\l+ OnReceive()\l+ OnRakPeerStartup()\l+ OnRakPeerShutdown()\l+ OnClosedConnection()\l+ OnNewConnection()\land 12 more...\l# SendUnified()\l# SendUnified()\l# SendListUnified()\l# AllocatePacketUnified()\l# PushBackPacketUnified()\l# DeallocPacketUnified()\l}">
<polygon fill="none" stroke="black" points="11,-303.5 11,-547.5 147,-547.5 147,-303.5 11,-303.5"/>
<text text-anchor="middle" x="79" y="-535.5" font-family="Helvetica,sans-Serif" font-size="10.00">SLNet::PluginInterface2</text>
<polyline fill="none" stroke="black" points="11,-528.5 147,-528.5 "/>
<text text-anchor="start" x="19" y="-516.5" font-family="Helvetica,sans-Serif" font-size="10.00"># rakPeerInterface</text>
<text text-anchor="start" x="19" y="-505.5" font-family="Helvetica,sans-Serif" font-size="10.00"># tcpInterface</text>
<polyline fill="none" stroke="black" points="11,-498.5 147,-498.5 "/>
<text text-anchor="start" x="19" y="-486.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ PluginInterface2()</text>
<text text-anchor="start" x="19" y="-475.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~PluginInterface2()</text>
<text text-anchor="start" x="19" y="-464.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnAttach()</text>
<text text-anchor="start" x="19" y="-453.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnDetach()</text>
<text text-anchor="start" x="19" y="-442.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Update()</text>
<text text-anchor="start" x="19" y="-431.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnReceive()</text>
<text text-anchor="start" x="19" y="-420.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnRakPeerStartup()</text>
<text text-anchor="start" x="19" y="-409.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnRakPeerShutdown()</text>
<text text-anchor="start" x="19" y="-398.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnClosedConnection()</text>
<text text-anchor="start" x="19" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnNewConnection()</text>
<text text-anchor="start" x="19" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 12 more...</text>
<text text-anchor="start" x="19" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendUnified()</text>
<text text-anchor="start" x="19" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendUnified()</text>
<text text-anchor="start" x="19" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendListUnified()</text>
<text text-anchor="start" x="19" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00"># AllocatePacketUnified()</text>
<text text-anchor="start" x="19" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00"># PushBackPacketUnified()</text>
<text text-anchor="start" x="19" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DeallocPacketUnified()</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node1 -->
<g id="edge1" class="edge"><title>Node2&#45;&gt;Node1</title>
<path fill="none" stroke="midnightblue" d="M79,-292.933C79,-284.16 79,-275.321 79,-266.546"/>
<polygon fill="none" stroke="midnightblue" points="75.5001,-293.194 79,-303.194 82.5001,-293.194 75.5001,-293.194"/>
</g>
</g>
</svg>
<g id="navigator" transform="translate(0 0)" fill="#404254">
<rect fill="#f2f5e9" fill-opacity="0.5" stroke="#606060" stroke-width=".5" x="0" y="0" width="60" height="60"/>
<use id="zoomplus" xlink:href="#zoomPlus" x="17" y="9" onmousedown="handleZoom(evt,'in')"/>
<use id="zoomminus" xlink:href="#zoomMin" x="42" y="9" onmousedown="handleZoom(evt,'out')"/>
<use id="reset" xlink:href="#resetDef" x="30" y="36" onmousedown="handleReset()"/>
<g id="arrowUp" xlink:href="#dirArrow" transform="translate(30 24)" onmousedown="handlePan(0,-1)">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="arrowUp.mouseover" end="arrowUp.mouseout"/>
</use>
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
<g id="arrowRight" xlink:href="#dirArrow" transform="rotate(90) translate(36 -43)" onmousedown="handlePan(1,0)">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="arrowRight.mouseover" end="arrowRight.mouseout"/>
</use>
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
<g id="arrowDown" xlink:href="#dirArrow" transform="rotate(180) translate(-30 -48)" onmousedown="handlePan(0,1)">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="arrowDown.mouseover" end="arrowDown.mouseout"/>
</use>
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
<g id="arrowLeft" xlink:href="#dirArrow" transform="rotate(270) translate(-36 17)" onmousedown="handlePan(-1,0)">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="arrowLeft.mouseover" end="arrowLeft.mouseout"/>
</use>
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
</g>
<svg viewBox="0 0 15 15" width="100%" height="30px" preserveAspectRatio="xMaxYMin meet">
<g id="arrow_out" transform="scale(0.3 0.3)">
<a xlink:href="class_s_l_net_1_1_nat_punchthrough_server__inherit__graph_org.svg" target="_base">
<rect id="button" ry="5" rx="5" y="6" x="6" height="38" width="38"
fill="#f2f5e9" fill-opacity="0.5" stroke="#606060" stroke-width="1.0"/>
<path id="arrow"
d="M 11.500037,31.436501 C 11.940474,20.09759 22.043105,11.32322 32.158766,21.979434 L 37.068811,17.246167 C 37.068811,17.246167 37.088388,32 37.088388,32 L 22.160133,31.978069 C 22.160133,31.978069 26.997745,27.140456 26.997745,27.140456 C 18.528582,18.264221 13.291696,25.230495 11.500037,31.436501 z"
style="fill:#404040;"/>
</a>
</g>
</svg>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
-->
<!-- Title: SLNet::NatPunchthroughServer Pages: 1 -->
<svg width="166pt" height="556pt"
viewBox="0.00 0.00 166.00 556.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 552)">
<title>SLNet::NatPunchthroughServer</title>
<!-- Node1 -->
<g id="node1" class="node"><title>Node1</title>
<polygon fill="#bfbfbf" stroke="black" points="0,-0.5 0,-266.5 158,-266.5 158,-0.5 0,-0.5"/>
<text text-anchor="middle" x="79" y="-254.5" font-family="Helvetica,sans-Serif" font-size="10.00">SLNet::NatPunchthroughServer</text>
<polyline fill="none" stroke="black" points="0,-247.5 158,-247.5 "/>
<text text-anchor="start" x="8" y="-235.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ lastUpdate</text>
<text text-anchor="start" x="8" y="-224.5" font-family="Helvetica,sans-Serif" font-size="10.00"># users</text>
<text text-anchor="start" x="8" y="-213.5" font-family="Helvetica,sans-Serif" font-size="10.00"># sessionId</text>
<text text-anchor="start" x="8" y="-202.5" font-family="Helvetica,sans-Serif" font-size="10.00"># natPunchthroughServerDebug</text>
<text text-anchor="start" x="8" y="-191.5" font-family="Helvetica,sans-Serif" font-size="10.00">Interface</text>
<text text-anchor="start" x="8" y="-180.5" font-family="Helvetica,sans-Serif" font-size="10.00"># boundAddresses</text>
<text text-anchor="start" x="8" y="-169.5" font-family="Helvetica,sans-Serif" font-size="10.00"># boundAddressCount</text>
<polyline fill="none" stroke="black" points="0,-162.5 158,-162.5 "/>
<text text-anchor="start" x="8" y="-150.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ NatPunchthroughServer()</text>
<text text-anchor="start" x="8" y="-139.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~NatPunchthroughServer()</text>
<text text-anchor="start" x="8" y="-128.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SetDebugInterface()</text>
<text text-anchor="start" x="8" y="-117.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Update()</text>
<text text-anchor="start" x="8" y="-106.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnReceive()</text>
<text text-anchor="start" x="8" y="-95.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnClosedConnection()</text>
<text text-anchor="start" x="8" y="-84.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnNewConnection()</text>
<text text-anchor="start" x="8" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ NatPunchthroughUserComp()</text>
<text text-anchor="start" x="8" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00"># OnNATPunchthroughRequest()</text>
<text text-anchor="start" x="8" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00"># OnGetMostRecentPort()</text>
<text text-anchor="start" x="8" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00"># OnClientReady()</text>
<text text-anchor="start" x="8" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendTimestamps()</text>
<text text-anchor="start" x="8" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00"># StartPendingPunchthrough()</text>
<text text-anchor="start" x="8" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00"># StartPunchthroughForUser()</text>
</g>
<!-- Node2 -->
<g id="node2" class="node"><title>Node2</title>
<g id="a_node2"><a xlink:href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2" target="_top" xlink:title="{SLNet::PluginInterface2\n|# rakPeerInterface\l# tcpInterface\l|+ PluginInterface2()\l+ ~PluginInterface2()\l+ OnAttach()\l+ OnDetach()\l+ Update()\l+ OnReceive()\l+ OnRakPeerStartup()\l+ OnRakPeerShutdown()\l+ OnClosedConnection()\l+ OnNewConnection()\land 12 more...\l# SendUnified()\l# SendUnified()\l# SendListUnified()\l# AllocatePacketUnified()\l# PushBackPacketUnified()\l# DeallocPacketUnified()\l}">
<polygon fill="none" stroke="black" points="11,-303.5 11,-547.5 147,-547.5 147,-303.5 11,-303.5"/>
<text text-anchor="middle" x="79" y="-535.5" font-family="Helvetica,sans-Serif" font-size="10.00">SLNet::PluginInterface2</text>
<polyline fill="none" stroke="black" points="11,-528.5 147,-528.5 "/>
<text text-anchor="start" x="19" y="-516.5" font-family="Helvetica,sans-Serif" font-size="10.00"># rakPeerInterface</text>
<text text-anchor="start" x="19" y="-505.5" font-family="Helvetica,sans-Serif" font-size="10.00"># tcpInterface</text>
<polyline fill="none" stroke="black" points="11,-498.5 147,-498.5 "/>
<text text-anchor="start" x="19" y="-486.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ PluginInterface2()</text>
<text text-anchor="start" x="19" y="-475.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~PluginInterface2()</text>
<text text-anchor="start" x="19" y="-464.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnAttach()</text>
<text text-anchor="start" x="19" y="-453.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnDetach()</text>
<text text-anchor="start" x="19" y="-442.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ Update()</text>
<text text-anchor="start" x="19" y="-431.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnReceive()</text>
<text text-anchor="start" x="19" y="-420.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnRakPeerStartup()</text>
<text text-anchor="start" x="19" y="-409.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnRakPeerShutdown()</text>
<text text-anchor="start" x="19" y="-398.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnClosedConnection()</text>
<text text-anchor="start" x="19" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnNewConnection()</text>
<text text-anchor="start" x="19" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 12 more...</text>
<text text-anchor="start" x="19" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendUnified()</text>
<text text-anchor="start" x="19" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendUnified()</text>
<text text-anchor="start" x="19" y="-343.5" font-family="Helvetica,sans-Serif" font-size="10.00"># SendListUnified()</text>
<text text-anchor="start" x="19" y="-332.5" font-family="Helvetica,sans-Serif" font-size="10.00"># AllocatePacketUnified()</text>
<text text-anchor="start" x="19" y="-321.5" font-family="Helvetica,sans-Serif" font-size="10.00"># PushBackPacketUnified()</text>
<text text-anchor="start" x="19" y="-310.5" font-family="Helvetica,sans-Serif" font-size="10.00"># DeallocPacketUnified()</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node1 -->
<g id="edge1" class="edge"><title>Node2&#45;&gt;Node1</title>
<path fill="none" stroke="midnightblue" d="M79,-292.933C79,-284.16 79,-275.321 79,-266.546"/>
<polygon fill="none" stroke="midnightblue" points="75.5001,-293.194 79,-303.194 82.5001,-293.194 75.5001,-293.194"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.1 KiB

View File

@ -0,0 +1,130 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Member List</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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.xhtml"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.xhtml"><span>Class&#160;Index</span></a></li>
<li><a href="../../inherits.xhtml"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.xhtml"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('d5/da8/class_s_l_net_1_1_r_n_s2_event_handler.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">SLNet::RNS2EventHandler Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../d5/da8/class_s_l_net_1_1_r_n_s2_event_handler.xhtml">SLNet::RNS2EventHandler</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="../../d5/da8/class_s_l_net_1_1_r_n_s2_event_handler.xhtml#ae7daa2560e791a2d35f25c005f88f5d0">AllocRNS2RecvStruct</a>(const char *file, unsigned int line)=0</td><td class="entry"><a class="el" href="../../d5/da8/class_s_l_net_1_1_r_n_s2_event_handler.xhtml">SLNet::RNS2EventHandler</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d5/da8/class_s_l_net_1_1_r_n_s2_event_handler.xhtml#aad04a82d59555d3427e9b16fb758f970">DeallocRNS2RecvStruct</a>(RNS2RecvStruct *s, const char *file, unsigned int line)=0</td><td class="entry"><a class="el" href="../../d5/da8/class_s_l_net_1_1_r_n_s2_event_handler.xhtml">SLNet::RNS2EventHandler</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d5/da8/class_s_l_net_1_1_r_n_s2_event_handler.xhtml#afd8e4ed2dbc11d51f9cdefd4b1712bcc">OnRNS2Recv</a>(RNS2RecvStruct *recvStruct)=0</td><td class="entry"><a class="el" href="../../d5/da8/class_s_l_net_1_1_r_n_s2_event_handler.xhtml">SLNet::RNS2EventHandler</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d5/da8/class_s_l_net_1_1_r_n_s2_event_handler.xhtml#ac7c7ed14f70514bcffe7e5e16b4d6cc0">RNS2EventHandler</a>()</td><td class="entry"><a class="el" href="../../d5/da8/class_s_l_net_1_1_r_n_s2_event_handler.xhtml">SLNet::RNS2EventHandler</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d5/da8/class_s_l_net_1_1_r_n_s2_event_handler.xhtml#aca8edf94371a08d9c972faf2ba5102e6">~RNS2EventHandler</a>()</td><td class="entry"><a class="el" href="../../d5/da8/class_s_l_net_1_1_r_n_s2_event_handler.xhtml">SLNet::RNS2EventHandler</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Wed Aug 14 2019 22:09:50 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,124 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Source/src/LocklessTypes.cpp File 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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../files.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/d3b/_lockless_types_8cpp.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">LocklessTypes.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="../../d7/d12/_lockless_types_8h_source.xhtml">slikenet/LocklessTypes.h</a>&quot;</code><br/>
</div>
<p><a href="../../da/d3b/_lockless_types_8cpp_source.xhtml">Go to the source code of this file.</a></p>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_d1eb22c2ecfd8b50f59e9cbaf8260105.xhtml">src</a></li><li class="navelem"><a class="el" href="../../da/d3b/_lockless_types_8cpp.xhtml">LocklessTypes.cpp</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,178 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Source/src/LocklessTypes.cpp Source File</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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../files.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/d3b/_lockless_types_8cpp_source.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">LocklessTypes.cpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../da/d3b/_lockless_types_8cpp.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Original work: Copyright (c) 2014, Oculus VR, Inc.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This source code is licensed under the BSD-style license found in the</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * RakNet License.txt file in the licenses directory of this source tree. An additional grant </span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of patent rights can be found in the RakNet Patents.txt file in the same directory.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Modified work: Copyright (c) 2017, SLikeSoft UG (haftungsbeschränkt)</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * license found in the license.txt file in the root directory of this source tree.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d7/d12/_lockless_types_8h.xhtml">slikenet/LocklessTypes.h</a>&quot;</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="keyword">using namespace </span>SLNet;</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
<div class="line"><a name="l00020"></a><span class="lineno"><a class="code" href="../../d2/d84/class_s_l_net_1_1_lockless_uint32__t.xhtml#a11e8621011ef05223ee409f35ec606de"> 20</a></span>&#160;<a class="code" href="../../d2/d84/class_s_l_net_1_1_lockless_uint32__t.xhtml#a11e8621011ef05223ee409f35ec606de">LocklessUint32_t::LocklessUint32_t</a>()</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;{</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <a class="code" href="../../d2/d84/class_s_l_net_1_1_lockless_uint32__t.xhtml#a51bb933a46a3dde1a7b7e88eb052bb0a">value</a>=0;</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;}</div>
<div class="line"><a name="l00024"></a><span class="lineno"><a class="code" href="../../d2/d84/class_s_l_net_1_1_lockless_uint32__t.xhtml#af5346122b7375bc0e1c896564bc592c3"> 24</a></span>&#160;<a class="code" href="../../d2/d84/class_s_l_net_1_1_lockless_uint32__t.xhtml#a11e8621011ef05223ee409f35ec606de">LocklessUint32_t::LocklessUint32_t</a>(<a class="code" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a> initial)</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;{</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <a class="code" href="../../d2/d84/class_s_l_net_1_1_lockless_uint32__t.xhtml#a51bb933a46a3dde1a7b7e88eb052bb0a">value</a>=initial;</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;}</div>
<div class="line"><a name="l00028"></a><span class="lineno"><a class="code" href="../../d2/d84/class_s_l_net_1_1_lockless_uint32__t.xhtml#a94ff88513fdfb815d71f8fcf0957d6ba"> 28</a></span>&#160;<a class="code" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a> <a class="code" href="../../d2/d84/class_s_l_net_1_1_lockless_uint32__t.xhtml#a94ff88513fdfb815d71f8fcf0957d6ba">LocklessUint32_t::Increment</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;{</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifdef _WIN32</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">return</span> (<a class="code" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a>) InterlockedIncrement(&amp;<a class="code" href="../../d2/d84/class_s_l_net_1_1_lockless_uint32__t.xhtml#a51bb933a46a3dde1a7b7e88eb052bb0a">value</a>);</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#elif defined(ANDROID) || defined(__S3E__) || defined(__APPLE__)</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor"></span> <a class="code" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a> v;</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; mutex.Lock();</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; ++<a class="code" href="../../d2/d84/class_s_l_net_1_1_lockless_uint32__t.xhtml#a51bb933a46a3dde1a7b7e88eb052bb0a">value</a>;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; v=<a class="code" href="../../d2/d84/class_s_l_net_1_1_lockless_uint32__t.xhtml#a51bb933a46a3dde1a7b7e88eb052bb0a">value</a>;</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; mutex.Unlock();</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">return</span> v;</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">return</span> __sync_fetch_and_add (&amp;<a class="code" href="../../d2/d84/class_s_l_net_1_1_lockless_uint32__t.xhtml#a51bb933a46a3dde1a7b7e88eb052bb0a">value</a>, (<a class="code" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a>) 1);</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor"></span>}</div>
<div class="line"><a name="l00043"></a><span class="lineno"><a class="code" href="../../d2/d84/class_s_l_net_1_1_lockless_uint32__t.xhtml#a63052a17f32014b9a7ac0fc92e1b09d8"> 43</a></span>&#160;<a class="code" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a> <a class="code" href="../../d2/d84/class_s_l_net_1_1_lockless_uint32__t.xhtml#a63052a17f32014b9a7ac0fc92e1b09d8">LocklessUint32_t::Decrement</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;{</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#ifdef _WIN32</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">return</span> (<a class="code" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a>) InterlockedDecrement(&amp;<a class="code" href="../../d2/d84/class_s_l_net_1_1_lockless_uint32__t.xhtml#a51bb933a46a3dde1a7b7e88eb052bb0a">value</a>);</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#elif defined(ANDROID) || defined(__S3E__) || defined(__APPLE__)</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor"></span> <a class="code" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a> v;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; mutex.Lock();</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; --<a class="code" href="../../d2/d84/class_s_l_net_1_1_lockless_uint32__t.xhtml#a51bb933a46a3dde1a7b7e88eb052bb0a">value</a>;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; v=<a class="code" href="../../d2/d84/class_s_l_net_1_1_lockless_uint32__t.xhtml#a51bb933a46a3dde1a7b7e88eb052bb0a">value</a>;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; mutex.Unlock();</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">return</span> v;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">return</span> __sync_fetch_and_add (&amp;<a class="code" href="../../d2/d84/class_s_l_net_1_1_lockless_uint32__t.xhtml#a51bb933a46a3dde1a7b7e88eb052bb0a">value</a>, (<a class="code" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a>) -1);</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor"></span>}</div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_d1eb22c2ecfd8b50f59e9cbaf8260105.xhtml">src</a></li><li class="navelem"><a class="el" href="../../da/d3b/_lockless_types_8cpp.xhtml">LocklessTypes.cpp</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:47 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,140 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Deprecated List</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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/d58/deprecated.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">Deprecated List </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><dl class="reflist">
<dt><a class="anchor" id="_deprecated000001"></a>Class <a class="el" href="../../de/da4/class_s_l_net_1_1_h_t_t_p_connection.xhtml">SLNet::HTTPConnection</a> </dt>
<dd>, use HTTPConnection2 </dd>
<dt><a class="anchor" id="_deprecated000002"></a>Member <a class="el" href="../../d5/dbf/class_s_l_net_1_1_rak_peer.xhtml#a02407ae593277c551cea1524816c3a56">SLNet::RakPeer::ApplyNetworkSimulator</a> (float packetloss, unsigned short minExtraPing, unsigned short extraPingVariance)</dt>
<dd>Use <a href="http://www.jenkinssoftware.com/forum/index.php?topic=1671.0">http://www.jenkinssoftware.com/forum/index.php?topic=1671.0</a> instead. </dd>
<dt><a class="anchor" id="_deprecated000003"></a>Member <a class="el" href="../../da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a04d4f3a948bfb57cf6222515315954bf">SLNet::RakPeerInterface::ApplyNetworkSimulator</a> (float packetloss, unsigned short minExtraPing, unsigned short extraPingVariance)=0</dt>
<dd>Use <a href="http://www.jenkinssoftware.com/forum/index.php?topic=1671.0">http://www.jenkinssoftware.com/forum/index.php?topic=1671.0</a> instead. </dd>
<dt><a class="anchor" id="_deprecated000004"></a>Member <a class="el" href="../../d0/d63/group___r_e_p_l_i_c_a___m_a_n_a_g_e_r___g_r_o_u_p3.xhtml#gga4d0f10f0e557bd96237574321b79a68aa3cb3f36d6ab3a00980ce84184e02887a">SLNet::RM3SR_SERIALIZED_ALWAYS_IDENTICALLY</a> </dt>
<dd>, use RM3SR_BROADCAST_IDENTICALLY_FORCE_SERIALIZATION </dd>
<dt><a class="anchor" id="_deprecated000008"></a>Member <a class="el" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a1614d680409aa30ea7c79112ad9a6877">SLNet::RPC4::Call</a> (const char *uniqueID, <a class="el" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *bitStream, PacketPriority priority, PacketReliability reliability, char orderingChannel, const AddressOrGUID systemIdentifier, bool broadcast)</dt>
<dd>, use Signal() Send to the specified remote instance of RakPeer. </dd>
<dt><a class="anchor" id="_deprecated000007"></a>Member <a class="el" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a09dc786630a940baae7166f49823ee7f">SLNet::RPC4::CallLoopback</a> (const char *uniqueID, <a class="el" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *bitStream)</dt>
<dd>Use RegisterSlot() and Signal() with your own RakNetGUID as the send target Send to the attached instance of RakPeer. See RakPeerInterface::SendLoopback() </dd>
<dt><a class="anchor" id="_deprecated000005"></a>Member <a class="el" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a76d4f1373c622cf1a1d2c6b2bda30fd5">SLNet::RPC4::RegisterFunction</a> (const char *uniqueID, void(*functionPointer)(<a class="el" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *userData, Packet *packet))</dt>
<dd>Use RegisterSlot </dd>
<dt><a class="anchor" id="_deprecated000006"></a>Member <a class="el" href="../../d4/db4/group___r_p_c___p_l_u_g_i_n___g_r_o_u_p.xhtml#a508f3a63f49f9b76f55cae0dceb9fd21">SLNet::RPC4::RegisterLocalCallback</a> (const char *uniqueID, MessageID messageId)</dt>
<dd>Use RegisterSlot and invoke on self only when the packet you want arrives When a RakNet Packet with the specified identifier is returned, execute CallLoopback() on a function previously registered with RegisterFunction() For example, you could call "OnClosedConnection" whenever you get ID_DISCONNECTION_NOTIFICATION or ID_CONNECTION_LOST </dd>
<dt><a class="anchor" id="_deprecated000012"></a>Class <a class="el" href="../../d7/dfc/group___t_e_a_m___b_a_l_a_n_c_e_r___g_r_o_u_p.xhtml">SLNet::TeamBalancer</a> </dt>
<dd>Use TeamManager intead </dd>
<dt><a class="anchor" id="_deprecated000011"></a>Member <a class="el" href="../../d7/dfc/group___t_e_a_m___b_a_l_a_n_c_e_r___g_r_o_u_p.xhtml#gaa4be742616eef09f76f4a74f8bb8b9f7">SLNet::TeamId</a> </dt>
<dd>Use TeamManager intead </dd>
<dt><a class="anchor" id="_deprecated000010"></a>Group <a class="el" href="../../d7/dfc/group___t_e_a_m___b_a_l_a_n_c_e_r___g_r_o_u_p.xhtml">TEAM_BALANCER_GROUP</a> </dt>
<dd>Use TeamManager intead </dd>
<dt><a class="anchor" id="_deprecated000009"></a>File <a class="el" href="../../d1/de0/_team_balancer_8h.xhtml">TeamBalancer.h</a> </dt>
<dd>Use TeamManager intead </dd>
</dl>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,124 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Source/src/Rackspace.cpp File 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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../files.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/d5c/_rackspace_8cpp.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">Rackspace.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="../../de/ddb/_native_feature_includes_8h_source.xhtml">slikenet/NativeFeatureIncludes.h</a>&quot;</code><br/>
</div>
<p><a href="../../da/d5c/_rackspace_8cpp_source.xhtml">Go to the source code of this file.</a></p>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_d1eb22c2ecfd8b50f59e9cbaf8260105.xhtml">src</a></li><li class="navelem"><a class="el" href="../../da/d5c/_rackspace_8cpp.xhtml">Rackspace.cpp</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,797 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Source/src/Rackspace.cpp Source File</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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../files.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/d5c/_rackspace_8cpp_source.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">Rackspace.cpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../da/d5c/_rackspace_8cpp.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Original work: Copyright (c) 2014, Oculus VR, Inc.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This source code is licensed under the BSD-style license found in the</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * RakNet License.txt file in the licenses directory of this source tree. An additional grant </span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of patent rights can be found in the RakNet Patents.txt file in the same directory.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Modified work: Copyright (c) 2017, SLikeSoft UG (haftungsbeschränkt)</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * license found in the license.txt file in the root directory of this source tree.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../de/ddb/_native_feature_includes_8h.xhtml">slikenet/NativeFeatureIncludes.h</a>&quot;</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#if _RAKNET_SUPPORT_Rackspace==1 &amp;&amp; _RAKNET_SUPPORT_TCPInterface==1</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../dd/dcb/_rackspace_8h.xhtml" title="Helper to class to manage Rackspace servers.">slikenet/Rackspace.h</a>&quot;</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../da/d66/string_8h.xhtml">slikenet/string.h</a>&quot;</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../de/dd1/_t_c_p_interface_8h.xhtml" title="A simple TCP based server allowing sends and receives. Can be connected by any TCP client...">slikenet/TCPInterface.h</a>&quot;</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="keyword">using namespace </span>SLNet;</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#affca40f9eab4a139e6d771f1ff606fdf">Rackspace::Rackspace</a>()</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;{</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a9fe73d11bcad6ba5718ddb356affd179">tcpInterface</a>=0;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;}</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#aee5c0f61d4a3c675c4c7915f2996c4cc">Rackspace::~Rackspace</a>()</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;{</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;}</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a57becee254bb4bee51bb673af644106c" title="Adds a callback to the list of callbacks to be called when any of the above functions finish executin...">Rackspace::AddEventCallback</a>(<a class="code" href="../../d0/dcb/class_s_l_net_1_1_rackspace2_event_callback.xhtml" title="Callback interface to receive the results of operations.">Rackspace2EventCallback</a> *callback)</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#aae4e608a6f4cc3560ee3b3b20eda67fe" title="Returns the index of the specified item or MAX_UNSIGNED_LONG if not found.">GetIndexOf</a>(callback);</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">if</span> (idx == (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)-1)</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a771fc63e3b0d892fbb605a379a78bacb" title="Push an element at the end of the stack.">Push</a>(callback,<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;}</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a50ef2c7f658fbd350053612dd83974e3" title="Removes a callback from the list of callbacks to be called when any of the above functions finish exe...">Rackspace::RemoveEventCallback</a>(<a class="code" href="../../d0/dcb/class_s_l_net_1_1_rackspace2_event_callback.xhtml" title="Callback interface to receive the results of operations.">Rackspace2EventCallback</a> *callback)</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;{</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#aae4e608a6f4cc3560ee3b3b20eda67fe" title="Returns the index of the specified item or MAX_UNSIGNED_LONG if not found.">GetIndexOf</a>(callback);</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">if</span> (idx != (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)-1)</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a79621376e92b605c4dbdb77aafbb6b60" title="Delete the element at position position.">RemoveAtIndex</a>(idx);</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;}</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#ad00eafb7a8959f31da008ed3853a72ea" title="Removes all callbacks.">Rackspace::ClearEventCallbacks</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;{</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a34219a5ce92981102d06fb1da7842a6b" title="Clear the list.">Clear</a>(<span class="keyword">true</span>, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;}</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#acf72c83e613d00369fe731f682b6e143" title="Authenticate with Rackspace servers, required before executing any commands.">Rackspace::Authenticate</a>(<a class="code" href="../../df/dd8/class_s_l_net_1_1_t_c_p_interface.xhtml">TCPInterface</a> *_tcpInterface, <span class="keyword">const</span> <span class="keywordtype">char</span> *_authenticationURL, <span class="keyword">const</span> <span class="keywordtype">char</span> *_rackspaceCloudUsername, <span class="keyword">const</span> <span class="keywordtype">char</span> *_apiAccessKey)</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;{</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a0207b34c85fbad9f93981616153333fa">GetOperationOfTypeIndex</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1ac7de7f72078b0b8eed77003d6d3a9af4">RO_CONNECT_AND_AUTHENTICATE</a>);</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">if</span> (index!=(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)-1)</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="comment">// In progress</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a58bff3ea37f0df4c2c333369a2291c84">operations</a>[index].connectionAddress;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a9fe73d11bcad6ba5718ddb356affd179">tcpInterface</a>=_tcpInterface;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#ad3f4e778bbc955cefb117b2f9ac82018">rackspaceCloudUsername</a>=_rackspaceCloudUsername;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#ab385abfaafa213fde6a0172348a9920e">apiAccessKey</a>=_apiAccessKey;</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; RackspaceOperation ro;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; ro.type=<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1ac7de7f72078b0b8eed77003d6d3a9af4">RO_CONNECT_AND_AUTHENTICATE</a>;</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; ro.isPendingAuthentication=<span class="keyword">false</span>;</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(<a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a9fe73d11bcad6ba5718ddb356affd179">tcpInterface</a>-&gt;<a class="code" href="../../df/dd8/class_s_l_net_1_1_t_c_p_interface.xhtml#a9ec2d879bb47462699456ebb9749aad5" title="Returns if Start() was called successfully.">WasStarted</a>());</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; ro.connectionAddress=<a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a9fe73d11bcad6ba5718ddb356affd179">tcpInterface</a>-&gt;<a class="code" href="../../df/dd8/class_s_l_net_1_1_t_c_p_interface.xhtml#aef31dfbd383b7864e0e9deb074291cb7" title="Connect to the specified host on the specified port.">Connect</a>(_authenticationURL,443,<span class="keyword">true</span>);</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">if</span> (ro.connectionAddress==<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#acea7714c995aae0e1feaf79c9e7f073d" title="Index of an invalid SystemAddress.">UNASSIGNED_SYSTEM_ADDRESS</a>)</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; {</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>[i]-&gt;OnConnectionAttemptFailure(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1ac7de7f72078b0b8eed77003d6d3a9af4">RO_CONNECT_AND_AUTHENTICATE</a>, _authenticationURL);</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#acea7714c995aae0e1feaf79c9e7f073d" title="Index of an invalid SystemAddress.">UNASSIGNED_SYSTEM_ADDRESS</a>;</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="preprocessor">#if OPEN_SSL_CLIENT_SUPPORT==1</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="preprocessor"></span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a9fe73d11bcad6ba5718ddb356affd179">tcpInterface</a>-&gt;StartSSLClient(ro.connectionAddress);</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> command(</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="stringliteral">&quot;GET /v1.0 HTTP/1.1\n&quot;</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="stringliteral">&quot;Host: %s\n&quot;</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="stringliteral">&quot;X-Auth-User: %s\n&quot;</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="stringliteral">&quot;X-Auth-Key: %s\n\n&quot;</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; ,_authenticationURL, _rackspaceCloudUsername, _apiAccessKey);</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a9fe73d11bcad6ba5718ddb356affd179">tcpInterface</a>-&gt;<a class="code" href="../../df/dd8/class_s_l_net_1_1_t_c_p_interface.xhtml#a6a2bf12f77233eec447a6496730286e7" title="Sends a byte stream.">Send</a>(command.C_String(), (<span class="keywordtype">unsigned</span> int) command.GetLength(), ro.connectionAddress, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a58bff3ea37f0df4c2c333369a2291c84">operations</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a5cb7d8b68d8d020a34f2186ea8d5b1c6" title="Insert an element at position position in the list.">Insert</a>(ro,<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">return</span> ro.connectionAddress;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;}</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="keyword">const</span> <span class="keywordtype">char</span> * <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a2e97021b64f80c04fc8d7e8bfa3b2a9e" title="String representation of each RackspaceEventType.">Rackspace::EventTypeToString</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460" title="Result codes for Rackspace commands /sa Rackspace::EventTypeToString()">RackspaceEventType</a> eventType)</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;{</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">switch</span> (eventType)</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; { </div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460ac0d28d631272251bbce5b5d2b280b5ab">RET_Success_200</a>:</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Success_200&quot;</span>;</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460a87a358272f25e2d8ba2cbb5ec92b6723">RET_Success_201</a>:</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Success_201&quot;</span>;</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460a794058d2c0d9a585f38833520dfcd409">RET_Success_202</a>:</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Success_202&quot;</span>;</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460a4de86b209780293111ab8e9ab67c9765">RET_Success_203</a>:</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Success_203&quot;</span>;</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460adb953e70a1462b55b789a7ce5b6d230c">RET_Success_204</a>:</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Success_204&quot;</span>;</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460a2ed39e243cec88a3f516876e858453ab">RET_Cloud_Servers_Fault_500</a>:</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Cloud_Servers_Fault_500&quot;</span>;</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460abba19f9f4427356857b6ab9bf17b2bb2">RET_Service_Unavailable_503</a>:</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Service_Unavailable_503&quot;</span>;</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460a940ffb29225f7392996487ac3f28ce8e">RET_Unauthorized_401</a>:</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unauthorized_401&quot;</span>;</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460af28da7edba4d5ff77808fda5dd127af1">RET_Bad_Request_400</a>:</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Bad_Request_400&quot;</span>;</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460ad5bc6cad2ad752d8613d48bfa5609419">RET_Over_Limit_413</a>:</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Over_Limit_413&quot;</span>;</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460aa6d1c8dc585f86b3f2784b915c382829">RET_Bad_Media_Type_415</a>:</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Bad_Media_Type_415&quot;</span>;</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460a73e2562f980d8d6bf86140bec83e257c">RET_Item_Not_Found_404</a>:</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Item_Not_Found_404&quot;</span>;</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460a8fcddf94cfaff6a9512a61bef163f822">RET_Build_In_Progress_409</a>:</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Build_In_Progress_409&quot;</span>;</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460a79d620502ab5b1ce53ce7530ef55f2cb">RET_Resize_Not_Allowed_403</a>:</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Resize_Not_Allowed_403&quot;</span>;</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460a7fe71e60ab0693e235dc380c4bf54a2d">RET_Connection_Closed_Without_Reponse</a>:</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Connection_Closed_Without_Reponse&quot;</span>;</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460ac0b50727fb24918e71acd1bc7fcf3462">RET_Unknown_Failure</a>:</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown_Failure&quot;</span>;</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; }</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown event type (bug)&quot;</span>;</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;}</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a3f50d015a71811843142c6230970a5ec" title="Mostly for internal use, but you can use it to execute an operation with more complex xml if desired ...">Rackspace::AddOperation</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1">RackspaceOperationType</a> type, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> httpCommand, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> operation, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> xml)</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;{</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; RackspaceOperation ro;</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; ro.type=type;</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; ro.httpCommand=httpCommand;</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; ro.operation=operation;</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; ro.xml=xml;</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; ro.isPendingAuthentication=<a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a7cea0ca71d469fffdcc8ae318c1fe4ce">HasOperationOfType</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1ac7de7f72078b0b8eed77003d6d3a9af4">RO_CONNECT_AND_AUTHENTICATE</a>);</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">if</span> (ro.isPendingAuthentication==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; {</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#aa8b332064232df19b6affadd12b8c315">ExecuteOperation</a>(ro))</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a58bff3ea37f0df4c2c333369a2291c84">operations</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a5cb7d8b68d8d020a34f2186ea8d5b1c6" title="Insert an element at position position in the list.">Insert</a>(ro,<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; }</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a58bff3ea37f0df4c2c333369a2291c84">operations</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a5cb7d8b68d8d020a34f2186ea8d5b1c6" title="Insert an element at position position in the list.">Insert</a>(ro,<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;}</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#ae877ed1486626c67708cb06eb90bb12e" title="Get a list of running servers.">Rackspace::ListServers</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;{</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a3f50d015a71811843142c6230970a5ec" title="Mostly for internal use, but you can use it to execute an operation with more complex xml if desired ...">AddOperation</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1ad5de198fe6e9fff351b81920b450f5c2">RO_LIST_SERVERS</a>, <span class="stringliteral">&quot;GET&quot;</span>, <span class="stringliteral">&quot;servers&quot;</span>, <span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;}</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#ad77d156f6de503b34d6ab19d0b2a02d2" title="Get a list of running servers, with extended details on each server.">Rackspace::ListServersWithDetails</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;{</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a3f50d015a71811843142c6230970a5ec" title="Mostly for internal use, but you can use it to execute an operation with more complex xml if desired ...">AddOperation</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1aa6afb6aa8dca84100b6792321964d8fa">RO_LIST_SERVERS_WITH_DETAILS</a>, <span class="stringliteral">&quot;GET&quot;</span>, <span class="stringliteral">&quot;servers/detail&quot;</span>, <span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;}</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a6bdb816ff69910f05437522ae7d1ee4f" title="Create a server.">Rackspace::CreateServer</a>(<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> name, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> imageId, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> flavorId)</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;{</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> xml(</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="stringliteral">&quot;&lt;?xml version=\&quot;1.0\&quot; encoding=\&quot;UTF-8\&quot;?&gt;&quot;</span></div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="stringliteral">&quot;&lt;server xmlns=\&quot;http://docs.rackspacecloud.com/servers/api/v1.0\&quot; name=\&quot;%s\&quot; imageId=\&quot;%s\&quot; flavorId=\&quot;%s\&quot;&gt;&quot;</span></div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="stringliteral">&quot;&lt;/server&gt;&quot;</span></div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; ,name.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>() ,imageId.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>(), flavorId.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>());</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a3f50d015a71811843142c6230970a5ec" title="Mostly for internal use, but you can use it to execute an operation with more complex xml if desired ...">AddOperation</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1ab853ec42b4cc114db92e83a5ca378541">RO_CREATE_SERVER</a>, <span class="stringliteral">&quot;POST&quot;</span>, <span class="stringliteral">&quot;servers&quot;</span>, xml);</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;}</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a33820561a614c96bcced059b5abded84" title="Get details on a particular server.">Rackspace::GetServerDetails</a>(<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> serverId)</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;{</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a3f50d015a71811843142c6230970a5ec" title="Mostly for internal use, but you can use it to execute an operation with more complex xml if desired ...">AddOperation</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1a15784e9c0162df1354aa37987e710da3">RO_GET_SERVER_DETAILS</a>, <span class="stringliteral">&quot;GET&quot;</span>, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a>(<span class="stringliteral">&quot;servers/%s&quot;</span>, serverId.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>()), <span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;}</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a869094404371473dfdbb47b769b30a43" title="Changes the name or password for a server.">Rackspace::UpdateServerNameOrPassword</a>(<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> serverId, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> newName, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> newPassword)</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;{</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">if</span> (newName.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#a83a4f2762a85a1e4704db0f7ac2c0abe" title="Returns if the string is empty. Also, C_String() would return &quot;&quot;.">IsEmpty</a>() &amp;&amp; newPassword.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#a83a4f2762a85a1e4704db0f7ac2c0abe" title="Returns if the string is empty. Also, C_String() would return &quot;&quot;.">IsEmpty</a>())</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> xml(</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="stringliteral">&quot;&lt;?xml version=\&quot;1.0\&quot; encoding=\&quot;UTF-8\&quot;?&gt;&quot;</span></div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="stringliteral">&quot;&lt;server xmlns=\&quot;http://docs.rackspacecloud.com/servers/api/v1.0\&quot;&quot;</span></div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; );</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">if</span> (newName.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#a83a4f2762a85a1e4704db0f7ac2c0abe" title="Returns if the string is empty. Also, C_String() would return &quot;&quot;.">IsEmpty</a>()==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; xml += <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a>(<span class="stringliteral">&quot; name=\&quot;%s\&quot;&quot;</span>, newName.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>());</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">if</span> (newPassword.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#a83a4f2762a85a1e4704db0f7ac2c0abe" title="Returns if the string is empty. Also, C_String() would return &quot;&quot;.">IsEmpty</a>()==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; xml += <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a>(<span class="stringliteral">&quot; adminPass=\&quot;%s\&quot;&quot;</span>, newPassword.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>());</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; xml += <span class="stringliteral">&quot; /&gt;&quot;</span>;</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a3f50d015a71811843142c6230970a5ec" title="Mostly for internal use, but you can use it to execute an operation with more complex xml if desired ...">AddOperation</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1ae5dc5faef9353b1da6b347cb1276e9ab">RO_UPDATE_SERVER_NAME_OR_PASSWORD</a>, <span class="stringliteral">&quot;PUT&quot;</span>, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a>(<span class="stringliteral">&quot;servers/%s&quot;</span>, serverId.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>()), xml);</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;}</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a6041be210383b5de1f4eb7d495d89b29" title="Deletes a server.">Rackspace::DeleteServer</a>(<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> serverId)</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;{</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a3f50d015a71811843142c6230970a5ec" title="Mostly for internal use, but you can use it to execute an operation with more complex xml if desired ...">AddOperation</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1a15aa4373c555b1046912c6a7f1f11f96">RO_DELETE_SERVER</a>, <span class="stringliteral">&quot;DELETE&quot;</span>, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a>(<span class="stringliteral">&quot;servers/%s&quot;</span>, serverId.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>()), <span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;}</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#ad4937bfb74f40eb09051bd76395cf277" title="Lists the IP addresses available to a server.">Rackspace::ListServerAddresses</a>(<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> serverId)</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;{</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a3f50d015a71811843142c6230970a5ec" title="Mostly for internal use, but you can use it to execute an operation with more complex xml if desired ...">AddOperation</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1a3a1e74e9d835269aa5181c94157eee93">RO_LIST_SERVER_ADDRESSES</a>, <span class="stringliteral">&quot;GET&quot;</span>, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a>(<span class="stringliteral">&quot;servers/%s/ips&quot;</span>, serverId.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>()), <span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;}</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a8cb72a21a76de1281a93dfa1de7852ce" title="Shares an IP address with a server.">Rackspace::ShareServerAddress</a>(<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> serverId, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> ipAddress)</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;{</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a3f50d015a71811843142c6230970a5ec" title="Mostly for internal use, but you can use it to execute an operation with more complex xml if desired ...">AddOperation</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1a5a7915781d42c663e49b5011deef6a93">RO_SHARE_SERVER_ADDRESS</a>, <span class="stringliteral">&quot;PUT&quot;</span>, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a>(<span class="stringliteral">&quot;servers/%s/ips/public/%s&quot;</span>, serverId.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>(), ipAddress.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>()), <span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;}</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#ae2aade819c5b75bdcfc4b5dee28fccdc" title="Stops sharing an IP address with a server.">Rackspace::DeleteServerAddress</a>(<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> serverId, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> ipAddress)</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;{</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a3f50d015a71811843142c6230970a5ec" title="Mostly for internal use, but you can use it to execute an operation with more complex xml if desired ...">AddOperation</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1a4a1e08ab54cf30cbee2b2e89b07f792f">RO_DELETE_SERVER_ADDRESS</a>, <span class="stringliteral">&quot;DELETE&quot;</span>, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a>(<span class="stringliteral">&quot;servers/%s/ips/public/%s&quot;</span>, serverId.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>(), ipAddress.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>()), <span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;}</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a9e7b59b169f1771ce2a53a5433f52c3c" title="Reboots a server.">Rackspace::RebootServer</a>(<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> serverId, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> rebootType)</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;{</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> xml(</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="stringliteral">&quot;&lt;?xml version=\&quot;1.0\&quot; encoding=\&quot;UTF-8\&quot;?&gt;&quot;</span></div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="stringliteral">&quot;&lt;reboot xmlns=\&quot;http://docs.rackspacecloud.com/servers/api/v1.0\&quot; type=\&quot;%s\&quot;&quot;</span></div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="stringliteral">&quot;/&gt;&quot;</span>,</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; rebootType.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>());</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a3f50d015a71811843142c6230970a5ec" title="Mostly for internal use, but you can use it to execute an operation with more complex xml if desired ...">AddOperation</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1acca2af49467134602514774d01dea870">RO_REBOOT_SERVER</a>, <span class="stringliteral">&quot;POST&quot;</span>, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a>(<span class="stringliteral">&quot;servers/%s/action&quot;</span>, serverId.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>()), xml);</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;}</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#af660feb40e3989a3f6e9b74bf13eb80d" title="Rebuilds a server with a different image (harddrive contents)">Rackspace::RebuildServer</a>(<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> serverId, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> imageId)</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;{</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> xml(</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="stringliteral">&quot;&lt;?xml version=\&quot;1.0\&quot; encoding=\&quot;UTF-8\&quot;?&gt;&quot;</span></div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="stringliteral">&quot;&lt;rebuild xmlns=\&quot;http://docs.rackspacecloud.com/servers/api/v1.0\&quot; imageId=\&quot;%s\&quot;&quot;</span></div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="stringliteral">&quot;/&gt;&quot;</span>,</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; imageId.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>());</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a3f50d015a71811843142c6230970a5ec" title="Mostly for internal use, but you can use it to execute an operation with more complex xml if desired ...">AddOperation</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1aee2a6cd2aba1b6f8507f3c6714c17cd1">RO_REBUILD_SERVER</a>, <span class="stringliteral">&quot;POST&quot;</span>, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a>(<span class="stringliteral">&quot;servers/%s/action&quot;</span>, serverId.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>()), xml);</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;}</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#acb007f1afd7d254b0b2608fdcd3689d6" title="Changes the hardware configuration of a server. This does not take effect until you call ConfirmResiz...">Rackspace::ResizeServer</a>(<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> serverId, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> flavorId)</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;{</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> xml(</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="stringliteral">&quot;&lt;?xml version=\&quot;1.0\&quot; encoding=\&quot;UTF-8\&quot;?&gt;&quot;</span></div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="stringliteral">&quot;&lt;resize xmlns=\&quot;http://docs.rackspacecloud.com/servers/api/v1.0\&quot; flavorId=\&quot;%s\&quot;&quot;</span></div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="stringliteral">&quot;/&gt;&quot;</span>,</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; flavorId.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>());</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a3f50d015a71811843142c6230970a5ec" title="Mostly for internal use, but you can use it to execute an operation with more complex xml if desired ...">AddOperation</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1ac87aae84e394d4a5cf125b10ca74d483">RO_RESIZE_SERVER</a>, <span class="stringliteral">&quot;POST&quot;</span>, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a>(<span class="stringliteral">&quot;servers/%s/action&quot;</span>, serverId.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>()), xml);</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;}</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a2cae87cd5d139d3220234dd425039f37" title="Confirm a resize for the specified server.">Rackspace::ConfirmResizedServer</a>(<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> serverId)</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;{</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> xml(</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="stringliteral">&quot;&lt;?xml version=\&quot;1.0\&quot; encoding=\&quot;UTF-8\&quot;?&gt;&quot;</span></div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="stringliteral">&quot;&lt;confirmResize xmlns=\&quot;http://docs.rackspacecloud.com/servers/api/v1.0\&quot; &quot;</span></div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="stringliteral">&quot;/&gt;&quot;</span>);</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a3f50d015a71811843142c6230970a5ec" title="Mostly for internal use, but you can use it to execute an operation with more complex xml if desired ...">AddOperation</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1ac1a9742b5ed320668622e15c0f8d84d3">RO_CONFIRM_RESIZED_SERVER</a>, <span class="stringliteral">&quot;POST&quot;</span>, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a>(<span class="stringliteral">&quot;servers/%s/action&quot;</span>, serverId.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>()), xml);</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;}</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a194535bfc74ff3253b3830d7bec4f3f1" title="Reverts a resize for the specified server.">Rackspace::RevertResizedServer</a>(<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> serverId)</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;{</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> xml(</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="stringliteral">&quot;&lt;?xml version=\&quot;1.0\&quot; encoding=\&quot;UTF-8\&quot;?&gt;&quot;</span></div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="stringliteral">&quot;&lt;revertResize xmlns=\&quot;http://docs.rackspacecloud.com/servers/api/v1.0\&quot; &quot;</span></div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="stringliteral">&quot;/&gt;&quot;</span>);</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a3f50d015a71811843142c6230970a5ec" title="Mostly for internal use, but you can use it to execute an operation with more complex xml if desired ...">AddOperation</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1a1bb726d603373fe795584c6cf2b48337">RO_REVERT_RESIZED_SERVER</a>, <span class="stringliteral">&quot;POST&quot;</span>, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a>(<span class="stringliteral">&quot;servers/%s/action&quot;</span>, serverId.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>()), xml);</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;}</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a4ec76bdc7443316cbd6440eed4684f59" title="List all flavors (hardware configs, primarily memory)">Rackspace::ListFlavors</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;{</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a3f50d015a71811843142c6230970a5ec" title="Mostly for internal use, but you can use it to execute an operation with more complex xml if desired ...">AddOperation</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1aab1d3fd5f2d70920376a65a4cea6417d">RO_LIST_FLAVORS</a>, <span class="stringliteral">&quot;GET&quot;</span>, <span class="stringliteral">&quot;flavors&quot;</span>, <span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;}</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#aa8aa2bab4b220197a8583243f16a5e36" title="Get extended details about a specific flavor.">Rackspace::GetFlavorDetails</a>(<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> flavorId)</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;{</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a3f50d015a71811843142c6230970a5ec" title="Mostly for internal use, but you can use it to execute an operation with more complex xml if desired ...">AddOperation</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1a6fe919349cdaa665ca4455c34b06ee86">RO_GET_FLAVOR_DETAILS</a>, <span class="stringliteral">&quot;GET&quot;</span>, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a>(<span class="stringliteral">&quot;flavors/%s&quot;</span>, flavorId.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>()), <span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;}</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a8fed0d3e71e770be47e22bbe602560de" title="List all images (software configs, including operating systems), which includes images you create you...">Rackspace::ListImages</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;{</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a3f50d015a71811843142c6230970a5ec" title="Mostly for internal use, but you can use it to execute an operation with more complex xml if desired ...">AddOperation</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1a6065408e288b33e8502dd7e9c1ec89b6">RO_LIST_IMAGES</a>, <span class="stringliteral">&quot;GET&quot;</span>, <span class="stringliteral">&quot;images&quot;</span>, <span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;}</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a135667af7dbfda0802653641a805a23f" title="Images a running server. This essentially copies the harddrive, and lets you start a server with the ...">Rackspace::CreateImage</a>(<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> serverId, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> imageName)</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;{</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> xml(</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="stringliteral">&quot;&lt;?xml version=\&quot;1.0\&quot; encoding=\&quot;UTF-8\&quot;?&gt;&quot;</span></div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="stringliteral">&quot;&lt;image xmlns=\&quot;http://docs.rackspacecloud.com/servers/api/v1.0\&quot; name=\&quot;%s\&quot; serverId=\&quot;%s\&quot;&quot;</span></div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="stringliteral">&quot;/&gt;&quot;</span>,</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; imageName.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>(),serverId.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>());</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a3f50d015a71811843142c6230970a5ec" title="Mostly for internal use, but you can use it to execute an operation with more complex xml if desired ...">AddOperation</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1abf51c3e1f4b7bd04d4b58825dfaea86f">RO_CREATE_IMAGE</a>, <span class="stringliteral">&quot;POST&quot;</span>, <span class="stringliteral">&quot;images&quot;</span>, xml);</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;}</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a06984cd7a19d3647f352d0596e377b1a" title="Get extended details about a particular image.">Rackspace::GetImageDetails</a>(<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> imageId)</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;{</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a3f50d015a71811843142c6230970a5ec" title="Mostly for internal use, but you can use it to execute an operation with more complex xml if desired ...">AddOperation</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1aa43a0ecf149be043a9e30d2f0cd32f9f">RO_GET_IMAGE_DETAILS</a>, <span class="stringliteral">&quot;GET&quot;</span>, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a>(<span class="stringliteral">&quot;images/%s&quot;</span>, imageId.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>()), <span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;}</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#ad48d8095db174748173677c43113fb2f" title="Delete a custom image created with CreateImage()">Rackspace::DeleteImage</a>(<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> imageId)</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;{</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a3f50d015a71811843142c6230970a5ec" title="Mostly for internal use, but you can use it to execute an operation with more complex xml if desired ...">AddOperation</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1ad7245560bb411882da18f57bbe3e8e81">RO_DELETE_IMAGE</a>, <span class="stringliteral">&quot;DELETE&quot;</span>, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a>(<span class="stringliteral">&quot;images/%s&quot;</span>, imageId.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>()), <span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;}</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#aa0c8e7ce94e0529e76f06d5c9d792b79" title="List IP groups.">Rackspace::ListSharedIPGroups</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;{</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a3f50d015a71811843142c6230970a5ec" title="Mostly for internal use, but you can use it to execute an operation with more complex xml if desired ...">AddOperation</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1afa1786ef486eb7d2429b0ce8ea89a324">RO_LIST_SHARED_IP_GROUPS</a>, <span class="stringliteral">&quot;GET&quot;</span>, <span class="stringliteral">&quot;shared_ip_groups&quot;</span>, <span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;}</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#aa8eb3341a6fc4749d4d800aeae92aab1" title="List IP groups with extended details.">Rackspace::ListSharedIPGroupsWithDetails</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;{</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a3f50d015a71811843142c6230970a5ec" title="Mostly for internal use, but you can use it to execute an operation with more complex xml if desired ...">AddOperation</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1ac8f95f27c17265c4135462448442b8f4">RO_LIST_SHARED_IP_GROUPS_WITH_DETAILS</a>, <span class="stringliteral">&quot;GET&quot;</span>, <span class="stringliteral">&quot;shared_ip_groups/detail&quot;</span>, <span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;}</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#abaacbea38c891ba703f05fde971adcc0">Rackspace::CreateSharedIPGroup</a>(<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> name, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> optionalServerId)</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;{</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> xml(</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="stringliteral">&quot;&lt;?xml version=\&quot;1.0\&quot; encoding=\&quot;UTF-8\&quot;?&gt;&quot;</span></div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="stringliteral">&quot;&lt;sharedIpGroup xmlns=\&quot;http://docs.rackspacecloud.com/servers/api/v1.0\&quot; name=\&quot;%s\&quot;&gt;&quot;</span>, name.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>());</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">if</span> (optionalServerId.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#a83a4f2762a85a1e4704db0f7ac2c0abe" title="Returns if the string is empty. Also, C_String() would return &quot;&quot;.">IsEmpty</a>()==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; xml+= <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a>(<span class="stringliteral">&quot;&lt;server id=\&quot;%s\&quot;/&gt;&quot;</span>, optionalServerId.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>());</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; xml+=<span class="stringliteral">&quot;&lt;/sharedIpGroup&gt;&quot;</span>;</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a3f50d015a71811843142c6230970a5ec" title="Mostly for internal use, but you can use it to execute an operation with more complex xml if desired ...">AddOperation</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1a839bf13a9fbdf8e8248707f100eeec80">RO_CREATE_SHARED_IP_GROUP</a>, <span class="stringliteral">&quot;POST&quot;</span>, <span class="stringliteral">&quot;shared_ip_groups&quot;</span>, xml);</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;}</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a6227f6818a9fc89c4f56e90c0a2f0ab5">Rackspace::GetSharedIPGroupDetails</a>(<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> groupId)</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;{</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a3f50d015a71811843142c6230970a5ec" title="Mostly for internal use, but you can use it to execute an operation with more complex xml if desired ...">AddOperation</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1a07341e2abda8535f94afe95d5a9185da">RO_GET_SHARED_IP_GROUP_DETAILS</a>, <span class="stringliteral">&quot;GET&quot;</span>, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a>(<span class="stringliteral">&quot;shared_ip_groups/%s&quot;</span>, groupId.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>()), <span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;}</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#af0505e0e76c1dc7a838d2a02b733af12">Rackspace::DeleteSharedIPGroup</a>(<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> groupId)</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;{</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a3f50d015a71811843142c6230970a5ec" title="Mostly for internal use, but you can use it to execute an operation with more complex xml if desired ...">AddOperation</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1a2dee9fc2e9e4b124cda1d427ea9c8a0a">RO_DELETE_SHARED_IP_GROUP</a>, <span class="stringliteral">&quot;DELETE&quot;</span>, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a>(<span class="stringliteral">&quot;shared_ip_groups/%s&quot;</span>, groupId.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>()), <span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;}</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a9912f124601f26c221252ed9703c99f1" title="Call this when TCPInterface returns something other than UNASSIGNED_SYSTEM_ADDRESS from HasLostConnec...">Rackspace::OnClosedConnection</a>(<a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> systemAddress)</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;{</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">if</span> (systemAddress==<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#acea7714c995aae0e1feaf79c9e7f073d" title="Index of an invalid SystemAddress.">UNASSIGNED_SYSTEM_ADDRESS</a>)</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i, operationsIndex;</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; operationsIndex=0;</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">while</span> (operationsIndex &lt; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a58bff3ea37f0df4c2c333369a2291c84">operations</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>())</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; {</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a58bff3ea37f0df4c2c333369a2291c84">operations</a>[operationsIndex].isPendingAuthentication==<span class="keyword">false</span> &amp;&amp; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a58bff3ea37f0df4c2c333369a2291c84">operations</a>[operationsIndex].connectionAddress==systemAddress)</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; {</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; RackspaceOperation ro = <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a58bff3ea37f0df4c2c333369a2291c84">operations</a>[operationsIndex];</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a58bff3ea37f0df4c2c333369a2291c84">operations</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a79621376e92b605c4dbdb77aafbb6b60" title="Delete the element at position position.">RemoveAtIndex</a>(operationsIndex);</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> packetDataString = ro.incomingStream;</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *packetData = packetDataString.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>();</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordtype">char</span> resultCodeStr[32];</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordtype">int</span> resultCodeInt;</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460" title="Result codes for Rackspace commands /sa Rackspace::EventTypeToString()">RackspaceEventType</a> rackspaceEventType;</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordtype">char</span> *result;</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; result=strstr((<span class="keywordtype">char</span>*) packetData, <span class="stringliteral">&quot;HTTP/1.1 &quot;</span>);</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">if</span> (result!=0)</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; {</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; result+=strlen(<span class="stringliteral">&quot;HTTP/1.1 &quot;</span>);</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <span class="keyword">sizeof</span>(resultCodeStr)-1 &amp;&amp; result[i] &amp;&amp; result[i]&gt;=<span class="charliteral">&#39;0&#39;</span> &amp;&amp; result[i]&lt;=<span class="charliteral">&#39;9&#39;</span>; i++)</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; resultCodeStr[i]=result[i];</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; resultCodeStr[i]=0;</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; resultCodeInt=atoi(resultCodeStr);</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">switch</span> (resultCodeInt)</div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; {</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">case</span> 200: rackspaceEventType=<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460ac0d28d631272251bbce5b5d2b280b5ab">RET_Success_200</a>; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordflow">case</span> 201: rackspaceEventType=<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460a87a358272f25e2d8ba2cbb5ec92b6723">RET_Success_201</a>; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">case</span> 202: rackspaceEventType=<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460a794058d2c0d9a585f38833520dfcd409">RET_Success_202</a>; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">case</span> 203: rackspaceEventType=<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460a4de86b209780293111ab8e9ab67c9765">RET_Success_203</a>; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">case</span> 204: rackspaceEventType=<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460adb953e70a1462b55b789a7ce5b6d230c">RET_Success_204</a>; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordflow">case</span> 500: rackspaceEventType=<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460a2ed39e243cec88a3f516876e858453ab">RET_Cloud_Servers_Fault_500</a>; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">case</span> 503: rackspaceEventType=<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460abba19f9f4427356857b6ab9bf17b2bb2">RET_Service_Unavailable_503</a>; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">case</span> 401: rackspaceEventType=<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460a940ffb29225f7392996487ac3f28ce8e">RET_Unauthorized_401</a>; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">case</span> 400: rackspaceEventType=<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460af28da7edba4d5ff77808fda5dd127af1">RET_Bad_Request_400</a>; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordflow">case</span> 413: rackspaceEventType=<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460ad5bc6cad2ad752d8613d48bfa5609419">RET_Over_Limit_413</a>; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">case</span> 415: rackspaceEventType=<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460aa6d1c8dc585f86b3f2784b915c382829">RET_Bad_Media_Type_415</a>; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">case</span> 404: rackspaceEventType=<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460a73e2562f980d8d6bf86140bec83e257c">RET_Item_Not_Found_404</a>; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">case</span> 409: rackspaceEventType=<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460a8fcddf94cfaff6a9512a61bef163f822">RET_Build_In_Progress_409</a>; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">case</span> 403: rackspaceEventType=<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460a79d620502ab5b1ce53ce7530ef55f2cb">RET_Resize_Not_Allowed_403</a>; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">default</span>: rackspaceEventType=<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460ac0b50727fb24918e71acd1bc7fcf3462">RET_Unknown_Failure</a>; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; }</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; }</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; {</div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; rackspaceEventType=<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460a7fe71e60ab0693e235dc380c4bf54a2d">RET_Connection_Closed_Without_Reponse</a>;</div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; }</div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">switch</span> (ro.type)</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; {</div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1ac7de7f72078b0b8eed77003d6d3a9af4">RO_CONNECT_AND_AUTHENTICATE</a>:</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; {</div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordflow">if</span> (rackspaceEventType==<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ac63aeb5a0c76eb1e9423646aef1fb460adb953e70a1462b55b789a7ce5b6d230c">RET_Success_204</a>)</div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; {</div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> header;</div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a51bb689eafbf076f647eb50868269195">ReadLine</a>(packetData, <span class="stringliteral">&quot;X-Server-Management-Url: &quot;</span>, <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a4161abbb7b0146a6daeb6f8596abd852">serverManagementURL</a>);</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a4161abbb7b0146a6daeb6f8596abd852">serverManagementURL</a>.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#afac27c28f17d505c7966751bb76f55f1" title="https://servers.api.rackspacecloud.com/v1.0 to https://, servers.api.rackspacecloud.com, /v1.0">SplitURI</a>(header, <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a8d9fdc8190c46486eff0af1a0cde6ddc">serverManagementDomain</a>, <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a18e03eef8f2d742e13f6dbba60bf0e1e">serverManagementPath</a>);</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a51bb689eafbf076f647eb50868269195">ReadLine</a>(packetData, <span class="stringliteral">&quot;X-Storage-Url: &quot;</span>, <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a13aca4ff519895ad9e3f11ec5afdffee">storageURL</a>);</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a13aca4ff519895ad9e3f11ec5afdffee">storageURL</a>.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#afac27c28f17d505c7966751bb76f55f1" title="https://servers.api.rackspacecloud.com/v1.0 to https://, servers.api.rackspacecloud.com, /v1.0">SplitURI</a>(header, <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#aa542df3c410dd649a4b707e89834e5be">storageDomain</a>, <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a10b8f8b7dcb07a5ae34837345a0a20dc">storagePath</a>);</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a51bb689eafbf076f647eb50868269195">ReadLine</a>(packetData, <span class="stringliteral">&quot;X-CDN-Management-Url: &quot;</span>, <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a44dd4dc00c54938f8bc40125e6f56364">cdnManagementURL</a>);</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a44dd4dc00c54938f8bc40125e6f56364">cdnManagementURL</a>.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#afac27c28f17d505c7966751bb76f55f1" title="https://servers.api.rackspacecloud.com/v1.0 to https://, servers.api.rackspacecloud.com, /v1.0">SplitURI</a>(header, <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a3189bb7d53cb2d9ce6cbd42daa6284f0">cdnManagementDomain</a>, <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#aab3cc73ecd606ecb05d709c875a79497">cdnManagementPath</a>);</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a51bb689eafbf076f647eb50868269195">ReadLine</a>(packetData, <span class="stringliteral">&quot;X-Auth-Token: &quot;</span>, <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a02be9f1f25b7aa1eea83ba0ebb0517b5">authToken</a>);</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a51bb689eafbf076f647eb50868269195">ReadLine</a>(packetData, <span class="stringliteral">&quot;X-Storage-Token: &quot;</span>, <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#aeadbecd19b15d593af45fefba52e5fa0">storageToken</a>);</div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; operationsIndex=0;</div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">while</span> (operationsIndex &lt; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a58bff3ea37f0df4c2c333369a2291c84">operations</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>())</div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; {</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a58bff3ea37f0df4c2c333369a2291c84">operations</a>[operationsIndex].isPendingAuthentication==<span class="keyword">true</span>)</div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; {</div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a58bff3ea37f0df4c2c333369a2291c84">operations</a>[operationsIndex].isPendingAuthentication=<span class="keyword">false</span>;</div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#aa8b332064232df19b6affadd12b8c315">ExecuteOperation</a>(<a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a58bff3ea37f0df4c2c333369a2291c84">operations</a>[operationsIndex])==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; {</div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a58bff3ea37f0df4c2c333369a2291c84">operations</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a79621376e92b605c4dbdb77aafbb6b60" title="Delete the element at position position.">RemoveAtIndex</a>(operationsIndex);</div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; }</div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; operationsIndex++;</div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; }</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; operationsIndex++;</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; }</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;</div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="comment">// Restart in list</span></div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; operationsIndex=0;</div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; }</div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;</div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>[i]-&gt;OnAuthenticationResult(rackspaceEventType, (<span class="keyword">const</span> <span class="keywordtype">char</span>*) packetData);</div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;</div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; }</div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1ad5de198fe6e9fff351b81920b450f5c2">RO_LIST_SERVERS</a>:</div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; {</div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>[i]-&gt;OnListServersResult(rackspaceEventType, (<span class="keyword">const</span> <span class="keywordtype">char</span>*) packetData);</div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; }</div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1aa6afb6aa8dca84100b6792321964d8fa">RO_LIST_SERVERS_WITH_DETAILS</a>:</div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; {</div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>[i]-&gt;OnListServersWithDetailsResult(rackspaceEventType, (<span class="keyword">const</span> <span class="keywordtype">char</span>*) packetData);</div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; }</div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1ab853ec42b4cc114db92e83a5ca378541">RO_CREATE_SERVER</a>:</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; {</div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>[i]-&gt;OnCreateServerResult(rackspaceEventType, (<span class="keyword">const</span> <span class="keywordtype">char</span>*) packetData);</div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; }</div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;</div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1a15784e9c0162df1354aa37987e710da3">RO_GET_SERVER_DETAILS</a>:</div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; {</div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>[i]-&gt;OnGetServerDetails(rackspaceEventType, (<span class="keyword">const</span> <span class="keywordtype">char</span>*) packetData);</div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; }</div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1ae5dc5faef9353b1da6b347cb1276e9ab">RO_UPDATE_SERVER_NAME_OR_PASSWORD</a>:</div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; {</div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>[i]-&gt;OnUpdateServerNameOrPassword(rackspaceEventType, (<span class="keyword">const</span> <span class="keywordtype">char</span>*) packetData);</div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; }</div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1a15aa4373c555b1046912c6a7f1f11f96">RO_DELETE_SERVER</a>:</div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; {</div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>[i]-&gt;OnDeleteServer(rackspaceEventType, (<span class="keyword">const</span> <span class="keywordtype">char</span>*) packetData);</div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; }</div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1a3a1e74e9d835269aa5181c94157eee93">RO_LIST_SERVER_ADDRESSES</a>:</div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; {</div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>[i]-&gt;OnListServerAddresses(rackspaceEventType, (<span class="keyword">const</span> <span class="keywordtype">char</span>*) packetData);</div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; }</div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1a5a7915781d42c663e49b5011deef6a93">RO_SHARE_SERVER_ADDRESS</a>:</div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; {</div>
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>[i]-&gt;OnShareServerAddress(rackspaceEventType, (<span class="keyword">const</span> <span class="keywordtype">char</span>*) packetData);</div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; }</div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1a4a1e08ab54cf30cbee2b2e89b07f792f">RO_DELETE_SERVER_ADDRESS</a>:</div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; {</div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>[i]-&gt;OnDeleteServerAddress(rackspaceEventType, (<span class="keyword">const</span> <span class="keywordtype">char</span>*) packetData);</div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; }</div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1acca2af49467134602514774d01dea870">RO_REBOOT_SERVER</a>:</div>
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; {</div>
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>[i]-&gt;OnRebootServer(rackspaceEventType, (<span class="keyword">const</span> <span class="keywordtype">char</span>*) packetData);</div>
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; }</div>
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1aee2a6cd2aba1b6f8507f3c6714c17cd1">RO_REBUILD_SERVER</a>:</div>
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; {</div>
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>[i]-&gt;OnRebuildServer(rackspaceEventType, (<span class="keyword">const</span> <span class="keywordtype">char</span>*) packetData);</div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; }</div>
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1ac87aae84e394d4a5cf125b10ca74d483">RO_RESIZE_SERVER</a>:</div>
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; {</div>
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>[i]-&gt;OnResizeServer(rackspaceEventType, (<span class="keyword">const</span> <span class="keywordtype">char</span>*) packetData);</div>
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; }</div>
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1ac1a9742b5ed320668622e15c0f8d84d3">RO_CONFIRM_RESIZED_SERVER</a>:</div>
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; {</div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>[i]-&gt;OnConfirmResizedServer(rackspaceEventType, (<span class="keyword">const</span> <span class="keywordtype">char</span>*) packetData);</div>
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; }</div>
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1a1bb726d603373fe795584c6cf2b48337">RO_REVERT_RESIZED_SERVER</a>:</div>
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; {</div>
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>[i]-&gt;OnRevertResizedServer(rackspaceEventType, (<span class="keyword">const</span> <span class="keywordtype">char</span>*) packetData);</div>
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; }</div>
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;</div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;</div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1aab1d3fd5f2d70920376a65a4cea6417d">RO_LIST_FLAVORS</a>:</div>
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; {</div>
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>[i]-&gt;OnListFlavorsResult(rackspaceEventType, (<span class="keyword">const</span> <span class="keywordtype">char</span>*) packetData);</div>
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; }</div>
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1a6fe919349cdaa665ca4455c34b06ee86">RO_GET_FLAVOR_DETAILS</a>:</div>
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; {</div>
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>[i]-&gt;OnGetFlavorDetailsResult(rackspaceEventType, (<span class="keyword">const</span> <span class="keywordtype">char</span>*) packetData);</div>
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; }</div>
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1a6065408e288b33e8502dd7e9c1ec89b6">RO_LIST_IMAGES</a>:</div>
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; {</div>
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>[i]-&gt;OnListImagesResult(rackspaceEventType, (<span class="keyword">const</span> <span class="keywordtype">char</span>*) packetData);</div>
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; }</div>
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1abf51c3e1f4b7bd04d4b58825dfaea86f">RO_CREATE_IMAGE</a>:</div>
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; {</div>
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>[i]-&gt;OnCreateImageResult(rackspaceEventType, (<span class="keyword">const</span> <span class="keywordtype">char</span>*) packetData);</div>
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; }</div>
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1aa43a0ecf149be043a9e30d2f0cd32f9f">RO_GET_IMAGE_DETAILS</a>:</div>
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; {</div>
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>[i]-&gt;OnGetImageDetailsResult(rackspaceEventType, (<span class="keyword">const</span> <span class="keywordtype">char</span>*) packetData);</div>
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; }</div>
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1ad7245560bb411882da18f57bbe3e8e81">RO_DELETE_IMAGE</a>:</div>
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; {</div>
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>[i]-&gt;OnDeleteImageResult(rackspaceEventType, (<span class="keyword">const</span> <span class="keywordtype">char</span>*) packetData);</div>
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; }</div>
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1afa1786ef486eb7d2429b0ce8ea89a324">RO_LIST_SHARED_IP_GROUPS</a>:</div>
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; {</div>
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>[i]-&gt;OnListSharedIPGroups(rackspaceEventType, (<span class="keyword">const</span> <span class="keywordtype">char</span>*) packetData);</div>
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; }</div>
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1ac8f95f27c17265c4135462448442b8f4">RO_LIST_SHARED_IP_GROUPS_WITH_DETAILS</a>:</div>
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; {</div>
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>[i]-&gt;OnListSharedIPGroupsWithDetails(rackspaceEventType, (<span class="keyword">const</span> <span class="keywordtype">char</span>*) packetData);</div>
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; }</div>
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1a839bf13a9fbdf8e8248707f100eeec80">RO_CREATE_SHARED_IP_GROUP</a>:</div>
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; {</div>
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>[i]-&gt;OnCreateSharedIPGroup(rackspaceEventType, (<span class="keyword">const</span> <span class="keywordtype">char</span>*) packetData);</div>
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; }</div>
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1a07341e2abda8535f94afe95d5a9185da">RO_GET_SHARED_IP_GROUP_DETAILS</a>:</div>
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; {</div>
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>[i]-&gt;OnGetSharedIPGroupDetails(rackspaceEventType, (<span class="keyword">const</span> <span class="keywordtype">char</span>*) packetData);</div>
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; }</div>
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1a2dee9fc2e9e4b124cda1d427ea9c8a0a">RO_DELETE_SHARED_IP_GROUP</a>:</div>
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; {</div>
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>[i]-&gt;OnDeleteSharedIPGroup(rackspaceEventType, (<span class="keyword">const</span> <span class="keywordtype">char</span>*) packetData);</div>
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; }</div>
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;</div>
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; }</div>
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; }</div>
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; {</div>
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; operationsIndex++;</div>
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; }</div>
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; }</div>
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;}</div>
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a939351e17a21310b00c226cff7fc7799" title="Call this anytime TCPInterface returns a packet.">Rackspace::OnReceive</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#d8/d23/struct_s_l_net_1_1_packet" title="This represents a user message from another system.">Packet</a> *packet)</div>
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;{</div>
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> operationsIndex;</div>
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keywordflow">for</span> (operationsIndex=0; operationsIndex &lt; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a58bff3ea37f0df4c2c333369a2291c84">operations</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); operationsIndex++)</div>
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; {</div>
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a58bff3ea37f0df4c2c333369a2291c84">operations</a>[operationsIndex].isPendingAuthentication==<span class="keyword">false</span> &amp;&amp; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a58bff3ea37f0df4c2c333369a2291c84">operations</a>[operationsIndex].connectionAddress==packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5c9d18515892239712a5d8fcb46c4245" title="The system that send this packet.">systemAddress</a>)</div>
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; {</div>
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a58bff3ea37f0df4c2c333369a2291c84">operations</a>[operationsIndex].incomingStream+=packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>;</div>
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; }</div>
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; }</div>
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;}</div>
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#aa8b332064232df19b6affadd12b8c315">Rackspace::ExecuteOperation</a>(RackspaceOperation &amp;ro)</div>
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160;{</div>
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#aa42b327eb301f36da22c4fec5880665a">ConnectToServerManagementDomain</a>(ro)==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160;</div>
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> command(</div>
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="stringliteral">&quot;%s %s/%s HTTP/1.1\n&quot;</span></div>
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="stringliteral">&quot;Host: %s\n&quot;</span></div>
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <span class="stringliteral">&quot;Content-Type: application/xml\n&quot;</span></div>
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="stringliteral">&quot;Content-Length: %i\n&quot;</span></div>
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="stringliteral">&quot;Accept: application/xml\n&quot;</span></div>
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <span class="stringliteral">&quot;X-Auth-Token: %s\n&quot;</span>,</div>
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; ro.httpCommand.C_String(), <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a18e03eef8f2d742e13f6dbba60bf0e1e">serverManagementPath</a>.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>(), ro.operation.C_String(), <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a8d9fdc8190c46486eff0af1a0cde6ddc">serverManagementDomain</a>.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>(),</div>
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; ro.xml.GetLength(),</div>
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a02be9f1f25b7aa1eea83ba0ebb0517b5">authToken</a>.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>());</div>
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;</div>
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keywordflow">if</span> (ro.xml.IsEmpty()==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; {</div>
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; command+=<span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; command+=ro.xml;</div>
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; command+=<span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; }</div>
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160;</div>
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; command+=<span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160;</div>
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="comment">//printf(command.C_String());</span></div>
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;</div>
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a9fe73d11bcad6ba5718ddb356affd179">tcpInterface</a>-&gt;<a class="code" href="../../df/dd8/class_s_l_net_1_1_t_c_p_interface.xhtml#a6a2bf12f77233eec447a6496730286e7" title="Sends a byte stream.">Send</a>(command.C_String(), (<span class="keywordtype">unsigned</span> int) command.GetLength(), ro.connectionAddress, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160;}</div>
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a51bb689eafbf076f647eb50868269195">Rackspace::ReadLine</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *data, <span class="keyword">const</span> <span class="keywordtype">char</span> *stringStart, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> &amp;output)</div>
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;{</div>
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; output.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#a458ce4aa51b672f501f51d5941e5ac6e" title="Clear the string.">Clear</a>();</div>
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;</div>
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="keywordtype">char</span> *result, *resultEnd;</div>
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160;</div>
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; result=strstr((<span class="keywordtype">char</span>*) data, stringStart);</div>
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="keywordflow">if</span> (result==0)</div>
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; {</div>
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(0);</div>
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; }</div>
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;</div>
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; result+=strlen(stringStart);</div>
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="keywordflow">if</span> (result==0)</div>
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; {</div>
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(0);</div>
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; }</div>
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160;</div>
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; output=result;</div>
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; resultEnd=result;</div>
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="keywordflow">while</span> (*resultEnd &amp;&amp; (*resultEnd!=<span class="charliteral">&#39;\r&#39;</span>) &amp;&amp; (*resultEnd!=<span class="charliteral">&#39;\n&#39;</span>) )</div>
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; resultEnd++;</div>
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; output.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#a171b99a82ad46872f26b04a76fd81529" title="Make sure string is no longer than length.">Truncate</a>((<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) (resultEnd-result));</div>
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160;}</div>
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160;</div>
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160;</div>
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#aa42b327eb301f36da22c4fec5880665a">Rackspace::ConnectToServerManagementDomain</a>(RackspaceOperation &amp;ro)</div>
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;{</div>
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i;</div>
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160;</div>
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; ro.connectionAddress=<a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a9fe73d11bcad6ba5718ddb356affd179">tcpInterface</a>-&gt;<a class="code" href="../../df/dd8/class_s_l_net_1_1_t_c_p_interface.xhtml#aef31dfbd383b7864e0e9deb074291cb7" title="Connect to the specified host on the specified port.">Connect</a>(<a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a8d9fdc8190c46486eff0af1a0cde6ddc">serverManagementDomain</a>.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>(),443,<span class="keyword">true</span>);</div>
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">if</span> (ro.connectionAddress==<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#acea7714c995aae0e1feaf79c9e7f073d" title="Index of an invalid SystemAddress.">UNASSIGNED_SYSTEM_ADDRESS</a>)</div>
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; {</div>
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a990d107391a983a91f9568d91ecf0ce7">eventCallbacks</a>[i]-&gt;OnConnectionAttemptFailure(ro.type, <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a4161abbb7b0146a6daeb6f8596abd852">serverManagementURL</a>);</div>
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; }</div>
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160;</div>
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160;<span class="preprocessor">#if OPEN_SSL_CLIENT_SUPPORT==1</span></div>
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;<span class="preprocessor"></span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a9fe73d11bcad6ba5718ddb356affd179">tcpInterface</a>-&gt;StartSSLClient(ro.connectionAddress);</div>
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;}</div>
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a7cea0ca71d469fffdcc8ae318c1fe4ce">Rackspace::HasOperationOfType</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1">RackspaceOperationType</a> t)</div>
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160;{</div>
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i;</div>
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a58bff3ea37f0df4c2c333369a2291c84">operations</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; {</div>
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a58bff3ea37f0df4c2c333369a2291c84">operations</a>[i].type==t)</div>
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; }</div>
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160;}</div>
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a0207b34c85fbad9f93981616153333fa">Rackspace::GetOperationOfTypeIndex</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a320ff923e99b7e3fc90edd602b4aecc1">RackspaceOperationType</a> t)</div>
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;{</div>
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i;</div>
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a58bff3ea37f0df4c2c333369a2291c84">operations</a>.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; {</div>
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d4/dc9/class_s_l_net_1_1_rackspace.xhtml#a58bff3ea37f0df4c2c333369a2291c84">operations</a>[i].type==t)</div>
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="keywordflow">return</span> i;</div>
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; }</div>
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keywordflow">return</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) -1;</div>
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;}</div>
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160;</div>
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_d1eb22c2ecfd8b50f59e9cbaf8260105.xhtml">src</a></li><li class="navelem"><a class="el" href="../../da/d5c/_rackspace_8cpp.xhtml">Rackspace.cpp</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:47 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,5 @@
var class_s_l_net_1_1_data_compressor =
[
[ "Compress", "da/d5f/class_s_l_net_1_1_data_compressor.xhtml#af18a75451d79cf052cf9715ff8968de8", null ],
[ "DecompressAndAllocate", "da/d5f/class_s_l_net_1_1_data_compressor.xhtml#ae6c868e1af182b327011b9e795928143", null ]
];

View File

@ -0,0 +1,230 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: SLNet::DataCompressor 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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.xhtml"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.xhtml"><span>Class&#160;Index</span></a></li>
<li><a href="../../inherits.xhtml"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.xhtml"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/d5f/class_s_l_net_1_1_data_compressor.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="../../de/d00/class_s_l_net_1_1_data_compressor-members.xhtml">List of all members</a> </div>
<div class="headertitle">
<div class="title">SLNet::DataCompressor Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Does compression on a block of data. Not very good compression, but it's small and fast so is something you can compute at runtime.
<a href="../../da/d5f/class_s_l_net_1_1_data_compressor.xhtml#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="../../db/d45/_data_compressor_8h_source.xhtml">slikenet/DataCompressor.h</a>&gt;</code></p>
<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:af18a75451d79cf052cf9715ff8968de8"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d5f/class_s_l_net_1_1_data_compressor.xhtml#af18a75451d79cf052cf9715ff8968de8">Compress</a> (unsigned char *userData, unsigned sizeInBytes, <a class="el" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *output)</td></tr>
<tr class="separator:af18a75451d79cf052cf9715ff8968de8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6c868e1af182b327011b9e795928143"><td class="memItemLeft" align="right" valign="top">static unsigned&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d5f/class_s_l_net_1_1_data_compressor.xhtml#ae6c868e1af182b327011b9e795928143">DecompressAndAllocate</a> (<a class="el" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *input, unsigned char **output)</td></tr>
<tr class="separator:ae6c868e1af182b327011b9e795928143"><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>Does compression on a block of data. Not very good compression, but it's small and fast so is something you can compute at runtime. </p>
<p>Definition at line <a class="el" href="../../db/d45/_data_compressor_8h_source.xhtml#l00033">33</a> of file <a class="el" href="../../db/d45/_data_compressor_8h_source.xhtml">DataCompressor.h</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="af18a75451d79cf052cf9715ff8968de8"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void DataCompressor::Compress </td>
<td>(</td>
<td class="paramtype">unsigned char *&#160;</td>
<td class="paramname"><em>userData</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>sizeInBytes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *&#160;</td>
<td class="paramname"><em>output</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">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d7/dbe/_data_compressor_8cpp_source.xhtml#l00025">25</a> of file <a class="el" href="../../d7/dbe/_data_compressor_8cpp_source.xhtml">DataCompressor.cpp</a>.</p>
<p>References <a class="el" href="../../da/d7b/_d_s___huffman_encoding_tree_8cpp_source.xhtml#l00169">SLNet::HuffmanEncodingTree::EncodeArray()</a>, <a class="el" href="../../da/d7b/_d_s___huffman_encoding_tree_8cpp_source.xhtml#l00069">SLNet::HuffmanEncodingTree::GenerateFromFrequencyTable()</a>, and <a class="el" href="../../d8/db0/defines_8h_source.xhtml#l00120">RakAssert</a>.</p>
</div>
</div>
<a class="anchor" id="ae6c868e1af182b327011b9e795928143"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned DataCompressor::DecompressAndAllocate </td>
<td>(</td>
<td class="paramtype"><a class="el" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned char **&#160;</td>
<td class="paramname"><em>output</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">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d7/dbe/_data_compressor_8cpp_source.xhtml#l00053">53</a> of file <a class="el" href="../../d7/dbe/_data_compressor_8cpp_source.xhtml">DataCompressor.cpp</a>.</p>
<p>References <a class="el" href="../../d8/db0/defines_8h_source.xhtml#l00047">_FILE_AND_LINE_</a>, <a class="el" href="../../d7/dc3/_bit_stream_8h_source.xhtml#l00614">SLNet::BitStream::AlignReadToByteBoundary()</a>, <a class="el" href="../../da/d7b/_d_s___huffman_encoding_tree_8cpp_source.xhtml#l00200">SLNet::HuffmanEncodingTree::DecodeArray()</a>, <a class="el" href="../../da/d7b/_d_s___huffman_encoding_tree_8cpp_source.xhtml#l00069">SLNet::HuffmanEncodingTree::GenerateFromFrequencyTable()</a>, <a class="el" href="../../d8/db0/defines_8h_source.xhtml#l00120">RakAssert</a>, <a class="el" href="../../d9/d4c/_rak_memory_override_8cpp_source.xhtml#l00062">rakMalloc_Ex</a>, <a class="el" href="../../d7/dc3/_bit_stream_8h_source.xhtml#l01279">SLNet::BitStream::Read()</a>, and <a class="el" href="../../d7/dc3/_bit_stream_8h_source.xhtml#l01450">SLNet::BitStream::ReadCompressed()</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>Source/include/slikenet/<a class="el" href="../../db/d45/_data_compressor_8h_source.xhtml">DataCompressor.h</a></li>
<li>Source/src/<a class="el" href="../../d7/dbe/_data_compressor_8cpp_source.xhtml">DataCompressor.cpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dd/d30/namespace_s_l_net.xhtml">SLNet</a></li><li class="navelem"><a class="el" href="../../da/d5f/class_s_l_net_1_1_data_compressor.xhtml">DataCompressor</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:49 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,13 @@
var string_8h =
[
[ "RakString", "d2/d66/class_s_l_net_1_1_rak_string.xhtml", "d2/d66/class_s_l_net_1_1_rak_string" ],
[ "SharedString", "d2/d66/class_s_l_net_1_1_rak_string.xhtml#dc/d52/struct_s_l_net_1_1_rak_string_1_1_shared_string", [
[ "bigString", "d2/d66/class_s_l_net_1_1_rak_string.xhtml#a9473d2f04971f9c0dc735a51af685cbf", null ],
[ "bytesUsed", "d2/d66/class_s_l_net_1_1_rak_string.xhtml#a7f4f73fb1ddc295b24f5560b756a5aed", null ],
[ "c_str", "d2/d66/class_s_l_net_1_1_rak_string.xhtml#a068968532049b8a2a18e151f545927eb", null ],
[ "refCount", "d2/d66/class_s_l_net_1_1_rak_string.xhtml#a7750a11995b4f731c8d285e324c9690b", null ],
[ "refCountMutex", "d2/d66/class_s_l_net_1_1_rak_string.xhtml#a380165bb0ba489103a96786b4674c29a", null ],
[ "smallString", "d2/d66/class_s_l_net_1_1_rak_string.xhtml#acaf45b7945ba9ff4bba2b6fb99ff940e", null ]
] ],
[ "operator+", "da/d66/string_8h.xhtml#a2ac13885255f5a0c0e38ae6773609d3d", null ]
];

View File

@ -0,0 +1,238 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Source/include/slikenet/string.h File 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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../files.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/d66/string_8h.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">string.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="../../db/dbd/_export_8h_source.xhtml">Export.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d9/d7f/_d_s___list_8h_source.xhtml">DS_List.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d9/d49/types_8h_source.xhtml">types.h</a>&quot;</code><br/>
<code>#include &lt;stdio.h&gt;</code><br/>
<code>#include &quot;stdarg.h&quot;</code><br/>
</div>
<p><a href="../../da/d66/string_8h_source.xhtml">Go to the source code of this file.</a></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="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml">SLNet::RakString</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">String class. <a href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:dc/d52/struct_s_l_net_1_1_rak_string_1_1_shared_string"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#dc/d52/struct_s_l_net_1_1_rak_string_1_1_shared_string">SLNet::RakString::SharedString</a></td></tr>
<tr class="separator:dc/d52/struct_s_l_net_1_1_rak_string_1_1_shared_string"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:dd/d30/namespace_s_l_net"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d30/namespace_s_l_net.xhtml">SLNet</a></td></tr>
<tr class="memdesc:dd/d30/namespace_s_l_net"><td class="mdescLeft">&#160;</td><td class="mdescRight">Simple class to send changes between directories. In essence, a simple autopatcher that can be used for transmitting levels, skins, etc. <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="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a2ac13885255f5a0c0e38ae6773609d3d"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml">SLNet::RakString</a> <br class="typebreak"/>
<a class="el" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d66/string_8h.xhtml#a2ac13885255f5a0c0e38ae6773609d3d">operator+</a> (const <a class="el" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml">SLNet::RakString</a> &amp;lhs, const <a class="el" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml">SLNet::RakString</a> &amp;rhs)</td></tr>
<tr class="separator:a2ac13885255f5a0c0e38ae6773609d3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<hr/><h2 class="groupheader">Class Documentation</h2>
<a name="dc/d52/struct_s_l_net_1_1_rak_string_1_1_shared_string" id="dc/d52/struct_s_l_net_1_1_rak_string_1_1_shared_string"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct SLNet::RakString::SharedString</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock">
<p>Definition at line <a class="el" href="../../da/d66/string_8h_source.xhtml#l00309">309</a> of file <a class="el" href="../../da/d66/string_8h_source.xhtml">string.h</a>.</p>
</div><table class="fieldtable">
<tr><th colspan="3">Class Members</th></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a9473d2f04971f9c0dc735a51af685cbf"></a>char *</td>
<td class="fieldname">
bigString</td>
<td class="fielddoc">
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a7f4f73fb1ddc295b24f5560b756a5aed"></a>size_t</td>
<td class="fieldname">
bytesUsed</td>
<td class="fielddoc">
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a068968532049b8a2a18e151f545927eb"></a>char *</td>
<td class="fieldname">
c_str</td>
<td class="fielddoc">
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a7750a11995b4f731c8d285e324c9690b"></a>unsigned int</td>
<td class="fieldname">
refCount</td>
<td class="fielddoc">
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a380165bb0ba489103a96786b4674c29a"></a><a class="el" href="../../d9/da8/class_s_l_net_1_1_simple_mutex.xhtml">SimpleMutex</a> *</td>
<td class="fieldname">
refCountMutex</td>
<td class="fielddoc">
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="acaf45b7945ba9ff4bba2b6fb99ff940e"></a>char</td>
<td class="fieldname">
smallString</td>
<td class="fielddoc">
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a2ac13885255f5a0c0e38ae6773609d3d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml">SLNet::RakString</a> <a class="el" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> operator+ </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml">SLNet::RakString</a> &amp;&#160;</td>
<td class="paramname"><em>lhs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml">SLNet::RakString</a> &amp;&#160;</td>
<td class="paramname"><em>rhs</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../dd/d5f/_rak_string_8cpp_source.xhtml#l00286">286</a> of file <a class="el" href="../../dd/d5f/_rak_string_8cpp_source.xhtml">RakString.cpp</a>.</p>
<p>References <a class="el" href="../../d8/db0/defines_8h_source.xhtml#l00047">_FILE_AND_LINE_</a>, <a class="el" href="../../da/d66/string_8h_source.xhtml#l00314">SLNet::RakString::SharedString::bigString</a>, <a class="el" href="../../da/d66/string_8h_source.xhtml#l00313">SLNet::RakString::SharedString::bytesUsed</a>, <a class="el" href="../../da/d66/string_8h_source.xhtml#l00315">SLNet::RakString::SharedString::c_str</a>, <a class="el" href="../../da/d66/string_8h_source.xhtml#l00328">SLNet::RakString::emptyString</a>, <a class="el" href="../../da/d66/string_8h_source.xhtml#l00334">SLNet::RakString::freeList</a>, <a class="el" href="../../dd/d5f/_rak_string_8cpp_source.xhtml#l00396">SLNet::RakString::GetLength()</a>, <a class="el" href="../../da/d66/string_8h_source.xhtml#l00299">SLNet::RakString::GetSizeToAllocate()</a>, <a class="el" href="../../d9/d7f/_d_s___list_8h_source.xhtml#l00248">DataStructures::List&lt; list_type &gt;::Insert()</a>, <a class="el" href="../../dd/d5f/_rak_string_8cpp_source.xhtml#l00392">SLNet::RakString::IsEmpty()</a>, <a class="el" href="../../de/dd8/_simple_mutex_8cpp_source.xhtml#l00105">SLNet::SimpleMutex::Lock()</a>, <a class="el" href="../../dd/d5f/_rak_string_8cpp_source.xhtml#l01564">SLNet::RakString::LockMutex()</a>, <a class="el" href="../../d9/d4c/_rak_memory_override_8cpp_source.xhtml#l00062">rakMalloc_Ex</a>, <a class="el" href="../../da/d66/string_8h_source.xhtml#l00312">SLNet::RakString::SharedString::refCount</a>, <a class="el" href="../../da/d66/string_8h_source.xhtml#l00311">SLNet::RakString::SharedString::refCountMutex</a>, <a class="el" href="../../d9/d7f/_d_s___list_8h_source.xhtml#l00393">DataStructures::List&lt; list_type &gt;::RemoveAtIndex()</a>, <a class="el" href="../../da/d66/string_8h_source.xhtml#l00323">SLNet::RakString::sharedString</a>, <a class="el" href="../../d9/d7f/_d_s___list_8h_source.xhtml#l00450">DataStructures::List&lt; list_type &gt;::Size()</a>, <a class="el" href="../../da/d66/string_8h_source.xhtml#l00316">SLNet::RakString::SharedString::smallString</a>, <a class="el" href="../../de/dd8/_simple_mutex_8cpp_source.xhtml#l00154">SLNet::SimpleMutex::Unlock()</a>, and <a class="el" href="../../dd/d5f/_rak_string_8cpp_source.xhtml#l01568">SLNet::RakString::UnlockMutex()</a>.</p>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../da/d66/string_8h.xhtml">string.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,379 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Source/include/slikenet/string.h Source File</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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../files.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/d66/string_8h_source.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">string.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../da/d66/string_8h.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Original work: Copyright (c) 2014, Oculus VR, Inc.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This source code is licensed under the BSD-style license found in the</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * RakNet License.txt file in the licenses directory of this source tree. An additional grant </span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of patent rights can be found in the RakNet Patents.txt file in the same directory.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Modified work: Copyright (c) 2016-2017, SLikeSoft UG (haftungsbeschränkt)</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * license found in the license.txt file in the root directory of this source tree.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#ifndef __RAK_STRING_H</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define __RAK_STRING_H </span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../db/dbd/_export_8h.xhtml">Export.h</a>&quot;</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d9/d7f/_d_s___list_8h.xhtml">DS_List.h</a>&quot;</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d9/d49/types_8h.xhtml" title="Types used by RakNet, most of which involve user code.">types.h</a>&quot;</span> <span class="comment">// int64_t</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &lt;stdio.h&gt;</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;stdarg.h&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#ifdef _WIN32</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../db/d43/_windows_includes_8h.xhtml">WindowsIncludes.h</a>&quot;</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="keyword">namespace </span>SLNet</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;{</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">class </span>SimpleMutex;</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keyword">class </span>BitStream;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
<div class="line"><a name="l00044"></a><span class="lineno"><a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml"> 44</a></span>&#160;<span class="keyword">class </span><a class="code" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;{</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="comment">// Constructors</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a>();</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a>(<span class="keywordtype">char</span> input);</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> input);</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *format, ...);</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *format, ...);</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; ~<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a>();</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a>( <span class="keyword">const</span> <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a> &amp; rhs);</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
<div class="line"><a name="l00057"></a><span class="lineno"><a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ad6b527ffdba61d0d63bddac0feacfea2"> 57</a></span>&#160; <span class="keyword">operator</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* () <span class="keyword">const</span> {<span class="keywordflow">return</span> sharedString-&gt;c_str;}</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div>
<div class="line"><a name="l00060"></a><span class="lineno"><a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4"> 60</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> sharedString-&gt;c_str;}</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="comment">// Lets you modify the string. Do not make the string longer - however, you can make it shorter, or change the contents.</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="comment">// Pointer is only valid in the scope of RakString itself</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"><a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#acbcab9f51298b604a69eb1461fa07220"> 64</a></span>&#160; <span class="keywordtype">char</span> *<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#acbcab9f51298b604a69eb1461fa07220">C_StringUnsafe</a>(<span class="keywordtype">void</span>) {Clone(); <span class="keywordflow">return</span> sharedString-&gt;c_str;}</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a>&amp; operator = ( <span class="keyword">const</span> <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a>&amp; rhs );</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a>&amp; operator = ( <span class="keyword">const</span> <span class="keywordtype">char</span> *str );</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a>&amp; operator = ( <span class="keywordtype">char</span> *str );</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a>&amp; operator = ( <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *str );</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a>&amp; operator = ( <span class="keywordtype">char</span> <span class="keywordtype">unsigned</span> *str );</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a>&amp; operator = ( <span class="keyword">const</span> <span class="keywordtype">char</span> c );</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a>&amp; operator +=( <span class="keyword">const</span> <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a>&amp; rhs);</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a>&amp; operator += ( <span class="keyword">const</span> <span class="keywordtype">char</span> *str );</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a>&amp; operator += ( <span class="keywordtype">char</span> *str );</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a>&amp; operator += ( <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *str );</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a>&amp; operator += ( <span class="keywordtype">char</span> <span class="keywordtype">unsigned</span> *str );</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a>&amp; operator += ( <span class="keyword">const</span> <span class="keywordtype">char</span> c );</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> operator[] ( <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> position ) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="preprocessor">#ifdef _WIN32</span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="preprocessor"></span> <span class="comment">// Return as Wide char</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="comment">// Deallocate with DeallocWideChar</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; WCHAR * ToWideChar(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordtype">void</span> DeallocWideChar(WCHAR * w);</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordtype">void</span> FromWideChar(<span class="keyword">const</span> <span class="keywordtype">wchar_t</span> *source);</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keyword">static</span> <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> FromWideChar_S(<span class="keyword">const</span> <span class="keywordtype">wchar_t</span> *source);</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="preprocessor"></span> </div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordtype">size_t</span> Find(<span class="keyword">const</span> <span class="keywordtype">char</span> *stringToFind,<span class="keywordtype">size_t</span> pos = 0 );</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a> &amp;rhs) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> <span class="keywordtype">char</span> *str) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordtype">bool</span> operator==(<span class="keywordtype">char</span> *str) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="comment">// Comparison</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordtype">bool</span> operator &lt; ( <span class="keyword">const</span> <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a>&amp; right ) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordtype">bool</span> operator &lt;= ( <span class="keyword">const</span> <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a>&amp; right ) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordtype">bool</span> operator &gt; ( <span class="keyword">const</span> <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a>&amp; right ) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordtype">bool</span> operator &gt;= ( <span class="keyword">const</span> <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a>&amp; right ) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordtype">bool</span> operator!=(<span class="keyword">const</span> <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a> &amp;rhs) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordtype">bool</span> operator!=(<span class="keyword">const</span> <span class="keywordtype">char</span> *str) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordtype">bool</span> operator!=(<span class="keywordtype">char</span> *str) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> * ToLower(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> * ToUpper(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordtype">void</span> Set(<span class="keyword">const</span> <span class="keywordtype">char</span> *format, ...);</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a> Assign(<span class="keyword">const</span> <span class="keywordtype">char</span> *str,<span class="keywordtype">size_t</span> pos, <span class="keywordtype">size_t</span> n );</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordtype">bool</span> IsEmpty(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordtype">size_t</span> GetLength(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordtype">size_t</span> GetLengthUTF8(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordtype">void</span> Replace(<span class="keywordtype">unsigned</span> index, <span class="keywordtype">unsigned</span> count, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> c);</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordtype">void</span> SetChar( <span class="keywordtype">unsigned</span> index, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> c );</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordtype">void</span> SetChar( <span class="keywordtype">unsigned</span> index, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> s );</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordtype">void</span> Truncate(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length);</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordtype">void</span> TruncateUTF8(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length);</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="comment">// Gets the substring starting at index for count characters</span></div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a> SubStr(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index, <span class="keywordtype">size_t</span> count) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordtype">void</span> Erase(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> count);</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordtype">void</span> TerminateAtFirstCharacter(<span class="keywordtype">char</span> c);</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordtype">void</span> TerminateAtLastCharacter(<span class="keywordtype">char</span> c);</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordtype">void</span> StartAfterFirstCharacter(<span class="keywordtype">char</span> c);</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordtype">void</span> StartAfterLastCharacter(<span class="keywordtype">char</span> c);</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordtype">int</span> GetCharacterCount(<span class="keywordtype">char</span> c);</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; </div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordtype">void</span> RemoveCharacter(<span class="keywordtype">char</span> c);</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keyword">static</span> <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> NonVariadic(<span class="keyword">const</span> <span class="keywordtype">char</span> *str);</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> ToInteger(<span class="keyword">const</span> <span class="keywordtype">char</span> *str);</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> ToInteger(<span class="keyword">const</span> <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a> &amp;rs);</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keyword">static</span> <span class="keywordtype">int</span> ReadIntFromSubstring(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">size_t</span> pos, <span class="keywordtype">size_t</span> n);</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="comment">// Like strncat, but for a fixed length</span></div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordtype">void</span> AppendBytes(<span class="keyword">const</span> <span class="keywordtype">char</span> *bytes, <span class="keywordtype">size_t</span> count);</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordtype">int</span> StrCmp(<span class="keyword">const</span> <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a> &amp;rhs) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordtype">int</span> StrNCmp(<span class="keyword">const</span> <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a> &amp;rhs, <span class="keywordtype">size_t</span> num) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordtype">int</span> StrICmp(<span class="keyword">const</span> <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a> &amp;rhs) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordtype">void</span> Clear(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordtype">void</span> Printf(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordtype">void</span> FPrintf(FILE *fp);</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordtype">bool</span> IPAddressMatch(<span class="keyword">const</span> <span class="keywordtype">char</span> *IP);</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordtype">bool</span> ContainsNonprintableExceptSpaces(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordtype">bool</span> IsEmailAddress(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a>&amp; URLEncode(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a>&amp; URLDecode(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordtype">void</span> SplitURI(<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> &amp;header, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> &amp;domain, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> &amp;path);</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a>&amp; SQLEscape(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keyword">static</span> <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> FormatForPOST(<span class="keyword">const</span> <span class="keywordtype">char</span>* uri, <span class="keyword">const</span> <span class="keywordtype">char</span>* contentType, <span class="keyword">const</span> <span class="keywordtype">char</span>* body, <span class="keyword">const</span> <span class="keywordtype">char</span>* extraHeaders=<span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keyword">static</span> <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> FormatForPUT(<span class="keyword">const</span> <span class="keywordtype">char</span>* uri, <span class="keyword">const</span> <span class="keywordtype">char</span>* contentType, <span class="keyword">const</span> <span class="keywordtype">char</span>* body, <span class="keyword">const</span> <span class="keywordtype">char</span>* extraHeaders=<span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keyword">static</span> <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> FormatForGET(<span class="keyword">const</span> <span class="keywordtype">char</span>* uri, <span class="keyword">const</span> <span class="keywordtype">char</span>* extraHeaders=<span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keyword">static</span> <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> FormatForDELETE(<span class="keyword">const</span> <span class="keywordtype">char</span>* uri, <span class="keyword">const</span> <span class="keywordtype">char</span>* extraHeaders=<span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a>&amp; MakeFilePath(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> FreeMemory(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> FreeMemoryNoMutex(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordtype">void</span> Serialize(<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">BitStream</a> *bs) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> Serialize(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">BitStream</a> *bs);</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordtype">void</span> SerializeCompressed(<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">BitStream</a> *bs, <a class="code" href="../../df/df2/_native_types_8h.xhtml#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> languageId=0, <span class="keywordtype">bool</span> writeLanguageId=<span class="keyword">false</span>) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> SerializeCompressed(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">BitStream</a> *bs, <a class="code" href="../../df/df2/_native_types_8h.xhtml#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> languageId=0, <span class="keywordtype">bool</span> writeLanguageId=<span class="keyword">false</span>);</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordtype">bool</span> Deserialize(<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">BitStream</a> *bs);</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Deserialize(<span class="keywordtype">char</span> *str, <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">BitStream</a> *bs);</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordtype">bool</span> DeserializeCompressed(<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">BitStream</a> *bs, <span class="keywordtype">bool</span> readLanguageId=<span class="keyword">false</span>);</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> DeserializeCompressed(<span class="keywordtype">char</span> *str, <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">BitStream</a> *bs, <span class="keywordtype">bool</span> readLanguageId=<span class="keyword">false</span>);</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *ToString(<a class="code" href="../../df/df2/_native_types_8h.xhtml#adec1df1b8b51cb32b77e5b86fff46471">int64_t</a> i);</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *ToString(<a class="code" href="../../df/df2/_native_types_8h.xhtml#ad27ed092432b64ff558d2254c278720f">uint64_t</a> i);</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;</div>
<div class="line"><a name="l00299"></a><span class="lineno"><a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#aa811491b5f17066bad1b84ccc41e84e3"> 299</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">size_t</span> GetSizeToAllocate(<span class="keywordtype">size_t</span> bytes)</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; {</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> smallStringSize = 128-<span class="keyword">sizeof</span>(<span class="keywordtype">unsigned</span> int)-<span class="keyword">sizeof</span>(<span class="keywordtype">size_t</span>)-<span class="keyword">sizeof</span>(<span class="keywordtype">char</span>*)*2;</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">if</span> (bytes&lt;=smallStringSize)</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">return</span> smallStringSize;</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">return</span> bytes*2;</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; }</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;</div>
<div class="line"><a name="l00309"></a><span class="lineno"><a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml"> 309</a></span>&#160; <span class="keyword">struct </span><a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#dc/d52/struct_s_l_net_1_1_rak_string_1_1_shared_string">SharedString</a></div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; {</div>
<div class="line"><a name="l00311"></a><span class="lineno"><a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#a380165bb0ba489103a96786b4674c29a"> 311</a></span>&#160; <a class="code" href="../../d9/da8/class_s_l_net_1_1_simple_mutex.xhtml" title="An easy to use mutex.">SimpleMutex</a> *<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#a380165bb0ba489103a96786b4674c29a">refCountMutex</a>;</div>
<div class="line"><a name="l00312"></a><span class="lineno"><a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#a7750a11995b4f731c8d285e324c9690b"> 312</a></span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#a7750a11995b4f731c8d285e324c9690b">refCount</a>;</div>
<div class="line"><a name="l00313"></a><span class="lineno"><a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#a7f4f73fb1ddc295b24f5560b756a5aed"> 313</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#a7f4f73fb1ddc295b24f5560b756a5aed">bytesUsed</a>;</div>
<div class="line"><a name="l00314"></a><span class="lineno"><a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#a9473d2f04971f9c0dc735a51af685cbf"> 314</a></span>&#160; <span class="keywordtype">char</span> *<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#a9473d2f04971f9c0dc735a51af685cbf">bigString</a>;</div>
<div class="line"><a name="l00315"></a><span class="lineno"><a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#a068968532049b8a2a18e151f545927eb"> 315</a></span>&#160; <span class="keywordtype">char</span> *<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#a068968532049b8a2a18e151f545927eb">c_str</a>;</div>
<div class="line"><a name="l00316"></a><span class="lineno"><a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#acaf45b7945ba9ff4bba2b6fb99ff940e"> 316</a></span>&#160; <span class="keywordtype">char</span> smallString[128-<span class="keyword">sizeof</span>(<span class="keywordtype">unsigned</span> int)-<span class="keyword">sizeof</span>(<span class="keywordtype">size_t</span>)-<span class="keyword">sizeof</span>(<span class="keywordtype">char</span>*)*2]; </div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; };</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a>( <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#dc/d52/struct_s_l_net_1_1_rak_string_1_1_shared_string">SharedString</a> *_sharedString );</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;</div>
<div class="line"><a name="l00323"></a><span class="lineno"><a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#a9d33f9ca1a434684c2409b19f555839c"> 323</a></span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#dc/d52/struct_s_l_net_1_1_rak_string_1_1_shared_string">SharedString</a> *<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#a9d33f9ca1a434684c2409b19f555839c">sharedString</a>;</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;<span class="comment">// static SimpleMutex poolMutex;</span></div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;<span class="comment">// static DataStructures::MemoryPool&lt;SharedString&gt; pool;</span></div>
<div class="line"><a name="l00328"></a><span class="lineno"><a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac8e5167f67053aceec5bcdd4a138e0cd"> 328</a></span>&#160;<span class="comment"></span> <span class="keyword">static</span> <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#dc/d52/struct_s_l_net_1_1_rak_string_1_1_shared_string">SharedString</a> <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac8e5167f67053aceec5bcdd4a138e0cd">emptyString</a>;</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="comment">//static SharedString *sharedStringFreeList;</span></div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="comment">//static unsigned int sharedStringFreeListAllocationCount;</span></div>
<div class="line"><a name="l00334"></a><span class="lineno"><a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#a6bbbe8ec13ad356c94d17943165b0abe"> 334</a></span>&#160;<span class="comment"></span> <span class="keyword">static</span> <a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml">DataStructures::List&lt;SharedString*&gt;</a> <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#a6bbbe8ec13ad356c94d17943165b0abe">freeList</a>;</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keyword">static</span> <span class="keywordtype">int</span> RakStringComp( <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a> <span class="keyword">const</span> &amp;key, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">RakString</a> <span class="keyword">const</span> &amp;data );</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> LockMutex(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> UnlockMutex(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;<span class="keyword">protected</span>:</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keyword">static</span> <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> FormatForPUTOrPost(<span class="keyword">const</span> <span class="keywordtype">char</span>* type, <span class="keyword">const</span> <span class="keywordtype">char</span>* uri, <span class="keyword">const</span> <span class="keywordtype">char</span>* contentType, <span class="keyword">const</span> <span class="keywordtype">char</span>* body, <span class="keyword">const</span> <span class="keywordtype">char</span>* extraHeaders);</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordtype">void</span> Allocate(<span class="keywordtype">size_t</span> len);</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordtype">void</span> Assign(<span class="keyword">const</span> <span class="keywordtype">char</span> *str);</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordtype">void</span> Assign(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, va_list ap);</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; </div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordtype">void</span> Clone(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordtype">void</span> Free(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> ToLower(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> c);</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> ToUpper(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> c);</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordtype">void</span> Realloc(<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#dc/d52/struct_s_l_net_1_1_rak_string_1_1_shared_string">SharedString</a> *inSharedString, <span class="keywordtype">size_t</span> bytes);</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;};</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;}</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;<span class="keyword">const</span> <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> <a class="code" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> <a class="code" href="../../dd/d5f/_rak_string_8cpp.xhtml#a625af79cc78a3921cfa6a7116754bd6c">operator+</a>(<span class="keyword">const</span> <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> &amp;lhs, <span class="keyword">const</span> <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> &amp;rhs);</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;</div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../da/d66/string_8h.xhtml">string.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:46 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,124 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Source/src/TwoWayAuthentication.cpp File 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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../files.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/d67/_two_way_authentication_8cpp.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">TwoWayAuthentication.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="../../de/ddb/_native_feature_includes_8h_source.xhtml">slikenet/NativeFeatureIncludes.h</a>&quot;</code><br/>
</div>
<p><a href="../../da/d67/_two_way_authentication_8cpp_source.xhtml">Go to the source code of this file.</a></p>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_d1eb22c2ecfd8b50f59e9cbaf8260105.xhtml">src</a></li><li class="navelem"><a class="el" href="../../da/d67/_two_way_authentication_8cpp.xhtml">TwoWayAuthentication.cpp</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,574 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Source/src/TwoWayAuthentication.cpp Source File</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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../files.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/d67/_two_way_authentication_8cpp_source.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">TwoWayAuthentication.cpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../da/d67/_two_way_authentication_8cpp.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Original work: Copyright (c) 2014, Oculus VR, Inc.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This source code is licensed under the BSD-style license found in the</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * RakNet License.txt file in the licenses directory of this source tree. An additional grant </span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of patent rights can be found in the RakNet Patents.txt file in the same directory.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Modified work: Copyright (c) 2016-2017, SLikeSoft UG (haftungsbeschränkt)</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * license found in the license.txt file in the root directory of this source tree.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../de/ddb/_native_feature_includes_8h.xhtml">slikenet/NativeFeatureIncludes.h</a>&quot;</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#if _RAKNET_SUPPORT_TwoWayAuthentication==1</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../df/df8/_two_way_authentication_8h.xhtml" title="Implements two way authentication.">slikenet/TwoWayAuthentication.h</a>&quot;</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d7/d10/_rand_8h.xhtml" title="[Internal] Random number generator">slikenet/Rand.h</a>&quot;</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d6/d76/_get_time_8h.xhtml" title="Returns the value from QueryPerformanceCounter. This is the function RakNet uses to represent time...">slikenet/GetTime.h</a>&quot;</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d6/d83/_message_identifiers_8h.xhtml" title="All the message identifiers used by RakNet. Message identifiers comprise the first byte of any messag...">slikenet/MessageIdentifiers.h</a>&quot;</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d7/dc3/_bit_stream_8h.xhtml" title="This class allows you to write and read native types as a string of bits.">slikenet/BitStream.h</a>&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../dd/d85/peerinterface_8h.xhtml" title="An interface for RakPeer. Simply contains all user functions as pure virtuals.">slikenet/peerinterface.h</a>&quot;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#if LIBCAT_SECURITY==1</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor"></span><span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> HASH_BITS = 256;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> HASH_BYTES = HASH_BITS / 8;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> STRENGTHENING_FACTOR = 256;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment">// If building a RakNet DLL, be sure to tweak the CAT_EXPORT macro meaning</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#if !defined(_RAKNET_LIB) &amp;&amp; defined(_RAKNET_DLL)</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor"></span><span class="preprocessor"># define CAT_BUILD_DLL</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#else</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor"></span><span class="preprocessor"># define CAT_NEUTER_EXPORT</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &lt;cat/crypt/hash/Skein.hpp&gt;</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="keyword">using namespace </span>SLNet;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword">enum</span> NegotiationIdentifiers</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;{</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; ID_NONCE_REQUEST,</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; ID_NONCE_REPLY,</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; ID_HASHED_NONCE_AND_PASSWORD,</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;};</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a9d69f4b7e6f2167fda3732b70ebbb6ff">TwoWayAuthentication::NonceGenerator::NonceGenerator</a>() {<a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#ac9915da4f02b9b0e936106883622b461">nextRequestId</a>=0;}</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a2c7cb0a60a136c7badd20976719b883a">TwoWayAuthentication::NonceGenerator::~NonceGenerator</a>()</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;{</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a0ed9bcd3686373d418d71ce91c04d9b0" title="Free all memory.">Clear</a>();</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;}</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a03d185542785ad825da632c8e460f215">TwoWayAuthentication::NonceGenerator::GetNonce</a>(<span class="keywordtype">char</span> nonce[<a class="code" href="../../df/df8/_two_way_authentication_8h.xhtml#aaa86357a26d52aae1bbb4337f804ff62">TWO_WAY_AUTHENTICATION_NONCE_LENGTH</a>], <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> *requestId, <a class="code" href="../../d3/da8/struct_s_l_net_1_1_address_or_g_u_i_d.xhtml">SLNet::AddressOrGUID</a> remoteSystem)</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;{</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#d8/dc2/struct_s_l_net_1_1_two_way_authentication_1_1_nonce_and_remote_system_request">TwoWayAuthentication::NonceAndRemoteSystemRequest</a> *narsr = SLNet::OP_NEW&lt;TwoWayAuthentication::NonceAndRemoteSystemRequest&gt;(<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; narsr-&gt;<a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#aa93ad0f94635f877fe5b426639f88dd5">remoteSystem</a>=remoteSystem;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; GenerateNonce(narsr-&gt;<a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a461de4e62ef3008ac0420af1de70dc9e">nonce</a>);</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; narsr-&gt;<a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a168de9a145b811e62a81e54c645ccd46">requestId</a>=nextRequestId++;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; *requestId=narsr-&gt;<a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a168de9a145b811e62a81e54c645ccd46">requestId</a>;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; memcpy(nonce,narsr-&gt;<a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a461de4e62ef3008ac0420af1de70dc9e">nonce</a>,TWO_WAY_AUTHENTICATION_NONCE_LENGTH);</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; narsr-&gt;<a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a48ca19e6389a22a4549bf63d0935838d">whenGenerated</a>= <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a2de556bb780580b7b7f07e99e382818d">SLNet::GetTime</a>();</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; generatedNonces.Push(narsr,<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;}</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a023d0ac76909034c9ec9fca36c7a4dfc">TwoWayAuthentication::NonceGenerator::GenerateNonce</a>(<span class="keywordtype">char</span> nonce[TWO_WAY_AUTHENTICATION_NONCE_LENGTH])</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;{</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="../../da/d82/_rand_8cpp.xhtml#ade83f21ad5a606f79932ba432d97ced7">fillBufferMT</a>(nonce,TWO_WAY_AUTHENTICATION_NONCE_LENGTH);</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;}</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a0004c74c2fd750ec0e09886697b7f37f">TwoWayAuthentication::NonceGenerator::GetNonceById</a>(<span class="keywordtype">char</span> nonce[TWO_WAY_AUTHENTICATION_NONCE_LENGTH], <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> requestId, <a class="code" href="../../d3/da8/struct_s_l_net_1_1_address_or_g_u_i_d.xhtml">SLNet::AddressOrGUID</a> remoteSystem, <span class="keywordtype">bool</span> popIfFound)</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;{</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i;</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; generatedNonces.Size(); i++)</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; {</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">if</span> (generatedNonces[i]-&gt;requestId==requestId)</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">if</span> (remoteSystem==generatedNonces[i]-&gt;remoteSystem)</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; memcpy(nonce,generatedNonces[i]-&gt;nonce,TWO_WAY_AUTHENTICATION_NONCE_LENGTH);</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">if</span> (popIfFound)</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; {</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a79772d09451f784e87bec85694fad1ed">SLNet::OP_DELETE</a>(generatedNonces[i],<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; generatedNonces.RemoveAtIndex(i);</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; }</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; {</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;}</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#aa737dd83942e38fe9ba0dee12d077f7d">TwoWayAuthentication::NonceGenerator::Clear</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;{</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i;</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; generatedNonces.Size(); i++)</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a79772d09451f784e87bec85694fad1ed">SLNet::OP_DELETE</a>(generatedNonces[i],<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; generatedNonces.Clear(<span class="keyword">true</span>,<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;}</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#af066ffb6fb4b0e8ea7081aa6ec6a9ebf">TwoWayAuthentication::NonceGenerator::ClearByAddress</a>(<a class="code" href="../../d3/da8/struct_s_l_net_1_1_address_or_g_u_i_d.xhtml">SLNet::AddressOrGUID</a> remoteSystem)</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;{</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0;</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">while</span> (i &lt; generatedNonces.Size())</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; {</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">if</span> (generatedNonces[i]-&gt;remoteSystem==remoteSystem)</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; {</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a79772d09451f784e87bec85694fad1ed">SLNet::OP_DELETE</a>(generatedNonces[i],<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; generatedNonces.RemoveAtIndex(i);</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; {</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; i++;</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;}</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a01a95b20e19a2da0713c08741d1cc5ea">TwoWayAuthentication::NonceGenerator::Update</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a7223b62c1b67121db1d975f2ab9b74c7">SLNet::Time</a> curTime)</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;{</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span> (generatedNonces.Size()&gt;0 &amp;&amp; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ae99a418b0377902ee85309774e03a7de" title="a &gt; b?">GreaterThan</a>(curTime-5000, generatedNonces[0]-&gt;whenGenerated))</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; {</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a79772d09451f784e87bec85694fad1ed">SLNet::OP_DELETE</a>(generatedNonces[0], <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; generatedNonces.RemoveAtIndex(0);</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;}</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a1bbca4ee3edb909fde81741f7cdc763d">TwoWayAuthentication::TwoWayAuthentication</a>()</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;{</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a766fc0e8387692ea9677f5058c1f3d64">whenLastTimeoutCheck</a>= <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a2de556bb780580b7b7f07e99e382818d">SLNet::GetTime</a>();</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a86290618479835cad5f671ed697300d2">seedMT</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a4772a177cb3fcb5d9e699a6670c3fb8a">SLNet::GetTimeMS</a>());</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;}</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#afe3e541120aea472dfff72d096a25ab4">TwoWayAuthentication::~TwoWayAuthentication</a>()</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;{</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a0ed9bcd3686373d418d71ce91c04d9b0" title="Free all memory.">Clear</a>();</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;}</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#ab0916b11ff6b6a4049340167b293f736" title="Adds a password to the list of passwords the system will accept.">TwoWayAuthentication::AddPassword</a>(<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> identifier, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> password)</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;{</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">if</span> (password.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#a83a4f2762a85a1e4704db0f7ac2c0abe" title="Returns if the string is empty. Also, C_String() would return &quot;&quot;.">IsEmpty</a>())</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">if</span> (identifier.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#a83a4f2762a85a1e4704db0f7ac2c0abe" title="Returns if the string is empty. Also, C_String() would return &quot;&quot;.">IsEmpty</a>())</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">if</span> (password==identifier)</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>; <span class="comment">// Insecure</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a4f5950a9585950680938fcf9934a4381">passwords</a>.<a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml#af31d2ff3160e0d7e0275faf0a2e35fb7">GetIndexOf</a>(identifier.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>()).IsInvalid()==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>; <span class="comment">// This identifier already in use</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a4f5950a9585950680938fcf9934a4381">passwords</a>.<a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml#a1cd78525c3b53c60fc5a6f1f722d53f2">Push</a>(identifier, password,<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;}</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a24cac4a408b23ee80c8a284b6242806f" title="Challenge another system for the specified identifier.">TwoWayAuthentication::Challenge</a>(<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> identifier, <a class="code" href="../../d3/da8/struct_s_l_net_1_1_address_or_g_u_i_d.xhtml">AddressOrGUID</a> remoteSystem)</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;{</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml">DataStructures::HashIndex</a> skhi = <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a4f5950a9585950680938fcf9934a4381">passwords</a>.<a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml#af31d2ff3160e0d7e0275faf0a2e35fb7">GetIndexOf</a>(identifier.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>());</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">if</span> (skhi.<a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml#a5d5347b85316db1181a65fc05a388460">IsInvalid</a>())</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> bsOut;</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; bsOut.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>)<a class="code" href="../../d6/d83/_message_identifiers_8h.xhtml#ac1b471af280629f5ace02e586d5bcfd3a867828d13631463d58bfdaf22cb106e0">ID_TWO_WAY_AUTHENTICATION_NEGOTIATION</a>);</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; bsOut.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>)ID_NONCE_REQUEST);</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#aa9c79c0d16ece39114231d680190d39a">SendUnified</a>(&amp;bsOut,<a class="code" href="../../d7/d03/_packet_priority_8h.xhtml#a659378374e516180f93640c79f59705cacb1785f11dd02aa7f5d164fb314c594e">HIGH_PRIORITY</a>,<a class="code" href="../../d7/d03/_packet_priority_8h.xhtml#ae41fa01235e99dced384d137fa874a7eaff2d39b163bcf3e142744962bfb0849f">RELIABLE_ORDERED</a>,0,remoteSystem,<span class="keyword">false</span>);</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; PendingChallenge pc;</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; pc.identifier=identifier;</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; pc.remoteSystem=remoteSystem;</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; pc.time= <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a2de556bb780580b7b7f07e99e382818d">SLNet::GetTime</a>();</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; pc.sentHash=<span class="keyword">false</span>;</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#abd69e57bd42a42527a45da884a5318d3">outgoingChallenges</a>.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae564a88f3367a786777694e778a4500d">Push</a>(pc,<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;}</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a1c6a65a3f68732e89304be63d7f554f3" title="Update is called every time a packet is checked for .">TwoWayAuthentication::Update</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;{</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a7223b62c1b67121db1d975f2ab9b74c7">SLNet::Time</a> curTime = <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a2de556bb780580b7b7f07e99e382818d">SLNet::GetTime</a>();</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a36e61759a6d97672877709774c4a710c">nonceGenerator</a>.<a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a01a95b20e19a2da0713c08741d1cc5ea">Update</a>(curTime);</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ae99a418b0377902ee85309774e03a7de" title="a &gt; b?">GreaterThan</a>(curTime - <a class="code" href="../../df/df8/_two_way_authentication_8h.xhtml#a75d76cdac8766b04974dd1161372a22b">CHALLENGE_MINIMUM_TIMEOUT</a>, <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a766fc0e8387692ea9677f5058c1f3d64">whenLastTimeoutCheck</a>))</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; {</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#abd69e57bd42a42527a45da884a5318d3">outgoingChallenges</a>.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae2aec093c82f780558c23f8ae9f296b8">Size</a>() &amp;&amp; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#ae99a418b0377902ee85309774e03a7de" title="a &gt; b?">GreaterThan</a>(curTime - <a class="code" href="../../df/df8/_two_way_authentication_8h.xhtml#a75d76cdac8766b04974dd1161372a22b">CHALLENGE_MINIMUM_TIMEOUT</a>, <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#abd69e57bd42a42527a45da884a5318d3">outgoingChallenges</a>.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a5e9c9de11d2dd84320d2f7c9408b80b1">Peek</a>().<a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#acb6dd0eea6e100b38eadc7f47ae0c0a0">time</a>))</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; {</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; PendingChallenge pc = <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#abd69e57bd42a42527a45da884a5318d3">outgoingChallenges</a>.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a25272370e684388afd807c5369e4ef87">Pop</a>();</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="comment">// Tell the user about the timeout</span></div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a9bf3b18bd759234c97faf220aa47c6a5">PushToUser</a>(<a class="code" href="../../d6/d83/_message_identifiers_8h.xhtml#ac1b471af280629f5ace02e586d5bcfd3ab22405f8b40d04f6eebfb04a468768c5">ID_TWO_WAY_AUTHENTICATION_OUTGOING_CHALLENGE_TIMEOUT</a>, pc.identifier, pc.remoteSystem); </div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; }</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a766fc0e8387692ea9677f5058c1f3d64">whenLastTimeoutCheck</a>=curTime+<a class="code" href="../../df/df8/_two_way_authentication_8h.xhtml#a75d76cdac8766b04974dd1161372a22b">CHALLENGE_MINIMUM_TIMEOUT</a>;</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; }</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;}</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#ga5c8f613a7c294e0b96deccbdabc38f18">PluginReceiveResult</a> <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a30510f6274eb21d4081d0935d5e09b0f">TwoWayAuthentication::OnReceive</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#d8/d23/struct_s_l_net_1_1_packet" title="This represents a user message from another system.">Packet</a> *packet)</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;{</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">switch</span> (packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>[0])</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; {</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">case</span> ID_TWO_WAY_AUTHENTICATION_NEGOTIATION:</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; {</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">if</span> (packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a75dfd0a23cc4c14dd338caedabe19341" title="The length of the data in bytes.">length</a>&gt;=<span class="keyword">sizeof</span>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>)*2)</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; {</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">switch</span> (packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>[<span class="keyword">sizeof</span>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>)])</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; {</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">case</span> ID_NONCE_REQUEST:</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; {</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a8d60c2c3f15c2e198e9162dfe615a430">OnNonceRequest</a>(packet);</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; }</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">case</span> ID_NONCE_REPLY:</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; {</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#ab809626888e294ced64b04a826c2145e">OnNonceReply</a>(packet);</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; }</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">case</span> ID_HASHED_NONCE_AND_PASSWORD:</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; {</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a49704c0e457bd706a975bb750f158364">OnHashedNonceAndPassword</a>(packet);</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; }</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; }</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; }</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#gga5c8f613a7c294e0b96deccbdabc38f18a9f27ed7ccb7513dceb7ed4da3d99a1bf" title="The plugin used this message and it shouldn&#39;t be given to the user.">RR_STOP_PROCESSING_AND_DEALLOCATE</a>;</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; }</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../d6/d83/_message_identifiers_8h.xhtml#ac1b471af280629f5ace02e586d5bcfd3a3b03ba34163c20d4a3918da7baf9d99c">ID_TWO_WAY_AUTHENTICATION_OUTGOING_CHALLENGE_FAILURE</a>:</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../d6/d83/_message_identifiers_8h.xhtml#ac1b471af280629f5ace02e586d5bcfd3a717135e1448a14fd201931c450b7cd1a">ID_TWO_WAY_AUTHENTICATION_OUTGOING_CHALLENGE_SUCCESS</a>:</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; {</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">if</span> (packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a4a736945115119681c77e168346988c4">wasGeneratedLocally</a>==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; {</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#ac749a802cdc9829e011b756d527c0683">OnPasswordResult</a>(packet);</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#gga5c8f613a7c294e0b96deccbdabc38f18a9f27ed7ccb7513dceb7ed4da3d99a1bf" title="The plugin used this message and it shouldn&#39;t be given to the user.">RR_STOP_PROCESSING_AND_DEALLOCATE</a>;</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; }</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; }</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="comment">// These should only be generated locally</span></div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../d6/d83/_message_identifiers_8h.xhtml#ac1b471af280629f5ace02e586d5bcfd3ac172bba552038ffc2d2558501c795bc2">ID_TWO_WAY_AUTHENTICATION_INCOMING_CHALLENGE_SUCCESS</a>:</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../d6/d83/_message_identifiers_8h.xhtml#ac1b471af280629f5ace02e586d5bcfd3a316f94a26aafc229ef40bd2c7f9879f8">ID_TWO_WAY_AUTHENTICATION_INCOMING_CHALLENGE_FAILURE</a>:</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../d6/d83/_message_identifiers_8h.xhtml#ac1b471af280629f5ace02e586d5bcfd3ab22405f8b40d04f6eebfb04a468768c5">ID_TWO_WAY_AUTHENTICATION_OUTGOING_CHALLENGE_TIMEOUT</a>:</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">if</span> (packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a4a736945115119681c77e168346988c4">wasGeneratedLocally</a>==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#gga5c8f613a7c294e0b96deccbdabc38f18a9f27ed7ccb7513dceb7ed4da3d99a1bf" title="The plugin used this message and it shouldn&#39;t be given to the user.">RR_STOP_PROCESSING_AND_DEALLOCATE</a>;</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; }</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; </div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#gga5c8f613a7c294e0b96deccbdabc38f18a5b5a476b87be78212057efd5535345d4" title="This message will be processed by other plugins, and at last by the user.">RR_CONTINUE_PROCESSING</a>;</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;}</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a63b9ab36e576ffbf94973a395a130936" title="Called when RakPeer is shutdown.">TwoWayAuthentication::OnRakPeerShutdown</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;{</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a0ed9bcd3686373d418d71ce91c04d9b0" title="Free all memory.">Clear</a>();</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;}</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a1eeb43d6ddab0645187d77c0ba151d33">TwoWayAuthentication::OnClosedConnection</a>(<span class="keyword">const</span> <a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> &amp;systemAddress, <a class="code" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml">RakNetGUID</a> rakNetGUID, <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#ga4d3ac5ca8821fadad6d22d0267e06803">PI2_LostConnectionReason</a> lostConnectionReason )</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;{</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; (void) lostConnectionReason;</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="comment">// Remove from pending challenges</span></div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0;</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordflow">while</span> (i &lt; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#abd69e57bd42a42527a45da884a5318d3">outgoingChallenges</a>.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae2aec093c82f780558c23f8ae9f296b8">Size</a>())</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; {</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">if</span> ((rakNetGUID!=<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a242c86300509ec068e5e2ea534bbba51">UNASSIGNED_RAKNET_GUID</a> &amp;&amp; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#abd69e57bd42a42527a45da884a5318d3">outgoingChallenges</a>[i].remoteSystem.<a class="code" href="../../d3/da8/struct_s_l_net_1_1_address_or_g_u_i_d.xhtml#a586cd1e6fa1a832ad3e584779ea88d80">rakNetGuid</a>==rakNetGUID) ||</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; (systemAddress!=<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#acea7714c995aae0e1feaf79c9e7f073d" title="Index of an invalid SystemAddress.">UNASSIGNED_SYSTEM_ADDRESS</a> &amp;&amp; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#abd69e57bd42a42527a45da884a5318d3">outgoingChallenges</a>[i].remoteSystem.systemAddress==systemAddress))</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; {</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#abd69e57bd42a42527a45da884a5318d3">outgoingChallenges</a>.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a8be7c3107161bb2ad869a9a6bb60605a">RemoveAtIndex</a>(i);</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; }</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; {</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; i++;</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; }</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; }</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">if</span> (rakNetGUID!=<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a242c86300509ec068e5e2ea534bbba51">UNASSIGNED_RAKNET_GUID</a>)</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a36e61759a6d97672877709774c4a710c">nonceGenerator</a>.<a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#af066ffb6fb4b0e8ea7081aa6ec6a9ebf">ClearByAddress</a>(rakNetGUID);</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a36e61759a6d97672877709774c4a710c">nonceGenerator</a>.<a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#af066ffb6fb4b0e8ea7081aa6ec6a9ebf">ClearByAddress</a>(systemAddress);</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;}</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a0ed9bcd3686373d418d71ce91c04d9b0" title="Free all memory.">TwoWayAuthentication::Clear</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;{</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#abd69e57bd42a42527a45da884a5318d3">outgoingChallenges</a>.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a481276f70b05ecba8138cd67e51509ec">Clear</a>(<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a4f5950a9585950680938fcf9934a4381">passwords</a>.<a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml#adcbf7b437513650734419bd55f736276" title="Clear the list.">Clear</a>(<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a36e61759a6d97672877709774c4a710c">nonceGenerator</a>.<a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#aa737dd83942e38fe9ba0dee12d077f7d">Clear</a>();</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;}</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a9bf3b18bd759234c97faf220aa47c6a5">TwoWayAuthentication::PushToUser</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a> messageId, <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> password, <a class="code" href="../../d3/da8/struct_s_l_net_1_1_address_or_g_u_i_d.xhtml">SLNet::AddressOrGUID</a> remoteSystem)</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;{</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> output;</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; output.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(messageId);</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">if</span> (password.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#a83a4f2762a85a1e4704db0f7ac2c0abe" title="Returns if the string is empty. Also, C_String() would return &quot;&quot;.">IsEmpty</a>()==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; output.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(password);</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#d8/d23/struct_s_l_net_1_1_packet" title="This represents a user message from another system.">Packet</a> *p = <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#aed235e7933ca7f30448eb9c91cefab63">AllocatePacketUnified</a>(output.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a48740002683b46b00cbb97b8f7d0710e" title="Returns the length in bytes of the stream.">GetNumberOfBytesUsed</a>());</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; p-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5c9d18515892239712a5d8fcb46c4245" title="The system that send this packet.">systemAddress</a>=remoteSystem.<a class="code" href="../../d3/da8/struct_s_l_net_1_1_address_or_g_u_i_d.xhtml#a4d7090b1b5269c293f58fee1da43e098">systemAddress</a>;</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; p-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5c9d18515892239712a5d8fcb46c4245" title="The system that send this packet.">systemAddress</a>.<a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml#aac702cdf872b7c57376b2e379845c150">systemIndex</a>=(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aaebbed028894590d770e7fcf8518c441">SystemIndex</a>)-1;</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; p-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a4f42e82893aff6aade8a45c79d1b8fd3">guid</a>=remoteSystem.<a class="code" href="../../d3/da8/struct_s_l_net_1_1_address_or_g_u_i_d.xhtml#a586cd1e6fa1a832ad3e584779ea88d80">rakNetGuid</a>;</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; p-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a4a736945115119681c77e168346988c4">wasGeneratedLocally</a>=<span class="keyword">true</span>;</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; memcpy(p-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>, output.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a7b4099386f6f116f0978b00ead160a0d">GetData</a>(), output.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a48740002683b46b00cbb97b8f7d0710e" title="Returns the length in bytes of the stream.">GetNumberOfBytesUsed</a>());</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#adac8deadf450a4e1d69c11b1db588bec">rakPeerInterface</a>-&gt;<a class="code" href="../../da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a55e4b5cdc35701904e451e81ff237d08">PushBackPacket</a>(p, <span class="keyword">true</span>);</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;}</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a8d60c2c3f15c2e198e9162dfe615a430">TwoWayAuthentication::OnNonceRequest</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#d8/d23/struct_s_l_net_1_1_packet" title="This represents a user message from another system.">Packet</a> *packet)</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;{</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> bsIn(packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>, packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a75dfd0a23cc4c14dd338caedabe19341" title="The length of the data in bytes.">length</a>, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; bsIn.IgnoreBytes(<span class="keyword">sizeof</span>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>)*2);</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordtype">char</span> nonce[<a class="code" href="../../df/df8/_two_way_authentication_8h.xhtml#aaa86357a26d52aae1bbb4337f804ff62">TWO_WAY_AUTHENTICATION_NONCE_LENGTH</a>];</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> requestId;</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a36e61759a6d97672877709774c4a710c">nonceGenerator</a>.<a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a03d185542785ad825da632c8e460f215">GetNonce</a>(nonce,&amp;requestId,packet);</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> bsOut;</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; bsOut.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>)ID_TWO_WAY_AUTHENTICATION_NEGOTIATION);</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; bsOut.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>)ID_NONCE_REPLY);</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; bsOut.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(requestId);</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; bsOut.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#af777083a659116082f109ccd9c8639f5" title="Align the bitstream to the byte boundary and then write the specified number of bits.">WriteAlignedBytes</a>((<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*) nonce,TWO_WAY_AUTHENTICATION_NONCE_LENGTH);</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#aa9c79c0d16ece39114231d680190d39a">SendUnified</a>(&amp;bsOut,<a class="code" href="../../d7/d03/_packet_priority_8h.xhtml#a659378374e516180f93640c79f59705cacb1785f11dd02aa7f5d164fb314c594e">HIGH_PRIORITY</a>,<a class="code" href="../../d7/d03/_packet_priority_8h.xhtml#ae41fa01235e99dced384d137fa874a7eaff2d39b163bcf3e142744962bfb0849f">RELIABLE_ORDERED</a>,0,packet,<span class="keyword">false</span>);</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;}</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#ab809626888e294ced64b04a826c2145e">TwoWayAuthentication::OnNonceReply</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#d8/d23/struct_s_l_net_1_1_packet" title="This represents a user message from another system.">Packet</a> *packet)</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;{</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> bsIn(packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>, packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a75dfd0a23cc4c14dd338caedabe19341" title="The length of the data in bytes.">length</a>, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; bsIn.IgnoreBytes(<span class="keyword">sizeof</span>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>)*2);</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordtype">char</span> thierNonce[<a class="code" href="../../df/df8/_two_way_authentication_8h.xhtml#aaa86357a26d52aae1bbb4337f804ff62">TWO_WAY_AUTHENTICATION_NONCE_LENGTH</a>];</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> requestId;</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; bsIn.Read(requestId);</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; bsIn.ReadAlignedBytes((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *) thierNonce,TWO_WAY_AUTHENTICATION_NONCE_LENGTH);</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="comment">// Lookup one of the negotiations for this guid/system address</span></div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <a class="code" href="../../d3/da8/struct_s_l_net_1_1_address_or_g_u_i_d.xhtml">AddressOrGUID</a> aog(packet);</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i;</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#abd69e57bd42a42527a45da884a5318d3">outgoingChallenges</a>.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae2aec093c82f780558c23f8ae9f296b8">Size</a>(); i++)</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; {</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#abd69e57bd42a42527a45da884a5318d3">outgoingChallenges</a>[i].remoteSystem==aog &amp;&amp; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#abd69e57bd42a42527a45da884a5318d3">outgoingChallenges</a>[i].sentHash==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; {</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#abd69e57bd42a42527a45da884a5318d3">outgoingChallenges</a>[i].sentHash=<span class="keyword">true</span>;</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="comment">// Get the password for this identifier</span></div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml">DataStructures::HashIndex</a> skhi = <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a4f5950a9585950680938fcf9934a4381">passwords</a>.<a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml#af31d2ff3160e0d7e0275faf0a2e35fb7">GetIndexOf</a>(<a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#abd69e57bd42a42527a45da884a5318d3">outgoingChallenges</a>[i].identifier.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>());</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordflow">if</span> (skhi.<a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml#a5d5347b85316db1181a65fc05a388460">IsInvalid</a>()==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; {</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> password = <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a4f5950a9585950680938fcf9934a4381">passwords</a>.<a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml#a5fec5e2f5f479ddeebefe9a0ff1c50e4">ItemAtIndex</a>(skhi);</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="comment">// Hash their nonce with password and reply</span></div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordtype">char</span> hashedNonceAndPw[<a class="code" href="../../df/df8/_two_way_authentication_8h.xhtml#a6c49937ccc748d8e7482399a8c6d5536">HASHED_NONCE_AND_PW_LENGTH</a>];</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a6b28e2a151770a5447d9dfb73250f42a">Hash</a>(thierNonce, password, hashedNonceAndPw);</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="comment">// Send</span></div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> bsOut;</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; bsOut.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>)ID_TWO_WAY_AUTHENTICATION_NEGOTIATION);</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; bsOut.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>)ID_HASHED_NONCE_AND_PASSWORD);</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; bsOut.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(requestId);</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; bsOut.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(<a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#abd69e57bd42a42527a45da884a5318d3">outgoingChallenges</a>[i].identifier); <span class="comment">// Identifier helps the other system lookup the password quickly.</span></div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; bsOut.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#af777083a659116082f109ccd9c8639f5" title="Align the bitstream to the byte boundary and then write the specified number of bits.">WriteAlignedBytes</a>((<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*) hashedNonceAndPw,<a class="code" href="../../df/df8/_two_way_authentication_8h.xhtml#a6c49937ccc748d8e7482399a8c6d5536">HASHED_NONCE_AND_PW_LENGTH</a>);</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#aa9c79c0d16ece39114231d680190d39a">SendUnified</a>(&amp;bsOut,<a class="code" href="../../d7/d03/_packet_priority_8h.xhtml#a659378374e516180f93640c79f59705cacb1785f11dd02aa7f5d164fb314c594e">HIGH_PRIORITY</a>,<a class="code" href="../../d7/d03/_packet_priority_8h.xhtml#ae41fa01235e99dced384d137fa874a7eaff2d39b163bcf3e142744962bfb0849f">RELIABLE_ORDERED</a>,0,packet,<span class="keyword">false</span>);</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; }</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; }</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; }</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;}</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;<a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#ga5c8f613a7c294e0b96deccbdabc38f18">PluginReceiveResult</a> <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a49704c0e457bd706a975bb750f158364">TwoWayAuthentication::OnHashedNonceAndPassword</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#d8/d23/struct_s_l_net_1_1_packet" title="This represents a user message from another system.">Packet</a> *packet)</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;{</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> bsIn(packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>, packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a75dfd0a23cc4c14dd338caedabe19341" title="The length of the data in bytes.">length</a>, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; bsIn.IgnoreBytes(<span class="keyword">sizeof</span>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>)*2);</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordtype">char</span> remoteHashedNonceAndPw[<a class="code" href="../../df/df8/_two_way_authentication_8h.xhtml#a6c49937ccc748d8e7482399a8c6d5536">HASHED_NONCE_AND_PW_LENGTH</a>];</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> requestId;</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; bsIn.Read(requestId);</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> passwordIdentifier;</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; bsIn.Read(passwordIdentifier);</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; bsIn.ReadAlignedBytes((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *) remoteHashedNonceAndPw,<a class="code" href="../../df/df8/_two_way_authentication_8h.xhtml#a6c49937ccc748d8e7482399a8c6d5536">HASHED_NONCE_AND_PW_LENGTH</a>);</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;</div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="comment">// Look up used nonce from requestId</span></div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordtype">char</span> usedNonce[<a class="code" href="../../df/df8/_two_way_authentication_8h.xhtml#aaa86357a26d52aae1bbb4337f804ff62">TWO_WAY_AUTHENTICATION_NONCE_LENGTH</a>];</div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a36e61759a6d97672877709774c4a710c">nonceGenerator</a>.<a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a0004c74c2fd750ec0e09886697b7f37f">GetNonceById</a>(usedNonce, requestId, packet, <span class="keyword">true</span>)==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#gga5c8f613a7c294e0b96deccbdabc38f18a9f27ed7ccb7513dceb7ed4da3d99a1bf" title="The plugin used this message and it shouldn&#39;t be given to the user.">RR_STOP_PROCESSING_AND_DEALLOCATE</a>;</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;</div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml">DataStructures::HashIndex</a> skhi = <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a4f5950a9585950680938fcf9934a4381">passwords</a>.<a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml#af31d2ff3160e0d7e0275faf0a2e35fb7">GetIndexOf</a>(passwordIdentifier.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>());</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">if</span> (skhi.<a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml#a5d5347b85316db1181a65fc05a388460">IsInvalid</a>()==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; {</div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordtype">char</span> hashedThisNonceAndPw[<a class="code" href="../../df/df8/_two_way_authentication_8h.xhtml#a6c49937ccc748d8e7482399a8c6d5536">HASHED_NONCE_AND_PW_LENGTH</a>];</div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a6b28e2a151770a5447d9dfb73250f42a">Hash</a>(usedNonce, <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a4f5950a9585950680938fcf9934a4381">passwords</a>.<a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml#a5fec5e2f5f479ddeebefe9a0ff1c50e4">ItemAtIndex</a>(skhi), hashedThisNonceAndPw);</div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">if</span> (memcmp(hashedThisNonceAndPw, remoteHashedNonceAndPw,<a class="code" href="../../df/df8/_two_way_authentication_8h.xhtml#a6c49937ccc748d8e7482399a8c6d5536">HASHED_NONCE_AND_PW_LENGTH</a>)==0)</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; {</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="comment">// Pass</span></div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> bsOut;</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; bsOut.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>)<a class="code" href="../../d6/d83/_message_identifiers_8h.xhtml#ac1b471af280629f5ace02e586d5bcfd3a717135e1448a14fd201931c450b7cd1a">ID_TWO_WAY_AUTHENTICATION_OUTGOING_CHALLENGE_SUCCESS</a>);</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; bsOut.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#af777083a659116082f109ccd9c8639f5" title="Align the bitstream to the byte boundary and then write the specified number of bits.">WriteAlignedBytes</a>((<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*) usedNonce,TWO_WAY_AUTHENTICATION_NONCE_LENGTH);</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; bsOut.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#af777083a659116082f109ccd9c8639f5" title="Align the bitstream to the byte boundary and then write the specified number of bits.">WriteAlignedBytes</a>((<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*) remoteHashedNonceAndPw,<a class="code" href="../../df/df8/_two_way_authentication_8h.xhtml#a6c49937ccc748d8e7482399a8c6d5536">HASHED_NONCE_AND_PW_LENGTH</a>);</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; bsOut.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(passwordIdentifier);</div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#aa9c79c0d16ece39114231d680190d39a">SendUnified</a>(&amp;bsOut,<a class="code" href="../../d7/d03/_packet_priority_8h.xhtml#a659378374e516180f93640c79f59705cacb1785f11dd02aa7f5d164fb314c594e">HIGH_PRIORITY</a>,<a class="code" href="../../d7/d03/_packet_priority_8h.xhtml#ae41fa01235e99dced384d137fa874a7eaff2d39b163bcf3e142744962bfb0849f">RELIABLE_ORDERED</a>,0,packet,<span class="keyword">false</span>);</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;</div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="comment">// Incoming success, modify packet header to tell user</span></div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a9bf3b18bd759234c97faf220aa47c6a5">PushToUser</a>(<a class="code" href="../../d6/d83/_message_identifiers_8h.xhtml#ac1b471af280629f5ace02e586d5bcfd3ac172bba552038ffc2d2558501c795bc2">ID_TWO_WAY_AUTHENTICATION_INCOMING_CHALLENGE_SUCCESS</a>, passwordIdentifier, packet);</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;</div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#gga5c8f613a7c294e0b96deccbdabc38f18a9f27ed7ccb7513dceb7ed4da3d99a1bf" title="The plugin used this message and it shouldn&#39;t be given to the user.">RR_STOP_PROCESSING_AND_DEALLOCATE</a>;</div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; }</div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; }</div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;</div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="comment">// Incoming failure, modify arrived packet header to tell user</span></div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>[0]=(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>) <a class="code" href="../../d6/d83/_message_identifiers_8h.xhtml#ac1b471af280629f5ace02e586d5bcfd3a316f94a26aafc229ef40bd2c7f9879f8">ID_TWO_WAY_AUTHENTICATION_INCOMING_CHALLENGE_FAILURE</a>;</div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; </div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> bsOut;</div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; bsOut.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>)<a class="code" href="../../d6/d83/_message_identifiers_8h.xhtml#ac1b471af280629f5ace02e586d5bcfd3a3b03ba34163c20d4a3918da7baf9d99c">ID_TWO_WAY_AUTHENTICATION_OUTGOING_CHALLENGE_FAILURE</a>);</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; bsOut.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#af777083a659116082f109ccd9c8639f5" title="Align the bitstream to the byte boundary and then write the specified number of bits.">WriteAlignedBytes</a>((<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*) usedNonce,TWO_WAY_AUTHENTICATION_NONCE_LENGTH);</div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; bsOut.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#af777083a659116082f109ccd9c8639f5" title="Align the bitstream to the byte boundary and then write the specified number of bits.">WriteAlignedBytes</a>((<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*) remoteHashedNonceAndPw,<a class="code" href="../../df/df8/_two_way_authentication_8h.xhtml#a6c49937ccc748d8e7482399a8c6d5536">HASHED_NONCE_AND_PW_LENGTH</a>);</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; bsOut.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(passwordIdentifier);</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#aa9c79c0d16ece39114231d680190d39a">SendUnified</a>(&amp;bsOut,<a class="code" href="../../d7/d03/_packet_priority_8h.xhtml#a659378374e516180f93640c79f59705cacb1785f11dd02aa7f5d164fb314c594e">HIGH_PRIORITY</a>,<a class="code" href="../../d7/d03/_packet_priority_8h.xhtml#ae41fa01235e99dced384d137fa874a7eaff2d39b163bcf3e142744962bfb0849f">RELIABLE_ORDERED</a>,0,packet,<span class="keyword">false</span>);</div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;</div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#gga5c8f613a7c294e0b96deccbdabc38f18a5b5a476b87be78212057efd5535345d4" title="This message will be processed by other plugins, and at last by the user.">RR_CONTINUE_PROCESSING</a>;</div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;}</div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#ac749a802cdc9829e011b756d527c0683">TwoWayAuthentication::OnPasswordResult</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#d8/d23/struct_s_l_net_1_1_packet" title="This represents a user message from another system.">Packet</a> *packet)</div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;{</div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> bsIn(packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>, packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a75dfd0a23cc4c14dd338caedabe19341" title="The length of the data in bytes.">length</a>, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; bsIn.IgnoreBytes(<span class="keyword">sizeof</span>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>)*1);</div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordtype">char</span> usedNonce[<a class="code" href="../../df/df8/_two_way_authentication_8h.xhtml#aaa86357a26d52aae1bbb4337f804ff62">TWO_WAY_AUTHENTICATION_NONCE_LENGTH</a>];</div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; bsIn.ReadAlignedBytes((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *)usedNonce,TWO_WAY_AUTHENTICATION_NONCE_LENGTH);</div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordtype">char</span> hashedNonceAndPw[<a class="code" href="../../df/df8/_two_way_authentication_8h.xhtml#a6c49937ccc748d8e7482399a8c6d5536">HASHED_NONCE_AND_PW_LENGTH</a>];</div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; bsIn.ReadAlignedBytes((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *)hashedNonceAndPw,<a class="code" href="../../df/df8/_two_way_authentication_8h.xhtml#a6c49937ccc748d8e7482399a8c6d5536">HASHED_NONCE_AND_PW_LENGTH</a>);</div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> passwordIdentifier;</div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; bsIn.Read(passwordIdentifier);</div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml">DataStructures::HashIndex</a> skhi = <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a4f5950a9585950680938fcf9934a4381">passwords</a>.<a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml#af31d2ff3160e0d7e0275faf0a2e35fb7">GetIndexOf</a>(passwordIdentifier.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>());</div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">if</span> (skhi.<a class="code" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml#a5d5347b85316db1181a65fc05a388460">IsInvalid</a>()==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; {</div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> password = <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a4f5950a9585950680938fcf9934a4381">passwords</a>.<a class="code" href="../../d6/d83/class_data_structures_1_1_hash.xhtml#a5fec5e2f5f479ddeebefe9a0ff1c50e4">ItemAtIndex</a>(skhi);</div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordtype">char</span> testHash[<a class="code" href="../../df/df8/_two_way_authentication_8h.xhtml#a6c49937ccc748d8e7482399a8c6d5536">HASHED_NONCE_AND_PW_LENGTH</a>];</div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a6b28e2a151770a5447d9dfb73250f42a">Hash</a>(usedNonce, password, testHash);</div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keywordflow">if</span> (memcmp(testHash,hashedNonceAndPw,<a class="code" href="../../df/df8/_two_way_authentication_8h.xhtml#a6c49937ccc748d8e7482399a8c6d5536">HASHED_NONCE_AND_PW_LENGTH</a>)==0)</div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; {</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="comment">// Lookup the outgoing challenge and remove it from the list</span></div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i;</div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <a class="code" href="../../d3/da8/struct_s_l_net_1_1_address_or_g_u_i_d.xhtml">AddressOrGUID</a> aog(packet);</div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#abd69e57bd42a42527a45da884a5318d3">outgoingChallenges</a>.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae2aec093c82f780558c23f8ae9f296b8">Size</a>(); i++)</div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; {</div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#abd69e57bd42a42527a45da884a5318d3">outgoingChallenges</a>[i].identifier==passwordIdentifier &amp;&amp;</div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#abd69e57bd42a42527a45da884a5318d3">outgoingChallenges</a>[i].remoteSystem==aog &amp;&amp;</div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#abd69e57bd42a42527a45da884a5318d3">outgoingChallenges</a>[i].sentHash==<span class="keyword">true</span>)</div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; {</div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#abd69e57bd42a42527a45da884a5318d3">outgoingChallenges</a>.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a8be7c3107161bb2ad869a9a6bb60605a">RemoveAtIndex</a>(i);</div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160;</div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a9bf3b18bd759234c97faf220aa47c6a5">PushToUser</a>(packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>[0], passwordIdentifier, packet);</div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; }</div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; }</div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; }</div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; }</div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;}</div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../df/db6/group___p_l_u_g_i_n_s___g_r_o_u_p.xhtml#a6b28e2a151770a5447d9dfb73250f42a">TwoWayAuthentication::Hash</a>(<span class="keywordtype">char</span> thierNonce[TWO_WAY_AUTHENTICATION_NONCE_LENGTH], <a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml" title="String class.">SLNet::RakString</a> password, <span class="keywordtype">char</span> out[<a class="code" href="../../df/df8/_two_way_authentication_8h.xhtml#a6c49937ccc748d8e7482399a8c6d5536">HASHED_NONCE_AND_PW_LENGTH</a>])</div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;{</div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;<span class="preprocessor">#if LIBCAT_SECURITY==1</span></div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;<span class="preprocessor"></span> cat::Skein hash;</div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">if</span> (!hash.BeginKey(HASH_BITS)) <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; hash.Crunch(thierNonce, TWO_WAY_AUTHENTICATION_NONCE_LENGTH);</div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; hash.Crunch(password.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>(), (int) password.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#abe4d216101d087910af4d93b594847b5" title="Returns the length of the string.">GetLength</a>());</div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; hash.End();</div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; hash.Generate(out, HASH_BYTES, STRENGTHENING_FACTOR);</div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;<span class="preprocessor"></span> <a class="code" href="../../d9/d3f/class_c_s_h_a1.xhtml">CSHA1</a> sha1;</div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; sha1.<a class="code" href="../../d9/d3f/class_c_s_h_a1.xhtml#a59536022ba64be584aed79c28f78d84c">Update</a>((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *) thierNonce, TWO_WAY_AUTHENTICATION_NONCE_LENGTH);</div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; sha1.<a class="code" href="../../d9/d3f/class_c_s_h_a1.xhtml#a59536022ba64be584aed79c28f78d84c">Update</a>((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *) password.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#ac661bded7f8850f8cf7bbcad8406d3e4" title="Same as std::string::c_str.">C_String</a>(), (<span class="keywordtype">unsigned</span> int) password.<a class="code" href="../../d2/d66/class_s_l_net_1_1_rak_string.xhtml#abe4d216101d087910af4d93b594847b5" title="Returns the length of the string.">GetLength</a>());</div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; sha1.<a class="code" href="../../d9/d3f/class_c_s_h_a1.xhtml#afbdaab3f2a2946d26a6144af3fec5fd8">Final</a>();</div>
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; sha1.<a class="code" href="../../d9/d3f/class_c_s_h_a1.xhtml#a736d60c74d29c605c5e62b3095ab7405">GetHash</a>((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *) out);</div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;<span class="preprocessor"></span>}</div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;</div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_d1eb22c2ecfd8b50f59e9cbaf8260105.xhtml">src</a></li><li class="navelem"><a class="el" href="../../da/d67/_two_way_authentication_8cpp.xhtml">TwoWayAuthentication.cpp</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,3 @@
<map id="ThreadPool&lt; InputType, OutputType &gt;" name="ThreadPool&lt; InputType, OutputType &gt;">
<area shape="rect" id="node2" href="$d1/dbc/struct_thread_pool.xhtml" title="{ThreadPool\&lt; ThreadData,\l int \&gt;\n|# inputQueueMutex\l# outputQueueMutex\l# workingThreadCountMutex\l# runThreadsMutex\l# perThreadDataFactory\l# perThreadDataDestructor\l# inputFunctionQueue\l# inputQueue\l# outputQueue\l# threadDataInterface\land 6 more...\l|+ ThreadPool()\l+ ~ThreadPool()\l+ StartThreads()\l+ SetThreadDataInterface()\l+ StopThreads()\l+ AddInput()\l+ AddOutput()\l+ HasOutput()\l+ HasOutputFast()\l+ HasInput()\land 20 more...\l# RAK_THREAD_DECLARATION()\l}" alt="" coords="5,468,229,868"/>
</map>

View File

@ -0,0 +1 @@
5b49571a8dd17e94b3ab31e865f857d6

View File

@ -0,0 +1,157 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
-->
<!-- Title: ThreadPool&lt; InputType, OutputType &gt; Pages: 1 -->
<!--zoomable 655 -->
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" onload="init(evt)">
<defs>
<circle id="rim" cx="0" cy="0" r="7"/>
<circle id="rim2" cx="0" cy="0" r="3.5"/>
<g id="zoomPlus">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="zoomplus.mouseover" end="zoomplus.mouseout"/>
</use>
<path d="M-4,0h8M0,-4v8" fill="none" stroke="white" stroke-width="1.5" pointer-events="none"/>
</g>
<g id="zoomMin">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="zoomminus.mouseover" end="zoomminus.mouseout"/>
</use>
<path d="M-4,0h8" fill="none" stroke="white" stroke-width="1.5" pointer-events="none"/>
</g>
<g id="dirArrow">
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
<g id="resetDef">
<use xlink:href="#rim2" fill="#404040">
<set attributeName="fill" to="#808080" begin="reset.mouseover" end="reset.mouseout"/>
</use>
</g>
</defs>
<script type="text/javascript">
var viewWidth = 180;
var viewHeight = 655;
var sectionId = 'dynsection-0';
</script>
<script xlink:href="../../svgpan.js"/>
<svg id="graph" class="graph">
<g id="viewport">
<title>ThreadPool&lt; InputType, OutputType &gt;</title>
<!-- Node1 -->
<g id="node1" class="node"><title>Node1</title>
<polygon fill="#bfbfbf" stroke="black" points="0,-347.5 0,-646.5 168,-646.5 168,-347.5 0,-347.5"/>
<text text-anchor="start" x="8" y="-634.5" font-family="Helvetica,sans-Serif" font-size="10.00">ThreadPool&lt; InputType,</text>
<text text-anchor="middle" x="84" y="-623.5" font-family="Helvetica,sans-Serif" font-size="10.00"> OutputType &gt;</text>
<polyline fill="none" stroke="black" points="0,-616.5 168,-616.5 "/>
<text text-anchor="start" x="8" y="-604.5" font-family="Helvetica,sans-Serif" font-size="10.00"># inputQueueMutex</text>
<text text-anchor="start" x="8" y="-593.5" font-family="Helvetica,sans-Serif" font-size="10.00"># outputQueueMutex</text>
<text text-anchor="start" x="8" y="-582.5" font-family="Helvetica,sans-Serif" font-size="10.00"># workingThreadCountMutex</text>
<text text-anchor="start" x="8" y="-571.5" font-family="Helvetica,sans-Serif" font-size="10.00"># runThreadsMutex</text>
<text text-anchor="start" x="8" y="-560.5" font-family="Helvetica,sans-Serif" font-size="10.00"># perThreadDataFactory</text>
<text text-anchor="start" x="8" y="-549.5" font-family="Helvetica,sans-Serif" font-size="10.00"># perThreadDataDestructor</text>
<text text-anchor="start" x="8" y="-538.5" font-family="Helvetica,sans-Serif" font-size="10.00"># inputFunctionQueue</text>
<text text-anchor="start" x="8" y="-527.5" font-family="Helvetica,sans-Serif" font-size="10.00"># inputQueue</text>
<text text-anchor="start" x="8" y="-516.5" font-family="Helvetica,sans-Serif" font-size="10.00"># outputQueue</text>
<text text-anchor="start" x="8" y="-505.5" font-family="Helvetica,sans-Serif" font-size="10.00"># threadDataInterface</text>
<text text-anchor="start" x="8" y="-494.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 6 more...</text>
<polyline fill="none" stroke="black" points="0,-487.5 168,-487.5 "/>
<text text-anchor="start" x="8" y="-475.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ThreadPool()</text>
<text text-anchor="start" x="8" y="-464.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ThreadPool()</text>
<text text-anchor="start" x="8" y="-453.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ StartThreads()</text>
<text text-anchor="start" x="8" y="-442.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SetThreadDataInterface()</text>
<text text-anchor="start" x="8" y="-431.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ StopThreads()</text>
<text text-anchor="start" x="8" y="-420.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AddInput()</text>
<text text-anchor="start" x="8" y="-409.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AddOutput()</text>
<text text-anchor="start" x="8" y="-398.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasOutput()</text>
<text text-anchor="start" x="8" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasOutputFast()</text>
<text text-anchor="start" x="8" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasInput()</text>
<text text-anchor="start" x="8" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 20 more...</text>
<text text-anchor="start" x="8" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00"># RAK_THREAD_DECLARATION()</text>
</g>
<!-- Node2 -->
<g id="node2" class="node"><title>Node2</title>
<g id="a_node2"><a xlink:href="../../d1/dbc/struct_thread_pool.xhtml" target="_top" xlink:title="{ThreadPool\&lt; ThreadData,\l int \&gt;\n|# inputQueueMutex\l# outputQueueMutex\l# workingThreadCountMutex\l# runThreadsMutex\l# perThreadDataFactory\l# perThreadDataDestructor\l# inputFunctionQueue\l# inputQueue\l# outputQueue\l# threadDataInterface\land 6 more...\l|+ ThreadPool()\l+ ~ThreadPool()\l+ StartThreads()\l+ SetThreadDataInterface()\l+ StopThreads()\l+ AddInput()\l+ AddOutput()\l+ HasOutput()\l+ HasOutputFast()\l+ HasInput()\land 20 more...\l# RAK_THREAD_DECLARATION()\l}">
<polygon fill="none" stroke="black" points="0,-0.5 0,-299.5 168,-299.5 168,-0.5 0,-0.5"/>
<text text-anchor="start" x="8" y="-287.5" font-family="Helvetica,sans-Serif" font-size="10.00">ThreadPool&lt; ThreadData,</text>
<text text-anchor="middle" x="84" y="-276.5" font-family="Helvetica,sans-Serif" font-size="10.00"> int &gt;</text>
<polyline fill="none" stroke="black" points="0,-269.5 168,-269.5 "/>
<text text-anchor="start" x="8" y="-257.5" font-family="Helvetica,sans-Serif" font-size="10.00"># inputQueueMutex</text>
<text text-anchor="start" x="8" y="-246.5" font-family="Helvetica,sans-Serif" font-size="10.00"># outputQueueMutex</text>
<text text-anchor="start" x="8" y="-235.5" font-family="Helvetica,sans-Serif" font-size="10.00"># workingThreadCountMutex</text>
<text text-anchor="start" x="8" y="-224.5" font-family="Helvetica,sans-Serif" font-size="10.00"># runThreadsMutex</text>
<text text-anchor="start" x="8" y="-213.5" font-family="Helvetica,sans-Serif" font-size="10.00"># perThreadDataFactory</text>
<text text-anchor="start" x="8" y="-202.5" font-family="Helvetica,sans-Serif" font-size="10.00"># perThreadDataDestructor</text>
<text text-anchor="start" x="8" y="-191.5" font-family="Helvetica,sans-Serif" font-size="10.00"># inputFunctionQueue</text>
<text text-anchor="start" x="8" y="-180.5" font-family="Helvetica,sans-Serif" font-size="10.00"># inputQueue</text>
<text text-anchor="start" x="8" y="-169.5" font-family="Helvetica,sans-Serif" font-size="10.00"># outputQueue</text>
<text text-anchor="start" x="8" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00"># threadDataInterface</text>
<text text-anchor="start" x="8" y="-147.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 6 more...</text>
<polyline fill="none" stroke="black" points="0,-140.5 168,-140.5 "/>
<text text-anchor="start" x="8" y="-128.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ThreadPool()</text>
<text text-anchor="start" x="8" y="-117.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ThreadPool()</text>
<text text-anchor="start" x="8" y="-106.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ StartThreads()</text>
<text text-anchor="start" x="8" y="-95.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SetThreadDataInterface()</text>
<text text-anchor="start" x="8" y="-84.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ StopThreads()</text>
<text text-anchor="start" x="8" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AddInput()</text>
<text text-anchor="start" x="8" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AddOutput()</text>
<text text-anchor="start" x="8" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasOutput()</text>
<text text-anchor="start" x="8" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasOutputFast()</text>
<text text-anchor="start" x="8" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasInput()</text>
<text text-anchor="start" x="8" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 20 more...</text>
<text text-anchor="start" x="8" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00"># RAK_THREAD_DECLARATION()</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1" class="edge"><title>Node1&#45;&gt;Node2</title>
<path fill="none" stroke="orange" d="M84,-337.357C84,-324.756 84,-312.056 84,-299.528"/>
<polygon fill="orange" stroke="orange" points="80.5001,-337.436 84,-347.436 87.5001,-337.436 80.5001,-337.436"/>
<text text-anchor="middle" x="128" y="-321" font-family="Helvetica,sans-Serif" font-size="10.00"> &lt; ThreadData, int &gt;</text>
</g>
</g>
</svg>
<g id="navigator" transform="translate(0 0)" fill="#404254">
<rect fill="#f2f5e9" fill-opacity="0.5" stroke="#606060" stroke-width=".5" x="0" y="0" width="60" height="60"/>
<use id="zoomplus" xlink:href="#zoomPlus" x="17" y="9" onmousedown="handleZoom(evt,'in')"/>
<use id="zoomminus" xlink:href="#zoomMin" x="42" y="9" onmousedown="handleZoom(evt,'out')"/>
<use id="reset" xlink:href="#resetDef" x="30" y="36" onmousedown="handleReset()"/>
<g id="arrowUp" xlink:href="#dirArrow" transform="translate(30 24)" onmousedown="handlePan(0,-1)">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="arrowUp.mouseover" end="arrowUp.mouseout"/>
</use>
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
<g id="arrowRight" xlink:href="#dirArrow" transform="rotate(90) translate(36 -43)" onmousedown="handlePan(1,0)">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="arrowRight.mouseover" end="arrowRight.mouseout"/>
</use>
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
<g id="arrowDown" xlink:href="#dirArrow" transform="rotate(180) translate(-30 -48)" onmousedown="handlePan(0,1)">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="arrowDown.mouseover" end="arrowDown.mouseout"/>
</use>
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
<g id="arrowLeft" xlink:href="#dirArrow" transform="rotate(270) translate(-36 17)" onmousedown="handlePan(-1,0)">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="arrowLeft.mouseover" end="arrowLeft.mouseout"/>
</use>
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
</g>
<svg viewBox="0 0 15 15" width="100%" height="30px" preserveAspectRatio="xMaxYMin meet">
<g id="arrow_out" transform="scale(0.3 0.3)">
<a xlink:href="struct_thread_pool__inherit__graph_org.svg" target="_base">
<rect id="button" ry="5" rx="5" y="6" x="6" height="38" width="38"
fill="#f2f5e9" fill-opacity="0.5" stroke="#606060" stroke-width="1.0"/>
<path id="arrow"
d="M 11.500037,31.436501 C 11.940474,20.09759 22.043105,11.32322 32.158766,21.979434 L 37.068811,17.246167 C 37.068811,17.246167 37.088388,32 37.088388,32 L 22.160133,31.978069 C 22.160133,31.978069 26.997745,27.140456 26.997745,27.140456 C 18.528582,18.264221 13.291696,25.230495 11.500037,31.436501 z"
style="fill:#404040;"/>
</a>
</g>
</svg>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
-->
<!-- Title: ThreadPool&lt; InputType, OutputType &gt; Pages: 1 -->
<svg width="180pt" height="655pt"
viewBox="0.00 0.00 180.00 655.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 651)">
<title>ThreadPool&lt; InputType, OutputType &gt;</title>
<!-- Node1 -->
<g id="node1" class="node"><title>Node1</title>
<polygon fill="#bfbfbf" stroke="black" points="0,-347.5 0,-646.5 168,-646.5 168,-347.5 0,-347.5"/>
<text text-anchor="start" x="8" y="-634.5" font-family="Helvetica,sans-Serif" font-size="10.00">ThreadPool&lt; InputType,</text>
<text text-anchor="middle" x="84" y="-623.5" font-family="Helvetica,sans-Serif" font-size="10.00"> OutputType &gt;</text>
<polyline fill="none" stroke="black" points="0,-616.5 168,-616.5 "/>
<text text-anchor="start" x="8" y="-604.5" font-family="Helvetica,sans-Serif" font-size="10.00"># inputQueueMutex</text>
<text text-anchor="start" x="8" y="-593.5" font-family="Helvetica,sans-Serif" font-size="10.00"># outputQueueMutex</text>
<text text-anchor="start" x="8" y="-582.5" font-family="Helvetica,sans-Serif" font-size="10.00"># workingThreadCountMutex</text>
<text text-anchor="start" x="8" y="-571.5" font-family="Helvetica,sans-Serif" font-size="10.00"># runThreadsMutex</text>
<text text-anchor="start" x="8" y="-560.5" font-family="Helvetica,sans-Serif" font-size="10.00"># perThreadDataFactory</text>
<text text-anchor="start" x="8" y="-549.5" font-family="Helvetica,sans-Serif" font-size="10.00"># perThreadDataDestructor</text>
<text text-anchor="start" x="8" y="-538.5" font-family="Helvetica,sans-Serif" font-size="10.00"># inputFunctionQueue</text>
<text text-anchor="start" x="8" y="-527.5" font-family="Helvetica,sans-Serif" font-size="10.00"># inputQueue</text>
<text text-anchor="start" x="8" y="-516.5" font-family="Helvetica,sans-Serif" font-size="10.00"># outputQueue</text>
<text text-anchor="start" x="8" y="-505.5" font-family="Helvetica,sans-Serif" font-size="10.00"># threadDataInterface</text>
<text text-anchor="start" x="8" y="-494.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 6 more...</text>
<polyline fill="none" stroke="black" points="0,-487.5 168,-487.5 "/>
<text text-anchor="start" x="8" y="-475.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ThreadPool()</text>
<text text-anchor="start" x="8" y="-464.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ThreadPool()</text>
<text text-anchor="start" x="8" y="-453.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ StartThreads()</text>
<text text-anchor="start" x="8" y="-442.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SetThreadDataInterface()</text>
<text text-anchor="start" x="8" y="-431.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ StopThreads()</text>
<text text-anchor="start" x="8" y="-420.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AddInput()</text>
<text text-anchor="start" x="8" y="-409.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AddOutput()</text>
<text text-anchor="start" x="8" y="-398.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasOutput()</text>
<text text-anchor="start" x="8" y="-387.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasOutputFast()</text>
<text text-anchor="start" x="8" y="-376.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasInput()</text>
<text text-anchor="start" x="8" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 20 more...</text>
<text text-anchor="start" x="8" y="-354.5" font-family="Helvetica,sans-Serif" font-size="10.00"># RAK_THREAD_DECLARATION()</text>
</g>
<!-- Node2 -->
<g id="node2" class="node"><title>Node2</title>
<g id="a_node2"><a xlink:href="../../d1/dbc/struct_thread_pool.xhtml" target="_top" xlink:title="{ThreadPool\&lt; ThreadData,\l int \&gt;\n|# inputQueueMutex\l# outputQueueMutex\l# workingThreadCountMutex\l# runThreadsMutex\l# perThreadDataFactory\l# perThreadDataDestructor\l# inputFunctionQueue\l# inputQueue\l# outputQueue\l# threadDataInterface\land 6 more...\l|+ ThreadPool()\l+ ~ThreadPool()\l+ StartThreads()\l+ SetThreadDataInterface()\l+ StopThreads()\l+ AddInput()\l+ AddOutput()\l+ HasOutput()\l+ HasOutputFast()\l+ HasInput()\land 20 more...\l# RAK_THREAD_DECLARATION()\l}">
<polygon fill="none" stroke="black" points="0,-0.5 0,-299.5 168,-299.5 168,-0.5 0,-0.5"/>
<text text-anchor="start" x="8" y="-287.5" font-family="Helvetica,sans-Serif" font-size="10.00">ThreadPool&lt; ThreadData,</text>
<text text-anchor="middle" x="84" y="-276.5" font-family="Helvetica,sans-Serif" font-size="10.00"> int &gt;</text>
<polyline fill="none" stroke="black" points="0,-269.5 168,-269.5 "/>
<text text-anchor="start" x="8" y="-257.5" font-family="Helvetica,sans-Serif" font-size="10.00"># inputQueueMutex</text>
<text text-anchor="start" x="8" y="-246.5" font-family="Helvetica,sans-Serif" font-size="10.00"># outputQueueMutex</text>
<text text-anchor="start" x="8" y="-235.5" font-family="Helvetica,sans-Serif" font-size="10.00"># workingThreadCountMutex</text>
<text text-anchor="start" x="8" y="-224.5" font-family="Helvetica,sans-Serif" font-size="10.00"># runThreadsMutex</text>
<text text-anchor="start" x="8" y="-213.5" font-family="Helvetica,sans-Serif" font-size="10.00"># perThreadDataFactory</text>
<text text-anchor="start" x="8" y="-202.5" font-family="Helvetica,sans-Serif" font-size="10.00"># perThreadDataDestructor</text>
<text text-anchor="start" x="8" y="-191.5" font-family="Helvetica,sans-Serif" font-size="10.00"># inputFunctionQueue</text>
<text text-anchor="start" x="8" y="-180.5" font-family="Helvetica,sans-Serif" font-size="10.00"># inputQueue</text>
<text text-anchor="start" x="8" y="-169.5" font-family="Helvetica,sans-Serif" font-size="10.00"># outputQueue</text>
<text text-anchor="start" x="8" y="-158.5" font-family="Helvetica,sans-Serif" font-size="10.00"># threadDataInterface</text>
<text text-anchor="start" x="8" y="-147.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 6 more...</text>
<polyline fill="none" stroke="black" points="0,-140.5 168,-140.5 "/>
<text text-anchor="start" x="8" y="-128.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ThreadPool()</text>
<text text-anchor="start" x="8" y="-117.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~ThreadPool()</text>
<text text-anchor="start" x="8" y="-106.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ StartThreads()</text>
<text text-anchor="start" x="8" y="-95.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ SetThreadDataInterface()</text>
<text text-anchor="start" x="8" y="-84.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ StopThreads()</text>
<text text-anchor="start" x="8" y="-73.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AddInput()</text>
<text text-anchor="start" x="8" y="-62.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ AddOutput()</text>
<text text-anchor="start" x="8" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasOutput()</text>
<text text-anchor="start" x="8" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasOutputFast()</text>
<text text-anchor="start" x="8" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ HasInput()</text>
<text text-anchor="start" x="8" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">and 20 more...</text>
<text text-anchor="start" x="8" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00"># RAK_THREAD_DECLARATION()</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1" class="edge"><title>Node1&#45;&gt;Node2</title>
<path fill="none" stroke="orange" d="M84,-337.357C84,-324.756 84,-312.056 84,-299.528"/>
<polygon fill="orange" stroke="orange" points="80.5001,-337.436 84,-347.436 87.5001,-337.436 80.5001,-337.436"/>
<text text-anchor="middle" x="128" y="-321" font-family="Helvetica,sans-Serif" font-size="10.00"> &lt; ThreadData, int &gt;</text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.1 KiB

View File

@ -0,0 +1,4 @@
<map id="SLNet::NatPunchthroughDebugInterface" name="SLNet::NatPunchthroughDebugInterface">
<area shape="rect" id="node2" href="$db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#d1/dae/struct_s_l_net_1_1_nat_punchthrough_debug_interface___packet_logger" title="{SLNet::NatPunchthroughDebug\lInterface_PacketLogger\n|+ pl\l|+ NatPunchthroughDebugInterface\l_PacketLogger()\l+ ~NatPunchthroughDebugInterface\l_PacketLogger()\l+ OnClientMessage()\l}" alt="" coords="5,175,233,325"/>
<area shape="rect" id="node3" href="$db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#d5/d5d/struct_s_l_net_1_1_nat_punchthrough_debug_interface___printf" title="{SLNet::NatPunchthroughDebug\lInterface_Printf\n||+ OnClientMessage()\l}" alt="" coords="258,204,461,296"/>
</map>

View File

@ -0,0 +1 @@
9d455c7fdd3dbd637402251e2cb35d14

View File

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
-->
<!-- Title: SLNet::NatPunchthroughDebugInterface Pages: 1 -->
<svg width="350pt" height="248pt"
viewBox="0.00 0.00 349.50 248.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 244)">
<title>SLNet::NatPunchthroughDebugInterface</title>
<!-- Node1 -->
<g id="node1" class="node"><title>Node1</title>
<polygon fill="#bfbfbf" stroke="black" points="87,-149.5 87,-239.5 264,-239.5 264,-149.5 87,-149.5"/>
<text text-anchor="start" x="95" y="-227.5" font-family="Helvetica,sans-Serif" font-size="10.00">SLNet::NatPunchthroughDebug</text>
<text text-anchor="middle" x="175.5" y="-216.5" font-family="Helvetica,sans-Serif" font-size="10.00">Interface</text>
<polyline fill="none" stroke="black" points="87,-209.5 264,-209.5 "/>
<text text-anchor="middle" x="175.5" y="-197.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
<polyline fill="none" stroke="black" points="87,-190.5 264,-190.5 "/>
<text text-anchor="start" x="95" y="-178.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ NatPunchthroughDebugInterface()</text>
<text text-anchor="start" x="95" y="-167.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~NatPunchthroughDebugInterface()</text>
<text text-anchor="start" x="95" y="-156.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnClientMessage()</text>
</g>
<!-- Node2 -->
<g id="node2" class="node"><title>Node2</title>
<g id="a_node2"><a xlink:href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#d1/dae/struct_s_l_net_1_1_nat_punchthrough_debug_interface___packet_logger" target="_top" xlink:title="{SLNet::NatPunchthroughDebug\lInterface_PacketLogger\n|+ pl\l|+ NatPunchthroughDebugInterface\l_PacketLogger()\l+ ~NatPunchthroughDebugInterface\l_PacketLogger()\l+ OnClientMessage()\l}">
<polygon fill="none" stroke="black" points="0,-0.5 0,-112.5 171,-112.5 171,-0.5 0,-0.5"/>
<text text-anchor="start" x="8" y="-100.5" font-family="Helvetica,sans-Serif" font-size="10.00">SLNet::NatPunchthroughDebug</text>
<text text-anchor="middle" x="85.5" y="-89.5" font-family="Helvetica,sans-Serif" font-size="10.00">Interface_PacketLogger</text>
<polyline fill="none" stroke="black" points="0,-82.5 171,-82.5 "/>
<text text-anchor="start" x="8" y="-70.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ pl</text>
<polyline fill="none" stroke="black" points="0,-63.5 171,-63.5 "/>
<text text-anchor="start" x="8" y="-51.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ NatPunchthroughDebugInterface</text>
<text text-anchor="start" x="8" y="-40.5" font-family="Helvetica,sans-Serif" font-size="10.00">_PacketLogger()</text>
<text text-anchor="start" x="8" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ ~NatPunchthroughDebugInterface</text>
<text text-anchor="start" x="8" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">_PacketLogger()</text>
<text text-anchor="start" x="8" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnClientMessage()</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1" class="edge"><title>Node1&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M140.577,-140.727C134.531,-131.592 128.23,-122.069 122.14,-112.867"/>
<polygon fill="none" stroke="midnightblue" points="137.842,-142.937 146.28,-149.345 143.68,-139.074 137.842,-142.937"/>
</g>
<!-- Node3 -->
<g id="node3" class="node"><title>Node3</title>
<g id="a_node3"><a xlink:href="../../db/d81/group___n_a_t___p_u_n_c_h_t_h_r_o_u_g_h___g_r_o_u_p.xhtml#d5/d5d/struct_s_l_net_1_1_nat_punchthrough_debug_interface___printf" target="_top" xlink:title="{SLNet::NatPunchthroughDebug\lInterface_Printf\n||+ OnClientMessage()\l}">
<polygon fill="none" stroke="black" points="189.5,-22.5 189.5,-90.5 341.5,-90.5 341.5,-22.5 189.5,-22.5"/>
<text text-anchor="start" x="197.5" y="-78.5" font-family="Helvetica,sans-Serif" font-size="10.00">SLNet::NatPunchthroughDebug</text>
<text text-anchor="middle" x="265.5" y="-67.5" font-family="Helvetica,sans-Serif" font-size="10.00">Interface_Printf</text>
<polyline fill="none" stroke="black" points="189.5,-60.5 341.5,-60.5 "/>
<text text-anchor="middle" x="265.5" y="-48.5" font-family="Helvetica,sans-Serif" font-size="10.00"> </text>
<polyline fill="none" stroke="black" points="189.5,-41.5 341.5,-41.5 "/>
<text text-anchor="start" x="197.5" y="-29.5" font-family="Helvetica,sans-Serif" font-size="10.00">+ OnClientMessage()</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node3 -->
<g id="edge2" class="edge"><title>Node1&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M210.453,-140.682C221.596,-123.844 233.605,-105.696 243.555,-90.662"/>
<polygon fill="none" stroke="midnightblue" points="207.32,-139.074 204.72,-149.345 213.158,-142.937 207.32,-139.074"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

@ -0,0 +1,136 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Member List</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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.xhtml"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.xhtml"><span>Class&#160;Index</span></a></li>
<li><a href="../../inherits.xhtml"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.xhtml"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('d0/d4e/class_s_l_net_1_1_transport_interface.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">SLNet::TransportInterface Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../d0/d4e/class_s_l_net_1_1_transport_interface.xhtml">SLNet::TransportInterface</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="../../d0/d4e/class_s_l_net_1_1_transport_interface.xhtml#a24b59b7cc57b2c48ab48129183f52b16">CloseConnection</a>(SystemAddress systemAddress)=0</td><td class="entry"><a class="el" href="../../d0/d4e/class_s_l_net_1_1_transport_interface.xhtml">SLNet::TransportInterface</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d0/d4e/class_s_l_net_1_1_transport_interface.xhtml#ac524b4621730e0e4a6240c5e2f956f7b">DeallocatePacket</a>(Packet *packet)=0</td><td class="entry"><a class="el" href="../../d0/d4e/class_s_l_net_1_1_transport_interface.xhtml">SLNet::TransportInterface</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d0/d4e/class_s_l_net_1_1_transport_interface.xhtml#a3c695705c824192b6a536b0afcbe4443">GetCommandParser</a>(void)=0</td><td class="entry"><a class="el" href="../../d0/d4e/class_s_l_net_1_1_transport_interface.xhtml">SLNet::TransportInterface</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d0/d4e/class_s_l_net_1_1_transport_interface.xhtml#a3412b037133e175a066c217df3306230">HasLostConnection</a>(void)=0</td><td class="entry"><a class="el" href="../../d0/d4e/class_s_l_net_1_1_transport_interface.xhtml">SLNet::TransportInterface</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d0/d4e/class_s_l_net_1_1_transport_interface.xhtml#aff45e15ac6c7127a6ca5bf5a39f0dfff">HasNewIncomingConnection</a>(void)=0</td><td class="entry"><a class="el" href="../../d0/d4e/class_s_l_net_1_1_transport_interface.xhtml">SLNet::TransportInterface</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d0/d4e/class_s_l_net_1_1_transport_interface.xhtml#a0b64c016a27989829eff553a90388847">Receive</a>(void)=0</td><td class="entry"><a class="el" href="../../d0/d4e/class_s_l_net_1_1_transport_interface.xhtml">SLNet::TransportInterface</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d0/d4e/class_s_l_net_1_1_transport_interface.xhtml#ab6f5d46268e400149496babd9df74125">Send</a>(SystemAddress systemAddress, const char *data,...)=0</td><td class="entry"><a class="el" href="../../d0/d4e/class_s_l_net_1_1_transport_interface.xhtml">SLNet::TransportInterface</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d0/d4e/class_s_l_net_1_1_transport_interface.xhtml#a72d2bf6c9022750469a81ecca2c3ac0f">Start</a>(unsigned short port, bool serverMode)=0</td><td class="entry"><a class="el" href="../../d0/d4e/class_s_l_net_1_1_transport_interface.xhtml">SLNet::TransportInterface</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d0/d4e/class_s_l_net_1_1_transport_interface.xhtml#a0a01052fbdf7b72289ef15650e7a99ae">Stop</a>(void)=0</td><td class="entry"><a class="el" href="../../d0/d4e/class_s_l_net_1_1_transport_interface.xhtml">SLNet::TransportInterface</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d0/d4e/class_s_l_net_1_1_transport_interface.xhtml#aa302a36aa88964dcac5c97f764266111">TransportInterface</a>()</td><td class="entry"><a class="el" href="../../d0/d4e/class_s_l_net_1_1_transport_interface.xhtml">SLNet::TransportInterface</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d0/d4e/class_s_l_net_1_1_transport_interface.xhtml#ac27900663b1a6669a598455cd55f791a">~TransportInterface</a>()</td><td class="entry"><a class="el" href="../../d0/d4e/class_s_l_net_1_1_transport_interface.xhtml">SLNet::TransportInterface</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Wed Aug 14 2019 22:09:50 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,13 @@
var class_data_structures_1_1_queue_linked_list =
[
[ "QueueLinkedList", "da/d6e/class_data_structures_1_1_queue_linked_list.xhtml#a0ba3f6caf61976d94e0f46b70a745b82", null ],
[ "QueueLinkedList", "da/d6e/class_data_structures_1_1_queue_linked_list.xhtml#a7dc481de74ba21884e1d7a724ecf226d", null ],
[ "Clear", "da/d6e/class_data_structures_1_1_queue_linked_list.xhtml#a916b56766506ebc43ffa7a01d1ccc22b", null ],
[ "Compress", "da/d6e/class_data_structures_1_1_queue_linked_list.xhtml#a876ca8e974a5d0b85c15237391eb670e", null ],
[ "EndPeek", "da/d6e/class_data_structures_1_1_queue_linked_list.xhtml#a066645e330dd7291067f2992206b6f68", null ],
[ "operator=", "da/d6e/class_data_structures_1_1_queue_linked_list.xhtml#a27766d956d3b153763e66d2db6898d92", null ],
[ "Peek", "da/d6e/class_data_structures_1_1_queue_linked_list.xhtml#a62fc0fb8ee556ac58e6c28f3bae7c361", null ],
[ "Pop", "da/d6e/class_data_structures_1_1_queue_linked_list.xhtml#a05fc69bc1b49a61ec0c951a345aa41a5", null ],
[ "Push", "da/d6e/class_data_structures_1_1_queue_linked_list.xhtml#a241c60f0e573fbc64540de9cda52a8f0", null ],
[ "Size", "da/d6e/class_data_structures_1_1_queue_linked_list.xhtml#aec526a5e119d48da14bacbda3d8985e8", null ]
];

View File

@ -0,0 +1,402 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: DataStructures::QueueLinkedList&lt; QueueType &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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.xhtml"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.xhtml"><span>Class&#160;Index</span></a></li>
<li><a href="../../inherits.xhtml"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.xhtml"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/d6e/class_data_structures_1_1_queue_linked_list.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="#pub-methods">Public Member Functions</a> &#124;
<a href="../../db/d41/class_data_structures_1_1_queue_linked_list-members.xhtml">List of all members</a> </div>
<div class="headertitle">
<div class="title">DataStructures::QueueLinkedList&lt; QueueType &gt; Class Template Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>A queue implemented using a linked list. Rarely used.
<a href="../../da/d6e/class_data_structures_1_1_queue_linked_list.xhtml#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="../../dc/dd6/_d_s___queue_linked_list_8h_source.xhtml">slikenet/DS_QueueLinkedList.h</a>&gt;</code></p>
<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:a0ba3f6caf61976d94e0f46b70a745b82"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d6e/class_data_structures_1_1_queue_linked_list.xhtml#a0ba3f6caf61976d94e0f46b70a745b82">QueueLinkedList</a> ()</td></tr>
<tr class="separator:a0ba3f6caf61976d94e0f46b70a745b82"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7dc481de74ba21884e1d7a724ecf226d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d6e/class_data_structures_1_1_queue_linked_list.xhtml#a7dc481de74ba21884e1d7a724ecf226d">QueueLinkedList</a> (const <a class="el" href="../../da/d6e/class_data_structures_1_1_queue_linked_list.xhtml">QueueLinkedList</a> &amp;original_copy)</td></tr>
<tr class="separator:a7dc481de74ba21884e1d7a724ecf226d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27766d956d3b153763e66d2db6898d92"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d6e/class_data_structures_1_1_queue_linked_list.xhtml#a27766d956d3b153763e66d2db6898d92">operator=</a> (const <a class="el" href="../../da/d6e/class_data_structures_1_1_queue_linked_list.xhtml">QueueLinkedList</a> &amp;original_copy)</td></tr>
<tr class="separator:a27766d956d3b153763e66d2db6898d92"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a05fc69bc1b49a61ec0c951a345aa41a5"><td class="memItemLeft" align="right" valign="top">QueueType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d6e/class_data_structures_1_1_queue_linked_list.xhtml#a05fc69bc1b49a61ec0c951a345aa41a5">Pop</a> (void)</td></tr>
<tr class="separator:a05fc69bc1b49a61ec0c951a345aa41a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a62fc0fb8ee556ac58e6c28f3bae7c361"><td class="memItemLeft" align="right" valign="top">QueueType &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d6e/class_data_structures_1_1_queue_linked_list.xhtml#a62fc0fb8ee556ac58e6c28f3bae7c361">Peek</a> (void)</td></tr>
<tr class="separator:a62fc0fb8ee556ac58e6c28f3bae7c361"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a066645e330dd7291067f2992206b6f68"><td class="memItemLeft" align="right" valign="top">QueueType &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d6e/class_data_structures_1_1_queue_linked_list.xhtml#a066645e330dd7291067f2992206b6f68">EndPeek</a> (void)</td></tr>
<tr class="separator:a066645e330dd7291067f2992206b6f68"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a241c60f0e573fbc64540de9cda52a8f0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d6e/class_data_structures_1_1_queue_linked_list.xhtml#a241c60f0e573fbc64540de9cda52a8f0">Push</a> (const QueueType &amp;input)</td></tr>
<tr class="separator:a241c60f0e573fbc64540de9cda52a8f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec526a5e119d48da14bacbda3d8985e8"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d6e/class_data_structures_1_1_queue_linked_list.xhtml#aec526a5e119d48da14bacbda3d8985e8">Size</a> (void)</td></tr>
<tr class="separator:aec526a5e119d48da14bacbda3d8985e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a916b56766506ebc43ffa7a01d1ccc22b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d6e/class_data_structures_1_1_queue_linked_list.xhtml#a916b56766506ebc43ffa7a01d1ccc22b">Clear</a> (void)</td></tr>
<tr class="separator:a916b56766506ebc43ffa7a01d1ccc22b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a876ca8e974a5d0b85c15237391eb670e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d6e/class_data_structures_1_1_queue_linked_list.xhtml#a876ca8e974a5d0b85c15237391eb670e">Compress</a> (void)</td></tr>
<tr class="separator:a876ca8e974a5d0b85c15237391eb670e"><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 QueueType&gt;<br/>
class DataStructures::QueueLinkedList&lt; QueueType &gt;</h3>
<p>A queue implemented using a linked list. Rarely used. </p>
<p>Definition at line <a class="el" href="../../dc/dd6/_d_s___queue_linked_list_8h_source.xhtml#l00035">35</a> of file <a class="el" href="../../dc/dd6/_d_s___queue_linked_list_8h_source.xhtml">DS_QueueLinkedList.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a0ba3f6caf61976d94e0f46b70a745b82"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class QueueType &gt; </div>
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../da/d6e/class_data_structures_1_1_queue_linked_list.xhtml">DataStructures::QueueLinkedList</a>&lt; QueueType &gt;::<a class="el" href="../../da/d6e/class_data_structures_1_1_queue_linked_list.xhtml">QueueLinkedList</a> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../dc/dd6/_d_s___queue_linked_list_8h_source.xhtml#l00055">55</a> of file <a class="el" href="../../dc/dd6/_d_s___queue_linked_list_8h_source.xhtml">DS_QueueLinkedList.h</a>.</p>
</div>
</div>
<a class="anchor" id="a7dc481de74ba21884e1d7a724ecf226d"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class QueueType &gt; </div>
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../da/d6e/class_data_structures_1_1_queue_linked_list.xhtml">DataStructures::QueueLinkedList</a>&lt; QueueType &gt;::<a class="el" href="../../da/d6e/class_data_structures_1_1_queue_linked_list.xhtml">QueueLinkedList</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../da/d6e/class_data_structures_1_1_queue_linked_list.xhtml">QueueLinkedList</a>&lt; QueueType &gt; &amp;&#160;</td>
<td class="paramname"><em>original_copy</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../dc/dd6/_d_s___queue_linked_list_8h_source.xhtml#l00094">94</a> of file <a class="el" href="../../dc/dd6/_d_s___queue_linked_list_8h_source.xhtml">DS_QueueLinkedList.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a916b56766506ebc43ffa7a01d1ccc22b"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class QueueType &gt; </div>
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="../../da/d6e/class_data_structures_1_1_queue_linked_list.xhtml">DataStructures::QueueLinkedList</a>&lt; QueueType &gt;::Clear </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../dc/dd6/_d_s___queue_linked_list_8h_source.xhtml#l00109">109</a> of file <a class="el" href="../../dc/dd6/_d_s___queue_linked_list_8h_source.xhtml">DS_QueueLinkedList.h</a>.</p>
</div>
</div>
<a class="anchor" id="a876ca8e974a5d0b85c15237391eb670e"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class QueueType&gt; </div>
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="../../da/d6e/class_data_structures_1_1_queue_linked_list.xhtml">DataStructures::QueueLinkedList</a>&lt; QueueType &gt;::Compress </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a066645e330dd7291067f2992206b6f68"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class QueueType &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">QueueType &amp; <a class="el" href="../../da/d6e/class_data_structures_1_1_queue_linked_list.xhtml">DataStructures::QueueLinkedList</a>&lt; QueueType &gt;::EndPeek </td>
<td>(</td>
<td class="paramtype">void&#160;</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>Definition at line <a class="el" href="../../dc/dd6/_d_s___queue_linked_list_8h_source.xhtml#l00080">80</a> of file <a class="el" href="../../dc/dd6/_d_s___queue_linked_list_8h_source.xhtml">DS_QueueLinkedList.h</a>.</p>
</div>
</div>
<a class="anchor" id="a27766d956d3b153763e66d2db6898d92"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class QueueType &gt; </div>
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="../../da/d6e/class_data_structures_1_1_queue_linked_list.xhtml">DataStructures::QueueLinkedList</a>&lt; QueueType &gt;::operator= </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../da/d6e/class_data_structures_1_1_queue_linked_list.xhtml">QueueLinkedList</a>&lt; QueueType &gt; &amp;&#160;</td>
<td class="paramname"><em>original_copy</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../dc/dd6/_d_s___queue_linked_list_8h_source.xhtml#l00100">100</a> of file <a class="el" href="../../dc/dd6/_d_s___queue_linked_list_8h_source.xhtml">DS_QueueLinkedList.h</a>.</p>
</div>
</div>
<a class="anchor" id="a62fc0fb8ee556ac58e6c28f3bae7c361"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class QueueType &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">QueueType &amp; <a class="el" href="../../da/d6e/class_data_structures_1_1_queue_linked_list.xhtml">DataStructures::QueueLinkedList</a>&lt; QueueType &gt;::Peek </td>
<td>(</td>
<td class="paramtype">void&#160;</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>Definition at line <a class="el" href="../../dc/dd6/_d_s___queue_linked_list_8h_source.xhtml#l00073">73</a> of file <a class="el" href="../../dc/dd6/_d_s___queue_linked_list_8h_source.xhtml">DS_QueueLinkedList.h</a>.</p>
</div>
</div>
<a class="anchor" id="a05fc69bc1b49a61ec0c951a345aa41a5"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class QueueType &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">QueueType <a class="el" href="../../da/d6e/class_data_structures_1_1_queue_linked_list.xhtml">DataStructures::QueueLinkedList</a>&lt; QueueType &gt;::Pop </td>
<td>(</td>
<td class="paramtype">void&#160;</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>Definition at line <a class="el" href="../../dc/dd6/_d_s___queue_linked_list_8h_source.xhtml#l00066">66</a> of file <a class="el" href="../../dc/dd6/_d_s___queue_linked_list_8h_source.xhtml">DS_QueueLinkedList.h</a>.</p>
<p>Referenced by <a class="el" href="../../d8/dfa/_d_s___binary_search_tree_8h_source.xhtml#l00980">DataStructures::BinarySearchTree&lt; BinarySearchTreeType &gt;::BinarySearchTree()</a>, <a class="el" href="../../d8/dfa/_d_s___binary_search_tree_8h_source.xhtml#l00933">DataStructures::BinarySearchTree&lt; BinarySearchTreeType &gt;::DisplayBreadthFirstSearch()</a>, and <a class="el" href="../../d8/dfa/_d_s___binary_search_tree_8h_source.xhtml#l01025">DataStructures::BinarySearchTree&lt; BinarySearchTreeType &gt;::operator=()</a>.</p>
</div>
</div>
<a class="anchor" id="a241c60f0e573fbc64540de9cda52a8f0"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class QueueType &gt; </div>
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="../../da/d6e/class_data_structures_1_1_queue_linked_list.xhtml">DataStructures::QueueLinkedList</a>&lt; QueueType &gt;::Push </td>
<td>(</td>
<td class="paramtype">const QueueType &amp;&#160;</td>
<td class="paramname"><em>input</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../dc/dd6/_d_s___queue_linked_list_8h_source.xhtml#l00087">87</a> of file <a class="el" href="../../dc/dd6/_d_s___queue_linked_list_8h_source.xhtml">DS_QueueLinkedList.h</a>.</p>
<p>Referenced by <a class="el" href="../../d8/dfa/_d_s___binary_search_tree_8h_source.xhtml#l00980">DataStructures::BinarySearchTree&lt; BinarySearchTreeType &gt;::BinarySearchTree()</a>, <a class="el" href="../../d8/dfa/_d_s___binary_search_tree_8h_source.xhtml#l00933">DataStructures::BinarySearchTree&lt; BinarySearchTreeType &gt;::DisplayBreadthFirstSearch()</a>, and <a class="el" href="../../d8/dfa/_d_s___binary_search_tree_8h_source.xhtml#l01025">DataStructures::BinarySearchTree&lt; BinarySearchTreeType &gt;::operator=()</a>.</p>
</div>
</div>
<a class="anchor" id="aec526a5e119d48da14bacbda3d8985e8"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class QueueType &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned int <a class="el" href="../../da/d6e/class_data_structures_1_1_queue_linked_list.xhtml">DataStructures::QueueLinkedList</a>&lt; QueueType &gt;::Size </td>
<td>(</td>
<td class="paramtype">void&#160;</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>Definition at line <a class="el" href="../../dc/dd6/_d_s___queue_linked_list_8h_source.xhtml#l00060">60</a> of file <a class="el" href="../../dc/dd6/_d_s___queue_linked_list_8h_source.xhtml">DS_QueueLinkedList.h</a>.</p>
<p>Referenced by <a class="el" href="../../d8/dfa/_d_s___binary_search_tree_8h_source.xhtml#l00980">DataStructures::BinarySearchTree&lt; BinarySearchTreeType &gt;::BinarySearchTree()</a>, <a class="el" href="../../d8/dfa/_d_s___binary_search_tree_8h_source.xhtml#l00933">DataStructures::BinarySearchTree&lt; BinarySearchTreeType &gt;::DisplayBreadthFirstSearch()</a>, and <a class="el" href="../../d8/dfa/_d_s___binary_search_tree_8h_source.xhtml#l01025">DataStructures::BinarySearchTree&lt; BinarySearchTreeType &gt;::operator=()</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>Source/include/slikenet/<a class="el" href="../../dc/dd6/_d_s___queue_linked_list_8h_source.xhtml">DS_QueueLinkedList.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../da/d80/namespace_data_structures.xhtml">DataStructures</a></li><li class="navelem"><a class="el" href="../../da/d6e/class_data_structures_1_1_queue_linked_list.xhtml">QueueLinkedList</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:49 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,127 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Source/src/DS_HuffmanEncodingTree.cpp File 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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../files.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/d7b/_d_s___huffman_encoding_tree_8cpp.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">DS_HuffmanEncodingTree.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="../../de/d78/_d_s___huffman_encoding_tree_8h_source.xhtml">slikenet/DS_HuffmanEncodingTree.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../dc/d8d/_d_s___queue_8h_source.xhtml">slikenet/DS_Queue.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d7/dc3/_bit_stream_8h_source.xhtml">slikenet/BitStream.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../dc/da7/assert_8h_source.xhtml">slikenet/assert.h</a>&quot;</code><br/>
</div>
<p><a href="../../da/d7b/_d_s___huffman_encoding_tree_8cpp_source.xhtml">Go to the source code of this file.</a></p>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_d1eb22c2ecfd8b50f59e9cbaf8260105.xhtml">src</a></li><li class="navelem"><a class="el" href="../../da/d7b/_d_s___huffman_encoding_tree_8cpp.xhtml">DS_HuffmanEncodingTree.cpp</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,413 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Source/src/DS_HuffmanEncodingTree.cpp Source File</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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../files.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/d7b/_d_s___huffman_encoding_tree_8cpp_source.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">DS_HuffmanEncodingTree.cpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../da/d7b/_d_s___huffman_encoding_tree_8cpp.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Original work: Copyright (c) 2014, Oculus VR, Inc.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This source code is licensed under the BSD-style license found in the</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * RakNet License.txt file in the licenses directory of this source tree. An additional grant </span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of patent rights can be found in the RakNet Patents.txt file in the same directory.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Modified work: Copyright (c) 2016-2017, SLikeSoft UG (haftungsbeschränkt)</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * license found in the license.txt file in the root directory of this source tree.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../de/d78/_d_s___huffman_encoding_tree_8h.xhtml" title="[Internal] Generates a huffman encoding tree, used for string and global compression.">slikenet/DS_HuffmanEncodingTree.h</a>&quot;</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../dc/d8d/_d_s___queue_8h.xhtml">slikenet/DS_Queue.h</a>&quot;</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d7/dc3/_bit_stream_8h.xhtml" title="This class allows you to write and read native types as a string of bits.">slikenet/BitStream.h</a>&quot;</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../dc/da7/assert_8h.xhtml">slikenet/assert.h</a>&quot;</span> </div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="keyword">using namespace </span>SLNet;</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div>
<div class="line"><a name="l00023"></a><span class="lineno"><a class="code" href="../../d6/d52/class_s_l_net_1_1_huffman_encoding_tree.xhtml#aa77c33fe43a2e6441e3ec9a6190f68c0"> 23</a></span>&#160;<a class="code" href="../../d6/d52/class_s_l_net_1_1_huffman_encoding_tree.xhtml#aa77c33fe43a2e6441e3ec9a6190f68c0">HuffmanEncodingTree::HuffmanEncodingTree</a>()</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; root = 0;</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;}</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
<div class="line"><a name="l00028"></a><span class="lineno"><a class="code" href="../../d6/d52/class_s_l_net_1_1_huffman_encoding_tree.xhtml#afe08c3a26deabe245d10e0000c43bd2a"> 28</a></span>&#160;<a class="code" href="../../d6/d52/class_s_l_net_1_1_huffman_encoding_tree.xhtml#afe08c3a26deabe245d10e0000c43bd2a">HuffmanEncodingTree::~HuffmanEncodingTree</a>()</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;{</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <a class="code" href="../../d6/d52/class_s_l_net_1_1_huffman_encoding_tree.xhtml#a9cb706100bfaa2afe47637347603eeb5" title="Free the memory used by the tree.">FreeMemory</a>();</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;}</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
<div class="line"><a name="l00033"></a><span class="lineno"><a class="code" href="../../d6/d52/class_s_l_net_1_1_huffman_encoding_tree.xhtml#a9cb706100bfaa2afe47637347603eeb5"> 33</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d6/d52/class_s_l_net_1_1_huffman_encoding_tree.xhtml#a9cb706100bfaa2afe47637347603eeb5" title="Free the memory used by the tree.">HuffmanEncodingTree::FreeMemory</a>( <span class="keywordtype">void</span> )</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;{</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">if</span> ( root == 0 )</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <a class="code" href="../../dc/d0b/_thread_pool_8h.xhtml#a9717e7bbecb906637e86cef6da3d83c2">return</a> ;</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="comment">// Use an in-order traversal to delete the tree</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml" title="A queue implemented as an array with a read and write index.">DataStructures::Queue&lt;HuffmanEncodingTreeNode *&gt;</a> nodeQueue;</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#d4/d8f/struct_huffman_encoding_tree_node">HuffmanEncodingTreeNode</a> *node;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; nodeQueue.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae564a88f3367a786777694e778a4500d">Push</a>( root, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a> );</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">while</span> ( nodeQueue.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae2aec093c82f780558c23f8ae9f296b8">Size</a>() &gt; 0 )</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; {</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; node = nodeQueue.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#a25272370e684388afd807c5369e4ef87">Pop</a>();</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">if</span> ( node-&gt;<a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#a25ce2e845c037728b1e95958495ddecb">left</a> )</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; nodeQueue.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae564a88f3367a786777694e778a4500d">Push</a>( node-&gt;<a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#a25ce2e845c037728b1e95958495ddecb">left</a>, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a> );</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">if</span> ( node-&gt;<a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#aa7ff9e97cdf09f7ce9be54d54e89bc4d">right</a> )</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; nodeQueue.<a class="code" href="../../d3/d87/class_data_structures_1_1_queue.xhtml#ae564a88f3367a786777694e778a4500d">Push</a>( node-&gt;<a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#aa7ff9e97cdf09f7ce9be54d54e89bc4d">right</a>, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a> );</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a79772d09451f784e87bec85694fad1ed">SLNet::OP_DELETE</a>(node, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="comment">// Delete the encoding table</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> i = 0; i &lt; 256; i++ )</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="../../d9/d4c/_rak_memory_override_8cpp.xhtml#ab91fbe0570bf501cd97a53c6cffcef8f">rakFree_Ex</a>(encodingTable[ i ].encoding, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a> );</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; root = 0;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;}</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment">// Given a frequency table of 256 elements, all with a frequency of 1 or more, generate the tree</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"><a class="code" href="../../d6/d52/class_s_l_net_1_1_huffman_encoding_tree.xhtml#abde050a1b4a2128ec3896463f9f997a7"> 69</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d6/d52/class_s_l_net_1_1_huffman_encoding_tree.xhtml#abde050a1b4a2128ec3896463f9f997a7" title="Given a frequency table of 256 elements, all with a frequency of 1 or more, generate the tree...">HuffmanEncodingTree::GenerateFromFrequencyTable</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> frequencyTable[ 256 ] )</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;{</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordtype">int</span> counter;</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#d4/d8f/struct_huffman_encoding_tree_node">HuffmanEncodingTreeNode</a> * node;</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#d4/d8f/struct_huffman_encoding_tree_node">HuffmanEncodingTreeNode</a> *leafList[ 256 ]; <span class="comment">// Keep a copy of the pointers to all the leaves so we can generate the encryption table bottom-up, which is easier</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="comment">// 1. Make 256 trees each with a weight equal to the frequency of the corresponding character</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="../../dd/d55/class_data_structures_1_1_linked_list.xhtml">DataStructures::LinkedList&lt;HuffmanEncodingTreeNode *&gt;</a> huffmanEncodingTreeNodeList;</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="../../d6/d52/class_s_l_net_1_1_huffman_encoding_tree.xhtml#a9cb706100bfaa2afe47637347603eeb5" title="Free the memory used by the tree.">FreeMemory</a>();</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">for</span> ( counter = 0; counter &lt; 256; counter++ )</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; {</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; node = SLNet::OP_NEW&lt;HuffmanEncodingTreeNode&gt;( <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a> );</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; node-&gt;<a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#a25ce2e845c037728b1e95958495ddecb">left</a> = 0;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; node-&gt;<a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#aa7ff9e97cdf09f7ce9be54d54e89bc4d">right</a> = 0;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; node-&gt;<a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#ab8e405870a5a080eebe7ad04a871618d">value</a> = (<span class="keywordtype">unsigned</span> char) counter;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; node-&gt;<a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#ad67b5b27458a18c0a7134999618087fe">weight</a> = frequencyTable[ counter ];</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">if</span> ( node-&gt;<a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#ad67b5b27458a18c0a7134999618087fe">weight</a> == 0 )</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; node-&gt;<a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#ad67b5b27458a18c0a7134999618087fe">weight</a> = 1; <span class="comment">// 0 weights are illegal</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; leafList[ counter ] = node; <span class="comment">// Used later to generate the encryption table</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; InsertNodeIntoSortedList( node, &amp;huffmanEncodingTreeNodeList ); <span class="comment">// Insert and maintain sort order.</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; }</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="comment">// 2. While there is more than one tree, take the two smallest trees and merge them so that the two trees are the left and right</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="comment">// children of a new node, where the new node has the weight the sum of the weight of the left and right child nodes.</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">for</span>(;;)</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; huffmanEncodingTreeNodeList.<a class="code" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#a453cf3bafc9ff7ae5ab13456a88f1a98">Beginning</a>();</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#d4/d8f/struct_huffman_encoding_tree_node">HuffmanEncodingTreeNode</a> *lesser, *greater;</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; lesser = huffmanEncodingTreeNodeList.<a class="code" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#a4ec7084b10a554f32021a8ea298838a3">Pop</a>();</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; greater = huffmanEncodingTreeNodeList.<a class="code" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#a4ec7084b10a554f32021a8ea298838a3">Pop</a>();</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; node = SLNet::OP_NEW&lt;HuffmanEncodingTreeNode&gt;( <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a> );</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; node-&gt;<a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#a25ce2e845c037728b1e95958495ddecb">left</a> = lesser;</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; node-&gt;<a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#aa7ff9e97cdf09f7ce9be54d54e89bc4d">right</a> = greater;</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; node-&gt;<a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#ad67b5b27458a18c0a7134999618087fe">weight</a> = lesser-&gt;<a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#ad67b5b27458a18c0a7134999618087fe">weight</a> + greater-&gt;<a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#ad67b5b27458a18c0a7134999618087fe">weight</a>;</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; lesser-&gt;<a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#a6776b51b7e9fe502e8d740aacb0d35d7">parent</a> = node; <span class="comment">// This is done to make generating the encryption table easier</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; greater-&gt;<a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#a6776b51b7e9fe502e8d740aacb0d35d7">parent</a> = node; <span class="comment">// This is done to make generating the encryption table easier</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">if</span> ( huffmanEncodingTreeNodeList.<a class="code" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#acbd6339fc68ed1015b6811a20ee39910">Size</a>() == 0 )</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; {</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="comment">// 3. Assign the one remaining node in the list to the root node.</span></div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; root = node;</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; root-&gt;<a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#a6776b51b7e9fe502e8d740aacb0d35d7">parent</a> = 0;</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; }</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="comment">// Put the new node back into the list at the correct spot to maintain the sort. Linear search time</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; InsertNodeIntoSortedList( node, &amp;huffmanEncodingTreeNodeList );</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; }</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordtype">bool</span> tempPath[ 256 ]; <span class="comment">// Maximum path length is 256</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> tempPathLength;</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#d4/d8f/struct_huffman_encoding_tree_node">HuffmanEncodingTreeNode</a> *currentNode;</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> bitStream;</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="comment">// Generate the encryption table. From before, we have an array of pointers to all the leaves which contain pointers to their parents.</span></div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="comment">// This can be done more efficiently but this isn&#39;t bad and it&#39;s way easier to program and debug</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">for</span> ( counter = 0; counter &lt; 256; counter++ )</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; {</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="comment">// Already done at the end of the loop and before it!</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; tempPathLength = 0;</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="comment">// Set the current node at the leaf</span></div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; currentNode = leafList[ counter ];</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">do</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; {</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">if</span> ( currentNode-&gt;<a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#a6776b51b7e9fe502e8d740aacb0d35d7">parent</a>-&gt;<a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#a25ce2e845c037728b1e95958495ddecb">left</a> == currentNode ) <span class="comment">// We&#39;re storing the paths in reverse order.since we are going from the leaf to the root</span></div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; tempPath[ tempPathLength++ ] = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; tempPath[ tempPathLength++ ] = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; currentNode = currentNode-&gt;<a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#a6776b51b7e9fe502e8d740aacb0d35d7">parent</a>;</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; }</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">while</span> ( currentNode != root );</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="comment">// Write to the bitstream in the reverse order that we stored the path, which gives us the correct order from the root to the leaf</span></div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">while</span> ( tempPathLength-- &gt; 0 )</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; {</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">if</span> ( tempPath[ tempPathLength ] ) <span class="comment">// Write 1&#39;s and 0&#39;s because writing a bool will write the BitStream TYPE_CHECKING validation bits if that is defined along with the actual data bit, which is not what we want</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; bitStream.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2060f594db2a6182038259c9db7eeb31" title="Write a 1.">Write1</a>();</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; bitStream.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a6ab8d1f78d5d37de6db82f4b8002c218" title="Write a 0.">Write0</a>();</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; }</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="comment">// Read data from the bitstream, which is written to the encoding table in bits and bitlength. Note this function allocates the encodingTable[counter].encoding pointer</span></div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; encodingTable[ counter ].bitLength = ( <span class="keywordtype">unsigned</span> char ) bitStream.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a382ada68f7a9073ea57e4403d478d391" title="Makes a copy of the internal data for you _data will point to the stream. Partial bytes are left alig...">CopyData</a>( &amp;encodingTable[ counter ].encoding );</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="comment">// Reset the bitstream for the next iteration</span></div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; bitStream.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#aab4381d8b4a48dbc8e2975dba894f350" title="Resets the bitstream for reuse.">Reset</a>();</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; }</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;}</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="comment">// Pass an array of bytes to array and a preallocated BitStream to receive the output</span></div>
<div class="line"><a name="l00169"></a><span class="lineno"><a class="code" href="../../d6/d52/class_s_l_net_1_1_huffman_encoding_tree.xhtml#a1d35c9afb94d954f184a72cf904c7c65"> 169</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d6/d52/class_s_l_net_1_1_huffman_encoding_tree.xhtml#a1d35c9afb94d954f184a72cf904c7c65" title="Pass an array of bytes to array and a preallocated BitStream to receive the output.">HuffmanEncodingTree::EncodeArray</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *input, <span class="keywordtype">size_t</span> sizeInBytes, <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> * output )</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;{ </div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordtype">unsigned</span> counter;</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="comment">// For each input byte, Write out the corresponding series of 1&#39;s and 0&#39;s that give the encoded representation</span></div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">for</span> ( counter = 0; counter &lt; sizeInBytes; counter++ )</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; {</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; output-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a8bf3d5d6926d80a9dba19dea5eecb7d2" title="Write numberToWrite bits from the input source.">WriteBits</a>( encodingTable[ input[ counter ] ].encoding, encodingTable[ input[ counter ] ].bitLength, <span class="keyword">false</span> ); <span class="comment">// Data is left aligned</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; }</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="comment">// Byte align the output so the unassigned remaining bits don&#39;t equate to some actual value</span></div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">if</span> ( output-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a0efe4cd010ac7ccc0a7aa8868e0c54c8" title="Returns the length in bits of the stream.">GetNumberOfBitsUsed</a>() % 8 != 0 )</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; {</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="comment">// Find an input that is longer than the remaining bits. Write out part of it to pad the output to be byte aligned.</span></div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> remainingBits = (<span class="keywordtype">unsigned</span> char) ( 8 - ( output-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a0efe4cd010ac7ccc0a7aa8868e0c54c8" title="Returns the length in bits of the stream.">GetNumberOfBitsUsed</a>() % 8 ) );</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">for</span> ( counter = 0; counter &lt; 256; counter++ )</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">if</span> ( encodingTable[ counter ].bitLength &gt; remainingBits )</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; {</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; output-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a8bf3d5d6926d80a9dba19dea5eecb7d2" title="Write numberToWrite bits from the input source.">WriteBits</a>( encodingTable[ counter ].encoding, remainingBits, <span class="keyword">false</span> ); <span class="comment">// Data is left aligned</span></div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="preprocessor">#ifdef _DEBUG</span></div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="preprocessor"></span> <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>( counter != 256 ); <span class="comment">// Given 256 elements, we should always be able to find an input that would be &gt;= 7 bits</span></div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; }</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;}</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div>
<div class="line"><a name="l00200"></a><span class="lineno"><a class="code" href="../../d6/d52/class_s_l_net_1_1_huffman_encoding_tree.xhtml#a7e1d71fee40cae1bf30526950323425b"> 200</a></span>&#160;<span class="keywordtype">unsigned</span> <a class="code" href="../../d6/d52/class_s_l_net_1_1_huffman_encoding_tree.xhtml#a7e1d71fee40cae1bf30526950323425b">HuffmanEncodingTree::DecodeArray</a>(<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> * input, <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a227d2a5f9683a34d9d1e70772fd556ec">BitSize_t</a> sizeInBits, <span class="keywordtype">size_t</span> maxCharsToWrite, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *output )</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;{</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#d4/d8f/struct_huffman_encoding_tree_node">HuffmanEncodingTreeNode</a> * currentNode;</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordtype">unsigned</span> outputWriteIndex;</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; outputWriteIndex = 0;</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; currentNode = root;</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="comment">// For each bit, go left if it is a 0 and right if it is a 1. When we reach a leaf, that gives us the desired value and we restart from the root</span></div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">for</span> ( <span class="keywordtype">unsigned</span> counter = 0; counter &lt; sizeInBits; counter++ )</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; {</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">if</span> ( input-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a713747c97050062797ef5d211f583cea" title="Reads 1 bit and returns true if that bit is 1 and false if it is 0.">ReadBit</a>() == false ) <span class="comment">// left!</span></div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; currentNode = currentNode-&gt;<a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#a25ce2e845c037728b1e95958495ddecb">left</a>;</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; currentNode = currentNode-&gt;<a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#aa7ff9e97cdf09f7ce9be54d54e89bc4d">right</a>;</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <a class="code" href="../../dc/d0b/_thread_pool_8h.xhtml#a35e6652907f33d8d77bdbdfbbddac127">if</a> ( currentNode-&gt;<a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#a25ce2e845c037728b1e95958495ddecb">left</a> == 0 &amp;&amp; currentNode-&gt;<a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#aa7ff9e97cdf09f7ce9be54d54e89bc4d">right</a> == 0 ) <span class="comment">// Leaf</span></div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; {</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">if</span> ( outputWriteIndex &lt; maxCharsToWrite )</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; output[ outputWriteIndex ] = currentNode-&gt;<a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#ab8e405870a5a080eebe7ad04a871618d">value</a>;</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; outputWriteIndex++;</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; currentNode = root;</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; }</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; }</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">return</span> outputWriteIndex;</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;}</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="comment">// Pass an array of encoded bytes to array and a preallocated BitStream to receive the output</span></div>
<div class="line"><a name="l00233"></a><span class="lineno"><a class="code" href="../../d6/d52/class_s_l_net_1_1_huffman_encoding_tree.xhtml#a7bcfec745a078f0a58af8deceeff3283"> 233</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d6/d52/class_s_l_net_1_1_huffman_encoding_tree.xhtml#a7e1d71fee40cae1bf30526950323425b">HuffmanEncodingTree::DecodeArray</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *input, <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a227d2a5f9683a34d9d1e70772fd556ec">BitSize_t</a> sizeInBits, <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> * output )</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;{</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#d4/d8f/struct_huffman_encoding_tree_node">HuffmanEncodingTreeNode</a> * currentNode;</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">if</span> ( sizeInBits &lt;= 0 )</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <a class="code" href="../../dc/d0b/_thread_pool_8h.xhtml#a9717e7bbecb906637e86cef6da3d83c2">return</a> ;</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> bitStream( input, <a class="code" href="../../d9/d49/types_8h.xhtml#ac5eb6b4755b74c50cb76155d08b6e2ff" title="Given a number of bits, return how many bytes are needed to represent that.">BITS_TO_BYTES</a>(sizeInBits), <span class="keyword">false</span> );</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; currentNode = root;</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="comment">// For each bit, go left if it is a 0 and right if it is a 1. When we reach a leaf, that gives us the desired value and we restart from the root</span></div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">for</span> ( <span class="keywordtype">unsigned</span> counter = 0; counter &lt; sizeInBits; counter++ )</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; {</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">if</span> ( bitStream.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a713747c97050062797ef5d211f583cea" title="Reads 1 bit and returns true if that bit is 1 and false if it is 0.">ReadBit</a>() == false ) <span class="comment">// left!</span></div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; currentNode = currentNode-&gt;<a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#a25ce2e845c037728b1e95958495ddecb">left</a>;</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; currentNode = currentNode-&gt;<a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#aa7ff9e97cdf09f7ce9be54d54e89bc4d">right</a>;</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <a class="code" href="../../dc/d0b/_thread_pool_8h.xhtml#a35e6652907f33d8d77bdbdfbbddac127">if</a> ( currentNode-&gt;<a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#a25ce2e845c037728b1e95958495ddecb">left</a> == 0 &amp;&amp; currentNode-&gt;<a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#aa7ff9e97cdf09f7ce9be54d54e89bc4d">right</a> == 0 ) <span class="comment">// Leaf</span></div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; {</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; output-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a8bf3d5d6926d80a9dba19dea5eecb7d2" title="Write numberToWrite bits from the input source.">WriteBits</a>( &amp;( currentNode-&gt;<a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#ab8e405870a5a080eebe7ad04a871618d">value</a> ), <span class="keyword">sizeof</span>( <span class="keywordtype">char</span> ) * 8, <span class="keyword">true</span> ); <span class="comment">// Use WriteBits instead of Write(char) because we want to avoid TYPE_CHECKING</span></div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; currentNode = root;</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; }</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; }</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;}</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<span class="comment">// Insertion sort. Slow but easy to write in this case</span></div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="keywordtype">void</span> HuffmanEncodingTree::InsertNodeIntoSortedList( <a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#d4/d8f/struct_huffman_encoding_tree_node">HuffmanEncodingTreeNode</a> * node, <a class="code" href="../../dd/d55/class_data_structures_1_1_linked_list.xhtml">DataStructures::LinkedList&lt;HuffmanEncodingTreeNode *&gt;</a> *huffmanEncodingTreeNodeList )<span class="keyword"> const</span></div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">if</span> ( huffmanEncodingTreeNodeList-&gt;<a class="code" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#acbd6339fc68ed1015b6811a20ee39910">Size</a>() == 0 )</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; {</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; huffmanEncodingTreeNodeList-&gt;<a class="code" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#ae9f34d88cfb215008cda148c80ca1b94">Insert</a>( node );</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <a class="code" href="../../dc/d0b/_thread_pool_8h.xhtml#a9717e7bbecb906637e86cef6da3d83c2">return</a> ;</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; }</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; huffmanEncodingTreeNodeList-&gt;<a class="code" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#a453cf3bafc9ff7ae5ab13456a88f1a98">Beginning</a>();</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordtype">unsigned</span> counter = 0;</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">for</span>(;;)</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; {</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">if</span> ( huffmanEncodingTreeNodeList-&gt;<a class="code" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#a81644887456b6966c3bb882a1a1557d0">Peek</a>()-&gt;<a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#ad67b5b27458a18c0a7134999618087fe">weight</a> &lt; node-&gt;<a class="code" href="../../dd/da3/_d_s___huffman_encoding_tree_node_8h.xhtml#ad67b5b27458a18c0a7134999618087fe">weight</a> )</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; ++( *huffmanEncodingTreeNodeList );</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; {</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; huffmanEncodingTreeNodeList-&gt;<a class="code" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#ae9f34d88cfb215008cda148c80ca1b94">Insert</a>( node );</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; }</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="comment">// Didn&#39;t find a spot in the middle - add to the end</span></div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">if</span> ( ++counter == huffmanEncodingTreeNodeList-&gt;<a class="code" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#acbd6339fc68ed1015b6811a20ee39910">Size</a>() )</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; {</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; huffmanEncodingTreeNodeList-&gt;<a class="code" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#a9a4e832ea30d76d1dbe597c14e2d91d0">End</a>();</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; huffmanEncodingTreeNodeList-&gt;<a class="code" href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#af77041c880bfedbbb16afe1482c4ccd6">Add</a>( node )</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; ; <span class="comment">// Add to the end</span></div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; }</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; }</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;}</div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_d1eb22c2ecfd8b50f59e9cbaf8260105.xhtml">src</a></li><li class="navelem"><a class="el" href="../../da/d7b/_d_s___huffman_encoding_tree_8cpp.xhtml">DS_HuffmanEncodingTree.cpp</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:47 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,131 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Source/include/slikenet/WSAStartupSingleton.h File 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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../files.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/d7e/_w_s_a_startup_singleton_8h.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="#nested-classes">Classes</a> </div>
<div class="headertitle">
<div class="title">WSAStartupSingleton.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="../../da/d7e/_w_s_a_startup_singleton_8h_source.xhtml">Go to the source code of this file.</a></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="../../d4/dcb/class_w_s_a_startup_singleton.xhtml">WSAStartupSingleton</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../da/d7e/_w_s_a_startup_singleton_8h.xhtml">WSAStartupSingleton.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,147 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Source/include/slikenet/WSAStartupSingleton.h Source File</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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../files.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/d7e/_w_s_a_startup_singleton_8h_source.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">WSAStartupSingleton.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../da/d7e/_w_s_a_startup_singleton_8h.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Copyright (c) 2014, Oculus VR, Inc.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This source code is licensed under the BSD-style license found in the</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * RakNet License.txt file in the licenses directory of this source tree. An additional grant </span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of patent rights can be found in the RakNet Patents.txt file in the same directory.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#ifndef __WSA_STARTUP_SINGLETON_H</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define __WSA_STARTUP_SINGLETON_H</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00014"></a><span class="lineno"><a class="code" href="../../d4/dcb/class_w_s_a_startup_singleton.xhtml"> 14</a></span>&#160;<span class="keyword">class </span><a class="code" href="../../d4/dcb/class_w_s_a_startup_singleton.xhtml">WSAStartupSingleton</a></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <a class="code" href="../../d4/dcb/class_w_s_a_startup_singleton.xhtml#a61904ff478f4e723e07a3184aab5f2f6">WSAStartupSingleton</a>();</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <a class="code" href="../../d4/dcb/class_w_s_a_startup_singleton.xhtml#ac4d6fabed743b4981a3674e60bba71d2">~WSAStartupSingleton</a>();</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d4/dcb/class_w_s_a_startup_singleton.xhtml#aec8c21ef29199bcf9be7f3568c8afadf">AddRef</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d4/dcb/class_w_s_a_startup_singleton.xhtml#ad33efe86b5377555e3062058b5a4be01">Deref</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="keyword">protected</span>:</div>
<div class="line"><a name="l00023"></a><span class="lineno"><a class="code" href="../../d4/dcb/class_w_s_a_startup_singleton.xhtml#a1f45de146975323eedad8b5640fe69fa"> 23</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="../../d4/dcb/class_w_s_a_startup_singleton.xhtml#a1f45de146975323eedad8b5640fe69fa">refCount</a>;</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;};</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../da/d7e/_w_s_a_startup_singleton_8h.xhtml">WSAStartupSingleton.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:46 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,30 @@
var namespace_data_structures =
[
[ "BinarySearchTree", "db/d19/class_data_structures_1_1_binary_search_tree.xhtml", "db/d19/class_data_structures_1_1_binary_search_tree" ],
[ "AVLBalancedBinarySearchTree", "dd/d07/class_data_structures_1_1_a_v_l_balanced_binary_search_tree.xhtml", "dd/d07/class_data_structures_1_1_a_v_l_balanced_binary_search_tree" ],
[ "Page", "da/d80/namespace_data_structures.xhtml#da/da1/struct_data_structures_1_1_page", "da/d80/namespace_data_structures_dup" ],
[ "BPlusTree", "d7/d58/class_data_structures_1_1_b_plus_tree.xhtml", "d7/d58/class_data_structures_1_1_b_plus_tree" ],
[ "BytePool", "d4/dca/class_data_structures_1_1_byte_pool.xhtml", "d4/dca/class_data_structures_1_1_byte_pool" ],
[ "ByteQueue", "d4/dbb/class_data_structures_1_1_byte_queue.xhtml", "d4/dbb/class_data_structures_1_1_byte_queue" ],
[ "HashIndex", "df/de0/struct_data_structures_1_1_hash_index.xhtml", "df/de0/struct_data_structures_1_1_hash_index" ],
[ "Hash", "d6/d83/class_data_structures_1_1_hash.xhtml", "d6/d83/class_data_structures_1_1_hash" ],
[ "Heap", "d1/df3/class_data_structures_1_1_heap.xhtml", "d1/df3/class_data_structures_1_1_heap" ],
[ "CircularLinkedList", "d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml", "d3/dbe/class_data_structures_1_1_circular_linked_list" ],
[ "LinkedList", "dd/d55/class_data_structures_1_1_linked_list.xhtml", "dd/d55/class_data_structures_1_1_linked_list" ],
[ "List", "d4/d78/class_data_structures_1_1_list.xhtml", "d4/d78/class_data_structures_1_1_list" ],
[ "Map", "dc/da9/class_data_structures_1_1_map.xhtml", "dc/da9/class_data_structures_1_1_map" ],
[ "MemoryPool", "de/df9/class_data_structures_1_1_memory_pool.xhtml", "de/df9/class_data_structures_1_1_memory_pool" ],
[ "MLKeyRef", "d3/d76/class_data_structures_1_1_m_l_key_ref.xhtml", "d3/d76/class_data_structures_1_1_m_l_key_ref" ],
[ "Multilist", "de/d89/class_data_structures_1_1_multilist.xhtml", "de/d89/class_data_structures_1_1_multilist" ],
[ "OrderedChannelHeap", "de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml", "de/d25/class_data_structures_1_1_ordered_channel_heap" ],
[ "OrderedList", "da/dfc/class_data_structures_1_1_ordered_list.xhtml", "da/dfc/class_data_structures_1_1_ordered_list" ],
[ "Queue", "d3/d87/class_data_structures_1_1_queue.xhtml", "d3/d87/class_data_structures_1_1_queue" ],
[ "QueueLinkedList", "da/d6e/class_data_structures_1_1_queue_linked_list.xhtml", "da/d6e/class_data_structures_1_1_queue_linked_list" ],
[ "RangeNode", "dd/d2b/struct_data_structures_1_1_range_node.xhtml", "dd/d2b/struct_data_structures_1_1_range_node" ],
[ "RangeList", "d4/df2/class_data_structures_1_1_range_list.xhtml", "d4/df2/class_data_structures_1_1_range_list" ],
[ "Table", "d4/de5/class_data_structures_1_1_table.xhtml", "d4/de5/class_data_structures_1_1_table" ],
[ "ThreadsafeAllocatingQueue", "da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml", "da/dce/class_data_structures_1_1_threadsafe_allocating_queue" ],
[ "Tree", "de/d2c/class_data_structures_1_1_tree.xhtml", "de/d2c/class_data_structures_1_1_tree" ],
[ "WeightedGraph", "dd/d9f/class_data_structures_1_1_weighted_graph.xhtml", "dd/d9f/class_data_structures_1_1_weighted_graph" ],
[ "SingleProducerConsumer", "d0/d72/class_data_structures_1_1_single_producer_consumer.xhtml", "d0/d72/class_data_structures_1_1_single_producer_consumer" ]
];

View File

@ -0,0 +1,483 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: DataStructures Namespace 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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li class="current"><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../namespaces.xhtml"><span>Namespace&#160;List</span></a></li>
<li><a href="../../namespacemembers.xhtml"><span>Namespace&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/d80/namespace_data_structures.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="#nested-classes">Classes</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">DataStructures Namespace Reference</div> </div>
</div><!--header-->
<div class="contents">
<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="../../db/d19/class_data_structures_1_1_binary_search_tree.xhtml">BinarySearchTree</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A binary search tree and an AVL balanced binary search tree. <a href="../../db/d19/class_data_structures_1_1_binary_search_tree.xhtml#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="../../dd/d07/class_data_structures_1_1_a_v_l_balanced_binary_search_tree.xhtml">AVLBalancedBinarySearchTree</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An <a class="el" href="../../dd/d07/class_data_structures_1_1_a_v_l_balanced_binary_search_tree.xhtml" title="An AVLBalancedBinarySearchTree is a binary tree that is always balanced.">AVLBalancedBinarySearchTree</a> is a binary tree that is always balanced. <a href="../../dd/d07/class_data_structures_1_1_a_v_l_balanced_binary_search_tree.xhtml#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:da/da1/struct_data_structures_1_1_page"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d80/namespace_data_structures.xhtml#da/da1/struct_data_structures_1_1_page">Page</a></td></tr>
<tr class="separator:da/da1/struct_data_structures_1_1_page"><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="../../d7/d58/class_data_structures_1_1_b_plus_tree.xhtml">BPlusTree</a></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="../../d4/dca/class_data_structures_1_1_byte_pool.xhtml">BytePool</a></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="../../d4/dbb/class_data_structures_1_1_byte_queue.xhtml">ByteQueue</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/de0/struct_data_structures_1_1_hash_index.xhtml">HashIndex</a></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="../../d6/d83/class_data_structures_1_1_hash.xhtml">Hash</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Using a string as a identifier for a node, store an allocated pointer to that node. <a href="../../d6/d83/class_data_structures_1_1_hash.xhtml#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="../../d1/df3/class_data_structures_1_1_heap.xhtml">Heap</a></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="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml">CircularLinkedList</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">(Circular) Linked <a class="el" href="../../d4/d78/class_data_structures_1_1_list.xhtml" title="Array based implementation of a list.">List</a> ADT (Doubly Linked Pointer to Node Style) - <a href="../../d3/dbe/class_data_structures_1_1_circular_linked_list.xhtml#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="../../dd/d55/class_data_structures_1_1_linked_list.xhtml">LinkedList</a></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="../../d4/d78/class_data_structures_1_1_list.xhtml">List</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Array based implementation of a list. <a href="../../d4/d78/class_data_structures_1_1_list.xhtml#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="../../dc/da9/class_data_structures_1_1_map.xhtml">Map</a></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="../../de/df9/class_data_structures_1_1_memory_pool.xhtml">MemoryPool</a></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="../../d3/d76/class_data_structures_1_1_m_l_key_ref.xhtml">MLKeyRef</a></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="../../de/d89/class_data_structures_1_1_multilist.xhtml">Multilist</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">The multilist, representing an abstract data type that generally holds lists. <a href="../../de/d89/class_data_structures_1_1_multilist.xhtml#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="../../de/d25/class_data_structures_1_1_ordered_channel_heap.xhtml">OrderedChannelHeap</a></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="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">OrderedList</a></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="../../d3/d87/class_data_structures_1_1_queue.xhtml">Queue</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A queue implemented as an array with a read and write index. <a href="../../d3/d87/class_data_structures_1_1_queue.xhtml#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="../../da/d6e/class_data_structures_1_1_queue_linked_list.xhtml">QueueLinkedList</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A queue implemented using a linked list. Rarely used. <a href="../../da/d6e/class_data_structures_1_1_queue_linked_list.xhtml#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">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d2b/struct_data_structures_1_1_range_node.xhtml">RangeNode</a></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="../../d4/df2/class_data_structures_1_1_range_list.xhtml">RangeList</a></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="../../d4/de5/class_data_structures_1_1_table.xhtml">Table</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Holds a set of columns, a set of rows, and rows times columns cells. <a href="../../d4/de5/class_data_structures_1_1_table.xhtml#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="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml">ThreadsafeAllocatingQueue</a></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="../../de/d2c/class_data_structures_1_1_tree.xhtml">Tree</a></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="../../dd/d9f/class_data_structures_1_1_weighted_graph.xhtml">WeightedGraph</a></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="../../d0/d72/class_data_structures_1_1_single_producer_consumer.xhtml">SingleProducerConsumer</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A single producer consumer implementation without critical sections. <a href="../../d0/d72/class_data_structures_1_1_single_producer_consumer.xhtml#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="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:a976ed408bf7e723e5d6fefb59cf40125"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d80/namespace_data_structures.xhtml#a976ed408bf7e723e5d6fefb59cf40125">DefaultIndexType</a></td></tr>
<tr class="separator:a976ed408bf7e723e5d6fefb59cf40125"><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:a141573e51ef42434451188a050e9a577"><td class="memTemplParams" colspan="2">template&lt;class key_type &gt; </td></tr>
<tr class="memitem:a141573e51ef42434451188a050e9a577"><td class="memTemplItemLeft" align="right" valign="top">int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../da/d80/namespace_data_structures.xhtml#a141573e51ef42434451188a050e9a577">defaultMapKeyComparison</a> (const key_type &amp;a, const key_type &amp;b)</td></tr>
<tr class="separator:a141573e51ef42434451188a050e9a577"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4122fd2c409644863e7cb884c2f95bc4"><td class="memTemplParams" colspan="2">template&lt;class templateType &gt; </td></tr>
<tr class="memitem:a4122fd2c409644863e7cb884c2f95bc4"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../da/d80/namespace_data_structures.xhtml#a4122fd2c409644863e7cb884c2f95bc4">DeletePtr_RakNet</a> (templateType &amp;ptr, const char *file, unsigned int line)</td></tr>
<tr class="separator:a4122fd2c409644863e7cb884c2f95bc4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac554257c583d96878931af2bd10bbe2f"><td class="memTemplParams" colspan="2">template&lt;class templateType &gt; </td></tr>
<tr class="memitem:ac554257c583d96878931af2bd10bbe2f"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../da/d80/namespace_data_structures.xhtml#ac554257c583d96878931af2bd10bbe2f">DeletePtr</a> (templateType &amp;ptr)</td></tr>
<tr class="separator:ac554257c583d96878931af2bd10bbe2f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7121bfdce3827886832c6966eb3fbf64"><td class="memTemplParams" colspan="2">template&lt;class key_type , class data_type &gt; </td></tr>
<tr class="memitem:a7121bfdce3827886832c6966eb3fbf64"><td class="memTemplItemLeft" align="right" valign="top">int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../da/d80/namespace_data_structures.xhtml#a7121bfdce3827886832c6966eb3fbf64">defaultOrderedListComparison</a> (const key_type &amp;a, const data_type &amp;b)</td></tr>
<tr class="separator:a7121bfdce3827886832c6966eb3fbf64"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc5f5975263bc574b36bd99c3720dc83"><td class="memTemplParams" colspan="2">template&lt;class range_type &gt; </td></tr>
<tr class="memitem:afc5f5975263bc574b36bd99c3720dc83"><td class="memTemplItemLeft" align="right" valign="top">int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../da/d80/namespace_data_structures.xhtml#afc5f5975263bc574b36bd99c3720dc83">RangeNodeComp</a> (const range_type &amp;a, const <a class="el" href="../../dd/d2b/struct_data_structures_1_1_range_node.xhtml">RangeNode</a>&lt; range_type &gt; &amp;b)</td></tr>
<tr class="separator:afc5f5975263bc574b36bd99c3720dc83"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a2f6832c889cf38a2f1132838dfd1044f"><td class="memTemplParams" colspan="2">template&lt;class LinkedListType &gt; </td></tr>
<tr class="memitem:a2f6832c889cf38a2f1132838dfd1044f"><td class="memTemplItemLeft" align="right" valign="top">class <a class="el" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../da/d80/namespace_data_structures.xhtml#a2f6832c889cf38a2f1132838dfd1044f">LinkedList</a></td></tr>
<tr class="separator:a2f6832c889cf38a2f1132838dfd1044f"><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>The namespace <a class="el" href="../../da/d80/namespace_data_structures.xhtml">DataStructures</a> was only added to avoid compiler errors for commonly named data structures As these data structures are stand-alone, you can use them outside of RakNet for your own projects if you wish. </p>
</div><hr/><h2 class="groupheader">Class Documentation</h2>
<a name="da/da1/struct_data_structures_1_1_page" id="da/da1/struct_data_structures_1_1_page"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct DataStructures::Page</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock"><h3>template&lt;class KeyType, class DataType, int order&gt;<br/>
struct DataStructures::Page&lt; KeyType, DataType, order &gt;</h3>
<p>Used in the <a class="el" href="../../d7/d58/class_data_structures_1_1_b_plus_tree.xhtml">BPlusTree</a>. Used for both leaf and index nodes. Don't use a constructor or destructor, due to the memory pool I am using </p>
<p>Definition at line <a class="el" href="../../d3/d3d/_d_s___b_plus_tree_8h_source.xhtml#l00050">50</a> of file <a class="el" href="../../d3/d3d/_d_s___b_plus_tree_8h_source.xhtml">DS_BPlusTree.h</a>.</p>
</div><div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
<img id="dynsection-0-trigger" src="../../closed.png" alt="+"/> Inheritance diagram for DataStructures::Page&lt; KeyType, DataType, order &gt;:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d8/d75/struct_data_structures_1_1_page__inherit__graph.svg" width="215" height="463"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<table class="fieldtable">
<tr><th colspan="3">Class Members</th></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a2c786de0cb834c236c6b47923f1c6010"></a><a class="el" href="../../da/d80/namespace_data_structures.xhtml#da/da1/struct_data_structures_1_1_page">Page</a> *</td>
<td class="fieldname">
children</td>
<td class="fielddoc">
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a75e91d62d50b35588a4ec213b455ad73"></a>DataType</td>
<td class="fieldname">
data</td>
<td class="fielddoc">
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a9b2b5cb1fdd5ef355032162e6da67fb8"></a>bool</td>
<td class="fieldname">
isLeaf</td>
<td class="fielddoc">
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a2e61c5f5aaa2f2093e9ea66ba91ab0f4"></a>KeyType</td>
<td class="fieldname">
keys</td>
<td class="fielddoc">
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="af356c65ea5891e42e1eacd3e79eae304"></a><a class="el" href="../../da/d80/namespace_data_structures.xhtml#da/da1/struct_data_structures_1_1_page">Page</a>&lt; KeyType, DataType, order &gt; *</td>
<td class="fieldname">
next</td>
<td class="fielddoc">
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a89e79b7e9bae6c2320349677f460250d"></a><a class="el" href="../../da/d80/namespace_data_structures.xhtml#da/da1/struct_data_structures_1_1_page">Page</a>&lt; KeyType, DataType, order &gt; *</td>
<td class="fieldname">
previous</td>
<td class="fielddoc">
</td></tr>
<tr><td class="fieldtype">
<a class="anchor" id="a4440cd3ce0db1898fe3511b6e675e04c"></a>int</td>
<td class="fieldname">
size</td>
<td class="fielddoc">
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a class="anchor" id="a976ed408bf7e723e5d6fefb59cf40125"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef <a class="el" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a> <a class="el" href="../../da/d80/namespace_data_structures.xhtml#a976ed408bf7e723e5d6fefb59cf40125">DataStructures::DefaultIndexType</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d1/db1/_d_s___multilist_8h_source.xhtml#l00091">91</a> of file <a class="el" href="../../d1/db1/_d_s___multilist_8h_source.xhtml">DS_Multilist.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a141573e51ef42434451188a050e9a577"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class key_type &gt; </div>
<table class="memname">
<tr>
<td class="memname">int DataStructures::defaultMapKeyComparison </td>
<td>(</td>
<td class="paramtype">const key_type &amp;&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const key_type &amp;&#160;</td>
<td class="paramname"><em>b</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>The default comparison has to be first so it can be called as a default parameter. It then is followed by MapNode, followed by NodeComparisonFunc </p>
<p>Definition at line <a class="el" href="../../de/dbe/_d_s___map_8h_source.xhtml#l00040">40</a> of file <a class="el" href="../../de/dbe/_d_s___map_8h_source.xhtml">DS_Map.h</a>.</p>
</div>
</div>
<a class="anchor" id="a7121bfdce3827886832c6966eb3fbf64"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class key_type , class data_type &gt; </div>
<table class="memname">
<tr>
<td class="memname">int DataStructures::defaultOrderedListComparison </td>
<td>(</td>
<td class="paramtype">const key_type &amp;&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const data_type &amp;&#160;</td>
<td class="paramname"><em>b</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml#l00033">33</a> of file <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml">DS_OrderedList.h</a>.</p>
</div>
</div>
<a class="anchor" id="ac554257c583d96878931af2bd10bbe2f"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class templateType &gt; </div>
<table class="memname">
<tr>
<td class="memname">void DataStructures::DeletePtr </td>
<td>(</td>
<td class="paramtype">templateType &amp;&#160;</td>
<td class="paramname"><em>ptr</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Can be used with <a class="el" href="../../de/d89/class_data_structures_1_1_multilist.xhtml#a4e49b2800f3cfebdc4fa22e3ded43689" title="Iterate over the list, calling the function pointer on each element.">Multilist::ForEach</a> Assuming the <a class="el" href="../../de/d89/class_data_structures_1_1_multilist.xhtml" title="The multilist, representing an abstract data type that generally holds lists.">Multilist</a> holds pointers, will delete those pointers </p>
<p>Definition at line <a class="el" href="../../d1/db1/_d_s___multilist_8h_source.xhtml#l00058">58</a> of file <a class="el" href="../../d1/db1/_d_s___multilist_8h_source.xhtml">DS_Multilist.h</a>.</p>
</div>
</div>
<a class="anchor" id="a4122fd2c409644863e7cb884c2f95bc4"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class templateType &gt; </div>
<table class="memname">
<tr>
<td class="memname">void DataStructures::DeletePtr_RakNet </td>
<td>(</td>
<td class="paramtype">templateType &amp;&#160;</td>
<td class="paramname"><em>ptr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>file</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>line</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Can be used with <a class="el" href="../../de/d89/class_data_structures_1_1_multilist.xhtml#a4e49b2800f3cfebdc4fa22e3ded43689" title="Iterate over the list, calling the function pointer on each element.">Multilist::ForEach</a> Assuming the <a class="el" href="../../de/d89/class_data_structures_1_1_multilist.xhtml" title="The multilist, representing an abstract data type that generally holds lists.">Multilist</a> holds pointers, will delete those pointers </p>
<p>Definition at line <a class="el" href="../../d1/db1/_d_s___multilist_8h_source.xhtml#l00053">53</a> of file <a class="el" href="../../d1/db1/_d_s___multilist_8h_source.xhtml">DS_Multilist.h</a>.</p>
<p>References <a class="el" href="../../dd/dc5/memoryoverride_8h_source.xhtml#l00182">SLNet::OP_DELETE()</a>.</p>
</div>
</div>
<a class="anchor" id="afc5f5975263bc574b36bd99c3720dc83"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class range_type &gt; </div>
<table class="memname">
<tr>
<td class="memname">int DataStructures::RangeNodeComp </td>
<td>(</td>
<td class="paramtype">const range_type &amp;&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const RangeNode&lt; range_type &gt; &amp;&#160;</td>
<td class="paramname"><em>b</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d3/d41/_d_s___range_list_8h_source.xhtml#l00044">44</a> of file <a class="el" href="../../d3/d41/_d_s___range_list_8h_source.xhtml">DS_RangeList.h</a>.</p>
<p>References <a class="el" href="../../d3/d41/_d_s___range_list_8h_source.xhtml#l00039">DataStructures::RangeNode&lt; range_type &gt;::maxIndex</a>, and <a class="el" href="../../d3/d41/_d_s___range_list_8h_source.xhtml#l00038">DataStructures::RangeNode&lt; range_type &gt;::minIndex</a>.</p>
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a class="anchor" id="a2f6832c889cf38a2f1132838dfd1044f"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class LinkedListType &gt; </div>
<table class="memname">
<tr>
<td class="memname">class <a class="el" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> <a class="el" href="../../dd/d55/class_data_structures_1_1_linked_list.xhtml">DataStructures::LinkedList</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d1/dc2/_d_s___linked_list_8h_source.xhtml#l00034">34</a> of file <a class="el" href="../../d1/dc2/_d_s___linked_list_8h_source.xhtml">DS_LinkedList.h</a>.</p>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../da/d80/namespace_data_structures.xhtml">DataStructures</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:49 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,10 @@
var namespace_data_structures_dup =
[
[ "children", "da/d80/namespace_data_structures.xhtml#a2c786de0cb834c236c6b47923f1c6010", null ],
[ "data", "da/d80/namespace_data_structures.xhtml#a75e91d62d50b35588a4ec213b455ad73", null ],
[ "isLeaf", "da/d80/namespace_data_structures.xhtml#a9b2b5cb1fdd5ef355032162e6da67fb8", null ],
[ "keys", "da/d80/namespace_data_structures.xhtml#a2e61c5f5aaa2f2093e9ea66ba91ab0f4", null ],
[ "next", "da/d80/namespace_data_structures.xhtml#af356c65ea5891e42e1eacd3e79eae304", null ],
[ "previous", "da/d80/namespace_data_structures.xhtml#a89e79b7e9bae6c2320349677f460250d", null ],
[ "size", "da/d80/namespace_data_structures.xhtml#a4440cd3ce0db1898fe3511b6e675e04c", null ]
];

View File

@ -0,0 +1,23 @@
var _rand_8cpp =
[
[ "hiBit", "da/d82/_rand_8cpp.xhtml#a6d98d2a0148d99119ae3cbb20af94e5e", null ],
[ "K", "da/d82/_rand_8cpp.xhtml#a97d832ae23af4f215e801e37e4f94254", null ],
[ "loBit", "da/d82/_rand_8cpp.xhtml#a0332b0aee92b25b0935bccc6f63a8e76", null ],
[ "loBits", "da/d82/_rand_8cpp.xhtml#a88fe688981b13216a7018a81c36083fe", null ],
[ "M", "da/d82/_rand_8cpp.xhtml#a52037c938e3c1b126c6277da5ca689d0", null ],
[ "mixBits", "da/d82/_rand_8cpp.xhtml#a2ca02d83d9f95d1d37b56e20f9c30bd0", null ],
[ "N", "da/d82/_rand_8cpp.xhtml#a0240ac851181b84ac374872dc5434ee4", null ],
[ "fillBufferMT", "da/d82/_rand_8cpp.xhtml#ade83f21ad5a606f79932ba432d97ced7", null ],
[ "fillBufferMT", "da/d82/_rand_8cpp.xhtml#a7bd85d5a007abde74d9352ab8de5957a", null ],
[ "frandomMT", "da/d82/_rand_8cpp.xhtml#ae1893c71ce567b99bb84624d323368e2", null ],
[ "frandomMT", "da/d82/_rand_8cpp.xhtml#a8a788011ff68195c8e0b7141673ac65b", null ],
[ "randomMT", "da/d82/_rand_8cpp.xhtml#a90046cfad3cc4ee544377abb9d435f34", null ],
[ "randomMT", "da/d82/_rand_8cpp.xhtml#ac2dc10672867234aa3f43e4a141b108e", null ],
[ "reloadMT", "da/d82/_rand_8cpp.xhtml#a178fd12bfa864f97ce60b0d06aff9dd8", null ],
[ "reloadMT", "da/d82/_rand_8cpp.xhtml#a2ced42ef4b294f7afb4a53f133ef169c", null ],
[ "seedMT", "da/d82/_rand_8cpp.xhtml#a86290618479835cad5f671ed697300d2", null ],
[ "seedMT", "da/d82/_rand_8cpp.xhtml#a11c1fa5e615d9aac605ef62e5977b7c2", null ],
[ "_left", "da/d82/_rand_8cpp.xhtml#acb374ecea613482f3af3db9f54e2abeb", null ],
[ "_next", "da/d82/_rand_8cpp.xhtml#ab66c6100edd468ed0617210c716b8438", null ],
[ "_state", "da/d82/_rand_8cpp.xhtml#a42e9057bdfbcc4910ccf9d6158cc11d9", null ]
];

View File

@ -0,0 +1,732 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Source/src/Rand.cpp File 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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../files.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/d82/_rand_8cpp.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">Rand.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;stdio.h&gt;</code><br/>
<code>#include &lt;stdlib.h&gt;</code><br/>
<code>#include &lt;<a class="el" href="../../da/d66/string_8h_source.xhtml">string.h</a>&gt;</code><br/>
<code>#include &quot;<a class="el" href="../../d7/d10/_rand_8h_source.xhtml">slikenet/Rand.h</a>&quot;</code><br/>
</div>
<p><a href="../../da/d82/_rand_8cpp_source.xhtml">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a0240ac851181b84ac374872dc5434ee4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#a0240ac851181b84ac374872dc5434ee4">N</a>&#160;&#160;&#160;(624)</td></tr>
<tr class="separator:a0240ac851181b84ac374872dc5434ee4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a52037c938e3c1b126c6277da5ca689d0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#a52037c938e3c1b126c6277da5ca689d0">M</a>&#160;&#160;&#160;(397)</td></tr>
<tr class="separator:a52037c938e3c1b126c6277da5ca689d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a97d832ae23af4f215e801e37e4f94254"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#a97d832ae23af4f215e801e37e4f94254">K</a>&#160;&#160;&#160;(0x9908B0DFU)</td></tr>
<tr class="separator:a97d832ae23af4f215e801e37e4f94254"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d98d2a0148d99119ae3cbb20af94e5e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#a6d98d2a0148d99119ae3cbb20af94e5e">hiBit</a>(u)&#160;&#160;&#160;((u) &amp; 0x80000000U)</td></tr>
<tr class="separator:a6d98d2a0148d99119ae3cbb20af94e5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0332b0aee92b25b0935bccc6f63a8e76"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#a0332b0aee92b25b0935bccc6f63a8e76">loBit</a>(u)&#160;&#160;&#160;((u) &amp; 0x00000001U)</td></tr>
<tr class="separator:a0332b0aee92b25b0935bccc6f63a8e76"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a88fe688981b13216a7018a81c36083fe"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#a88fe688981b13216a7018a81c36083fe">loBits</a>(u)&#160;&#160;&#160;((u) &amp; 0x7FFFFFFFU)</td></tr>
<tr class="separator:a88fe688981b13216a7018a81c36083fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2ca02d83d9f95d1d37b56e20f9c30bd0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#a2ca02d83d9f95d1d37b56e20f9c30bd0">mixBits</a>(u, v)&#160;&#160;&#160;(<a class="el" href="../../da/d82/_rand_8cpp.xhtml#a6d98d2a0148d99119ae3cbb20af94e5e">hiBit</a>(u)|<a class="el" href="../../da/d82/_rand_8cpp.xhtml#a88fe688981b13216a7018a81c36083fe">loBits</a>(v))</td></tr>
<tr class="separator:a2ca02d83d9f95d1d37b56e20f9c30bd0"><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:a86290618479835cad5f671ed697300d2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#a86290618479835cad5f671ed697300d2">seedMT</a> (unsigned int seed, unsigned int *state, unsigned int *&amp;next, int &amp;left)</td></tr>
<tr class="separator:a86290618479835cad5f671ed697300d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a178fd12bfa864f97ce60b0d06aff9dd8"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#a178fd12bfa864f97ce60b0d06aff9dd8">reloadMT</a> (unsigned int *state, unsigned int *&amp;next, int &amp;left)</td></tr>
<tr class="separator:a178fd12bfa864f97ce60b0d06aff9dd8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a90046cfad3cc4ee544377abb9d435f34"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#a90046cfad3cc4ee544377abb9d435f34">randomMT</a> (unsigned int *state, unsigned int *&amp;next, int &amp;left)</td></tr>
<tr class="separator:a90046cfad3cc4ee544377abb9d435f34"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade83f21ad5a606f79932ba432d97ced7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#ade83f21ad5a606f79932ba432d97ced7">fillBufferMT</a> (void *buffer, unsigned int bytes, unsigned int *state, unsigned int *&amp;next, int &amp;left)</td></tr>
<tr class="separator:ade83f21ad5a606f79932ba432d97ced7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae1893c71ce567b99bb84624d323368e2"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#ae1893c71ce567b99bb84624d323368e2">frandomMT</a> (unsigned int *state, unsigned int *&amp;next, int &amp;left)</td></tr>
<tr class="separator:ae1893c71ce567b99bb84624d323368e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a11c1fa5e615d9aac605ef62e5977b7c2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#a11c1fa5e615d9aac605ef62e5977b7c2">seedMT</a> (unsigned int seed)</td></tr>
<tr class="separator:a11c1fa5e615d9aac605ef62e5977b7c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2ced42ef4b294f7afb4a53f133ef169c"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#a2ced42ef4b294f7afb4a53f133ef169c">reloadMT</a> (void)</td></tr>
<tr class="separator:a2ced42ef4b294f7afb4a53f133ef169c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2dc10672867234aa3f43e4a141b108e"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#ac2dc10672867234aa3f43e4a141b108e">randomMT</a> (void)</td></tr>
<tr class="separator:ac2dc10672867234aa3f43e4a141b108e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a788011ff68195c8e0b7141673ac65b"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#a8a788011ff68195c8e0b7141673ac65b">frandomMT</a> (void)</td></tr>
<tr class="separator:a8a788011ff68195c8e0b7141673ac65b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7bd85d5a007abde74d9352ab8de5957a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#a7bd85d5a007abde74d9352ab8de5957a">fillBufferMT</a> (void *buffer, unsigned int bytes)</td></tr>
<tr class="separator:a7bd85d5a007abde74d9352ab8de5957a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a42e9057bdfbcc4910ccf9d6158cc11d9"><td class="memItemLeft" align="right" valign="top">static unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#a42e9057bdfbcc4910ccf9d6158cc11d9">_state</a> [<a class="el" href="../../da/d82/_rand_8cpp.xhtml#a0240ac851181b84ac374872dc5434ee4">N</a>+1]</td></tr>
<tr class="separator:a42e9057bdfbcc4910ccf9d6158cc11d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab66c6100edd468ed0617210c716b8438"><td class="memItemLeft" align="right" valign="top">static unsigned int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#ab66c6100edd468ed0617210c716b8438">_next</a></td></tr>
<tr class="separator:ab66c6100edd468ed0617210c716b8438"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb374ecea613482f3af3db9f54e2abeb"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d82/_rand_8cpp.xhtml#acb374ecea613482f3af3db9f54e2abeb">_left</a> = -1</td></tr>
<tr class="separator:acb374ecea613482f3af3db9f54e2abeb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="a6d98d2a0148d99119ae3cbb20af94e5e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define hiBit</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">u</td><td>)</td>
<td>&#160;&#160;&#160;((u) &amp; 0x80000000U)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00065">65</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
</div>
</div>
<a class="anchor" id="a97d832ae23af4f215e801e37e4f94254"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define K&#160;&#160;&#160;(0x9908B0DFU)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00064">64</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>Referenced by <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00164">reloadMT()</a>.</p>
</div>
</div>
<a class="anchor" id="a0332b0aee92b25b0935bccc6f63a8e76"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define loBit</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">u</td><td>)</td>
<td>&#160;&#160;&#160;((u) &amp; 0x00000001U)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00066">66</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>Referenced by <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00164">reloadMT()</a>.</p>
</div>
</div>
<a class="anchor" id="a88fe688981b13216a7018a81c36083fe"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define loBits</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">u</td><td>)</td>
<td>&#160;&#160;&#160;((u) &amp; 0x7FFFFFFFU)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00067">67</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
</div>
</div>
<a class="anchor" id="a52037c938e3c1b126c6277da5ca689d0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define M&#160;&#160;&#160;(397)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00063">63</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>Referenced by <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00164">reloadMT()</a>.</p>
</div>
</div>
<a class="anchor" id="a2ca02d83d9f95d1d37b56e20f9c30bd0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define mixBits</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">u, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">v&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td>&#160;&#160;&#160;(<a class="el" href="../../da/d82/_rand_8cpp.xhtml#a6d98d2a0148d99119ae3cbb20af94e5e">hiBit</a>(u)|<a class="el" href="../../da/d82/_rand_8cpp.xhtml#a88fe688981b13216a7018a81c36083fe">loBits</a>(v))</td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00068">68</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>Referenced by <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00164">reloadMT()</a>.</p>
</div>
</div>
<a class="anchor" id="a0240ac851181b84ac374872dc5434ee4"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define N&#160;&#160;&#160;(624)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Grabbed by Kevin from <a href="http://www.math.keio.ac.jp/~matumoto/cokus.c">http://www.math.keio.ac.jp/~matumoto/cokus.c</a> This is the ``Mersenne Twister'' random number generator MT19937, which generates pseudorandom integers uniformly distributed in 0..(2^32 - 1) starting from any odd seed in 0..(2^32 - 1). This version is a recode by Shawn Cokus (<a href="#" onclick="location.href='mai'+'lto:'+'Cok'+'us'+'@ma'+'th'+'.wa'+'sh'+'ing'+'to'+'n.e'+'du'; return false;">Cokus<span style="display: none;">.nosp@m.</span>@mat<span style="display: none;">.nosp@m.</span>h.was<span style="display: none;">.nosp@m.</span>hing<span style="display: none;">.nosp@m.</span>ton.e<span style="display: none;">.nosp@m.</span>du</a>) on March 8, 1998 of a version by Takuji Nishimura (who had suggestions from Topher Cooper and Marc Rieffel in July-August 1997).</p>
<p>Effectiveness of the recoding (on Goedel2.math.washington.edu, a DEC Alpha running OSF/1) using GCC -O3 as a compiler: before recoding: 51.6 sec. to generate 300 million random numbers; after recoding: 24.0 sec. for the same (i.e., 46.5% of original time), so speed is now about 12.5 million random number generations per second on this machine.</p>
<p>According to the URL <a href="http://www.math.keio.ac.jp/~matumoto/emt.html">http://www.math.keio.ac.jp/~matumoto/emt.html</a> (and paraphrasing a bit in places), the Mersenne Twister is ``designed with consideration of the flaws of various existing generators,'' has a period of 2^19937 - 1, gives a sequence that is 623-dimensionally equidistributed, and ``has passed many stringent tests, including the die-hard test of G. Marsaglia and the load test of P. Hellekalek and S. Wegenkittl.'' It is efficient in memory usage (typically using 2506 to 5012 bytes of static data, depending on data type sizes, and the code is quite short as well). It generates random numbers in batches of 624 at a time, so the caching and pipelining of modern systems is exploited. It is also divide- and mod-free.</p>
<p>Licensing is free <a href="http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/elicense.html">http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/elicense.html</a></p>
<p>The code as Shawn received it included the following notice:</p>
<p>Copyright (C) 1997 Makoto Matsumoto and Takuji Nishimura. When you use this, send an e-mail to <a href="#" onclick="location.href='mai'+'lto:'+'mat'+'um'+'oto'+'@m'+'ath'+'.k'+'eio'+'.a'+'c.j'+'p'; return false;">matum<span style="display: none;">.nosp@m.</span>oto@<span style="display: none;">.nosp@m.</span>math.<span style="display: none;">.nosp@m.</span>keio<span style="display: none;">.nosp@m.</span>.ac.j<span style="display: none;">.nosp@m.</span>p</a> with an appropriate reference to your work.</p>
<p>It would be nice to CC: <a href="#" onclick="location.href='mai'+'lto:'+'Cok'+'us'+'@ma'+'th'+'.wa'+'sh'+'ing'+'to'+'n.e'+'du'; return false;">Cokus<span style="display: none;">.nosp@m.</span>@mat<span style="display: none;">.nosp@m.</span>h.was<span style="display: none;">.nosp@m.</span>hing<span style="display: none;">.nosp@m.</span>ton.e<span style="display: none;">.nosp@m.</span>du</a> when you write.</p>
<p>Note from SLikeSoft: The mail addresses here seem to be dead ends and we could not determine any current ways to contact the authors. </p>
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00062">62</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>Referenced by <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00164">reloadMT()</a>, and <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00104">seedMT()</a>.</p>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ade83f21ad5a606f79932ba432d97ced7"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void fillBufferMT </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>buffer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>bytes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int *&#160;</td>
<td class="paramname"><em>state</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int *&amp;&#160;</td>
<td class="paramname"><em>next</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int &amp;&#160;</td>
<td class="paramname"><em>left</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00213">213</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>References <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00192">randomMT()</a>.</p>
<p>Referenced by <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00099">fillBufferMT()</a>, and <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00260">SLNet::RakNetRandom::FillBufferMT()</a>.</p>
</div>
</div>
<a class="anchor" id="a7bd85d5a007abde74d9352ab8de5957a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void fillBufferMT </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>buffer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>bytes</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Randomizes a buffer </p>
<dl class="section note"><dt>Note</dt><dd>not threadSafe, use an instance of RakNetRandom if necessary per thread </dd></dl>
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00099">99</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>References <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00072">_left</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00071">_next</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00070">_state</a>, and <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00213">fillBufferMT()</a>.</p>
</div>
</div>
<a class="anchor" id="ae1893c71ce567b99bb84624d323368e2"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float frandomMT </td>
<td>(</td>
<td class="paramtype">unsigned int *&#160;</td>
<td class="paramname"><em>state</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int *&amp;&#160;</td>
<td class="paramname"><em>next</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int &amp;&#160;</td>
<td class="paramname"><em>left</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00228">228</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>References <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00192">randomMT()</a>.</p>
<p>Referenced by <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00095">frandomMT()</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00255">SLNet::RakNetRandom::FrandomMT()</a>, and <a class="el" href="../../d8/db6/_d_s___ordered_channel_heap_8h_source.xhtml#l00108">DataStructures::OrderedChannelHeap&lt; channel_key_type, heap_data_type, channel_key_comparison_func &gt;::PushAtHead()</a>.</p>
</div>
</div>
<a class="anchor" id="a8a788011ff68195c8e0b7141673ac65b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float frandomMT </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Gets a random float </p>
<dl class="section note"><dt>Note</dt><dd>not threadSafe, use an instance of RakNetRandom if necessary per thread </dd></dl>
<dl class="section return"><dt>Returns</dt><dd>0 to 1.0f, inclusive </dd></dl>
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00095">95</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>References <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00072">_left</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00071">_next</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00070">_state</a>, and <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00228">frandomMT()</a>.</p>
</div>
</div>
<a class="anchor" id="a90046cfad3cc4ee544377abb9d435f34"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int randomMT </td>
<td>(</td>
<td class="paramtype">unsigned int *&#160;</td>
<td class="paramname"><em>state</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int *&amp;&#160;</td>
<td class="paramname"><em>next</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int &amp;&#160;</td>
<td class="paramname"><em>left</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00192">192</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>References <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00164">reloadMT()</a>.</p>
<p>Referenced by <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00213">fillBufferMT()</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00228">frandomMT()</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00091">randomMT()</a>, and <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00250">SLNet::RakNetRandom::RandomMT()</a>.</p>
</div>
</div>
<a class="anchor" id="ac2dc10672867234aa3f43e4a141b108e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int randomMT </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Gets a random unsigned int </p>
<dl class="section note"><dt>Note</dt><dd>not threadSafe, use an instance of RakNetRandom if necessary per thread </dd></dl>
<dl class="section return"><dt>Returns</dt><dd>an integer random value. </dd></dl>
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00091">91</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>References <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00072">_left</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00071">_next</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00070">_state</a>, and <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00192">randomMT()</a>.</p>
</div>
</div>
<a class="anchor" id="a178fd12bfa864f97ce60b0d06aff9dd8"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int reloadMT </td>
<td>(</td>
<td class="paramtype">unsigned int *&#160;</td>
<td class="paramname"><em>state</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int *&amp;&#160;</td>
<td class="paramname"><em>next</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int &amp;&#160;</td>
<td class="paramname"><em>left</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00164">164</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>References <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00064">K</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00066">loBit</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00063">M</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00068">mixBits</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00062">N</a>, and <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00104">seedMT()</a>.</p>
<p>Referenced by <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00192">randomMT()</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00087">reloadMT()</a>, and <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00245">SLNet::RakNetRandom::ReloadMT()</a>.</p>
</div>
</div>
<a class="anchor" id="a2ced42ef4b294f7afb4a53f133ef169c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int reloadMT </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00087">87</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>References <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00072">_left</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00071">_next</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00070">_state</a>, and <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00164">reloadMT()</a>.</p>
</div>
</div>
<a class="anchor" id="a86290618479835cad5f671ed697300d2"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void seedMT </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>seed</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int *&#160;</td>
<td class="paramname"><em>state</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int *&amp;&#160;</td>
<td class="paramname"><em>next</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int &amp;&#160;</td>
<td class="paramname"><em>left</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00104">104</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>References <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00062">N</a>.</p>
<p>Referenced by <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00164">reloadMT()</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00083">seedMT()</a>, and <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00239">SLNet::RakNetRandom::SeedMT()</a>.</p>
</div>
</div>
<a class="anchor" id="a11c1fa5e615d9aac605ef62e5977b7c2"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void seedMT </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>seed</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Initialise seed for Random Generator </p>
<dl class="section note"><dt>Note</dt><dd>not threadSafe, use an instance of RakNetRandom if necessary per thread </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">seed</td><td>The seed value for the random number generator. </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00083">83</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>References <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00072">_left</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00071">_next</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00070">_state</a>, and <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00104">seedMT()</a>.</p>
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a class="anchor" id="acb374ecea613482f3af3db9f54e2abeb"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int _left = -1</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00072">72</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>Referenced by <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00099">fillBufferMT()</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00095">frandomMT()</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00091">randomMT()</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00087">reloadMT()</a>, and <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00083">seedMT()</a>.</p>
</div>
</div>
<a class="anchor" id="ab66c6100edd468ed0617210c716b8438"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned int* _next</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00071">71</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>Referenced by <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00099">fillBufferMT()</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00095">frandomMT()</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00091">randomMT()</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00087">reloadMT()</a>, and <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00083">seedMT()</a>.</p>
</div>
</div>
<a class="anchor" id="a42e9057bdfbcc4910ccf9d6158cc11d9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned int _state[<a class="el" href="../../da/d82/_rand_8cpp.xhtml#a0240ac851181b84ac374872dc5434ee4">N</a>+1]</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00070">70</a> of file <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml">Rand.cpp</a>.</p>
<p>Referenced by <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00099">fillBufferMT()</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00095">frandomMT()</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00091">randomMT()</a>, <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00087">reloadMT()</a>, and <a class="el" href="../../da/d82/_rand_8cpp_source.xhtml#l00083">seedMT()</a>.</p>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_d1eb22c2ecfd8b50f59e9cbaf8260105.xhtml">src</a></li><li class="navelem"><a class="el" href="../../da/d82/_rand_8cpp.xhtml">Rand.cpp</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,364 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Source/src/Rand.cpp Source File</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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../files.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/d82/_rand_8cpp_source.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">Rand.cpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../da/d82/_rand_8cpp.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> * Modified work: Copyright (c) 2016-2017, SLikeSoft UG (haftungsbeschränkt)</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> * This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> * license found in the license.txt file in the root directory of this source tree.</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#include &lt;stdio.h&gt;</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="../../da/d66/string_8h.xhtml">string.h</a>&gt;</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d7/d10/_rand_8h.xhtml" title="[Internal] Random number generator">slikenet/Rand.h</a>&quot;</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment">// uint32 must be an unsigned integer type capable of holding at least 32</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment">// bits; exactly 32 should be fastest, but 64 is better on an Alpha with</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment">// GCC at -O3 optimization so try your options and see what&#39;s best for you</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment">//typedef unsigned int uint32;</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div>
<div class="line"><a name="l00062"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#a0240ac851181b84ac374872dc5434ee4"> 62</a></span>&#160;<span class="preprocessor">#define N (624) // length of state vector</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#a52037c938e3c1b126c6277da5ca689d0"> 63</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define M (397) // a period parameter</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#a97d832ae23af4f215e801e37e4f94254"> 64</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define K (0x9908B0DFU) // a magic constant</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#a6d98d2a0148d99119ae3cbb20af94e5e"> 65</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define hiBit(u) ((u) &amp; 0x80000000U) // mask all but highest bit of u</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#a0332b0aee92b25b0935bccc6f63a8e76"> 66</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define loBit(u) ((u) &amp; 0x00000001U) // mask all but lowest bit of u</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#a88fe688981b13216a7018a81c36083fe"> 67</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define loBits(u) ((u) &amp; 0x7FFFFFFFU) // mask the highest bit of u</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#a2ca02d83d9f95d1d37b56e20f9c30bd0"> 68</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define mixBits(u, v) (hiBit(u)|loBits(v)) // move hi bit of u to hi bit of v</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00070"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#a42e9057bdfbcc4910ccf9d6158cc11d9"> 70</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a42e9057bdfbcc4910ccf9d6158cc11d9">_state</a>[ <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a0240ac851181b84ac374872dc5434ee4">N</a> + 1 ]; <span class="comment">// state vector + 1 extra to not violate ANSI C</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#ab66c6100edd468ed0617210c716b8438"> 71</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *<a class="code" href="../../da/d82/_rand_8cpp.xhtml#ab66c6100edd468ed0617210c716b8438">_next</a>; <span class="comment">// next random value is computed from here</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#acb374ecea613482f3af3db9f54e2abeb"> 72</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#acb374ecea613482f3af3db9f54e2abeb">_left</a> = -1; <span class="comment">// can *next++ this many times before reloading</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="keyword">using namespace </span>SLNet;</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a86290618479835cad5f671ed697300d2">seedMT</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> seed, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *state, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *&amp;next, <span class="keywordtype">int</span> &amp;left );</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a178fd12bfa864f97ce60b0d06aff9dd8">reloadMT</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *state, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *&amp;next, <span class="keywordtype">int</span> &amp;left );</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a90046cfad3cc4ee544377abb9d435f34">randomMT</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *state, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *&amp;next, <span class="keywordtype">int</span> &amp;left );</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#ade83f21ad5a606f79932ba432d97ced7">fillBufferMT</a>( <span class="keywordtype">void</span> *buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bytes, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *state, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *&amp;next, <span class="keywordtype">int</span> &amp;left );</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="keywordtype">float</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#ae1893c71ce567b99bb84624d323368e2">frandomMT</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *state, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *&amp;next, <span class="keywordtype">int</span> &amp;left );</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment">// Uses global vars</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"><a class="code" href="../../d7/d10/_rand_8h.xhtml#ab906455689fe29d53488741dcb85144c"> 83</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a86290618479835cad5f671ed697300d2">seedMT</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> seed )</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;{</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a86290618479835cad5f671ed697300d2">seedMT</a>(seed, <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a42e9057bdfbcc4910ccf9d6158cc11d9">_state</a>, <a class="code" href="../../da/d82/_rand_8cpp.xhtml#ab66c6100edd468ed0617210c716b8438">_next</a>, <a class="code" href="../../da/d82/_rand_8cpp.xhtml#acb374ecea613482f3af3db9f54e2abeb">_left</a>);</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;}</div>
<div class="line"><a name="l00087"></a><span class="lineno"><a class="code" href="../../d7/d10/_rand_8h.xhtml#a52b4c380a6150ce7db938d246579c781"> 87</a></span>&#160;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a178fd12bfa864f97ce60b0d06aff9dd8">reloadMT</a>( <span class="keywordtype">void</span> )</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;{</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a178fd12bfa864f97ce60b0d06aff9dd8">reloadMT</a>(<a class="code" href="../../da/d82/_rand_8cpp.xhtml#a42e9057bdfbcc4910ccf9d6158cc11d9">_state</a>, <a class="code" href="../../da/d82/_rand_8cpp.xhtml#ab66c6100edd468ed0617210c716b8438">_next</a>, <a class="code" href="../../da/d82/_rand_8cpp.xhtml#acb374ecea613482f3af3db9f54e2abeb">_left</a>);</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;}</div>
<div class="line"><a name="l00091"></a><span class="lineno"><a class="code" href="../../d7/d10/_rand_8h.xhtml#a98d797c74449c6e22cbffb43e123a8cc"> 91</a></span>&#160;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a90046cfad3cc4ee544377abb9d435f34">randomMT</a>( <span class="keywordtype">void</span> )</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;{</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a90046cfad3cc4ee544377abb9d435f34">randomMT</a>(<a class="code" href="../../da/d82/_rand_8cpp.xhtml#a42e9057bdfbcc4910ccf9d6158cc11d9">_state</a>, <a class="code" href="../../da/d82/_rand_8cpp.xhtml#ab66c6100edd468ed0617210c716b8438">_next</a>, <a class="code" href="../../da/d82/_rand_8cpp.xhtml#acb374ecea613482f3af3db9f54e2abeb">_left</a>);</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;}</div>
<div class="line"><a name="l00095"></a><span class="lineno"><a class="code" href="../../d7/d10/_rand_8h.xhtml#ae7e667ae86b7729c6b86565b157085ee"> 95</a></span>&#160;<span class="keywordtype">float</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#ae1893c71ce567b99bb84624d323368e2">frandomMT</a>( <span class="keywordtype">void</span> )</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;{</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#ae1893c71ce567b99bb84624d323368e2">frandomMT</a>(<a class="code" href="../../da/d82/_rand_8cpp.xhtml#a42e9057bdfbcc4910ccf9d6158cc11d9">_state</a>, <a class="code" href="../../da/d82/_rand_8cpp.xhtml#ab66c6100edd468ed0617210c716b8438">_next</a>, <a class="code" href="../../da/d82/_rand_8cpp.xhtml#acb374ecea613482f3af3db9f54e2abeb">_left</a>);</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;}</div>
<div class="line"><a name="l00099"></a><span class="lineno"><a class="code" href="../../d7/d10/_rand_8h.xhtml#a4cb8c468a6fed51061e03bdb36f7e57d"> 99</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#ade83f21ad5a606f79932ba432d97ced7">fillBufferMT</a>( <span class="keywordtype">void</span> *buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bytes )</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;{</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="../../da/d82/_rand_8cpp.xhtml#ade83f21ad5a606f79932ba432d97ced7">fillBufferMT</a>(buffer, bytes, <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a42e9057bdfbcc4910ccf9d6158cc11d9">_state</a>, <a class="code" href="../../da/d82/_rand_8cpp.xhtml#ab66c6100edd468ed0617210c716b8438">_next</a>, <a class="code" href="../../da/d82/_rand_8cpp.xhtml#acb374ecea613482f3af3db9f54e2abeb">_left</a>);</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;}</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div>
<div class="line"><a name="l00104"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#a86290618479835cad5f671ed697300d2"> 104</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a86290618479835cad5f671ed697300d2">seedMT</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> seed, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *state, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *&amp;next, <span class="keywordtype">int</span> &amp;left ) <span class="comment">// Defined in cokus_c.c</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;{</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; (void) next;</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="comment">// We initialize state[0..(N-1)] via the generator</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="comment">// x_new = (69069 * x_old) mod 2^32</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="comment">// from Line 15 of Table 1, p. 106, Sec. 3.3.4 of Knuth&#39;s</span></div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="comment">// _The Art of Computer Programming_, Volume 2, 3rd ed.</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="comment">// Notes (SJC): I do not know what the initial state requirements</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="comment">// of the Mersenne Twister are, but it seems this seeding generator</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="comment">// could be better. It achieves the maximum period for its modulus</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="comment">// (2^30) iff x_initial is odd (p. 20-21, Sec. 3.2.1.2, Knuth); if</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="comment">// x_initial can be even, you have sequences like 0, 0, 0, ...;</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="comment">// 2^31, 2^31, 2^31, ...; 2^30, 2^30, 2^30, ...; 2^29, 2^29 + 2^31,</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="comment">// 2^29, 2^29 + 2^31, ..., etc. so I force seed to be odd below.</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="comment">// Even if x_initial is odd, if x_initial is 1 mod 4 then</span></div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="comment">// the lowest bit of x is always 1,</span></div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="comment">// the next-to-lowest bit of x is always 0,</span></div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="comment">// the 2nd-from-lowest bit of x alternates ... 0 1 0 1 0 1 0 1 ... ,</span></div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="comment">// the 3rd-from-lowest bit of x 4-cycles ... 0 1 1 0 0 1 1 0 ... ,</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="comment">// the 4th-from-lowest bit of x has the 8-cycle ... 0 0 0 1 1 1 1 0 ... ,</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="comment">// ...</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="comment">// and if x_initial is 3 mod 4 then</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="comment">// the lowest bit of x is always 1,</span></div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="comment">// the next-to-lowest bit of x is always 1,</span></div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="comment">// the 2nd-from-lowest bit of x alternates ... 0 1 0 1 0 1 0 1 ... ,</span></div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="comment">// the 3rd-from-lowest bit of x 4-cycles ... 0 0 1 1 0 0 1 1 ... ,</span></div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="comment">// the 4th-from-lowest bit of x has the 8-cycle ... 0 0 1 1 1 1 0 0 ... ,</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="comment">// ...</span></div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="comment">// The generator&#39;s potency (min. s&gt;=0 with (69069-1)^s = 0 mod 2^32) is</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="comment">// 16, which seems to be alright by p. 25, Sec. 3.2.1.3 of Knuth. It</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="comment">// also does well in the dimension 2..5 spectral tests, but it could be</span></div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="comment">// better in dimension 6 (Line 15, Table 1, p. 106, Sec. 3.3.4, Knuth).</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="comment">// Note that the random number user does not see the values generated</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="comment">// here directly since reloadMT() will always munge them first, so maybe</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="comment">// none of all of this matters. In fact, the seed values made here could</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="comment">// even be extra-special desirable if the Mersenne Twister theory says</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="comment">// so-- that&#39;s why the only change I made is to restrict to odd seeds.</span></div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> x = ( seed | 1U ) &amp; 0xFFFFFFFFU, *s = state;</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordtype">int</span> j;</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">for</span> ( left = 0, *s++ = x, j = <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a0240ac851181b84ac374872dc5434ee4">N</a>; --j;</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; *s++ = ( x *= 69069U ) &amp; 0xFFFFFFFFU )</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; ;</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;}</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div>
<div class="line"><a name="l00164"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#a178fd12bfa864f97ce60b0d06aff9dd8"> 164</a></span>&#160;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a178fd12bfa864f97ce60b0d06aff9dd8">reloadMT</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *state, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *&amp;next, <span class="keywordtype">int</span> &amp;left )</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;{</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> * p0 = state, *p2 = state + 2, *pM = state + <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a52037c938e3c1b126c6277da5ca689d0">M</a>, s0, s1;</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordtype">int</span> j;</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">if</span> ( left &lt; -1 )</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a86290618479835cad5f671ed697300d2">seedMT</a>( 4357U );</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; left = <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a0240ac851181b84ac374872dc5434ee4">N</a> - 1, next = state + 1;</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">for</span> ( s0 = state[ 0 ], s1 = state[ 1 ], j = <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a0240ac851181b84ac374872dc5434ee4">N</a> - M + 1; --j; s0 = s1, s1 = *p2++ )</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; * p0++ = *pM++ ^ ( <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a2ca02d83d9f95d1d37b56e20f9c30bd0">mixBits</a>( s0, s1 ) &gt;&gt; 1 ) ^ ( <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a0332b0aee92b25b0935bccc6f63a8e76">loBit</a>( s1 ) ? <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a97d832ae23af4f215e801e37e4f94254">K</a> : 0U );</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">for</span> ( pM = state, j = M; --j; s0 = s1, s1 = *p2++ )</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; * p0++ = *pM++ ^ ( <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a2ca02d83d9f95d1d37b56e20f9c30bd0">mixBits</a>( s0, s1 ) &gt;&gt; 1 ) ^ ( <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a0332b0aee92b25b0935bccc6f63a8e76">loBit</a>( s1 ) ? <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a97d832ae23af4f215e801e37e4f94254">K</a> : 0U );</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; s1 = state[ 0 ], *p0 = *pM ^ ( <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a2ca02d83d9f95d1d37b56e20f9c30bd0">mixBits</a>( s0, s1 ) &gt;&gt; 1 ) ^ ( <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a0332b0aee92b25b0935bccc6f63a8e76">loBit</a>( s1 ) ? <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a97d832ae23af4f215e801e37e4f94254">K</a> : 0U );</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; s1 ^= ( s1 &gt;&gt; 11 );</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; s1 ^= ( s1 &lt;&lt; 7 ) &amp; 0x9D2C5680U;</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; s1 ^= ( s1 &lt;&lt; 15 ) &amp; 0xEFC60000U;</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">return</span> ( s1 ^ ( s1 &gt;&gt; 18 ) );</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;}</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;</div>
<div class="line"><a name="l00192"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#a90046cfad3cc4ee544377abb9d435f34"> 192</a></span>&#160;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a90046cfad3cc4ee544377abb9d435f34">randomMT</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *state, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *&amp;next, <span class="keywordtype">int</span> &amp;left )</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;{</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y;</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">if</span> ( --left &lt; 0 )</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">return</span> ( <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a178fd12bfa864f97ce60b0d06aff9dd8">reloadMT</a>(state, next, left) );</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; y = *next++;</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; y ^= ( y &gt;&gt; 11 );</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; y ^= ( y &lt;&lt; 7 ) &amp; 0x9D2C5680U;</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; y ^= ( y &lt;&lt; 15 ) &amp; 0xEFC60000U;</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">return</span> ( y ^ ( y &gt;&gt; 18 ) );</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="comment">// This change made so the value returned is in the same range as what rand() returns</span></div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="comment">// return(y ^ (y &gt;&gt; 18)) % 32767;</span></div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;}</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;</div>
<div class="line"><a name="l00213"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#ade83f21ad5a606f79932ba432d97ced7"> 213</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#ade83f21ad5a606f79932ba432d97ced7">fillBufferMT</a>( <span class="keywordtype">void</span> *buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bytes, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *state, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *&amp;next, <span class="keywordtype">int</span> &amp;left )</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;{</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset=0;</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> r;</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">while</span> (bytes-offset&gt;=<span class="keyword">sizeof</span>(r))</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; {</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; r = <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a90046cfad3cc4ee544377abb9d435f34">randomMT</a>(state, next, left);</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; memcpy((<span class="keywordtype">char</span>*)buffer+offset, &amp;r, <span class="keyword">sizeof</span>(r));</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; offset+=<span class="keyword">sizeof</span>(r);</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; }</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; r = <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a90046cfad3cc4ee544377abb9d435f34">randomMT</a>(state, next, left);</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; memcpy((<span class="keywordtype">char</span>*)buffer+offset, &amp;r, bytes-offset);</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;}</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;</div>
<div class="line"><a name="l00228"></a><span class="lineno"><a class="code" href="../../da/d82/_rand_8cpp.xhtml#ae1893c71ce567b99bb84624d323368e2"> 228</a></span>&#160;<span class="keywordtype">float</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#ae1893c71ce567b99bb84624d323368e2">frandomMT</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *state, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *&amp;next, <span class="keywordtype">int</span> &amp;left )</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;{</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">return</span> ( <span class="keywordtype">float</span> ) ( ( double ) <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a90046cfad3cc4ee544377abb9d435f34">randomMT</a>(state, next, left) / 4294967296.0 );</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;}</div>
<div class="line"><a name="l00232"></a><span class="lineno"><a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a12204e9bef5f72a5d3e2498097740ea0"> 232</a></span>&#160;<a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a12204e9bef5f72a5d3e2498097740ea0">RakNetRandom::RakNetRandom</a>()</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;{</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a834d8455dfa7dc94577bac72a987afdd">left</a>=-1;</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;}</div>
<div class="line"><a name="l00236"></a><span class="lineno"><a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a0dabc78664544c7da499b2d8af7b0d17"> 236</a></span>&#160;<a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a0dabc78664544c7da499b2d8af7b0d17">RakNetRandom::~RakNetRandom</a>()</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;{</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;}</div>
<div class="line"><a name="l00239"></a><span class="lineno"><a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a2d1a9a274688d7fd1554607d46cc5296"> 239</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a2d1a9a274688d7fd1554607d46cc5296">RakNetRandom::SeedMT</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> seed )</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;{</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; printf(<span class="stringliteral">&quot;%i\n&quot;</span>,seed);</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a86290618479835cad5f671ed697300d2">seedMT</a>(seed, <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#aba4f23edc22bef0a75c33e70382d222e">state</a>, <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a761ead9b3dba5d701104d3b888216afa">next</a>, <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a834d8455dfa7dc94577bac72a987afdd">left</a>);</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;}</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;</div>
<div class="line"><a name="l00245"></a><span class="lineno"><a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a164966abc7632dc8d91b9f2f63c0565e"> 245</a></span>&#160;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a164966abc7632dc8d91b9f2f63c0565e">RakNetRandom::ReloadMT</a>( <span class="keywordtype">void</span> )</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;{</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a178fd12bfa864f97ce60b0d06aff9dd8">reloadMT</a>(<a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#aba4f23edc22bef0a75c33e70382d222e">state</a>, <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a761ead9b3dba5d701104d3b888216afa">next</a>, <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a834d8455dfa7dc94577bac72a987afdd">left</a>);</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;}</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div>
<div class="line"><a name="l00250"></a><span class="lineno"><a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#ac2661b0600af7f2a6f1d904c553c31bb"> 250</a></span>&#160;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#ac2661b0600af7f2a6f1d904c553c31bb">RakNetRandom::RandomMT</a>( <span class="keywordtype">void</span> )</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;{</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#a90046cfad3cc4ee544377abb9d435f34">randomMT</a>(<a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#aba4f23edc22bef0a75c33e70382d222e">state</a>, <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a761ead9b3dba5d701104d3b888216afa">next</a>, <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a834d8455dfa7dc94577bac72a987afdd">left</a>);</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;}</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div>
<div class="line"><a name="l00255"></a><span class="lineno"><a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a9ea13181c9510b9aeac3a53fb3eea7f3"> 255</a></span>&#160;<span class="keywordtype">float</span> <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a9ea13181c9510b9aeac3a53fb3eea7f3">RakNetRandom::FrandomMT</a>( <span class="keywordtype">void</span> )</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;{</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../da/d82/_rand_8cpp.xhtml#ae1893c71ce567b99bb84624d323368e2">frandomMT</a>(<a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#aba4f23edc22bef0a75c33e70382d222e">state</a>, <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a761ead9b3dba5d701104d3b888216afa">next</a>, <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a834d8455dfa7dc94577bac72a987afdd">left</a>);</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;}</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;</div>
<div class="line"><a name="l00260"></a><span class="lineno"><a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a0867ce7343610c295be7f1bddc6681f7"> 260</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a0867ce7343610c295be7f1bddc6681f7">RakNetRandom::FillBufferMT</a>( <span class="keywordtype">void</span> *buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bytes )</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;{</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <a class="code" href="../../da/d82/_rand_8cpp.xhtml#ade83f21ad5a606f79932ba432d97ced7">fillBufferMT</a>(buffer, bytes, <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#aba4f23edc22bef0a75c33e70382d222e">state</a>, <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a761ead9b3dba5d701104d3b888216afa">next</a>, <a class="code" href="../../df/dd4/class_s_l_net_1_1_rak_net_random.xhtml#a834d8455dfa7dc94577bac72a987afdd">left</a>);</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;}</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="comment">int main(void)</span></div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="comment">{</span></div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="comment">int j;</span></div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="comment">// you can seed with any uint32, but the best are odds in 0..(2^32 - 1)</span></div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;<span class="comment">seedMT(4357U);</span></div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<span class="comment">// print the first 2,002 random numbers seven to a line as an example</span></div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;<span class="comment">for(j=0; j&lt;2002; j++)</span></div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="comment">RAKNET_DEBUG_PRINTF(&quot; %10lu%s&quot;, (unsigned int) randomMT(), (j%7)==6 ? &quot;\n&quot; : &quot;&quot;);</span></div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;<span class="comment">return(EXIT_SUCCESS);</span></div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;<span class="comment">}</span></div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;</div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_d1eb22c2ecfd8b50f59e9cbaf8260105.xhtml">src</a></li><li class="navelem"><a class="el" href="../../da/d82/_rand_8cpp.xhtml">Rand.cpp</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:47 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,148 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Member List</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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.xhtml"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.xhtml"><span>Class&#160;Index</span></a></li>
<li><a href="../../inherits.xhtml"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.xhtml"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('db/d79/class_s_l_net_1_1_rak_net_command_parser.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">SLNet::RakNetCommandParser Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../db/d79/class_s_l_net_1_1_rak_net_command_parser.xhtml">SLNet::RakNetCommandParser</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="../../d5/d9a/class_s_l_net_1_1_command_parser_interface.xhtml#a9ebee7da1aed4260a4935e2954969239">commandList</a></td><td class="entry"><a class="el" href="../../d5/d9a/class_s_l_net_1_1_command_parser_interface.xhtml">SLNet::CommandParserInterface</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d5/d9a/class_s_l_net_1_1_command_parser_interface.xhtml#a7ba9f06e187e9ddab5ae7c029ea79622">CommandParserInterface</a>()</td><td class="entry"><a class="el" href="../../d5/d9a/class_s_l_net_1_1_command_parser_interface.xhtml">SLNet::CommandParserInterface</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../db/d79/class_s_l_net_1_1_rak_net_command_parser.xhtml#af3e9b29ca472451424c797cca4c558a8">GetName</a>(void) const </td><td class="entry"><a class="el" href="../../db/d79/class_s_l_net_1_1_rak_net_command_parser.xhtml">SLNet::RakNetCommandParser</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d5/d9a/class_s_l_net_1_1_command_parser_interface.xhtml#af207b9dd2bd9dd57ae6263f26ae4736b">GetRegisteredCommand</a>(const char *command, RegisteredCommand *rc)</td><td class="entry"><a class="el" href="../../d5/d9a/class_s_l_net_1_1_command_parser_interface.xhtml">SLNet::CommandParserInterface</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../db/d79/class_s_l_net_1_1_rak_net_command_parser.xhtml#af9165a826504c360aef3155dfaa1a4cb">OnCommand</a>(const char *command, unsigned numParameters, char **parameterList, TransportInterface *transport, const SystemAddress &amp;systemAddress, const char *originalString)</td><td class="entry"><a class="el" href="../../db/d79/class_s_l_net_1_1_rak_net_command_parser.xhtml">SLNet::RakNetCommandParser</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d5/d9a/class_s_l_net_1_1_command_parser_interface.xhtml#aff1ffd9c6fed37db3b9e06f5cdda776c">OnConnectionLost</a>(const SystemAddress &amp;systemAddress, TransportInterface *transport)</td><td class="entry"><a class="el" href="../../d5/d9a/class_s_l_net_1_1_command_parser_interface.xhtml">SLNet::CommandParserInterface</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d5/d9a/class_s_l_net_1_1_command_parser_interface.xhtml#a9a7dcfe0cc123bfd8df26ba1bd8ab4f8">OnNewIncomingConnection</a>(const SystemAddress &amp;systemAddress, TransportInterface *transport)</td><td class="entry"><a class="el" href="../../d5/d9a/class_s_l_net_1_1_command_parser_interface.xhtml">SLNet::CommandParserInterface</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d5/d9a/class_s_l_net_1_1_command_parser_interface.xhtml#a4910fac51a4b7c1180dd36251289def7">OnTransportChange</a>(TransportInterface *transport)</td><td class="entry"><a class="el" href="../../d5/d9a/class_s_l_net_1_1_command_parser_interface.xhtml">SLNet::CommandParserInterface</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d5/d9a/class_s_l_net_1_1_command_parser_interface.xhtml#a5f24234afcc66d0591109ef74b4d1239">ParseConsoleString</a>(char *str, const char delineator, unsigned char delineatorToggle, unsigned *numParameters, char **parameterList, unsigned parameterListLength)</td><td class="entry"><a class="el" href="../../d5/d9a/class_s_l_net_1_1_command_parser_interface.xhtml">SLNet::CommandParserInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="../../db/d79/class_s_l_net_1_1_rak_net_command_parser.xhtml#afebbfad61baa361178bfea7d0ce7fdbb">peer</a></td><td class="entry"><a class="el" href="../../db/d79/class_s_l_net_1_1_rak_net_command_parser.xhtml">SLNet::RakNetCommandParser</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../db/d79/class_s_l_net_1_1_rak_net_command_parser.xhtml#a9121e6542dff09bf2b357f2155cf3e68">RakNetCommandParser</a>()</td><td class="entry"><a class="el" href="../../db/d79/class_s_l_net_1_1_rak_net_command_parser.xhtml">SLNet::RakNetCommandParser</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d5/d9a/class_s_l_net_1_1_command_parser_interface.xhtml#af567f77880a28f0662de71d2b115ee40">RegisterCommand</a>(unsigned char parameterCount, const char *command, const char *commandHelp)</td><td class="entry"><a class="el" href="../../d5/d9a/class_s_l_net_1_1_command_parser_interface.xhtml">SLNet::CommandParserInterface</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d5/d9a/class_s_l_net_1_1_command_parser_interface.xhtml#aaa19fe99cd9223c972ff11369cd9179c">ReturnResult</a>(bool res, const char *command, TransportInterface *transport, const SystemAddress &amp;systemAddress)</td><td class="entry"><a class="el" href="../../d5/d9a/class_s_l_net_1_1_command_parser_interface.xhtml">SLNet::CommandParserInterface</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d5/d9a/class_s_l_net_1_1_command_parser_interface.xhtml#acb34c1b3b505bc602fa7ecc0af8bad1a">ReturnResult</a>(char *res, const char *command, TransportInterface *transport, const SystemAddress &amp;systemAddress)</td><td class="entry"><a class="el" href="../../d5/d9a/class_s_l_net_1_1_command_parser_interface.xhtml">SLNet::CommandParserInterface</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d5/d9a/class_s_l_net_1_1_command_parser_interface.xhtml#a7409a39e68431493d7194720cbae91f9">ReturnResult</a>(SystemAddress res, const char *command, TransportInterface *transport, const SystemAddress &amp;systemAddress)</td><td class="entry"><a class="el" href="../../d5/d9a/class_s_l_net_1_1_command_parser_interface.xhtml">SLNet::CommandParserInterface</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d5/d9a/class_s_l_net_1_1_command_parser_interface.xhtml#a86419b3c8042227f0ad30335f4e35666">ReturnResult</a>(int res, const char *command, TransportInterface *transport, const SystemAddress &amp;systemAddress)</td><td class="entry"><a class="el" href="../../d5/d9a/class_s_l_net_1_1_command_parser_interface.xhtml">SLNet::CommandParserInterface</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d5/d9a/class_s_l_net_1_1_command_parser_interface.xhtml#a722b48ee2b088b3d471e978980babac6">ReturnResult</a>(const char *command, TransportInterface *transport, const SystemAddress &amp;systemAddress)</td><td class="entry"><a class="el" href="../../d5/d9a/class_s_l_net_1_1_command_parser_interface.xhtml">SLNet::CommandParserInterface</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d5/d9a/class_s_l_net_1_1_command_parser_interface.xhtml#a2e03d50221b92ab98b41d1f66b8001cb">SendCommandList</a>(TransportInterface *transport, const SystemAddress &amp;systemAddress)</td><td class="entry"><a class="el" href="../../d5/d9a/class_s_l_net_1_1_command_parser_interface.xhtml">SLNet::CommandParserInterface</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../db/d79/class_s_l_net_1_1_rak_net_command_parser.xhtml#a5ee8241d1bd3572d5d923afddf5401aa">SendHelp</a>(TransportInterface *transport, const SystemAddress &amp;systemAddress)</td><td class="entry"><a class="el" href="../../db/d79/class_s_l_net_1_1_rak_net_command_parser.xhtml">SLNet::RakNetCommandParser</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="../../db/d79/class_s_l_net_1_1_rak_net_command_parser.xhtml#a1586191c95f79b0699e5aaaa6901420d">SetRakPeerInterface</a>(SLNet::RakPeerInterface *rakPeer)</td><td class="entry"><a class="el" href="../../db/d79/class_s_l_net_1_1_rak_net_command_parser.xhtml">SLNet::RakNetCommandParser</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d5/d9a/class_s_l_net_1_1_command_parser_interface.xhtml#af22a712a9db931075f8ea8f6a6c5e930">VARIABLE_NUMBER_OF_PARAMETERS</a></td><td class="entry"><a class="el" href="../../d5/d9a/class_s_l_net_1_1_command_parser_interface.xhtml">SLNet::CommandParserInterface</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d5/d9a/class_s_l_net_1_1_command_parser_interface.xhtml#a9ed8b0c6f394233b23c09ab24af22475">~CommandParserInterface</a>()</td><td class="entry"><a class="el" href="../../d5/d9a/class_s_l_net_1_1_command_parser_interface.xhtml">SLNet::CommandParserInterface</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../db/d79/class_s_l_net_1_1_rak_net_command_parser.xhtml#a742f991a361b676ce6523e05404e27fc">~RakNetCommandParser</a>()</td><td class="entry"><a class="el" href="../../db/d79/class_s_l_net_1_1_rak_net_command_parser.xhtml">SLNet::RakNetCommandParser</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Wed Aug 14 2019 22:09:49 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,142 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Source/include/slikenet/SignaledEvent.h File 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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../files.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/d90/_signaled_event_8h.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">SignaledEvent.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;pthread.h&gt;</code><br/>
<code>#include &lt;sys/types.h&gt;</code><br/>
<code>#include &quot;<a class="el" href="../../d7/ddd/_simple_mutex_8h_source.xhtml">SimpleMutex.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../db/dbd/_export_8h_source.xhtml">Export.h</a>&quot;</code><br/>
</div>
<p><a href="../../da/d90/_signaled_event_8h_source.xhtml">Go to the source code of this file.</a></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="../../df/d28/class_s_l_net_1_1_signaled_event.xhtml">SLNet::SignaledEvent</a></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="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:dd/d30/namespace_s_l_net"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d30/namespace_s_l_net.xhtml">SLNet</a></td></tr>
<tr class="memdesc:dd/d30/namespace_s_l_net"><td class="mdescLeft">&#160;</td><td class="mdescRight">Simple class to send changes between directories. In essence, a simple autopatcher that can be used for transmitting levels, skins, etc. <br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../da/d90/_signaled_event_8h.xhtml">SignaledEvent.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,195 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Source/include/slikenet/SignaledEvent.h Source File</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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../files.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/d90/_signaled_event_8h_source.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">SignaledEvent.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../da/d90/_signaled_event_8h.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Original work: Copyright (c) 2014, Oculus VR, Inc.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This source code is licensed under the BSD-style license found in the</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * RakNet License.txt file in the licenses directory of this source tree. An additional grant </span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of patent rights can be found in the RakNet Patents.txt file in the same directory.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Modified work: Copyright (c) 2017, SLikeSoft UG (haftungsbeschränkt)</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * license found in the license.txt file in the root directory of this source tree.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#ifndef __SIGNALED_EVENT_H</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define __SIGNALED_EVENT_H</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#if defined(_WIN32)</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &quot;<a class="code" href="../../db/d43/_windows_includes_8h.xhtml">WindowsIncludes.h</a>&quot;</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor"></span><span class="preprocessor"> #include &lt;pthread.h&gt;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor"> #include &lt;sys/types.h&gt;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor"> #include &quot;<a class="code" href="../../d7/ddd/_simple_mutex_8h.xhtml" title="[Internal] Encapsulates a mutex">SimpleMutex.h</a>&quot;</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../db/dbd/_export_8h.xhtml">Export.h</a>&quot;</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">namespace </span>SLNet</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div>
<div class="line"><a name="l00041"></a><span class="lineno"><a class="code" href="../../df/d28/class_s_l_net_1_1_signaled_event.xhtml"> 41</a></span>&#160;<span class="keyword">class </span><a class="code" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> <a class="code" href="../../df/d28/class_s_l_net_1_1_signaled_event.xhtml">SignaledEvent</a></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;{</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="../../df/d28/class_s_l_net_1_1_signaled_event.xhtml">SignaledEvent</a>();</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; ~<a class="code" href="../../df/d28/class_s_l_net_1_1_signaled_event.xhtml">SignaledEvent</a>();</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">void</span> InitEvent(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">void</span> CloseEvent(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordtype">void</span> SetEvent(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">void</span> WaitOnEvent(<span class="keywordtype">int</span> timeoutMs);</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="keyword">protected</span>:</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor">#ifdef _WIN32</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor"></span> HANDLE eventList;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"><a class="code" href="../../df/d28/class_s_l_net_1_1_signaled_event.xhtml#af521b4f339842f3530a3c58e1fd68ab7"> 61</a></span>&#160;<span class="preprocessor"></span> <a class="code" href="../../d9/da8/class_s_l_net_1_1_simple_mutex.xhtml" title="An easy to use mutex.">SimpleMutex</a> <a class="code" href="../../df/d28/class_s_l_net_1_1_signaled_event.xhtml#af521b4f339842f3530a3c58e1fd68ab7">isSignaledMutex</a>;</div>
<div class="line"><a name="l00062"></a><span class="lineno"><a class="code" href="../../df/d28/class_s_l_net_1_1_signaled_event.xhtml#a7785df183098a54495fa4d8b3c0c6562"> 62</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="../../df/d28/class_s_l_net_1_1_signaled_event.xhtml#a7785df183098a54495fa4d8b3c0c6562">isSignaled</a>;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="preprocessor">#if !defined(ANDROID)</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"><a class="code" href="../../df/d28/class_s_l_net_1_1_signaled_event.xhtml#ac65769bdd321c197a83823e06097828e"> 64</a></span>&#160;<span class="preprocessor"></span> pthread_condattr_t <a class="code" href="../../df/d28/class_s_l_net_1_1_signaled_event.xhtml#ac65769bdd321c197a83823e06097828e">condAttr</a>;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"><a class="code" href="../../df/d28/class_s_l_net_1_1_signaled_event.xhtml#aeca4dbea9ec9562bace8040478278bbc"> 66</a></span>&#160;<span class="preprocessor"></span> pthread_cond_t <a class="code" href="../../df/d28/class_s_l_net_1_1_signaled_event.xhtml#aeca4dbea9ec9562bace8040478278bbc">eventList</a>;</div>
<div class="line"><a name="l00067"></a><span class="lineno"><a class="code" href="../../df/d28/class_s_l_net_1_1_signaled_event.xhtml#abd7e7985473f16a503095d2b0876ef39"> 67</a></span>&#160; pthread_mutex_t <a class="code" href="../../df/d28/class_s_l_net_1_1_signaled_event.xhtml#abd7e7985473f16a503095d2b0876ef39">hMutex</a>;</div>
<div class="line"><a name="l00068"></a><span class="lineno"><a class="code" href="../../df/d28/class_s_l_net_1_1_signaled_event.xhtml#a2f92a77de04886cfd74dcd6d7f97b145"> 68</a></span>&#160; pthread_mutexattr_t <a class="code" href="../../df/d28/class_s_l_net_1_1_signaled_event.xhtml#a2f92a77de04886cfd74dcd6d7f97b145">mutexAttr</a>;</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="preprocessor"></span>};</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;} <span class="comment">// namespace SLNet</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../da/d90/_signaled_event_8h.xhtml">SignaledEvent.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:46 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,149 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Source/include/slikenet/PacketFileLogger.h File 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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../files.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/db5/_packet_file_logger_8h.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">PacketFileLogger.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>This will write all incoming and outgoing network messages to a file.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="../../de/ddb/_native_feature_includes_8h_source.xhtml">NativeFeatureIncludes.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../de/dd0/_packet_logger_8h_source.xhtml">PacketLogger.h</a>&quot;</code><br/>
<code>#include &lt;stdio.h&gt;</code><br/>
</div>
<p><a href="../../da/db5/_packet_file_logger_8h_source.xhtml">Go to the source code of this file.</a></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:df/d0f/class_s_l_net_1_1_packet_file_logger"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d7d/group___p_a_c_k_e_t_l_o_g_g_e_r___g_r_o_u_p.xhtml#df/d0f/class_s_l_net_1_1_packet_file_logger">SLNet::PacketFileLogger</a></td></tr>
<tr class="memdesc:df/d0f/class_s_l_net_1_1_packet_file_logger"><td class="mdescLeft">&#160;</td><td class="mdescRight">Packetlogger that outputs to a file. <a href="../../dc/d7d/group___p_a_c_k_e_t_l_o_g_g_e_r___g_r_o_u_p.xhtml#df/d0f/class_s_l_net_1_1_packet_file_logger">More...</a><br/></td></tr>
<tr class="separator:df/d0f/class_s_l_net_1_1_packet_file_logger"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:dd/d30/namespace_s_l_net"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d30/namespace_s_l_net.xhtml">SLNet</a></td></tr>
<tr class="memdesc:dd/d30/namespace_s_l_net"><td class="mdescLeft">&#160;</td><td class="mdescRight">Simple class to send changes between directories. In essence, a simple autopatcher that can be used for transmitting levels, skins, etc. <br/></td></tr>
<tr class="separator:"><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>This will write all incoming and outgoing network messages to a file. </p>
<p>Definition in file <a class="el" href="../../da/db5/_packet_file_logger_8h_source.xhtml">PacketFileLogger.h</a>.</p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../da/db5/_packet_file_logger_8h.xhtml">PacketFileLogger.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,169 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Source/include/slikenet/PacketFileLogger.h Source File</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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../files.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/db5/_packet_file_logger_8h_source.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">PacketFileLogger.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../da/db5/_packet_file_logger_8h.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Original work: Copyright (c) 2014, Oculus VR, Inc.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This source code is licensed under the BSD-style license found in the</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * RakNet License.txt file in the licenses directory of this source tree. An additional grant </span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of patent rights can be found in the RakNet Patents.txt file in the same directory.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Modified work: Copyright (c) 2016-2017, SLikeSoft UG (haftungsbeschränkt)</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * license found in the license.txt file in the root directory of this source tree.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../de/ddb/_native_feature_includes_8h.xhtml">NativeFeatureIncludes.h</a>&quot;</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#if _RAKNET_SUPPORT_PacketLogger==1</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#ifndef __PACKET_FILE_LOGGER_H_</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define __PACKET_FILE_LOGGER_H_</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../de/dd0/_packet_logger_8h.xhtml" title="This will write all incoming and outgoing network messages to the local console screen. See derived functions for other outputs.">PacketLogger.h</a>&quot;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &lt;stdio.h&gt;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">namespace </span>SLNet</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;{</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
<div class="line"><a name="l00035"></a><span class="lineno"><a class="code" href="../../dc/d7d/group___p_a_c_k_e_t_l_o_g_g_e_r___g_r_o_u_p.xhtml"> 35</a></span>&#160;<span class="keyword">class </span><a class="code" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> <a class="code" href="../../dc/d7d/group___p_a_c_k_e_t_l_o_g_g_e_r___g_r_o_u_p.xhtml#df/d0f/class_s_l_net_1_1_packet_file_logger" title="Packetlogger that outputs to a file.">PacketFileLogger</a> : <span class="keyword">public</span> <a class="code" href="../../dc/d7d/group___p_a_c_k_e_t_l_o_g_g_e_r___g_r_o_u_p.xhtml#d9/d2e/class_s_l_net_1_1_packet_logger" title="Writes incoming and outgoing messages to the screen. This will write all incoming and outgoing messag...">PacketLogger</a></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="comment">// GetInstance() and DestroyInstance(instance*)</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="../../db/dbd/_export_8h.xhtml#af3e49377f340027d211b2814949efc48">STATIC_FACTORY_DECLARATIONS</a>(<a class="code" href="../../dc/d7d/group___p_a_c_k_e_t_l_o_g_g_e_r___g_r_o_u_p.xhtml#df/d0f/class_s_l_net_1_1_packet_file_logger" title="Packetlogger that outputs to a file.">PacketFileLogger</a>)</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="../../dc/d7d/group___p_a_c_k_e_t_l_o_g_g_e_r___g_r_o_u_p.xhtml#df/d0f/class_s_l_net_1_1_packet_file_logger" title="Packetlogger that outputs to a file.">PacketFileLogger</a>();</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="../../dc/d7d/group___p_a_c_k_e_t_l_o_g_g_e_r___g_r_o_u_p.xhtml#df/d0f/class_s_l_net_1_1_packet_file_logger" title="Packetlogger that outputs to a file.">PacketFileLogger</a>();</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">void</span> StartLog(<span class="keyword">const</span> <span class="keywordtype">char</span> *filenamePrefix);</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> WriteLog(<span class="keyword">const</span> <span class="keywordtype">char</span> *str);</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="keyword">protected</span>:</div>
<div class="line"><a name="l00046"></a><span class="lineno"><a class="code" href="../../dc/d7d/group___p_a_c_k_e_t_l_o_g_g_e_r___g_r_o_u_p.xhtml#ad52a0ae34355ec97a1a2c09d8b85f6d2"> 46</a></span>&#160; FILE *<a class="code" href="../../dc/d7d/group___p_a_c_k_e_t_l_o_g_g_e_r___g_r_o_u_p.xhtml#ad52a0ae34355ec97a1a2c09d8b85f6d2">packetLogFile</a>;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;};</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;} <span class="comment">// namespace SLNet</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor">#endif // _RAKNET_SUPPORT_*</span></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../da/db5/_packet_file_logger_8h.xhtml">PacketFileLogger.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:46 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,143 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Source/include/slikenet/DS_Heap.h File 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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../files.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/dcb/_d_s___heap_8h.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">DS_Heap.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="../../dd/dc5/memoryoverride_8h_source.xhtml">memoryoverride.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d9/d7f/_d_s___list_8h_source.xhtml">DS_List.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../db/dbd/_export_8h_source.xhtml">Export.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../dc/da7/assert_8h_source.xhtml">assert.h</a>&quot;</code><br/>
</div>
<p><a href="../../da/dcb/_d_s___heap_8h_source.xhtml">Go to the source code of this file.</a></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="../../d1/df3/class_data_structures_1_1_heap.xhtml">DataStructures::Heap&lt; weight_type, data_type, isMaxHeap &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d74/struct_data_structures_1_1_heap_1_1_heap_node.xhtml">DataStructures::Heap&lt; weight_type, data_type, isMaxHeap &gt;::HeapNode</a></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="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:da/d80/namespace_data_structures"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d80/namespace_data_structures.xhtml">DataStructures</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../da/dcb/_d_s___heap_8h.xhtml">DS_Heap.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,423 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Source/include/slikenet/DS_Heap.h Source File</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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../files.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/dcb/_d_s___heap_8h_source.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">DS_Heap.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../da/dcb/_d_s___heap_8h.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Original work: Copyright (c) 2014, Oculus VR, Inc.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This source code is licensed under the BSD-style license found in the</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * RakNet License.txt file in the licenses directory of this source tree. An additional grant </span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of patent rights can be found in the RakNet Patents.txt file in the same directory.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Modified work: Copyright (c) 2016-2017, SLikeSoft UG (haftungsbeschränkt)</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * license found in the license.txt file in the root directory of this source tree.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#ifndef __RAKNET_HEAP_H</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define __RAKNET_HEAP_H</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../dd/dc5/memoryoverride_8h.xhtml" title="If _USE_RAK_MEMORY_OVERRIDE is defined, memory allocations go through rakMalloc, rakRealloc, and rakFree.">memoryoverride.h</a>&quot;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d9/d7f/_d_s___list_8h.xhtml">DS_List.h</a>&quot;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../db/dbd/_export_8h.xhtml">Export.h</a>&quot;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../dc/da7/assert_8h.xhtml">assert.h</a>&quot;</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#pragma warning( push )</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keyword">namespace </span>DataStructures</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;{</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> weight_type, <span class="keyword">class</span> data_type, <span class="keywordtype">bool</span> isMaxHeap&gt;</div>
<div class="line"><a name="l00040"></a><span class="lineno"><a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml"> 40</a></span>&#160; <span class="keyword">class </span><a class="code" href="../../db/dbd/_export_8h.xhtml#ab0579394e418800d5c85e46ad6fcd61d">RAK_DLL_EXPORT</a> <a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml">Heap</a></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; {</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00043"></a><span class="lineno"><a class="code" href="../../d6/d74/struct_data_structures_1_1_heap_1_1_heap_node.xhtml"> 43</a></span>&#160; <span class="keyword">struct </span><a class="code" href="../../d6/d74/struct_data_structures_1_1_heap_1_1_heap_node.xhtml">HeapNode</a></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; {</div>
<div class="line"><a name="l00045"></a><span class="lineno"><a class="code" href="../../d6/d74/struct_data_structures_1_1_heap_1_1_heap_node.xhtml#ae96c7f0ab5a94d7d4ba11d60201e1393"> 45</a></span>&#160; <a class="code" href="../../d6/d74/struct_data_structures_1_1_heap_1_1_heap_node.xhtml#ae96c7f0ab5a94d7d4ba11d60201e1393">HeapNode</a>() {}</div>
<div class="line"><a name="l00046"></a><span class="lineno"><a class="code" href="../../d6/d74/struct_data_structures_1_1_heap_1_1_heap_node.xhtml#a3b64e29489c62b0226bd7be578612869"> 46</a></span>&#160; <a class="code" href="../../d6/d74/struct_data_structures_1_1_heap_1_1_heap_node.xhtml#a3b64e29489c62b0226bd7be578612869">HeapNode</a>(<span class="keyword">const</span> weight_type &amp;w, <span class="keyword">const</span> data_type &amp;d) : weight(w), data(d) {}</div>
<div class="line"><a name="l00047"></a><span class="lineno"><a class="code" href="../../d6/d74/struct_data_structures_1_1_heap_1_1_heap_node.xhtml#a5e5aff8b34509387425d3ed21fbca515"> 47</a></span>&#160; weight_type <a class="code" href="../../d6/d74/struct_data_structures_1_1_heap_1_1_heap_node.xhtml#a5e5aff8b34509387425d3ed21fbca515">weight</a>; <span class="comment">// I&#39;m assuming key is a native numerical type - float or int</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"><a class="code" href="../../d6/d74/struct_data_structures_1_1_heap_1_1_heap_node.xhtml#a78907004e24fc4a12b48c9c460fd657c"> 48</a></span>&#160; data_type <a class="code" href="../../d6/d74/struct_data_structures_1_1_heap_1_1_heap_node.xhtml#a78907004e24fc4a12b48c9c460fd657c">data</a>;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; };</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml">Heap</a>();</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; ~<a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml">Heap</a>();</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">void</span> Push(<span class="keyword">const</span> weight_type &amp;weight, <span class="keyword">const</span> data_type &amp;data, <span class="keyword">const</span> <span class="keywordtype">char</span> *file, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> line);</div>
<div class="line"><a name="l00055"></a><span class="lineno"><a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#a15fd87c401e7bbe80ebec8a316d2ede7"> 55</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#a15fd87c401e7bbe80ebec8a316d2ede7" title="Call before calling PushSeries, for a new series of items.">StartSeries</a>(<span class="keywordtype">void</span>) {optimizeNextSeriesPush=<span class="keyword">false</span>;}</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordtype">void</span> PushSeries(<span class="keyword">const</span> weight_type &amp;weight, <span class="keyword">const</span> data_type &amp;data, <span class="keyword">const</span> <span class="keywordtype">char</span> *file, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> line);</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; data_type Pop(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> startingIndex);</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; data_type Peek(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> startingIndex=0) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; weight_type PeekWeight(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> startingIndex=0) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordtype">void</span> Clear(<span class="keywordtype">bool</span> doNotDeallocateSmallBlocks, <span class="keyword">const</span> <span class="keywordtype">char</span> *file, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> line);</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; data_type&amp; operator[] ( <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> position ) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">unsigned</span> Size(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">protected</span>:</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">unsigned</span> LeftChild(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> i) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordtype">unsigned</span> RightChild(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> i) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordtype">unsigned</span> Parent(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> i) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordtype">void</span> Swap(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> i, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> j);</div>
<div class="line"><a name="l00070"></a><span class="lineno"><a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#ad8407ff11d87c8ebf97481e5c45e9859"> 70</a></span>&#160; <a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml">DataStructures::List&lt;HeapNode&gt;</a> <a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#ad8407ff11d87c8ebf97481e5c45e9859">heap</a>;</div>
<div class="line"><a name="l00071"></a><span class="lineno"><a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#af9136bef0034e8227c8ad3a22b0443d7"> 71</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#af9136bef0034e8227c8ad3a22b0443d7">optimizeNextSeriesPush</a>;</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; };</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> weight_type, <span class="keyword">class</span> data_type, <span class="keywordtype">bool</span> isMaxHeap&gt;</div>
<div class="line"><a name="l00075"></a><span class="lineno"><a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#a2331fc1cdcd5d814c97da4a3d8d16de1"> 75</a></span>&#160; <a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#a2331fc1cdcd5d814c97da4a3d8d16de1">Heap&lt;weight_type, data_type, isMaxHeap&gt;::Heap</a>()</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; {</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; optimizeNextSeriesPush=<span class="keyword">false</span>;</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> weight_type, <span class="keyword">class</span> data_type, <span class="keywordtype">bool</span> isMaxHeap&gt;</div>
<div class="line"><a name="l00081"></a><span class="lineno"><a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#acc3b571e2c4cd62ea55da95f71201b93"> 81</a></span>&#160; <a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#acc3b571e2c4cd62ea55da95f71201b93">Heap&lt;weight_type, data_type, isMaxHeap&gt;::~Heap</a>()</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; {</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="comment">//Clear(true, _FILE_AND_LINE_);</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; }</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> weight_type, <span class="keyword">class</span> data_type, <span class="keywordtype">bool</span> isMaxHeap&gt;</div>
<div class="line"><a name="l00087"></a><span class="lineno"><a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#a1fed605d6f9b5afc6e3e63f449afade6"> 87</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#a1fed605d6f9b5afc6e3e63f449afade6" title="If you are going to push a list of items, where the weights of the items on the list are in order and...">Heap&lt;weight_type, data_type, isMaxHeap&gt;::PushSeries</a>(<span class="keyword">const</span> weight_type &amp;weight, <span class="keyword">const</span> data_type &amp;data, <span class="keyword">const</span> <span class="keywordtype">char</span> *file, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> line)</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; {</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">if</span> (optimizeNextSeriesPush==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="comment">// If the weight of what we are inserting is greater than / less than in order of the heap of every sibling and sibling of parent, then can optimize next push</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordtype">unsigned</span> currentIndex = heap.Size();</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordtype">unsigned</span> parentIndex;</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">if</span> (currentIndex&gt;0)</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; {</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">for</span> (parentIndex = Parent(currentIndex); parentIndex &lt; currentIndex; parentIndex++)</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; {</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#pragma warning(disable:4127) // conditional expression is constant</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">if</span> (isMaxHeap)</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; {</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="comment">// Every child is less than its parent</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">if</span> (weight&gt;heap[parentIndex].weight)</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; {</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="comment">// Can&#39;t optimize</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; Push(weight,data,file,line);</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; }</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; {</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="comment">// Every child is greater than than its parent</span></div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">if</span> (weight&lt;heap[parentIndex].weight)</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; {</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="comment">// Can&#39;t optimize</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; Push(weight,data,file,line);</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; }</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; }</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; }</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="comment">// Parent&#39;s subsequent siblings and this row&#39;s siblings all are less than / greater than inserted element. Can insert all further elements straight to the end</span></div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; heap.Insert(<a class="code" href="../../d6/d74/struct_data_structures_1_1_heap_1_1_heap_node.xhtml">HeapNode</a>(weight, data), file, line);</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; optimizeNextSeriesPush=<span class="keyword">true</span>;</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; {</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; heap.Insert(<a class="code" href="../../d6/d74/struct_data_structures_1_1_heap_1_1_heap_node.xhtml">HeapNode</a>(weight, data), file, line);</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; }</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> weight_type, <span class="keyword">class</span> data_type, <span class="keywordtype">bool</span> isMaxHeap&gt;</div>
<div class="line"><a name="l00135"></a><span class="lineno"><a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#aa01a134957e811c1af719805d493b700"> 135</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#aa01a134957e811c1af719805d493b700">Heap&lt;weight_type, data_type, isMaxHeap&gt;::Push</a>(<span class="keyword">const</span> weight_type &amp;weight, <span class="keyword">const</span> data_type &amp;data, <span class="keyword">const</span> <span class="keywordtype">char</span> *file, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> line)</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordtype">unsigned</span> currentIndex = heap.Size();</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordtype">unsigned</span> parentIndex;</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; heap.Insert(<a class="code" href="../../d6/d74/struct_data_structures_1_1_heap_1_1_heap_node.xhtml">HeapNode</a>(weight, data), file, line);</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">while</span> (currentIndex!=0)</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; {</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; parentIndex = Parent(currentIndex);</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#pragma warning( disable : 4127 ) // warning C4127: conditional expression is constant</span></div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">if</span> (isMaxHeap)</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; {</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">if</span> (heap[parentIndex].weight &lt; weight)</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; {</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; Swap(currentIndex, parentIndex);</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; currentIndex=parentIndex;</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; }</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; {</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">if</span> (heap[parentIndex].weight &gt; weight)</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; {</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; Swap(currentIndex, parentIndex);</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; currentIndex=parentIndex;</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; }</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; }</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; }</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; }</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> weight_type, <span class="keyword">class</span> data_type, <span class="keywordtype">bool</span> isMaxHeap&gt;</div>
<div class="line"><a name="l00170"></a><span class="lineno"><a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#a9ce961937f06f77b7ad82a02ce8d64ac"> 170</a></span>&#160; data_type <a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#a9ce961937f06f77b7ad82a02ce8d64ac">Heap&lt;weight_type, data_type, isMaxHeap&gt;::Pop</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> startingIndex)</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; {</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="comment">// While we have children, swap out with the larger of the two children.</span></div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="comment">// This line will assert on an empty heap</span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; data_type returnValue=heap[startingIndex].data;</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="comment">// Move the last element to the head, and re-heapify</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; heap[startingIndex]=heap[heap.Size()-1];</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordtype">unsigned</span> currentIndex,leftChild,rightChild;</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; weight_type currentWeight;</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; currentIndex=startingIndex;</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; currentWeight=heap[startingIndex].weight;</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; heap.RemoveFromEnd();</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#pragma warning( disable : 4127 ) // warning C4127: conditional expression is constant</span></div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">for</span>(;;)</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; {</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; leftChild=LeftChild(currentIndex);</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; rightChild=RightChild(currentIndex);</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">if</span> (leftChild &gt;= heap.Size())</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; {</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="comment">// Done</span></div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">return</span> returnValue;</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; }</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">if</span> (rightChild &gt;= heap.Size())</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; {</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="comment">// Only left node.</span></div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">if</span> ((isMaxHeap==<span class="keyword">true</span> &amp;&amp; currentWeight &lt; heap[leftChild].weight) ||</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; (isMaxHeap==<span class="keyword">false</span> &amp;&amp; currentWeight &gt; heap[leftChild].weight))</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; Swap(leftChild, currentIndex);</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">return</span> returnValue;</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; }</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; {</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="comment">// Swap with the bigger/smaller of the two children and continue</span></div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">if</span> (isMaxHeap)</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; {</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">if</span> (heap[leftChild].weight &lt;= currentWeight &amp;&amp; heap[rightChild].weight &lt;= currentWeight)</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">return</span> returnValue;</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">if</span> (heap[leftChild].weight &gt; heap[rightChild].weight)</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; {</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; Swap(leftChild, currentIndex);</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; currentIndex=leftChild;</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; }</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; {</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; Swap(rightChild, currentIndex);</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; currentIndex=rightChild;</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; }</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; }</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; {</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">if</span> (heap[leftChild].weight &gt;= currentWeight &amp;&amp; heap[rightChild].weight &gt;= currentWeight)</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">return</span> returnValue;</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">if</span> (heap[leftChild].weight &lt; heap[rightChild].weight)</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; {</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; Swap(leftChild, currentIndex);</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; currentIndex=leftChild;</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; }</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; {</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; Swap(rightChild, currentIndex);</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; currentIndex=rightChild;</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; }</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; }</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; }</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; }</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; }</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> weight_type, <span class="keyword">class</span> data_type, <span class="keywordtype">bool</span> isMaxHeap&gt;</div>
<div class="line"><a name="l00247"></a><span class="lineno"><a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#a99bc18efa747659ec6891ef056d8a4ab"> 247</a></span>&#160; <span class="keyword">inline</span> data_type <a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#a99bc18efa747659ec6891ef056d8a4ab">Heap&lt;weight_type, data_type, isMaxHeap&gt;::Peek</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> startingIndex)<span class="keyword"> const</span></div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">return</span> heap[startingIndex].data;</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; }</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> weight_type, <span class="keyword">class</span> data_type, <span class="keywordtype">bool</span> isMaxHeap&gt;</div>
<div class="line"><a name="l00253"></a><span class="lineno"><a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#a50ae6f55a75156e2ab679a0575ebe7ef"> 253</a></span>&#160; <span class="keyword">inline</span> weight_type <a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#a50ae6f55a75156e2ab679a0575ebe7ef">Heap&lt;weight_type, data_type, isMaxHeap&gt;::PeekWeight</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> startingIndex)<span class="keyword"> const</span></div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">return</span> heap[startingIndex].weight;</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; }</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> weight_type, <span class="keyword">class</span> data_type, <span class="keywordtype">bool</span> isMaxHeap&gt;</div>
<div class="line"><a name="l00259"></a><span class="lineno"><a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#ab573390b91ff42db9465a289f1c417de"> 259</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#ab573390b91ff42db9465a289f1c417de">Heap&lt;weight_type, data_type, isMaxHeap&gt;::Clear</a>(<span class="keywordtype">bool</span> doNotDeallocateSmallBlocks, <span class="keyword">const</span> <span class="keywordtype">char</span> *file, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> line)</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; {</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; heap.Clear(doNotDeallocateSmallBlocks, file, line);</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; }</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> weight_type, <span class="keyword">class</span> data_type, <span class="keywordtype">bool</span> isMaxHeap&gt;</div>
<div class="line"><a name="l00265"></a><span class="lineno"><a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#a6acedaf4d89f1de86e0ea256a4773b31"> 265</a></span>&#160; <span class="keyword">inline</span> data_type&amp; <a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#a6acedaf4d89f1de86e0ea256a4773b31">Heap&lt;weight_type, data_type, isMaxHeap&gt;::operator[] </a>( <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> position )<span class="keyword"> const</span></div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">return</span> heap[position].data;</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; }</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> weight_type, <span class="keyword">class</span> data_type, <span class="keywordtype">bool</span> isMaxHeap&gt;</div>
<div class="line"><a name="l00270"></a><span class="lineno"><a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#acdb7d16c52998d6fc8a7b1a8602b8906"> 270</a></span>&#160; <span class="keywordtype">unsigned</span> <a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#acdb7d16c52998d6fc8a7b1a8602b8906">Heap&lt;weight_type, data_type, isMaxHeap&gt;::Size</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">return</span> heap.Size();</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; }</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> weight_type, <span class="keyword">class</span> data_type, <span class="keywordtype">bool</span> isMaxHeap&gt;</div>
<div class="line"><a name="l00276"></a><span class="lineno"><a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#a9317b3913a553113cd3a04ef471e595e"> 276</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#a9317b3913a553113cd3a04ef471e595e">Heap&lt;weight_type, data_type, isMaxHeap&gt;::LeftChild</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> i)<span class="keyword"> const</span></div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">return</span> i*2+1;</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; }</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> weight_type, <span class="keyword">class</span> data_type, <span class="keywordtype">bool</span> isMaxHeap&gt;</div>
<div class="line"><a name="l00282"></a><span class="lineno"><a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#aa5363b61f35910c7754ded825000df27"> 282</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#aa5363b61f35910c7754ded825000df27">Heap&lt;weight_type, data_type, isMaxHeap&gt;::RightChild</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> i)<span class="keyword"> const</span></div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">return</span> i*2+2;</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; }</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> weight_type, <span class="keyword">class</span> data_type, <span class="keywordtype">bool</span> isMaxHeap&gt;</div>
<div class="line"><a name="l00288"></a><span class="lineno"><a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#a4b7d3b580d84c3884139f8599142ca51"> 288</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#a4b7d3b580d84c3884139f8599142ca51">Heap&lt;weight_type, data_type, isMaxHeap&gt;::Parent</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> i)<span class="keyword"> const</span></div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;<span class="preprocessor">#ifdef _DEBUG</span></div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;<span class="preprocessor"></span> <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(i!=0);</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">return</span> (i-1)/2;</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; }</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> weight_type, <span class="keyword">class</span> data_type, <span class="keywordtype">bool</span> isMaxHeap&gt;</div>
<div class="line"><a name="l00297"></a><span class="lineno"><a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#a6037614b00405c5a57d06d0b98264f3f"> 297</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#a6037614b00405c5a57d06d0b98264f3f">Heap&lt;weight_type, data_type, isMaxHeap&gt;::Swap</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> i, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> j)</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; {</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <a class="code" href="../../d6/d74/struct_data_structures_1_1_heap_1_1_heap_node.xhtml">HeapNode</a> temp;</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; temp=heap[i];</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; heap[i]=heap[j];</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; heap[j]=temp;</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; }</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;}</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#pragma warning( pop )</span></div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../da/dcb/_d_s___heap_8h.xhtml">DS_Heap.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:46 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,18 @@
var class_data_structures_1_1_threadsafe_allocating_queue =
[
[ "Allocate", "da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#aa95962ea9808cd598c13048c31c52c6e", null ],
[ "Clear", "da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#a48ffb49251ed59f0fbf54d0226e374e0", null ],
[ "Deallocate", "da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#a0eec464ecd7aa8af770e1ceb406661bf", null ],
[ "IsEmpty", "da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#a0e9dcb3ab5bb94af7535c41468a233c0", null ],
[ "operator[]", "da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#aeffe0642e5cea2431c976415955a1460", null ],
[ "Pop", "da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#aeaee4f85f6aa6870a2eb57c533ba13f5", null ],
[ "PopInaccurate", "da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#aad86452e470ac42bbfe656aed0b192a2", null ],
[ "Push", "da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#a768320d1f04005713d0d94bd3b5a7f43", null ],
[ "RemoveAtIndex", "da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#aa7a9ab0c4effa28652d64eb7624c810f", null ],
[ "SetPageSize", "da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#a833da782723daa209092fa29b29fbc94", null ],
[ "Size", "da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#aa2887f954c636f22b9463383ec7eb144", null ],
[ "memoryPool", "da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#ad03957d4e81bbe15a87872844fa766f6", null ],
[ "memoryPoolMutex", "da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#ad8d18997393e8f1b1df780079fee9f25", null ],
[ "queue", "da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#ae89e097ad6d19614990c8566a55ec7a7", null ],
[ "queueMutex", "da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#a8ed3acc9c79a2c5586bfe44bfc383184", null ]
];

View File

@ -0,0 +1,551 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: DataStructures::ThreadsafeAllocatingQueue&lt; structureType &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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.xhtml"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.xhtml"><span>Class&#160;Index</span></a></li>
<li><a href="../../inherits.xhtml"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.xhtml"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="../../d6/d79/class_data_structures_1_1_threadsafe_allocating_queue-members.xhtml">List of all members</a> </div>
<div class="headertitle">
<div class="title">DataStructures::ThreadsafeAllocatingQueue&lt; structureType &gt; Class Template Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml">slikenet/DS_ThreadsafeAllocatingQueue.h</a>&gt;</code></p>
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
<img id="dynsection-0-trigger" src="../../closed.png" alt="+"/> Inheritance diagram for DataStructures::ThreadsafeAllocatingQueue&lt; structureType &gt;:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="../../dc/d96/class_data_structures_1_1_threadsafe_allocating_queue__inherit__graph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
<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:a768320d1f04005713d0d94bd3b5a7f43"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#a768320d1f04005713d0d94bd3b5a7f43">Push</a> (structureType *s)</td></tr>
<tr class="separator:a768320d1f04005713d0d94bd3b5a7f43"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad86452e470ac42bbfe656aed0b192a2"><td class="memItemLeft" align="right" valign="top">structureType *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#aad86452e470ac42bbfe656aed0b192a2">PopInaccurate</a> (void)</td></tr>
<tr class="separator:aad86452e470ac42bbfe656aed0b192a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeaee4f85f6aa6870a2eb57c533ba13f5"><td class="memItemLeft" align="right" valign="top">structureType *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#aeaee4f85f6aa6870a2eb57c533ba13f5">Pop</a> (void)</td></tr>
<tr class="separator:aeaee4f85f6aa6870a2eb57c533ba13f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a833da782723daa209092fa29b29fbc94"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#a833da782723daa209092fa29b29fbc94">SetPageSize</a> (int size)</td></tr>
<tr class="separator:a833da782723daa209092fa29b29fbc94"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0e9dcb3ab5bb94af7535c41468a233c0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#a0e9dcb3ab5bb94af7535c41468a233c0">IsEmpty</a> (void)</td></tr>
<tr class="separator:a0e9dcb3ab5bb94af7535c41468a233c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeffe0642e5cea2431c976415955a1460"><td class="memItemLeft" align="right" valign="top">structureType *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#aeffe0642e5cea2431c976415955a1460">operator[]</a> (unsigned int position)</td></tr>
<tr class="separator:aeffe0642e5cea2431c976415955a1460"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa7a9ab0c4effa28652d64eb7624c810f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#aa7a9ab0c4effa28652d64eb7624c810f">RemoveAtIndex</a> (unsigned int position)</td></tr>
<tr class="separator:aa7a9ab0c4effa28652d64eb7624c810f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2887f954c636f22b9463383ec7eb144"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#aa2887f954c636f22b9463383ec7eb144">Size</a> (void)</td></tr>
<tr class="separator:aa2887f954c636f22b9463383ec7eb144"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa95962ea9808cd598c13048c31c52c6e"><td class="memItemLeft" align="right" valign="top">structureType *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#aa95962ea9808cd598c13048c31c52c6e">Allocate</a> (const char *file, unsigned int line)</td></tr>
<tr class="separator:aa95962ea9808cd598c13048c31c52c6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0eec464ecd7aa8af770e1ceb406661bf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#a0eec464ecd7aa8af770e1ceb406661bf">Deallocate</a> (structureType *s, const char *file, unsigned int line)</td></tr>
<tr class="separator:a0eec464ecd7aa8af770e1ceb406661bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a48ffb49251ed59f0fbf54d0226e374e0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#a48ffb49251ed59f0fbf54d0226e374e0">Clear</a> (const char *file, unsigned int line)</td></tr>
<tr class="separator:a48ffb49251ed59f0fbf54d0226e374e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:ad03957d4e81bbe15a87872844fa766f6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../de/df9/class_data_structures_1_1_memory_pool.xhtml">MemoryPool</a>&lt; structureType &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#ad03957d4e81bbe15a87872844fa766f6">memoryPool</a></td></tr>
<tr class="separator:ad03957d4e81bbe15a87872844fa766f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad8d18997393e8f1b1df780079fee9f25"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d9/da8/class_s_l_net_1_1_simple_mutex.xhtml">SLNet::SimpleMutex</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#ad8d18997393e8f1b1df780079fee9f25">memoryPoolMutex</a></td></tr>
<tr class="separator:ad8d18997393e8f1b1df780079fee9f25"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae89e097ad6d19614990c8566a55ec7a7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml">Queue</a>&lt; structureType * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#ae89e097ad6d19614990c8566a55ec7a7">queue</a></td></tr>
<tr class="separator:ae89e097ad6d19614990c8566a55ec7a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8ed3acc9c79a2c5586bfe44bfc383184"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d9/da8/class_s_l_net_1_1_simple_mutex.xhtml">SLNet::SimpleMutex</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml#a8ed3acc9c79a2c5586bfe44bfc383184">queueMutex</a></td></tr>
<tr class="separator:a8ed3acc9c79a2c5586bfe44bfc383184"><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 structureType&gt;<br/>
class DataStructures::ThreadsafeAllocatingQueue&lt; structureType &gt;</h3>
<p>Definition at line <a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml#l00037">37</a> of file <a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml">DS_ThreadsafeAllocatingQueue.h</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="aa95962ea9808cd598c13048c31c52c6e"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class structureType &gt; </div>
<table class="memname">
<tr>
<td class="memname">structureType * <a class="el" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml">DataStructures::ThreadsafeAllocatingQueue</a>&lt; structureType &gt;::Allocate </td>
<td>(</td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>file</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>line</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml#l00101">101</a> of file <a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml">DS_ThreadsafeAllocatingQueue.h</a>.</p>
<p>Referenced by <a class="el" href="../../d5/d55/_rak_peer_8cpp_source.xhtml#l02830">SLNet::RakPeer::ChangeSystemAddress()</a>, <a class="el" href="../../d5/d55/_rak_peer_8cpp_source.xhtml#l04101">SLNet::RakPeer::CloseConnectionInternal()</a>, <a class="el" href="../../d5/d55/_rak_peer_8cpp_source.xhtml#l02847">SLNet::RakPeer::GetSocket()</a>, <a class="el" href="../../d5/d55/_rak_peer_8cpp_source.xhtml#l02882">SLNet::RakPeer::GetSockets()</a>, <a class="el" href="../../d5/d55/_rak_peer_8cpp_source.xhtml#l05540">SLNet::RakPeer::RunUpdateCycle()</a>, <a class="el" href="../../d5/d55/_rak_peer_8cpp_source.xhtml#l04173">SLNet::RakPeer::SendBuffered()</a>, and <a class="el" href="../../d5/d55/_rak_peer_8cpp_source.xhtml#l04209">SLNet::RakPeer::SendBufferedList()</a>.</p>
</div>
</div>
<a class="anchor" id="a48ffb49251ed59f0fbf54d0226e374e0"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class structureType &gt; </div>
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml">DataStructures::ThreadsafeAllocatingQueue</a>&lt; structureType &gt;::Clear </td>
<td>(</td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>file</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>line</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml#l00122">122</a> of file <a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml">DS_ThreadsafeAllocatingQueue.h</a>.</p>
<p>Referenced by <a class="el" href="../../d5/d55/_rak_peer_8cpp_source.xhtml#l04401">SLNet::RakPeer::ClearBufferedCommands()</a>, and <a class="el" href="../../d5/d55/_rak_peer_8cpp_source.xhtml#l04415">SLNet::RakPeer::ClearSocketQueryOutput()</a>.</p>
</div>
</div>
<a class="anchor" id="a0eec464ecd7aa8af770e1ceb406661bf"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class structureType&gt; </div>
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml">DataStructures::ThreadsafeAllocatingQueue</a>&lt; structureType &gt;::Deallocate </td>
<td>(</td>
<td class="paramtype">structureType *&#160;</td>
<td class="paramname"><em>s</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>file</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>line</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml#l00112">112</a> of file <a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml">DS_ThreadsafeAllocatingQueue.h</a>.</p>
<p>Referenced by <a class="el" href="../../d5/d55/_rak_peer_8cpp_source.xhtml#l04401">SLNet::RakPeer::ClearBufferedCommands()</a>, <a class="el" href="../../d5/d55/_rak_peer_8cpp_source.xhtml#l02847">SLNet::RakPeer::GetSocket()</a>, <a class="el" href="../../d5/d55/_rak_peer_8cpp_source.xhtml#l02882">SLNet::RakPeer::GetSockets()</a>, <a class="el" href="../../d5/d55/_rak_peer_8cpp_source.xhtml#l05540">SLNet::RakPeer::RunUpdateCycle()</a>, and <a class="el" href="../../d5/d55/_rak_peer_8cpp_source.xhtml#l04173">SLNet::RakPeer::SendBuffered()</a>.</p>
</div>
</div>
<a class="anchor" id="a0e9dcb3ab5bb94af7535c41468a233c0"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class structureType &gt; </div>
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml">DataStructures::ThreadsafeAllocatingQueue</a>&lt; structureType &gt;::IsEmpty </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml#l00144">144</a> of file <a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml">DS_ThreadsafeAllocatingQueue.h</a>.</p>
</div>
</div>
<a class="anchor" id="aeffe0642e5cea2431c976415955a1460"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class structureType &gt; </div>
<table class="memname">
<tr>
<td class="memname">structureType * <a class="el" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml">DataStructures::ThreadsafeAllocatingQueue</a>&lt; structureType &gt;::operator[] </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>position</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml#l00154">154</a> of file <a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml">DS_ThreadsafeAllocatingQueue.h</a>.</p>
</div>
</div>
<a class="anchor" id="aeaee4f85f6aa6870a2eb57c533ba13f5"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class structureType &gt; </div>
<table class="memname">
<tr>
<td class="memname">structureType * <a class="el" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml">DataStructures::ThreadsafeAllocatingQueue</a>&lt; structureType &gt;::Pop </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml#l00086">86</a> of file <a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml">DS_ThreadsafeAllocatingQueue.h</a>.</p>
<p>Referenced by <a class="el" href="../../d5/d55/_rak_peer_8cpp_source.xhtml#l04401">SLNet::RakPeer::ClearBufferedCommands()</a>, <a class="el" href="../../d5/d55/_rak_peer_8cpp_source.xhtml#l02847">SLNet::RakPeer::GetSocket()</a>, and <a class="el" href="../../d5/d55/_rak_peer_8cpp_source.xhtml#l02882">SLNet::RakPeer::GetSockets()</a>.</p>
</div>
</div>
<a class="anchor" id="aad86452e470ac42bbfe656aed0b192a2"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class structureType &gt; </div>
<table class="memname">
<tr>
<td class="memname">structureType * <a class="el" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml">DataStructures::ThreadsafeAllocatingQueue</a>&lt; structureType &gt;::PopInaccurate </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml#l00071">71</a> of file <a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml">DS_ThreadsafeAllocatingQueue.h</a>.</p>
<p>Referenced by <a class="el" href="../../d5/d55/_rak_peer_8cpp_source.xhtml#l05540">SLNet::RakPeer::RunUpdateCycle()</a>.</p>
</div>
</div>
<a class="anchor" id="a768320d1f04005713d0d94bd3b5a7f43"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class structureType&gt; </div>
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml">DataStructures::ThreadsafeAllocatingQueue</a>&lt; structureType &gt;::Push </td>
<td>(</td>
<td class="paramtype">structureType *&#160;</td>
<td class="paramname"><em>s</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml#l00063">63</a> of file <a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml">DS_ThreadsafeAllocatingQueue.h</a>.</p>
<p>References <a class="el" href="../../d8/db0/defines_8h_source.xhtml#l00047">_FILE_AND_LINE_</a>.</p>
<p>Referenced by <a class="el" href="../../d5/d55/_rak_peer_8cpp_source.xhtml#l02830">SLNet::RakPeer::ChangeSystemAddress()</a>, <a class="el" href="../../d5/d55/_rak_peer_8cpp_source.xhtml#l04101">SLNet::RakPeer::CloseConnectionInternal()</a>, <a class="el" href="../../d5/d55/_rak_peer_8cpp_source.xhtml#l02847">SLNet::RakPeer::GetSocket()</a>, <a class="el" href="../../d5/d55/_rak_peer_8cpp_source.xhtml#l02882">SLNet::RakPeer::GetSockets()</a>, <a class="el" href="../../d5/d55/_rak_peer_8cpp_source.xhtml#l05540">SLNet::RakPeer::RunUpdateCycle()</a>, <a class="el" href="../../d5/d55/_rak_peer_8cpp_source.xhtml#l04173">SLNet::RakPeer::SendBuffered()</a>, and <a class="el" href="../../d5/d55/_rak_peer_8cpp_source.xhtml#l04209">SLNet::RakPeer::SendBufferedList()</a>.</p>
</div>
</div>
<a class="anchor" id="aa7a9ab0c4effa28652d64eb7624c810f"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class structureType &gt; </div>
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml">DataStructures::ThreadsafeAllocatingQueue</a>&lt; structureType &gt;::RemoveAtIndex </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>position</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml#l00164">164</a> of file <a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml">DS_ThreadsafeAllocatingQueue.h</a>.</p>
</div>
</div>
<a class="anchor" id="a833da782723daa209092fa29b29fbc94"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class structureType &gt; </div>
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml">DataStructures::ThreadsafeAllocatingQueue</a>&lt; structureType &gt;::SetPageSize </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>size</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml#l00138">138</a> of file <a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml">DS_ThreadsafeAllocatingQueue.h</a>.</p>
</div>
</div>
<a class="anchor" id="aa2887f954c636f22b9463383ec7eb144"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class structureType &gt; </div>
<table class="memname">
<tr>
<td class="memname">unsigned int <a class="el" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml">DataStructures::ThreadsafeAllocatingQueue</a>&lt; structureType &gt;::Size </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml#l00172">172</a> of file <a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml">DS_ThreadsafeAllocatingQueue.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="ad03957d4e81bbe15a87872844fa766f6"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class structureType&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../de/df9/class_data_structures_1_1_memory_pool.xhtml">MemoryPool</a>&lt;structureType&gt; <a class="el" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml">DataStructures::ThreadsafeAllocatingQueue</a>&lt; structureType &gt;::memoryPool</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">mutable</span><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml#l00056">56</a> of file <a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml">DS_ThreadsafeAllocatingQueue.h</a>.</p>
</div>
</div>
<a class="anchor" id="ad8d18997393e8f1b1df780079fee9f25"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class structureType&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d9/da8/class_s_l_net_1_1_simple_mutex.xhtml">SLNet::SimpleMutex</a> <a class="el" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml">DataStructures::ThreadsafeAllocatingQueue</a>&lt; structureType &gt;::memoryPoolMutex</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml#l00057">57</a> of file <a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml">DS_ThreadsafeAllocatingQueue.h</a>.</p>
</div>
</div>
<a class="anchor" id="ae89e097ad6d19614990c8566a55ec7a7"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class structureType&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d3/d87/class_data_structures_1_1_queue.xhtml">Queue</a>&lt;structureType*&gt; <a class="el" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml">DataStructures::ThreadsafeAllocatingQueue</a>&lt; structureType &gt;::queue</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml#l00058">58</a> of file <a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml">DS_ThreadsafeAllocatingQueue.h</a>.</p>
</div>
</div>
<a class="anchor" id="a8ed3acc9c79a2c5586bfe44bfc383184"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class structureType&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d9/da8/class_s_l_net_1_1_simple_mutex.xhtml">SLNet::SimpleMutex</a> <a class="el" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml">DataStructures::ThreadsafeAllocatingQueue</a>&lt; structureType &gt;::queueMutex</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml#l00059">59</a> of file <a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml">DS_ThreadsafeAllocatingQueue.h</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>Source/include/slikenet/<a class="el" href="../../d8/dd5/_d_s___threadsafe_allocating_queue_8h_source.xhtml">DS_ThreadsafeAllocatingQueue.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../da/d80/namespace_data_structures.xhtml">DataStructures</a></li><li class="navelem"><a class="el" href="../../da/dce/class_data_structures_1_1_threadsafe_allocating_queue.xhtml">ThreadsafeAllocatingQueue</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:49 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,124 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Source/src/ConnectionGraph2.cpp File 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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../files.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/dd4/_connection_graph2_8cpp.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">ConnectionGraph2.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="../../de/ddb/_native_feature_includes_8h_source.xhtml">slikenet/NativeFeatureIncludes.h</a>&quot;</code><br/>
</div>
<p><a href="../../da/dd4/_connection_graph2_8cpp_source.xhtml">Go to the source code of this file.</a></p>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_d1eb22c2ecfd8b50f59e9cbaf8260105.xhtml">src</a></li><li class="navelem"><a class="el" href="../../da/dd4/_connection_graph2_8cpp.xhtml">ConnectionGraph2.cpp</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,433 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Source/src/ConnectionGraph2.cpp Source File</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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../files.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/dd4/_connection_graph2_8cpp_source.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">ConnectionGraph2.cpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../da/dd4/_connection_graph2_8cpp.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Original work: Copyright (c) 2014, Oculus VR, Inc.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This source code is licensed under the BSD-style license found in the</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * RakNet License.txt file in the licenses directory of this source tree. An additional grant </span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of patent rights can be found in the RakNet Patents.txt file in the same directory.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Modified work: Copyright (c) 2016-2017, SLikeSoft UG (haftungsbeschränkt)</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * license found in the license.txt file in the root directory of this source tree.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../de/ddb/_native_feature_includes_8h.xhtml">slikenet/NativeFeatureIncludes.h</a>&quot;</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#if _RAKNET_SUPPORT_ConnectionGraph2==1</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d8/de5/_connection_graph2_8h.xhtml" title="Connection graph plugin, version 2. Tells new systems about existing and new connections.">slikenet/ConnectionGraph2.h</a>&quot;</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../dd/d85/peerinterface_8h.xhtml" title="An interface for RakPeer. Simply contains all user functions as pure virtuals.">slikenet/peerinterface.h</a>&quot;</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d6/d83/_message_identifiers_8h.xhtml" title="All the message identifiers used by RakNet. Message identifiers comprise the first byte of any messag...">slikenet/MessageIdentifiers.h</a>&quot;</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d7/dc3/_bit_stream_8h.xhtml" title="This class allows you to write and read native types as a string of bits.">slikenet/BitStream.h</a>&quot;</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keyword">using namespace </span>SLNet;</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<a class="code" href="../../db/dbd/_export_8h.xhtml#aa00165c970bdb25e1c757b432509533b">STATIC_FACTORY_DEFINITIONS</a>(<a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml" title="A one hop connection graph.">ConnectionGraph2</a>,<a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml" title="A one hop connection graph.">ConnectionGraph2</a>)</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;int SLNet::<a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml" title="A one hop connection graph.">ConnectionGraph2</a>::RemoteSystemComp( const <a class="code" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml">RakNetGUID</a> &amp;key, RemoteSystem * const &amp;data )</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;{</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">if</span> (key &lt; data-&gt;guid)</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordflow">if</span> (key &gt; data-&gt;guid)</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">return</span> 1;</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;}</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a99cefc9306797dfa14dd046c49ad3bf3">SLNet::ConnectionGraph2::SystemAddressAndGuidComp</a>( <span class="keyword">const</span> SystemAddressAndGuid &amp;key, <span class="keyword">const</span> SystemAddressAndGuid &amp;data )</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;{</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">if</span> (key.guid&lt;data.guid)</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">if</span> (key.guid&gt;data.guid)</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">return</span> 1;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;}</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a8e9d90b6a136a83bccb7d0296ec3bcc7">ConnectionGraph2::ConnectionGraph2</a>()</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;{</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a5231308683c1c1a77449ad1f67dd5513">autoProcessNewConnections</a>=<span class="keyword">true</span>;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;}</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a566d52dbee675e1226905d97c4bc6be5">ConnectionGraph2::~ConnectionGraph2</a>()</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;{</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;}</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#af12e07ce7fe7e16f61972669650380c6" title="Given a remote system identified by RakNetGUID, return the list of SystemAddresses and RakNetGUIDs th...">ConnectionGraph2::GetConnectionListForRemoteSystem</a>(<a class="code" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml">RakNetGUID</a> remoteSystemGuid, <a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> *saOut, <a class="code" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml">RakNetGUID</a> *guidOut, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *outLength)</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;{</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">if</span> ((saOut==0 &amp;&amp; guidOut==0) || outLength==0 || *outLength==0 || remoteSystemGuid==<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a242c86300509ec068e5e2ea534bbba51">UNASSIGNED_RAKNET_GUID</a>)</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; {</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; *outLength=0;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; }</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordtype">bool</span> objectExists;</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ad56a2d15c2eaf85ed71ca825785f3547">remoteSystems</a>.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a54b7abdd81f650f9d1755a4fd56b1aaa">GetIndexFromKey</a>(remoteSystemGuid, &amp;objectExists);</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">if</span> (objectExists==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; *outLength=0;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; }</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx2;</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ad56a2d15c2eaf85ed71ca825785f3547">remoteSystems</a>[idx]-&gt;remoteConnections.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#ad64cf6af46df6a5e68747740ee2c1fec">Size</a>() &lt; *outLength)</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; *outLength=<a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ad56a2d15c2eaf85ed71ca825785f3547">remoteSystems</a>[idx]-&gt;remoteConnections.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#ad64cf6af46df6a5e68747740ee2c1fec">Size</a>();</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">for</span> (idx2=0; idx2 &lt; *outLength; idx2++)</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; {</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">if</span> (guidOut)</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; guidOut[idx2]=<a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ad56a2d15c2eaf85ed71ca825785f3547">remoteSystems</a>[idx]-&gt;remoteConnections[idx2].guid;</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">if</span> (saOut)</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; saOut[idx2]=<a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ad56a2d15c2eaf85ed71ca825785f3547">remoteSystems</a>[idx]-&gt;remoteConnections[idx2].systemAddress;</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;}</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ae503cd5c3df9a62012e3a4070ff42958" title="Returns if g1 is connected to g2.">ConnectionGraph2::ConnectionExists</a>(<a class="code" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml">RakNetGUID</a> g1, <a class="code" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml">RakNetGUID</a> g2)</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;{</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">if</span> (g1==g2)</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordtype">bool</span> objectExists;</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ad56a2d15c2eaf85ed71ca825785f3547">remoteSystems</a>.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a54b7abdd81f650f9d1755a4fd56b1aaa">GetIndexFromKey</a>(g1, &amp;objectExists);</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">if</span> (objectExists==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; {</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; SystemAddressAndGuid sag;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; sag.guid=g2;</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ad56a2d15c2eaf85ed71ca825785f3547">remoteSystems</a>[idx]-&gt;remoteConnections.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#aecaf8370213fb9ebdd99bc6262a930e6">HasData</a>(sag);</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;}</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<a class="code" href="../../df/df2/_native_types_8h.xhtml#a273cf69d639a59973b6019625df33e30">uint16_t</a> <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a4dbfbbdae82e4b9836a23ea0229904f1" title="Returns the average ping between two systems in the connection graph. Returns -1 if no connection exi...">ConnectionGraph2::GetPingBetweenSystems</a>(<a class="code" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml">RakNetGUID</a> g1, <a class="code" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml">RakNetGUID</a> g2)<span class="keyword"> const</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">if</span> (g1==g2)</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">if</span> (g1==<a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#adac8deadf450a4e1d69c11b1db588bec">rakPeerInterface</a>-&gt;<a class="code" href="../../da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a1b84bba5f2e64578ac7d05899bd5967e" title="Return my own GUID.">GetMyGUID</a>())</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="../../df/df2/_native_types_8h.xhtml#a273cf69d639a59973b6019625df33e30">uint16_t</a>) <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#adac8deadf450a4e1d69c11b1db588bec">rakPeerInterface</a>-&gt;<a class="code" href="../../da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a1b53f6cb799f840b8a724cc53419d9d4">GetAveragePing</a>(g2);</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">if</span> (g2==<a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#adac8deadf450a4e1d69c11b1db588bec">rakPeerInterface</a>-&gt;<a class="code" href="../../da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a1b84bba5f2e64578ac7d05899bd5967e" title="Return my own GUID.">GetMyGUID</a>())</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="../../df/df2/_native_types_8h.xhtml#a273cf69d639a59973b6019625df33e30">uint16_t</a>) <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#adac8deadf450a4e1d69c11b1db588bec">rakPeerInterface</a>-&gt;<a class="code" href="../../da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a1b53f6cb799f840b8a724cc53419d9d4">GetAveragePing</a>(g1);</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordtype">bool</span> objectExists;</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ad56a2d15c2eaf85ed71ca825785f3547">remoteSystems</a>.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a54b7abdd81f650f9d1755a4fd56b1aaa">GetIndexFromKey</a>(g1, &amp;objectExists);</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">if</span> (objectExists==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; {</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="../../df/df2/_native_types_8h.xhtml#a273cf69d639a59973b6019625df33e30">uint16_t</a>) -1;</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; SystemAddressAndGuid sag;</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; sag.guid=g2;</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx2 = <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ad56a2d15c2eaf85ed71ca825785f3547">remoteSystems</a>[idx]-&gt;remoteConnections.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a54b7abdd81f650f9d1755a4fd56b1aaa">GetIndexFromKey</a>(sag, &amp;objectExists);</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">if</span> (objectExists==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; {</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="../../df/df2/_native_types_8h.xhtml#a273cf69d639a59973b6019625df33e30">uint16_t</a>) -1;</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; }</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ad56a2d15c2eaf85ed71ca825785f3547">remoteSystems</a>[idx]-&gt;remoteConnections[idx2].sendersPingToThatSystem;</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;}</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<a class="code" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml">RakNetGUID</a> <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a9ce22b4facec50afecc4e0016b26c7cf">ConnectionGraph2::GetLowestAveragePingSystem</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordtype">float</span> lowestPing=-1.0;</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> lowestPingIdx=(<span class="keywordtype">unsigned</span> int) -1;</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordtype">float</span> thisAvePing=0.0f;</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx, idx2;</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordtype">int</span> ap, count=0;</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">for</span> (idx=0; idx&lt;<a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ad56a2d15c2eaf85ed71ca825785f3547">remoteSystems</a>.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#ad64cf6af46df6a5e68747740ee2c1fec">Size</a>(); idx++)</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; {</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; thisAvePing=0.0f;</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; ap = <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#adac8deadf450a4e1d69c11b1db588bec">rakPeerInterface</a>-&gt;<a class="code" href="../../da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a1b53f6cb799f840b8a724cc53419d9d4">GetAveragePing</a>(<a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ad56a2d15c2eaf85ed71ca825785f3547">remoteSystems</a>[idx]-&gt;guid);</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">if</span> (ap!=-1)</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; {</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; thisAvePing+=(float) ap;</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; count++;</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">if</span> (count&gt;0)</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; {</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; lowestPing=thisAvePing/count;</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; }</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">for</span> (idx=0; idx&lt;<a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ad56a2d15c2eaf85ed71ca825785f3547">remoteSystems</a>.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#ad64cf6af46df6a5e68747740ee2c1fec">Size</a>(); idx++)</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; {</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; thisAvePing=0.0f;</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; count=0;</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; RemoteSystem *remoteSystem = <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ad56a2d15c2eaf85ed71ca825785f3547">remoteSystems</a>[idx];</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">for</span> (idx2=0; idx2 &lt; remoteSystem-&gt;remoteConnections.Size(); idx2++)</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; {</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; ap=remoteSystem-&gt;remoteConnections[idx2].sendersPingToThatSystem;</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">if</span> (ap!=-1)</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; {</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; thisAvePing+=(float) ap;</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; count++;</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; }</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; }</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">if</span> (count&gt;0 &amp;&amp; (lowestPing==-1.0f || thisAvePing/count &lt; lowestPing))</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; {</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; lowestPing=thisAvePing/count;</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; lowestPingIdx=idx;</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; }</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; }</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">if</span> (lowestPingIdx==(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) -1)</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#adac8deadf450a4e1d69c11b1db588bec">rakPeerInterface</a>-&gt;<a class="code" href="../../da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a1b84bba5f2e64578ac7d05899bd5967e" title="Return my own GUID.">GetMyGUID</a>();</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ad56a2d15c2eaf85ed71ca825785f3547">remoteSystems</a>[lowestPingIdx]-&gt;guid;</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;}</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a521283c11f9676354cef6409618d517d">ConnectionGraph2::OnClosedConnection</a>(<span class="keyword">const</span> <a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> &amp;systemAddress, <a class="code" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml">RakNetGUID</a> rakNetGUID, <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#ga4d3ac5ca8821fadad6d22d0267e06803">PI2_LostConnectionReason</a> lostConnectionReason )</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;{</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="comment">// Send notice to all existing connections</span></div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> bs;</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">if</span> (lostConnectionReason==<a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#gga4d3ac5ca8821fadad6d22d0267e06803a5c693a8b52ee37ff6bd413e732260914" title="GOT ID_CONNECTION_LOST.">LCR_CONNECTION_LOST</a>)</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; bs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>)<a class="code" href="../../d6/d83/_message_identifiers_8h.xhtml#ac1b471af280629f5ace02e586d5bcfd3ab7a8ea0155a93ced4e42d939a1576ad4">ID_REMOTE_CONNECTION_LOST</a>);</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; bs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>)<a class="code" href="../../d6/d83/_message_identifiers_8h.xhtml#ac1b471af280629f5ace02e586d5bcfd3a01924f70c35d1d4fed166fa386adbcdd">ID_REMOTE_DISCONNECTION_NOTIFICATION</a>);</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; bs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(systemAddress);</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; bs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(rakNetGUID);</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#aa9c79c0d16ece39114231d680190d39a">SendUnified</a>(&amp;bs,<a class="code" href="../../d7/d03/_packet_priority_8h.xhtml#a659378374e516180f93640c79f59705cacb1785f11dd02aa7f5d164fb314c594e">HIGH_PRIORITY</a>,<a class="code" href="../../d7/d03/_packet_priority_8h.xhtml#ae41fa01235e99dced384d137fa874a7eaff2d39b163bcf3e142744962bfb0849f">RELIABLE_ORDERED</a>,0,systemAddress,<span class="keyword">true</span>);</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordtype">bool</span> objectExists;</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ad56a2d15c2eaf85ed71ca825785f3547">remoteSystems</a>.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a54b7abdd81f650f9d1755a4fd56b1aaa">GetIndexFromKey</a>(rakNetGUID, &amp;objectExists);</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">if</span> (objectExists)</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; {</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a79772d09451f784e87bec85694fad1ed">SLNet::OP_DELETE</a>(<a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ad56a2d15c2eaf85ed71ca825785f3547">remoteSystems</a>[idx],<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ad56a2d15c2eaf85ed71ca825785f3547">remoteSystems</a>.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a65ef0eca14deb8698004b1cd074b6f0a">RemoveAtIndex</a>(idx);</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; }</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;}</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#aa3c94a20fa174e1a699b15fa3826fe08" title="If called with false, then new connections are only added to the connection graph when you call Proce...">ConnectionGraph2::SetAutoProcessNewConnections</a>(<span class="keywordtype">bool</span> b)</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;{</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a5231308683c1c1a77449ad1f67dd5513">autoProcessNewConnections</a>=b;</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;}</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a8dc6493e64b6e2cd3fa1adbc89f1825c" title="Returns value passed to SetAutoProcessNewConnections()">ConnectionGraph2::GetAutoProcessNewConnections</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a5231308683c1c1a77449ad1f67dd5513">autoProcessNewConnections</a>;</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;}</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a3566a5e64697a35f3b2a49efad7573ca" title="If you call SetAutoProcessNewConnections(false);, then you will need to manually call ProcessNewConne...">ConnectionGraph2::AddParticipant</a>(<span class="keyword">const</span> <a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> &amp;systemAddress, <a class="code" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml">RakNetGUID</a> rakNetGUID)</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;{</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="comment">// Relay the new connection to other systems.</span></div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> bs;</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; bs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>)<a class="code" href="../../d6/d83/_message_identifiers_8h.xhtml#ac1b471af280629f5ace02e586d5bcfd3a7a799251ddccc3c218e7f445132e4497" title="ConnectionGraph2 plugin: Bytes 1-4 = count. for (count items) contains {SystemAddress, RakNetGUID, 2 byte ping}.">ID_REMOTE_NEW_INCOMING_CONNECTION</a>);</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; bs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<a class="code" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a>)1);</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; bs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(systemAddress);</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; bs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(rakNetGUID);</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; bs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a389b1cb2d6ab054a9949efe7f1748374">WriteCasted</a>&lt;<a class="code" href="../../df/df2/_native_types_8h.xhtml#a273cf69d639a59973b6019625df33e30">uint16_t</a>&gt;(<a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#adac8deadf450a4e1d69c11b1db588bec">rakPeerInterface</a>-&gt;<a class="code" href="../../da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a1b53f6cb799f840b8a724cc53419d9d4">GetAveragePing</a>(rakNetGUID));</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#aa9c79c0d16ece39114231d680190d39a">SendUnified</a>(&amp;bs,<a class="code" href="../../d7/d03/_packet_priority_8h.xhtml#a659378374e516180f93640c79f59705cacb1785f11dd02aa7f5d164fb314c594e">HIGH_PRIORITY</a>,<a class="code" href="../../d7/d03/_packet_priority_8h.xhtml#ae41fa01235e99dced384d137fa874a7eaff2d39b163bcf3e142744962bfb0849f">RELIABLE_ORDERED</a>,0,systemAddress,<span class="keyword">true</span>);</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="comment">// Send everyone to the new guy</span></div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml">DataStructures::List&lt;SystemAddress&gt;</a> addresses;</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml">DataStructures::List&lt;RakNetGUID&gt;</a> guids;</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#adac8deadf450a4e1d69c11b1db588bec">rakPeerInterface</a>-&gt;<a class="code" href="../../da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#aa3b4f34af0368b53b037cab21be2bc34">GetSystemList</a>(addresses, guids);</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; bs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#aab4381d8b4a48dbc8e2975dba894f350" title="Resets the bitstream for reuse.">Reset</a>();</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; bs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a5b5b9eb3be9ad636af02da44b718a75f" title="First byte of a network message.">MessageID</a>)ID_REMOTE_NEW_INCOMING_CONNECTION);</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a227d2a5f9683a34d9d1e70772fd556ec">BitSize_t</a> writeOffset = bs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a8e2fb36a0d43673e19ea6386e0637f86">GetWriteOffset</a>();</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; bs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<a class="code" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a>) addresses.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>());</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i;</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <a class="code" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a> count=0;</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; addresses.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; {</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">if</span> (addresses[i]==systemAddress)</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; bs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(addresses[i]);</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; bs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(guids[i]);</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; bs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a389b1cb2d6ab054a9949efe7f1748374">WriteCasted</a>&lt;<a class="code" href="../../df/df2/_native_types_8h.xhtml#a273cf69d639a59973b6019625df33e30">uint16_t</a>&gt;(<a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#adac8deadf450a4e1d69c11b1db588bec">rakPeerInterface</a>-&gt;<a class="code" href="../../da/d27/class_s_l_net_1_1_rak_peer_interface.xhtml#a1b53f6cb799f840b8a724cc53419d9d4">GetAveragePing</a>(guids[i]));</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; count++;</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; }</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">if</span> (count&gt;0)</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; {</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a227d2a5f9683a34d9d1e70772fd556ec">BitSize_t</a> writeOffset2 = bs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a8e2fb36a0d43673e19ea6386e0637f86">GetWriteOffset</a>();</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; bs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a751b4600c1e9ea4419a9358a77a6ee50" title="Move the write pointer to a position on the array.">SetWriteOffset</a>(writeOffset);</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; bs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(count);</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; bs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a751b4600c1e9ea4419a9358a77a6ee50" title="Move the write pointer to a position on the array.">SetWriteOffset</a>(writeOffset2);</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#aa9c79c0d16ece39114231d680190d39a">SendUnified</a>(&amp;bs,<a class="code" href="../../d7/d03/_packet_priority_8h.xhtml#a659378374e516180f93640c79f59705cacb1785f11dd02aa7f5d164fb314c594e">HIGH_PRIORITY</a>,<a class="code" href="../../d7/d03/_packet_priority_8h.xhtml#ae41fa01235e99dced384d137fa874a7eaff2d39b163bcf3e142744962bfb0849f">RELIABLE_ORDERED</a>,0,systemAddress,<span class="keyword">false</span>);</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordtype">bool</span> objectExists;</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ii = <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ad56a2d15c2eaf85ed71ca825785f3547">remoteSystems</a>.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a54b7abdd81f650f9d1755a4fd56b1aaa">GetIndexFromKey</a>(rakNetGUID, &amp;objectExists);</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">if</span> (objectExists==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; {</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; RemoteSystem* remoteSystem = SLNet::OP_NEW&lt;RemoteSystem&gt;(<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; remoteSystem-&gt;guid=rakNetGUID;</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ad56a2d15c2eaf85ed71ca825785f3547">remoteSystems</a>.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a9ed08b2c35b20d08ebfab17927f5c4a2">InsertAtIndex</a>(remoteSystem,ii,<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; }</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;}</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ab20e74a7e6e6ab545ee7cbac6d616aa3">ConnectionGraph2::GetParticipantList</a>(<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">DataStructures::OrderedList&lt;RakNetGUID, RakNetGUID&gt;</a> &amp;participantList)</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;{</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; participantList.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#ac3d85528ada636cae37a5474cb64b69c">Clear</a>(<span class="keyword">true</span>, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i;</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ad56a2d15c2eaf85ed71ca825785f3547">remoteSystems</a>.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#ad64cf6af46df6a5e68747740ee2c1fec">Size</a>(); i++)</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; participantList.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#ac4285dfc63d32eeb9126b97b67a8ce3a">InsertAtEnd</a>(<a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ad56a2d15c2eaf85ed71ca825785f3547">remoteSystems</a>[i]-&gt;guid, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;}</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a8814949576959078a511a181b048fc38">ConnectionGraph2::OnNewConnection</a>(<span class="keyword">const</span> <a class="code" href="../../d8/dbe/struct_s_l_net_1_1_system_address.xhtml" title="Network address for a system.">SystemAddress</a> &amp;systemAddress, <a class="code" href="../../dd/d3f/struct_s_l_net_1_1_rak_net_g_u_i_d.xhtml">RakNetGUID</a> rakNetGUID, <span class="keywordtype">bool</span> isIncoming)</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;{</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; (void) isIncoming;</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a5231308683c1c1a77449ad1f67dd5513">autoProcessNewConnections</a>)</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a3566a5e64697a35f3b2a49efad7573ca" title="If you call SetAutoProcessNewConnections(false);, then you will need to manually call ProcessNewConne...">AddParticipant</a>(systemAddress, rakNetGUID);</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;}</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#ga5c8f613a7c294e0b96deccbdabc38f18">PluginReceiveResult</a> <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ad9c7cc8d18e6217d5989914cae45fce4">ConnectionGraph2::OnReceive</a>(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#d8/d23/struct_s_l_net_1_1_packet" title="This represents a user message from another system.">Packet</a> *packet)</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;{</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">if</span> (packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>[0]==ID_REMOTE_CONNECTION_LOST || packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>[0]==ID_REMOTE_DISCONNECTION_NOTIFICATION)</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; {</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordtype">bool</span> objectExists;</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordtype">unsigned</span> idx = <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ad56a2d15c2eaf85ed71ca825785f3547">remoteSystems</a>.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a54b7abdd81f650f9d1755a4fd56b1aaa">GetIndexFromKey</a>(packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a4f42e82893aff6aade8a45c79d1b8fd3">guid</a>, &amp;objectExists);</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">if</span> (objectExists)</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; {</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> bs(packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>,packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a75dfd0a23cc4c14dd338caedabe19341" title="The length of the data in bytes.">length</a>,<span class="keyword">false</span>);</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; bs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a89b340505c7f78ffe59c414f2e761df5" title="Ignore data we don&#39;t intend to read.">IgnoreBytes</a>(1);</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; SystemAddressAndGuid saag;</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; bs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a59f38126d8d19bfd264a2e2cace7d1db" title="Read any integral type from a bitstream.">Read</a>(saag.systemAddress);</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; bs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a59f38126d8d19bfd264a2e2cace7d1db" title="Read any integral type from a bitstream.">Read</a>(saag.guid);</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> idx2 = <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ad56a2d15c2eaf85ed71ca825785f3547">remoteSystems</a>[idx]-&gt;remoteConnections.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a54b7abdd81f650f9d1755a4fd56b1aaa">GetIndexFromKey</a>(saag, &amp;objectExists);</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">if</span> (objectExists)</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ad56a2d15c2eaf85ed71ca825785f3547">remoteSystems</a>[idx]-&gt;remoteConnections.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a65ef0eca14deb8698004b1cd074b6f0a">RemoveAtIndex</a>(idx2);</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; }</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; }</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>[0]==ID_REMOTE_NEW_INCOMING_CONNECTION)</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; {</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordtype">bool</span> objectExists;</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordtype">unsigned</span> idx = <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ad56a2d15c2eaf85ed71ca825785f3547">remoteSystems</a>.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a54b7abdd81f650f9d1755a4fd56b1aaa">GetIndexFromKey</a>(packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a4f42e82893aff6aade8a45c79d1b8fd3">guid</a>, &amp;objectExists);</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">if</span> (objectExists)</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; {</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <a class="code" href="../../df/df2/_native_types_8h.xhtml#a6eb1e68cc391dd753bc8ce896dbb8315">uint32_t</a> numAddresses;</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> bs(packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#aff6d115daef2787d582f9a20efd64fc0" title="The data from the sender.">data</a>,packet-&gt;<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a75dfd0a23cc4c14dd338caedabe19341" title="The length of the data in bytes.">length</a>,<span class="keyword">false</span>);</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; bs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a89b340505c7f78ffe59c414f2e761df5" title="Ignore data we don&#39;t intend to read.">IgnoreBytes</a>(1);</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; bs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a59f38126d8d19bfd264a2e2cace7d1db" title="Read any integral type from a bitstream.">Read</a>(numAddresses);</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx2=0; idx2 &lt; numAddresses; idx2++)</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; {</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; SystemAddressAndGuid saag;</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; bs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a59f38126d8d19bfd264a2e2cace7d1db" title="Read any integral type from a bitstream.">Read</a>(saag.systemAddress);</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; bs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a59f38126d8d19bfd264a2e2cace7d1db" title="Read any integral type from a bitstream.">Read</a>(saag.guid);</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; bs.<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a59f38126d8d19bfd264a2e2cace7d1db" title="Read any integral type from a bitstream.">Read</a>(saag.sendersPingToThatSystem);</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ii = <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ad56a2d15c2eaf85ed71ca825785f3547">remoteSystems</a>[idx]-&gt;remoteConnections.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a54b7abdd81f650f9d1755a4fd56b1aaa">GetIndexFromKey</a>(saag, &amp;objectExists);</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">if</span> (objectExists==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ad56a2d15c2eaf85ed71ca825785f3547">remoteSystems</a>[idx]-&gt;remoteConnections.<a class="code" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a9ed08b2c35b20d08ebfab17927f5c4a2">InsertAtIndex</a>(saag,ii,<a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; }</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; }</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; }</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; </div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#gga5c8f613a7c294e0b96deccbdabc38f18a5b5a476b87be78212057efd5535345d4" title="This message will be processed by other plugins, and at last by the user.">RR_CONTINUE_PROCESSING</a>;</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;}</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;<span class="preprocessor">#endif // _RAKNET_SUPPORT_*</span></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_d1eb22c2ecfd8b50f59e9cbaf8260105.xhtml">src</a></li><li class="navelem"><a class="el" href="../../da/dd4/_connection_graph2_8cpp.xhtml">ConnectionGraph2.cpp</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:46 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,131 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Member List</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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.xhtml"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.xhtml"><span>Class&#160;Index</span></a></li>
<li><a href="../../inherits.xhtml"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.xhtml"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('d3/d76/class_data_structures_1_1_m_l_key_ref.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">DataStructures::MLKeyRef&lt; templateType &gt; Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../d3/d76/class_data_structures_1_1_m_l_key_ref.xhtml">DataStructures::MLKeyRef&lt; templateType &gt;</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="../../d3/d76/class_data_structures_1_1_m_l_key_ref.xhtml#ab9303a401a7ba2b676d7a4c7a04d3a1b">Get</a>(void) const </td><td class="entry"><a class="el" href="../../d3/d76/class_data_structures_1_1_m_l_key_ref.xhtml">DataStructures::MLKeyRef&lt; templateType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d3/d76/class_data_structures_1_1_m_l_key_ref.xhtml#ac33da54b570bf58a80e8cc0302bc3ff7">MLKeyRef</a>(const templateType &amp;input)</td><td class="entry"><a class="el" href="../../d3/d76/class_data_structures_1_1_m_l_key_ref.xhtml">DataStructures::MLKeyRef&lt; templateType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d3/d76/class_data_structures_1_1_m_l_key_ref.xhtml#a73ea009ca6f28a2ee6b6ecedd6037c96">operator&lt;</a>(const templateType &amp;right)</td><td class="entry"><a class="el" href="../../d3/d76/class_data_structures_1_1_m_l_key_ref.xhtml">DataStructures::MLKeyRef&lt; templateType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d3/d76/class_data_structures_1_1_m_l_key_ref.xhtml#a43600e005a8dddbbb54608963f44bdfd">operator==</a>(const templateType &amp;right)</td><td class="entry"><a class="el" href="../../d3/d76/class_data_structures_1_1_m_l_key_ref.xhtml">DataStructures::MLKeyRef&lt; templateType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d3/d76/class_data_structures_1_1_m_l_key_ref.xhtml#afa1fbcd3a6ef37fef6c2272375e3ac1f">operator&gt;</a>(const templateType &amp;right)</td><td class="entry"><a class="el" href="../../d3/d76/class_data_structures_1_1_m_l_key_ref.xhtml">DataStructures::MLKeyRef&lt; templateType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d3/d76/class_data_structures_1_1_m_l_key_ref.xhtml#a07b37fbb3752adc4db2109e225201688">val</a></td><td class="entry"><a class="el" href="../../d3/d76/class_data_structures_1_1_m_l_key_ref.xhtml">DataStructures::MLKeyRef&lt; templateType &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Wed Aug 14 2019 22:09:49 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,123 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Source/include/slikenet/socket.h File 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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../files.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/ddd/socket_8h.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">socket.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="../../da/ddd/socket_8h_source.xhtml">Go to the source code of this file.</a></p>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../da/ddd/socket_8h.xhtml">socket.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,317 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Source/include/slikenet/socket.h Source File</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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../files.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/ddd/socket_8h_source.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">socket.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../da/ddd/socket_8h.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Original work: Copyright (c) 2014, Oculus VR, Inc.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This source code is licensed under the BSD-style license found in the</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * RakNet License.txt file in the licenses directory of this source tree. An additional grant </span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of patent rights can be found in the RakNet Patents.txt file in the same directory.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Modified work: Copyright (c) 2017, SLikeSoft UG (haftungsbeschränkt)</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * license found in the license.txt file in the root directory of this source tree.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">#ifndef __RAKNET_SOCKET_H</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">#define __RAKNET_SOCKET_H</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">#include &quot;types.h&quot;</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">#include &quot;defines.h&quot;</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment">#include &quot;Export.h&quot;</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">#include &quot;SocketIncludes.h&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">#include &quot;assert.h&quot;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">#include &quot;SocketDefines.h&quot;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment">#include &quot;MTUSize.h&quot;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">namespace SLNet</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">{</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment">struct RAK_DLL_EXPORT RakNetSocket</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment">{</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment">public:</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> RakNetSocket();</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> ~RakNetSocket();</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment">// void Accept(</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment">// struct sockaddr *addr,</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment">// int *addrlen);</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> inline int Connect(</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> const struct sockaddr *name,</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> int namelen) {return connect__(s,name,namelen);}</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> static RakNetSocket* Create</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment">#ifdef __native_client__</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"> (_PP_Instance_ _chromeInstance);</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment">#else</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"> (int af,</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"> int type,</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment"> int protocol);</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment">#endif</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"> int Bind( </span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment"> const struct sockaddr *addr,</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"> int namelen);</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment"> inline int GetSockName( </span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment"> struct sockaddr *name,</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment"> socklen_t * namelen) {return getsockname__(s,name,namelen);}</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment"> inline int GetSockOpt (</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment"> int level,</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="comment"> int optname,</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment"> char * optval,</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment"> socklen_t *optlen) {return getsockopt__(s,level,optname,optval,optlen);}</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> int IOCTLSocket( </span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> long cmd,</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"> unsigned long *argp);</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"> int Listen ( </span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment"> int backlog);</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"> inline int Recv( </span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment"> char * buf,</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"> int len,</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment"> int flags) {return recv__(s,buf,len,flags);}</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"> inline int RecvFrom( </span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment"> char * buf,</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"> int len,</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"> int flags,</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment"> struct sockaddr * from,</span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment"> socklen_t * fromlen) {return recvfrom__(s,buf,len,flags,from,fromlen);}</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment">// inline int Select(</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment">// int nfds,</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment">// fd_set *readfds,</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment">// fd_set *writefds,</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment">// fd_set *exceptfds,</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment">// struct timeval *timeout) {return select__(nfds,readfds,writefds,exceptfds,timeout);}</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"> inline int Send( </span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"> const char * buf,</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"> int len,</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"> int flags) {return send__(s,buf,len,flags);}</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment"> inline int SendTo( </span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="comment"> const char * buf,</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment"> int len,</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment"> int flags,</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment"> const struct sockaddr *to,</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment"> int tolen) {return sendto__(s,buf,len,flags,to,tolen);}</span></div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment"> #ifdef _WIN32</span></div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment"> #elif defined(_PS3) || defined(__PS3__) || defined(SN_TARGET_PS3) || defined(_PS4) || defined(SN_TARGET_PSP2)</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment"> #else</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="comment"> inline int Fcntl(int cmd, int arg) {return fcntl(s,cmd,arg);}</span></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="comment"> #endif</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment">#if defined(_WIN32) &amp;&amp; !defined(WINDOWS_STORE_RT)</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment"> inline int _WSASendTo(</span></div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="comment"> LPWSABUF lpBuffers,</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="comment"> DWORD dwBufferCount,</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="comment"> LPDWORD lpNumberOfBytesSent,</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="comment"> DWORD dwFlags,</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="comment"> const struct sockaddr FAR * lpTo,</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="comment"> int iTolen,</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="comment"> LPWSAOVERLAPPED lpOverlapped,</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="comment"> LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="comment"> )</span></div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="comment"> { return WSASendTo(s,lpBuffers,dwBufferCount,lpNumberOfBytesSent,dwFlags,lpTo,iTolen,lpOverlapped,lpCompletionRoutine);}</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="comment">#endif</span></div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment"> </span></div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="comment"> int SetSockOpt( </span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment"> int level,</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="comment"> int optname,</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment"> const char * optval,</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="comment"> int optlen);</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="comment"> int Shutdown( </span></div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="comment"> int how);</span></div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="comment"> inline void SetRemotePortRakNetWasStartedOn(unsigned short i) {remotePortRakNetWasStartedOn_PS3_PSP2=i;}</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment"> inline void SetUserConnectionSocketIndex(unsigned int i) {userConnectionSocketIndex=i;}</span></div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="comment"> inline void SetBoundAddress(SystemAddress i) {boundAddress=i;}</span></div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="comment"> inline void SetSocketFamily(unsigned short i) {socketFamily=i;}</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment"> inline void SetBlockingSocket(bool i) {blockingSocket=i;}</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="comment"> inline void SetExtraSocketOptions(unsigned int i) {extraSocketOptions=i;}</span></div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="comment"> inline void SetChromeInstance(_PP_Instance_ i) {chromeInstance=i;}</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="comment"> inline void SetBoundAddressToLoopback(unsigned char ipVersion) {boundAddress.SetToLoopback(ipVersion);}</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="comment"> inline SystemAddress GetBoundAddress(void) const {return boundAddress;}</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="comment"> inline unsigned short GetRemotePortRakNetWasStartedOn(void) const {return remotePortRakNetWasStartedOn_PS3_PSP2;}</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="comment"> inline bool GetBlockingSocket(void) {return blockingSocket;}</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="comment"> inline unsigned int GetExtraSocketOptions(void) const {return extraSocketOptions;}</span></div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="comment"> inline unsigned short GetSocketFamily(void) const {return socketFamily;}</span></div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="comment"> inline _PP_Instance_ GetChromeInstance(void) const {return chromeInstance;}</span></div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="comment"> inline unsigned int GetUserConnectionSocketIndex(void) const {</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="comment"> RakAssert(userConnectionSocketIndex!=(unsigned int)-1);</span></div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="comment"> return userConnectionSocketIndex;}</span></div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="comment">#ifdef __native_client__</span></div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="comment"> // Flag indicating if a SendTo is currently in progress</span></div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="comment"> bool sendInProgress;</span></div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="comment"> // Data for next queued packet to send, if nextSendSize &gt; 0</span></div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="comment"> char nextSendBuffer[MAXIMUM_MTU_SIZE];</span></div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="comment"> // Size of next queued packet to send, or 0 if no queued packet</span></div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="comment"> int nextSendSize;</span></div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="comment"> // Destination address of queued packet</span></div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="comment"> PP_NetAddress_Private nextSendAddr;</span></div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="comment">#endif</span></div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="comment"> __UDPSOCKET__ s;</span></div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="comment">protected:</span></div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="comment">#if defined (_WIN32) &amp;&amp; defined(USE_WAIT_FOR_MULTIPLE_EVENTS)</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="comment"> void* recvEvent;</span></div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="comment">#endif</span></div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="comment"> #if defined(_PS3) || defined(__PS3__) || defined(SN_TARGET_PS3) || defined(_PS4) || defined(SN_TARGET_PSP2)</span></div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="comment"> #endif</span></div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;<span class="comment"> unsigned short remotePortRakNetWasStartedOn_PS3_PSP2;</span></div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="comment"> unsigned int userConnectionSocketIndex;</span></div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="comment"> SystemAddress boundAddress;</span></div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="comment"> unsigned short socketFamily;</span></div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="comment"> bool blockingSocket;</span></div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="comment"> unsigned int extraSocketOptions;</span></div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="comment"> _PP_Instance_ chromeInstance;</span></div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="comment">};</span></div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="comment">} // namespace SLNet</span></div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="comment">#endif</span></div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="comment">*/</span></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../da/ddd/socket_8h.xhtml">socket.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:46 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,142 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Member List</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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.xhtml"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.xhtml"><span>Class&#160;Index</span></a></li>
<li><a href="../../inherits.xhtml"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.xhtml"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('d1/df3/class_data_structures_1_1_heap.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">DataStructures::Heap&lt; weight_type, data_type, isMaxHeap &gt; Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml">DataStructures::Heap&lt; weight_type, data_type, isMaxHeap &gt;</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#ab573390b91ff42db9465a289f1c417de">Clear</a>(bool doNotDeallocateSmallBlocks, const char *file, unsigned int line)</td><td class="entry"><a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml">DataStructures::Heap&lt; weight_type, data_type, isMaxHeap &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#ad8407ff11d87c8ebf97481e5c45e9859">heap</a></td><td class="entry"><a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml">DataStructures::Heap&lt; weight_type, data_type, isMaxHeap &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#a2331fc1cdcd5d814c97da4a3d8d16de1">Heap</a>()</td><td class="entry"><a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml">DataStructures::Heap&lt; weight_type, data_type, isMaxHeap &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#a9317b3913a553113cd3a04ef471e595e">LeftChild</a>(const unsigned i) const </td><td class="entry"><a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml">DataStructures::Heap&lt; weight_type, data_type, isMaxHeap &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#a6acedaf4d89f1de86e0ea256a4773b31">operator[]</a>(const unsigned int position) const </td><td class="entry"><a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml">DataStructures::Heap&lt; weight_type, data_type, isMaxHeap &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#af9136bef0034e8227c8ad3a22b0443d7">optimizeNextSeriesPush</a></td><td class="entry"><a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml">DataStructures::Heap&lt; weight_type, data_type, isMaxHeap &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#a4b7d3b580d84c3884139f8599142ca51">Parent</a>(const unsigned i) const </td><td class="entry"><a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml">DataStructures::Heap&lt; weight_type, data_type, isMaxHeap &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#a99bc18efa747659ec6891ef056d8a4ab">Peek</a>(const unsigned startingIndex=0) const </td><td class="entry"><a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml">DataStructures::Heap&lt; weight_type, data_type, isMaxHeap &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#a50ae6f55a75156e2ab679a0575ebe7ef">PeekWeight</a>(const unsigned startingIndex=0) const </td><td class="entry"><a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml">DataStructures::Heap&lt; weight_type, data_type, isMaxHeap &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#a9ce961937f06f77b7ad82a02ce8d64ac">Pop</a>(const unsigned startingIndex)</td><td class="entry"><a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml">DataStructures::Heap&lt; weight_type, data_type, isMaxHeap &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#aa01a134957e811c1af719805d493b700">Push</a>(const weight_type &amp;weight, const data_type &amp;data, const char *file, unsigned int line)</td><td class="entry"><a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml">DataStructures::Heap&lt; weight_type, data_type, isMaxHeap &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#a1fed605d6f9b5afc6e3e63f449afade6">PushSeries</a>(const weight_type &amp;weight, const data_type &amp;data, const char *file, unsigned int line)</td><td class="entry"><a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml">DataStructures::Heap&lt; weight_type, data_type, isMaxHeap &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#aa5363b61f35910c7754ded825000df27">RightChild</a>(const unsigned i) const </td><td class="entry"><a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml">DataStructures::Heap&lt; weight_type, data_type, isMaxHeap &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#acdb7d16c52998d6fc8a7b1a8602b8906">Size</a>(void) const </td><td class="entry"><a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml">DataStructures::Heap&lt; weight_type, data_type, isMaxHeap &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#a15fd87c401e7bbe80ebec8a316d2ede7">StartSeries</a>(void)</td><td class="entry"><a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml">DataStructures::Heap&lt; weight_type, data_type, isMaxHeap &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#a6037614b00405c5a57d06d0b98264f3f">Swap</a>(const unsigned i, const unsigned j)</td><td class="entry"><a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml">DataStructures::Heap&lt; weight_type, data_type, isMaxHeap &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml#acc3b571e2c4cd62ea55da95f71201b93">~Heap</a>()</td><td class="entry"><a class="el" href="../../d1/df3/class_data_structures_1_1_heap.xhtml">DataStructures::Heap&lt; weight_type, data_type, isMaxHeap &gt;</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Wed Aug 14 2019 22:09:49 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,128 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Source/src/TableSerializer.cpp File 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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../files.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/df7/_table_serializer_8cpp.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">TableSerializer.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="../../d7/d94/_table_serializer_8h_source.xhtml">slikenet/TableSerializer.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d3/d5d/_d_s___table_8h_source.xhtml">slikenet/DS_Table.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../d7/dc3/_bit_stream_8h_source.xhtml">slikenet/BitStream.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../df/d78/_string_compressor_8h_source.xhtml">slikenet/StringCompressor.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="../../dc/da7/assert_8h_source.xhtml">slikenet/assert.h</a>&quot;</code><br/>
</div>
<p><a href="../../da/df7/_table_serializer_8cpp_source.xhtml">Go to the source code of this file.</a></p>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_d1eb22c2ecfd8b50f59e9cbaf8260105.xhtml">src</a></li><li class="navelem"><a class="el" href="../../da/df7/_table_serializer_8cpp.xhtml">TableSerializer.cpp</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,456 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Source/src/TableSerializer.cpp Source File</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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../files.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/df7/_table_serializer_8cpp_source.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">TableSerializer.cpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../da/df7/_table_serializer_8cpp.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Original work: Copyright (c) 2014, Oculus VR, Inc.</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This source code is licensed under the BSD-style license found in the</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * RakNet License.txt file in the licenses directory of this source tree. An additional grant </span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * of patent rights can be found in the RakNet Patents.txt file in the same directory.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Modified work: Copyright (c) 2017, SLikeSoft UG (haftungsbeschränkt)</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * license found in the license.txt file in the root directory of this source tree.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d7/d94/_table_serializer_8h.xhtml">slikenet/TableSerializer.h</a>&quot;</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d3/d5d/_d_s___table_8h.xhtml">slikenet/DS_Table.h</a>&quot;</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d7/dc3/_bit_stream_8h.xhtml" title="This class allows you to write and read native types as a string of bits.">slikenet/BitStream.h</a>&quot;</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../df/d78/_string_compressor_8h.xhtml" title="Compresses/Decompresses ASCII strings and writes/reads them to BitStream class instances. You can use this to easily serialize and deserialize your own strings.">slikenet/StringCompressor.h</a>&quot;</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../dc/da7/assert_8h.xhtml">slikenet/assert.h</a>&quot;</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="keyword">using namespace </span>SLNet;</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div>
<div class="line"><a name="l00024"></a><span class="lineno"><a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#a0b596e0124e6ee953750d6a09a3108f9"> 24</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#a0b596e0124e6ee953750d6a09a3108f9">TableSerializer::SerializeTable</a>(<a class="code" href="../../d4/de5/class_data_structures_1_1_table.xhtml" title="Holds a set of columns, a set of rows, and rows times columns cells.">DataStructures::Table</a> *in, <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *out)</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;{</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <a class="code" href="../../da/d80/namespace_data_structures.xhtml#da/da1/struct_data_structures_1_1_page">DataStructures::Page&lt;unsigned, DataStructures::Table::Row*, _TABLE_BPLUS_TREE_ORDER&gt;</a> *cur = in-&gt;<a class="code" href="../../d4/de5/class_data_structures_1_1_table.xhtml#a9e64c5424930e8ca30081e3d997871d7" title="Direct access to make things easier.">GetRows</a>().<a class="code" href="../../d7/d58/class_data_structures_1_1_b_plus_tree.xhtml#ab3794a44684972dd5e2d45f7ad895ef5">GetListHead</a>();</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">const</span> <a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml" title="Array based implementation of a list.">DataStructures::List&lt;DataStructures::Table::ColumnDescriptor&gt;</a> &amp;columns=in-&gt;<a class="code" href="../../d4/de5/class_data_structures_1_1_table.xhtml#ad91aa7d4f82573bbd2ab0033397e4d8c" title="Direct access to make things easier.">GetColumns</a>();</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#a936f21820749c94a0d2b739bc0f05495">SerializeColumns</a>(in, out);</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; out-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<span class="keywordtype">unsigned</span>)in-&gt;<a class="code" href="../../d4/de5/class_data_structures_1_1_table.xhtml#a9e64c5424930e8ca30081e3d997871d7" title="Direct access to make things easier.">GetRows</a>().<a class="code" href="../../d7/d58/class_data_structures_1_1_b_plus_tree.xhtml#a350138159df5e5f885a30270ef1409dc">Size</a>());</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordtype">unsigned</span> rowIndex;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">while</span> (cur)</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; {</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">for</span> (rowIndex=0; rowIndex &lt; (unsigned)cur-&gt;<a class="code" href="../../da/d80/namespace_data_structures.xhtml#a4440cd3ce0db1898fe3511b6e675e04c">size</a>; rowIndex++)</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; {</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#a43c24cf41b4bc929ec44827a8b4d0ac2">SerializeRow</a>(cur-&gt;<a class="code" href="../../da/d80/namespace_data_structures.xhtml#a75e91d62d50b35588a4ec213b455ad73">data</a>[rowIndex], cur-&gt;<a class="code" href="../../da/d80/namespace_data_structures.xhtml#a2e61c5f5aaa2f2093e9ea66ba91ab0f4">keys</a>[rowIndex], columns, out);</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; }</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; cur=cur-&gt;<a class="code" href="../../da/d80/namespace_data_structures.xhtml#af356c65ea5891e42e1eacd3e79eae304">next</a>;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; }</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;}</div>
<div class="line"><a name="l00040"></a><span class="lineno"><a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#a936f21820749c94a0d2b739bc0f05495"> 40</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#a936f21820749c94a0d2b739bc0f05495">TableSerializer::SerializeColumns</a>(<a class="code" href="../../d4/de5/class_data_structures_1_1_table.xhtml" title="Holds a set of columns, a set of rows, and rows times columns cells.">DataStructures::Table</a> *in, <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *out)</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;{</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> <a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml" title="Array based implementation of a list.">DataStructures::List&lt;DataStructures::Table::ColumnDescriptor&gt;</a> &amp;columns=in-&gt;<a class="code" href="../../d4/de5/class_data_structures_1_1_table.xhtml#ad91aa7d4f82573bbd2ab0033397e4d8c" title="Direct access to make things easier.">GetColumns</a>();</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; out-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<span class="keywordtype">unsigned</span>)columns.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>());</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">unsigned</span> i;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">for</span> (i=0; i&lt;columns.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; {</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="../../de/d3d/class_s_l_net_1_1_string_compressor.xhtml#acbd6add1c51c15fbbb616ce17b527aab">StringCompressor::Instance</a>()-&gt;<a class="code" href="../../de/d3d/class_s_l_net_1_1_string_compressor.xhtml#a44be8cc8a469a28085a7502650040459">EncodeString</a>(columns[i].columnName, <a class="code" href="../../d3/d5d/_d_s___table_8h.xhtml#a191b70b2ee9ef9fcf914d90674d8bdb3">_TABLE_MAX_COLUMN_NAME_LENGTH</a>, out);</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; out-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>)columns[i].columnType);</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; }</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;}</div>
<div class="line"><a name="l00051"></a><span class="lineno"><a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#aaa6608c82794b036432aaa550e8c89a1"> 51</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#a936f21820749c94a0d2b739bc0f05495">TableSerializer::SerializeColumns</a>(<a class="code" href="../../d4/de5/class_data_structures_1_1_table.xhtml" title="Holds a set of columns, a set of rows, and rows times columns cells.">DataStructures::Table</a> *in, <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *out, <a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml" title="Array based implementation of a list.">DataStructures::List&lt;int&gt;</a> &amp;skipColumnIndices)</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;{</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> <a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml" title="Array based implementation of a list.">DataStructures::List&lt;DataStructures::Table::ColumnDescriptor&gt;</a> &amp;columns=in-&gt;<a class="code" href="../../d4/de5/class_data_structures_1_1_table.xhtml#ad91aa7d4f82573bbd2ab0033397e4d8c" title="Direct access to make things easier.">GetColumns</a>();</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; out-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<span class="keywordtype">unsigned</span>)columns.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>()-skipColumnIndices.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>());</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordtype">unsigned</span> i;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">for</span> (i=0; i&lt;columns.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); i++)</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; {</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">if</span> (skipColumnIndices.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#aae4e608a6f4cc3560ee3b3b20eda67fe" title="Returns the index of the specified item or MAX_UNSIGNED_LONG if not found.">GetIndexOf</a>(i)==(unsigned)-1)</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; {</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="../../de/d3d/class_s_l_net_1_1_string_compressor.xhtml#acbd6add1c51c15fbbb616ce17b527aab">StringCompressor::Instance</a>()-&gt;<a class="code" href="../../de/d3d/class_s_l_net_1_1_string_compressor.xhtml#a44be8cc8a469a28085a7502650040459">EncodeString</a>(columns[i].columnName, <a class="code" href="../../d3/d5d/_d_s___table_8h.xhtml#a191b70b2ee9ef9fcf914d90674d8bdb3">_TABLE_MAX_COLUMN_NAME_LENGTH</a>, out);</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; out-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>)columns[i].columnType);</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; } </div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;}</div>
<div class="line"><a name="l00065"></a><span class="lineno"><a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#abb255db1aae58c937c1f0cfece0079ec"> 65</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#abb255db1aae58c937c1f0cfece0079ec">TableSerializer::DeserializeTable</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *serializedTable, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dataLength, <a class="code" href="../../d4/de5/class_data_structures_1_1_table.xhtml" title="Holds a set of columns, a set of rows, and rows times columns cells.">DataStructures::Table</a> *out)</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;{</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> in((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*) serializedTable, dataLength, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#abb255db1aae58c937c1f0cfece0079ec">DeserializeTable</a>(&amp;in, out);</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;}</div>
<div class="line"><a name="l00070"></a><span class="lineno"><a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#ac8e8f5369b0cf3ae294fda049df69e43"> 70</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#abb255db1aae58c937c1f0cfece0079ec">TableSerializer::DeserializeTable</a>(<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *in, <a class="code" href="../../d4/de5/class_data_structures_1_1_table.xhtml" title="Holds a set of columns, a set of rows, and rows times columns cells.">DataStructures::Table</a> *out)</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;{</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordtype">unsigned</span> rowSize;</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#a80c40c91b3fbdc1456610874f79ce02a">DeserializeColumns</a>(in,out);</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">if</span> (in-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a59f38126d8d19bfd264a2e2cace7d1db" title="Read any integral type from a bitstream.">Read</a>(rowSize)==<span class="keyword">false</span> || rowSize&gt;100000)</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(0);</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>; <span class="comment">// Hacker crash prevention</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordtype">unsigned</span> rowIndex;</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">for</span> (rowIndex=0; rowIndex &lt; rowSize; rowIndex++)</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; {</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#aea84f237ae3a279dd936853b3bb239fe">DeserializeRow</a>(in, out)==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;}</div>
<div class="line"><a name="l00088"></a><span class="lineno"><a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#a80c40c91b3fbdc1456610874f79ce02a"> 88</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#a80c40c91b3fbdc1456610874f79ce02a">TableSerializer::DeserializeColumns</a>(<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *in, <a class="code" href="../../d4/de5/class_data_structures_1_1_table.xhtml" title="Holds a set of columns, a set of rows, and rows times columns cells.">DataStructures::Table</a> *out)</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;{</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordtype">unsigned</span> columnSize;</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> columnType;</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordtype">char</span> columnName[<a class="code" href="../../d3/d5d/_d_s___table_8h.xhtml#a191b70b2ee9ef9fcf914d90674d8bdb3">_TABLE_MAX_COLUMN_NAME_LENGTH</a>];</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">if</span> (in-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a59f38126d8d19bfd264a2e2cace7d1db" title="Read any integral type from a bitstream.">Read</a>(columnSize)==<span class="keyword">false</span> || columnSize &gt; 10000)</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>; <span class="comment">// Hacker crash prevention</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; out-&gt;<a class="code" href="../../d4/de5/class_data_structures_1_1_table.xhtml#a6deddcab925ca223177ecf9caf611e08" title="Frees all memory in the table.">Clear</a>();</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordtype">unsigned</span> i;</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">for</span> (i=0; i&lt;columnSize; i++)</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="../../de/d3d/class_s_l_net_1_1_string_compressor.xhtml#acbd6add1c51c15fbbb616ce17b527aab">StringCompressor::Instance</a>()-&gt;<a class="code" href="../../de/d3d/class_s_l_net_1_1_string_compressor.xhtml#a5ff01d168653fbd47d917e7ffd3675cd">DecodeString</a>(columnName, 32, in);</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; in-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a59f38126d8d19bfd264a2e2cace7d1db" title="Read any integral type from a bitstream.">Read</a>(columnType);</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; out-&gt;<a class="code" href="../../d4/de5/class_data_structures_1_1_table.xhtml#a3c2015a75baeec5db76f56cd60f16059" title="Adds a column to the table.">AddColumn</a>(columnName, (<a class="code" href="../../d4/de5/class_data_structures_1_1_table.xhtml#af24fe2724b507f329c7754ea6985abed">DataStructures::Table::ColumnType</a>)columnType);</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;}</div>
<div class="line"><a name="l00106"></a><span class="lineno"><a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#a43c24cf41b4bc929ec44827a8b4d0ac2"> 106</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#a43c24cf41b4bc929ec44827a8b4d0ac2">TableSerializer::SerializeRow</a>(<a class="code" href="../../d6/dd3/struct_data_structures_1_1_table_1_1_row.xhtml" title="Stores the list of cells for this row, and a special flag used for internal sorting.">DataStructures::Table::Row</a> *in, <span class="keywordtype">unsigned</span> keyIn, <span class="keyword">const</span> <a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml" title="Array based implementation of a list.">DataStructures::List&lt;DataStructures::Table::ColumnDescriptor&gt;</a> &amp;columns, <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *out)</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;{</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordtype">unsigned</span> cellIndex;</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; out-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(keyIn);</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> columnsSize = columns.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>();</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; out-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(columnsSize);</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">for</span> (cellIndex=0; cellIndex&lt;columns.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); cellIndex++)</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; {</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; out-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(cellIndex);</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#ae68674bc2efd7c7c86882a8df4c4f585">SerializeCell</a>(out, in-&gt;<a class="code" href="../../d6/dd3/struct_data_structures_1_1_table_1_1_row.xhtml#adf9117523954e44aca862cdfaf19a2b8">cells</a>[cellIndex], columns[cellIndex].columnType);</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; }</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;}</div>
<div class="line"><a name="l00118"></a><span class="lineno"><a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#afe03b60eab1b91621dc85126aeeb3934"> 118</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#a43c24cf41b4bc929ec44827a8b4d0ac2">TableSerializer::SerializeRow</a>(<a class="code" href="../../d6/dd3/struct_data_structures_1_1_table_1_1_row.xhtml" title="Stores the list of cells for this row, and a special flag used for internal sorting.">DataStructures::Table::Row</a> *in, <span class="keywordtype">unsigned</span> keyIn, <span class="keyword">const</span> <a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml" title="Array based implementation of a list.">DataStructures::List&lt;DataStructures::Table::ColumnDescriptor&gt;</a> &amp;columns, <a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *out, <a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml" title="Array based implementation of a list.">DataStructures::List&lt;int&gt;</a> &amp;skipColumnIndices)</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;{</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordtype">unsigned</span> cellIndex;</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; out-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(keyIn);</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numEntries=0;</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">for</span> (cellIndex=0; cellIndex&lt;columns.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); cellIndex++)</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; {</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">if</span> (skipColumnIndices.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#aae4e608a6f4cc3560ee3b3b20eda67fe" title="Returns the index of the specified item or MAX_UNSIGNED_LONG if not found.">GetIndexOf</a>(cellIndex)==(unsigned)-1)</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; {</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; numEntries++;</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; out-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(numEntries);</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">for</span> (cellIndex=0; cellIndex&lt;columns.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#a6f13a4519693cbd16cd13b1fe284f330">Size</a>(); cellIndex++)</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; {</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">if</span> (skipColumnIndices.<a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml#aae4e608a6f4cc3560ee3b3b20eda67fe" title="Returns the index of the specified item or MAX_UNSIGNED_LONG if not found.">GetIndexOf</a>(cellIndex)==(unsigned)-1)</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; {</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; out-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(cellIndex);</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#ae68674bc2efd7c7c86882a8df4c4f585">SerializeCell</a>(out, in-&gt;<a class="code" href="../../d6/dd3/struct_data_structures_1_1_table_1_1_row.xhtml#adf9117523954e44aca862cdfaf19a2b8">cells</a>[cellIndex], columns[cellIndex].columnType);</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; }</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; }</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;}</div>
<div class="line"><a name="l00141"></a><span class="lineno"><a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#aea84f237ae3a279dd936853b3bb239fe"> 141</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#aea84f237ae3a279dd936853b3bb239fe">TableSerializer::DeserializeRow</a>(<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *in, <a class="code" href="../../d4/de5/class_data_structures_1_1_table.xhtml" title="Holds a set of columns, a set of rows, and rows times columns cells.">DataStructures::Table</a> *out)</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;{</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keyword">const</span> <a class="code" href="../../d4/d78/class_data_structures_1_1_list.xhtml" title="Array based implementation of a list.">DataStructures::List&lt;DataStructures::Table::ColumnDescriptor&gt;</a> &amp;columns=out-&gt;<a class="code" href="../../d4/de5/class_data_structures_1_1_table.xhtml#ad91aa7d4f82573bbd2ab0033397e4d8c" title="Direct access to make things easier.">GetColumns</a>();</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordtype">unsigned</span> numEntries;</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="../../d6/dd3/struct_data_structures_1_1_table_1_1_row.xhtml" title="Stores the list of cells for this row, and a special flag used for internal sorting.">DataStructures::Table::Row</a> *row;</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordtype">unsigned</span> key;</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">if</span> (in-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a59f38126d8d19bfd264a2e2cace7d1db" title="Read any integral type from a bitstream.">Read</a>(key)==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; row=out-&gt;<a class="code" href="../../d4/de5/class_data_structures_1_1_table.xhtml#a2692e5348c98bcf1328ed40f72fcae60" title="Adds a row to the table.">AddRow</a>(key);</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cnt;</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; in-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a59f38126d8d19bfd264a2e2cace7d1db" title="Read any integral type from a bitstream.">Read</a>(numEntries);</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">for</span> (cnt=0; cnt&lt;numEntries; cnt++)</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; {</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordtype">unsigned</span> cellIndex;</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; in-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a59f38126d8d19bfd264a2e2cace7d1db" title="Read any integral type from a bitstream.">Read</a>(cellIndex);</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#abd983da99870b8869bab6bded6c205e6">DeserializeCell</a>(in, row-&gt;<a class="code" href="../../d6/dd3/struct_data_structures_1_1_table_1_1_row.xhtml#adf9117523954e44aca862cdfaf19a2b8">cells</a>[cellIndex], columns[cellIndex].columnType)==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; {</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; out-&gt;<a class="code" href="../../d4/de5/class_data_structures_1_1_table.xhtml#afe51f45747401157b45ec7d5a74f1a41" title="Removes a row specified by rowId.">RemoveRow</a>(key);</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; }</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;}</div>
<div class="line"><a name="l00164"></a><span class="lineno"><a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#ae68674bc2efd7c7c86882a8df4c4f585"> 164</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#ae68674bc2efd7c7c86882a8df4c4f585">TableSerializer::SerializeCell</a>(<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *out, <a class="code" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml" title="Holds the actual data in the table.">DataStructures::Table::Cell</a> *cell, <a class="code" href="../../d4/de5/class_data_structures_1_1_table.xhtml#af24fe2724b507f329c7754ea6985abed">DataStructures::Table::ColumnType</a> columnType)</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;{</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; out-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(cell-&gt;<a class="code" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a604bc863f25f833f352d4064ed003677">isEmpty</a>);</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">if</span> (cell-&gt;<a class="code" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a604bc863f25f833f352d4064ed003677">isEmpty</a>==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; {</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">if</span> (columnType==<a class="code" href="../../d4/de5/class_data_structures_1_1_table.xhtml#af24fe2724b507f329c7754ea6985abeda3c22480145b2a7c8818f3c3baf7c8692">DataStructures::Table::NUMERIC</a>)</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; {</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; out-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(cell-&gt;<a class="code" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a6e0e9d8de5d3ea687af23e5b0c357723">i</a>);</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; }</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (columnType==<a class="code" href="../../d4/de5/class_data_structures_1_1_table.xhtml#af24fe2724b507f329c7754ea6985abedaf2b7a2432e2c786ff02052286df310af">DataStructures::Table::STRING</a>)</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; {</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="../../de/d3d/class_s_l_net_1_1_string_compressor.xhtml#acbd6add1c51c15fbbb616ce17b527aab">StringCompressor::Instance</a>()-&gt;<a class="code" href="../../de/d3d/class_s_l_net_1_1_string_compressor.xhtml#a44be8cc8a469a28085a7502650040459">EncodeString</a>(cell-&gt;<a class="code" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#ab732aa0d33409753f93aeccffb4dc08c">c</a>, 65535, out);</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (columnType==<a class="code" href="../../d4/de5/class_data_structures_1_1_table.xhtml#af24fe2724b507f329c7754ea6985abeda5f31a94399b1ed3b469c71b3c55cace1">DataStructures::Table::POINTER</a>)</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; {</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; out-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(cell-&gt;<a class="code" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#aa9c09a4660110db5161be819515e19f0">ptr</a>);</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; }</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; {</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="comment">// Binary</span></div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(columnType==<a class="code" href="../../d4/de5/class_data_structures_1_1_table.xhtml#af24fe2724b507f329c7754ea6985abeda2550a73a55b0ab443d0bd782927f7acd">DataStructures::Table::BINARY</a>);</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(cell-&gt;<a class="code" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a6e0e9d8de5d3ea687af23e5b0c357723">i</a>&gt;0);</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordtype">unsigned</span> binaryLength;</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; binaryLength=(unsigned)cell-&gt;<a class="code" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a6e0e9d8de5d3ea687af23e5b0c357723">i</a>;</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; out-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(binaryLength);</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; out-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#af777083a659116082f109ccd9c8639f5" title="Align the bitstream to the byte boundary and then write the specified number of bits.">WriteAlignedBytes</a>((<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*) cell-&gt;<a class="code" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#ab732aa0d33409753f93aeccffb4dc08c">c</a>, (<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) cell-&gt;<a class="code" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a6e0e9d8de5d3ea687af23e5b0c357723">i</a>);</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; }</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;}</div>
<div class="line"><a name="l00193"></a><span class="lineno"><a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#abd983da99870b8869bab6bded6c205e6"> 193</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#abd983da99870b8869bab6bded6c205e6">TableSerializer::DeserializeCell</a>(<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *in, <a class="code" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml" title="Holds the actual data in the table.">DataStructures::Table::Cell</a> *cell, <a class="code" href="../../d4/de5/class_data_structures_1_1_table.xhtml#af24fe2724b507f329c7754ea6985abed">DataStructures::Table::ColumnType</a> columnType)</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;{</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordtype">bool</span> isEmpty=<span class="keyword">false</span>;</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordtype">double</span> value;</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordtype">void</span> *ptr;</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordtype">char</span> tempString[65535];</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; cell-&gt;<a class="code" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a606a5ea9272ac1ffbc8dc9a3d1fd8ef0">Clear</a>();</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">if</span> (in-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a59f38126d8d19bfd264a2e2cace7d1db" title="Read any integral type from a bitstream.">Read</a>(isEmpty)==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">if</span> (isEmpty==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; {</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">if</span> (columnType==<a class="code" href="../../d4/de5/class_data_structures_1_1_table.xhtml#af24fe2724b507f329c7754ea6985abeda3c22480145b2a7c8818f3c3baf7c8692">DataStructures::Table::NUMERIC</a>)</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; {</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">if</span> (in-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a59f38126d8d19bfd264a2e2cace7d1db" title="Read any integral type from a bitstream.">Read</a>(value)==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; cell-&gt;<a class="code" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a68e3910b644c6e478365ace539b70bab" title="Numeric.">Set</a>(value);</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; }</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (columnType==<a class="code" href="../../d4/de5/class_data_structures_1_1_table.xhtml#af24fe2724b507f329c7754ea6985abedaf2b7a2432e2c786ff02052286df310af">DataStructures::Table::STRING</a>)</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; {</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../de/d3d/class_s_l_net_1_1_string_compressor.xhtml#acbd6add1c51c15fbbb616ce17b527aab">StringCompressor::Instance</a>()-&gt;DecodeString(tempString, 65535, in)==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; cell-&gt;<a class="code" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a68e3910b644c6e478365ace539b70bab" title="Numeric.">Set</a>(tempString);</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; }</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (columnType==<a class="code" href="../../d4/de5/class_data_structures_1_1_table.xhtml#af24fe2724b507f329c7754ea6985abeda5f31a94399b1ed3b469c71b3c55cace1">DataStructures::Table::POINTER</a>)</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; {</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">if</span> (in-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a59f38126d8d19bfd264a2e2cace7d1db" title="Read any integral type from a bitstream.">Read</a>(ptr)==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; cell-&gt;<a class="code" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a2edb7a4e719cbf5d1a9f05c8b158d833" title="Pointer.">SetPtr</a>(ptr);</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; }</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; {</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordtype">unsigned</span> binaryLength;</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="comment">// Binary</span></div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(columnType==<a class="code" href="../../d4/de5/class_data_structures_1_1_table.xhtml#af24fe2724b507f329c7754ea6985abeda2550a73a55b0ab443d0bd782927f7acd">DataStructures::Table::BINARY</a>);</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">if</span> (in-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a59f38126d8d19bfd264a2e2cace7d1db" title="Read any integral type from a bitstream.">Read</a>(binaryLength)==<span class="keyword">false</span> || binaryLength &gt; 10000000)</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>; <span class="comment">// Sanity check to max binary cell of 10 megabytes</span></div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; in-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#af64b3663a865840e013f5aef490d891e" title="Align the next write and/or read to a byte boundary.">AlignReadToByteBoundary</a>();</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="../../d9/d49/types_8h.xhtml#ac5eb6b4755b74c50cb76155d08b6e2ff" title="Given a number of bits, return how many bytes are needed to represent that.">BITS_TO_BYTES</a>(in-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a89838c39f170290405c95d78b0553e51" title="Returns the number of bits left in the stream that haven&#39;t been read.">GetNumberOfUnreadBits</a>())&lt;(<a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a227d2a5f9683a34d9d1e70772fd556ec">BitSize_t</a>)binaryLength)</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; cell-&gt;<a class="code" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a68e3910b644c6e478365ace539b70bab" title="Numeric.">Set</a>((<span class="keywordtype">char</span>*) in-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a7b4099386f6f116f0978b00ead160a0d">GetData</a>()+<a class="code" href="../../d9/d49/types_8h.xhtml#ac5eb6b4755b74c50cb76155d08b6e2ff" title="Given a number of bits, return how many bytes are needed to represent that.">BITS_TO_BYTES</a>(in-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a1bbe42adf8f779256b04d5becdafe342" title="Returns the number of bits into the stream that we have read.">GetReadOffset</a>()), (<span class="keywordtype">int</span>) binaryLength);</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; in-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#ab527c7971fb48bd480842166736e1fa9" title="Ignore data we don&#39;t intend to read.">IgnoreBits</a>(<a class="code" href="../../d9/d49/types_8h.xhtml#a4c1e0708f6f9b121ca602cd8ceddd670">BYTES_TO_BITS</a>((<span class="keywordtype">int</span>) binaryLength));</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; }</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; }</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;}</div>
<div class="line"><a name="l00239"></a><span class="lineno"><a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#a38407cbaacf8ad21c454ee46e80fd15c"> 239</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#a38407cbaacf8ad21c454ee46e80fd15c">TableSerializer::SerializeFilterQuery</a>(<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *in, <a class="code" href="../../dd/db4/struct_data_structures_1_1_table_1_1_filter_query.xhtml">DataStructures::Table::FilterQuery</a> *query)</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;{</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <a class="code" href="../../de/d3d/class_s_l_net_1_1_string_compressor.xhtml#acbd6add1c51c15fbbb616ce17b527aab">StringCompressor::Instance</a>()-&gt;<a class="code" href="../../de/d3d/class_s_l_net_1_1_string_compressor.xhtml#a44be8cc8a469a28085a7502650040459">EncodeString</a>(query-&gt;<a class="code" href="../../dd/db4/struct_data_structures_1_1_table_1_1_filter_query.xhtml#acb1fc87ccc2e5beb7f0702bd216c845d">columnName</a>,<a class="code" href="../../d3/d5d/_d_s___table_8h.xhtml#a191b70b2ee9ef9fcf914d90674d8bdb3">_TABLE_MAX_COLUMN_NAME_LENGTH</a>,in,0);</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; in-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a24121050ec7d63a6eba5d1b243b4922b" title="Write any integral type to a bitstream.">WriteCompressed</a>(query-&gt;<a class="code" href="../../dd/db4/struct_data_structures_1_1_table_1_1_filter_query.xhtml#a751a903835cd6d13d817e624b42a2bfd">columnIndex</a>);</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; in-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>) query-&gt;<a class="code" href="../../dd/db4/struct_data_structures_1_1_table_1_1_filter_query.xhtml#acef81569cbccb0b56d21418360632551">operation</a>);</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; in-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(query-&gt;<a class="code" href="../../dd/db4/struct_data_structures_1_1_table_1_1_filter_query.xhtml#ab9f39f1bb6ee7863a2f3d419bc24ca85">cellValue</a>-&gt;<a class="code" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a604bc863f25f833f352d4064ed003677">isEmpty</a>);</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">if</span> (query-&gt;<a class="code" href="../../dd/db4/struct_data_structures_1_1_table_1_1_filter_query.xhtml#ab9f39f1bb6ee7863a2f3d419bc24ca85">cellValue</a>-&gt;<a class="code" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a604bc863f25f833f352d4064ed003677">isEmpty</a>==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; {</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; in-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(query-&gt;<a class="code" href="../../dd/db4/struct_data_structures_1_1_table_1_1_filter_query.xhtml#ab9f39f1bb6ee7863a2f3d419bc24ca85">cellValue</a>-&gt;<a class="code" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a6e0e9d8de5d3ea687af23e5b0c357723">i</a>);</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; in-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a04d3ec5e1e1cccf01a4b058f80d41c9b" title="Aligns the bitstream, writes inputLength, and writes input. Won&#39;t write beyond maxBytesToWrite.">WriteAlignedBytesSafe</a>((<span class="keyword">const</span> <span class="keywordtype">char</span>*)query-&gt;<a class="code" href="../../dd/db4/struct_data_structures_1_1_table_1_1_filter_query.xhtml#ab9f39f1bb6ee7863a2f3d419bc24ca85">cellValue</a>-&gt;<a class="code" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#ab732aa0d33409753f93aeccffb4dc08c">c</a>,(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)query-&gt;<a class="code" href="../../dd/db4/struct_data_structures_1_1_table_1_1_filter_query.xhtml#ab9f39f1bb6ee7863a2f3d419bc24ca85">cellValue</a>-&gt;<a class="code" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a6e0e9d8de5d3ea687af23e5b0c357723">i</a>,10000000); <span class="comment">// Sanity check to max binary cell of 10 megabytes</span></div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; in-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>(query-&gt;<a class="code" href="../../dd/db4/struct_data_structures_1_1_table_1_1_filter_query.xhtml#ab9f39f1bb6ee7863a2f3d419bc24ca85">cellValue</a>-&gt;<a class="code" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#aa9c09a4660110db5161be819515e19f0">ptr</a>);</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; }</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;}</div>
<div class="line"><a name="l00253"></a><span class="lineno"><a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#adc6b2a83463731c9cf2bc4f41907dc0e"> 253</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#adc6b2a83463731c9cf2bc4f41907dc0e">TableSerializer::DeserializeFilterQuery</a>(<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *out, <a class="code" href="../../dd/db4/struct_data_structures_1_1_table_1_1_filter_query.xhtml">DataStructures::Table::FilterQuery</a> *query)</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;{</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordtype">bool</span> b;</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(query-&gt;<a class="code" href="../../dd/db4/struct_data_structures_1_1_table_1_1_filter_query.xhtml#ab9f39f1bb6ee7863a2f3d419bc24ca85">cellValue</a>);</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <a class="code" href="../../de/d3d/class_s_l_net_1_1_string_compressor.xhtml#acbd6add1c51c15fbbb616ce17b527aab">StringCompressor::Instance</a>()-&gt;<a class="code" href="../../de/d3d/class_s_l_net_1_1_string_compressor.xhtml#a5ff01d168653fbd47d917e7ffd3675cd">DecodeString</a>(query-&gt;<a class="code" href="../../dd/db4/struct_data_structures_1_1_table_1_1_filter_query.xhtml#acb1fc87ccc2e5beb7f0702bd216c845d">columnName</a>,<a class="code" href="../../d3/d5d/_d_s___table_8h.xhtml#a191b70b2ee9ef9fcf914d90674d8bdb3">_TABLE_MAX_COLUMN_NAME_LENGTH</a>,out,0);</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; out-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#ac7fcbda7a05b5c7bd7018205cb1bb7b0" title="Read any integral type from a bitstream.">ReadCompressed</a>(query-&gt;<a class="code" href="../../dd/db4/struct_data_structures_1_1_table_1_1_filter_query.xhtml#a751a903835cd6d13d817e624b42a2bfd">columnIndex</a>);</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> op;</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; out-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a59f38126d8d19bfd264a2e2cace7d1db" title="Read any integral type from a bitstream.">Read</a>(op);</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; query-&gt;<a class="code" href="../../dd/db4/struct_data_structures_1_1_table_1_1_filter_query.xhtml#acef81569cbccb0b56d21418360632551">operation</a>=(<a class="code" href="../../d4/de5/class_data_structures_1_1_table.xhtml#a64a115f6653bf7b0b7fddfcbc769ef74">DataStructures::Table::FilterQueryType</a>) op;</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; query-&gt;<a class="code" href="../../dd/db4/struct_data_structures_1_1_table_1_1_filter_query.xhtml#ab9f39f1bb6ee7863a2f3d419bc24ca85">cellValue</a>-&gt;<a class="code" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a606a5ea9272ac1ffbc8dc9a3d1fd8ef0">Clear</a>();</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; b=out-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a59f38126d8d19bfd264a2e2cace7d1db" title="Read any integral type from a bitstream.">Read</a>(query-&gt;<a class="code" href="../../dd/db4/struct_data_structures_1_1_table_1_1_filter_query.xhtml#ab9f39f1bb6ee7863a2f3d419bc24ca85">cellValue</a>-&gt;<a class="code" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a604bc863f25f833f352d4064ed003677">isEmpty</a>);</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">if</span> (query-&gt;<a class="code" href="../../dd/db4/struct_data_structures_1_1_table_1_1_filter_query.xhtml#ab9f39f1bb6ee7863a2f3d419bc24ca85">cellValue</a>-&gt;<a class="code" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a604bc863f25f833f352d4064ed003677">isEmpty</a>==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; {</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="comment">// HACK - cellValue-&gt;i is used for integer, character, and binary data. However, for character and binary c will be 0. So use that to determine if the data was integer or not.</span></div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; out-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a59f38126d8d19bfd264a2e2cace7d1db" title="Read any integral type from a bitstream.">Read</a>(query-&gt;<a class="code" href="../../dd/db4/struct_data_structures_1_1_table_1_1_filter_query.xhtml#ab9f39f1bb6ee7863a2f3d419bc24ca85">cellValue</a>-&gt;<a class="code" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a6e0e9d8de5d3ea687af23e5b0c357723">i</a>);</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputLength;</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; out-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#ac0de4d120c23b53f15b786d2b86d202d" title="Same as ReadAlignedBytesSafe() but allocates the memory for you using new, rather than assuming it is...">ReadAlignedBytesSafeAlloc</a>(&amp;query-&gt;<a class="code" href="../../dd/db4/struct_data_structures_1_1_table_1_1_filter_query.xhtml#ab9f39f1bb6ee7863a2f3d419bc24ca85">cellValue</a>-&gt;<a class="code" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#ab732aa0d33409753f93aeccffb4dc08c">c</a>,inputLength,10000000); <span class="comment">// Sanity check to max binary cell of 10 megabytes</span></div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">if</span> (query-&gt;<a class="code" href="../../dd/db4/struct_data_structures_1_1_table_1_1_filter_query.xhtml#ab9f39f1bb6ee7863a2f3d419bc24ca85">cellValue</a>-&gt;<a class="code" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#ab732aa0d33409753f93aeccffb4dc08c">c</a>)</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; query-&gt;<a class="code" href="../../dd/db4/struct_data_structures_1_1_table_1_1_filter_query.xhtml#ab9f39f1bb6ee7863a2f3d419bc24ca85">cellValue</a>-&gt;<a class="code" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#a6e0e9d8de5d3ea687af23e5b0c357723">i</a>=inputLength;</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; b=out-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a59f38126d8d19bfd264a2e2cace7d1db" title="Read any integral type from a bitstream.">Read</a>(query-&gt;<a class="code" href="../../dd/db4/struct_data_structures_1_1_table_1_1_filter_query.xhtml#ab9f39f1bb6ee7863a2f3d419bc24ca85">cellValue</a>-&gt;<a class="code" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml#aa9c09a4660110db5161be819515e19f0">ptr</a>);</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; }</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">return</span> b;</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;}</div>
<div class="line"><a name="l00276"></a><span class="lineno"><a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#a8ffbb19436b8c93f1e036a1c7ee5269d"> 276</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#a8ffbb19436b8c93f1e036a1c7ee5269d">TableSerializer::SerializeFilterQueryList</a>(<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *in, <a class="code" href="../../dd/db4/struct_data_structures_1_1_table_1_1_filter_query.xhtml">DataStructures::Table::FilterQuery</a> *query, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numQueries, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxQueries)</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;{</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; (void) maxQueries;</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; in-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a2d1187ee508dc9d231d27aed1867d201" title="Write any integral type to a bitstream.">Write</a>((<span class="keywordtype">bool</span>)(query &amp;&amp; numQueries&gt;0));</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">if</span> (query==0 || numQueries&lt;=0)</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(numQueries&lt;=maxQueries);</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; in-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a24121050ec7d63a6eba5d1b243b4922b" title="Write any integral type to a bitstream.">WriteCompressed</a>(numQueries);</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordtype">unsigned</span> i;</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; numQueries; i++)</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; {</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#a38407cbaacf8ad21c454ee46e80fd15c">SerializeFilterQuery</a>(in, query);</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; }</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;}</div>
<div class="line"><a name="l00291"></a><span class="lineno"><a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#a491acea9531dced0634512f8ae337502"> 291</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#a491acea9531dced0634512f8ae337502">TableSerializer::DeserializeFilterQueryList</a>(<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml">SLNet::BitStream</a> *out, <a class="code" href="../../dd/db4/struct_data_structures_1_1_table_1_1_filter_query.xhtml">DataStructures::Table::FilterQuery</a> **query, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *numQueries, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxQueries, <span class="keywordtype">int</span> allocateExtraQueries)</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;{</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordtype">bool</span> b, anyQueries=<span class="keyword">false</span>;</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; out-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#a59f38126d8d19bfd264a2e2cace7d1db" title="Read any integral type from a bitstream.">Read</a>(anyQueries);</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">if</span> (anyQueries==<span class="keyword">false</span>)</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; {</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">if</span> (allocateExtraQueries&lt;=0)</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; *query=0;</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; *query=<span class="keyword">new</span> <a class="code" href="../../dd/db4/struct_data_structures_1_1_table_1_1_filter_query.xhtml">DataStructures::Table::FilterQuery</a>[allocateExtraQueries];</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; *numQueries=0;</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; }</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; b=out-&gt;<a class="code" href="../../df/d75/class_s_l_net_1_1_bit_stream.xhtml#ac7fcbda7a05b5c7bd7018205cb1bb7b0" title="Read any integral type from a bitstream.">ReadCompressed</a>(*numQueries);</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">if</span> (*numQueries&gt;maxQueries)</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; {</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <a class="code" href="../../d8/db0/defines_8h.xhtml#afaa3647d29f5960651eb23fd3d2b5368">RakAssert</a>(0);</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; *numQueries=maxQueries;</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; }</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">if</span> (*numQueries==0)</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">return</span> b;</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; *query=<span class="keyword">new</span> <a class="code" href="../../dd/db4/struct_data_structures_1_1_table_1_1_filter_query.xhtml">DataStructures::Table::FilterQuery</a>[*numQueries+allocateExtraQueries];</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <a class="code" href="../../dd/db4/struct_data_structures_1_1_table_1_1_filter_query.xhtml">DataStructures::Table::FilterQuery</a> *queryPtr = *query;</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordtype">unsigned</span> i;</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; *numQueries; i++)</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; {</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; queryPtr[i].<a class="code" href="../../dd/db4/struct_data_structures_1_1_table_1_1_filter_query.xhtml#ab9f39f1bb6ee7863a2f3d419bc24ca85">cellValue</a>=<span class="keyword">new</span> <a class="code" href="../../dc/d80/struct_data_structures_1_1_table_1_1_cell.xhtml" title="Holds the actual data in the table.">DataStructures::Table::Cell</a>;</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; b=<a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#adc6b2a83463731c9cf2bc4f41907dc0e">DeserializeFilterQuery</a>(out, queryPtr+i);</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; }</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordflow">return</span> b;</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;}</div>
<div class="line"><a name="l00326"></a><span class="lineno"><a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#aa5e44ba48454f0ee2672becbb5bd98dc"> 326</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../df/d89/class_s_l_net_1_1_table_serializer.xhtml#aa5e44ba48454f0ee2672becbb5bd98dc">TableSerializer::DeallocateQueryList</a>(<a class="code" href="../../dd/db4/struct_data_structures_1_1_table_1_1_filter_query.xhtml">DataStructures::Table::FilterQuery</a> *query, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numQueries)</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;{</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">if</span> (query==0 || numQueries==0)</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordtype">unsigned</span> i;</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">for</span> (i=0; i &lt; numQueries; i++)</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#a79772d09451f784e87bec85694fad1ed">SLNet::OP_DELETE</a>(query[i].cellValue, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <a class="code" href="../../dd/d30/namespace_s_l_net.xhtml#acd53258ab2c0b731df325c91b2e85c9b">SLNet::OP_DELETE_ARRAY</a>(query, <a class="code" href="../../d8/db0/defines_8h.xhtml#a8661ec2137eef33a8cd0cd618a748871">_FILE_AND_LINE_</a>);</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;}</div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_d1eb22c2ecfd8b50f59e9cbaf8260105.xhtml">src</a></li><li class="navelem"><a class="el" href="../../da/df7/_table_serializer_8cpp.xhtml">TableSerializer.cpp</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,169 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Member List</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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.xhtml"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.xhtml"><span>Class&#160;Index</span></a></li>
<li><a href="../../inherits.xhtml"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.xhtml"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('db/dcc/class_s_l_net_1_1_connection_graph2.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">SLNet::ConnectionGraph2 Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml">SLNet::ConnectionGraph2</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a3566a5e64697a35f3b2a49efad7573ca">AddParticipant</a>(const SystemAddress &amp;systemAddress, RakNetGUID rakNetGUID)</td><td class="entry"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml">SLNet::ConnectionGraph2</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#aed235e7933ca7f30448eb9c91cefab63">AllocatePacketUnified</a>(unsigned dataSize)</td><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2">SLNet::PluginInterface2</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a5231308683c1c1a77449ad1f67dd5513">autoProcessNewConnections</a></td><td class="entry"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml">SLNet::ConnectionGraph2</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr><td class="entry"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ae503cd5c3df9a62012e3a4070ff42958">ConnectionExists</a>(RakNetGUID g1, RakNetGUID g2)</td><td class="entry"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml">SLNet::ConnectionGraph2</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a8e9d90b6a136a83bccb7d0296ec3bcc7">ConnectionGraph2</a>()</td><td class="entry"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml">SLNet::ConnectionGraph2</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#a71b375de9093e4116b57bf3780d1615b">DeallocPacketUnified</a>(Packet *packet)</td><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2">SLNet::PluginInterface2</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a8dc6493e64b6e2cd3fa1adbc89f1825c">GetAutoProcessNewConnections</a>(void) const </td><td class="entry"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml">SLNet::ConnectionGraph2</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#af12e07ce7fe7e16f61972669650380c6">GetConnectionListForRemoteSystem</a>(RakNetGUID remoteSystemGuid, SystemAddress *saOut, RakNetGUID *guidOut, unsigned int *outLength)</td><td class="entry"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml">SLNet::ConnectionGraph2</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a9ce22b4facec50afecc4e0016b26c7cf">GetLowestAveragePingSystem</a>(void) const </td><td class="entry"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml">SLNet::ConnectionGraph2</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#a917f7caf3bcd763620cce934761aa8a8">GetMyGUIDUnified</a>(void) const </td><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2">SLNet::PluginInterface2</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ab20e74a7e6e6ab545ee7cbac6d616aa3">GetParticipantList</a>(DataStructures::OrderedList&lt; RakNetGUID, RakNetGUID &gt; &amp;participantList)</td><td class="entry"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml">SLNet::ConnectionGraph2</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a4dbfbbdae82e4b9836a23ea0229904f1">GetPingBetweenSystems</a>(RakNetGUID g1, RakNetGUID g2) const </td><td class="entry"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml">SLNet::ConnectionGraph2</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#acd3c54782ccc647432571e5e5bae5e48">GetRakPeerInterface</a>(void) const </td><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2">SLNet::PluginInterface2</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#acc1f6b096fd6d98064a1f1a4af8500d1">OnAck</a>(unsigned int messageNumber, SystemAddress remoteSystemAddress, SLNet::TimeMS time)</td><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2">SLNet::PluginInterface2</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#afe33b32b1729289a809ada304227cbd8">OnAttach</a>(void)</td><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2">SLNet::PluginInterface2</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a521283c11f9676354cef6409618d517d">OnClosedConnection</a>(const SystemAddress &amp;systemAddress, RakNetGUID rakNetGUID, PI2_LostConnectionReason lostConnectionReason)</td><td class="entry"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml">SLNet::ConnectionGraph2</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#aad23dec19f2567a5b64c2108f73be0e4">OnDetach</a>(void)</td><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2">SLNet::PluginInterface2</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#afe625ccabbbfea5b8d0dd717748ef857">OnDirectSocketReceive</a>(const char *data, const BitSize_t bitsUsed, SystemAddress remoteSystemAddress)</td><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2">SLNet::PluginInterface2</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#acd6172fa97f484a0b874ebbe4f32de0e">OnDirectSocketSend</a>(const char *data, const BitSize_t bitsUsed, SystemAddress remoteSystemAddress)</td><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2">SLNet::PluginInterface2</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#aa95d4714e97480ac51a87b6b34161db7">OnFailedConnectionAttempt</a>(Packet *packet, PI2_FailedConnectionAttemptReason failedConnectionAttemptReason)</td><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2">SLNet::PluginInterface2</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#abb5ebc232cc45b62ea61ee7cde758a22">OnInternalPacket</a>(InternalPacket *internalPacket, unsigned frameNumber, SystemAddress remoteSystemAddress, SLNet::TimeMS time, int isSend)</td><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2">SLNet::PluginInterface2</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a8814949576959078a511a181b048fc38">OnNewConnection</a>(const SystemAddress &amp;systemAddress, RakNetGUID rakNetGUID, bool isIncoming)</td><td class="entry"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml">SLNet::ConnectionGraph2</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#a6b7373aa27360743e697c5afa38fc541">OnPushBackPacket</a>(const char *data, const BitSize_t bitsUsed, SystemAddress remoteSystemAddress)</td><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2">SLNet::PluginInterface2</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#aea8a90c4078ecc0db77545e44531b1de">OnRakPeerShutdown</a>(void)</td><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2">SLNet::PluginInterface2</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#a9943065789510f76737975203f4d05bc">OnRakPeerStartup</a>(void)</td><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2">SLNet::PluginInterface2</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ad9c7cc8d18e6217d5989914cae45fce4">OnReceive</a>(Packet *packet)</td><td class="entry"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml">SLNet::ConnectionGraph2</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#a775d3c4bf7e924a510becfa85b3f1f00">OnReliabilityLayerNotification</a>(const char *errorMessage, const BitSize_t bitsUsed, SystemAddress remoteSystemAddress, bool isError)</td><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2">SLNet::PluginInterface2</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#a2df222e1167c6290dd6d1af585154e73">PluginInterface2</a>()</td><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2">SLNet::PluginInterface2</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#a00bb796b830ec2130b4c11ed13c3e838">PushBackPacketUnified</a>(Packet *packet, bool pushAtHead)</td><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2">SLNet::PluginInterface2</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#adac8deadf450a4e1d69c11b1db588bec">rakPeerInterface</a></td><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2">SLNet::PluginInterface2</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#abb97eccb757efb31305504044749fa13">RemoteSystemComp</a>(const RakNetGUID &amp;key, RemoteSystem *const &amp;data)</td><td class="entry"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml">SLNet::ConnectionGraph2</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#ad56a2d15c2eaf85ed71ca825785f3547">remoteSystems</a></td><td class="entry"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml">SLNet::ConnectionGraph2</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#ad0e4aabc93a77dfb2ec7af08710961b5">SendListUnified</a>(const char **data, const int *lengths, const int numParameters, PacketPriority priority, PacketReliability reliability, char orderingChannel, const AddressOrGUID systemIdentifier, bool broadcast)</td><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2">SLNet::PluginInterface2</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#aa9c79c0d16ece39114231d680190d39a">SendUnified</a>(const SLNet::BitStream *bitStream, PacketPriority priority, PacketReliability reliability, char orderingChannel, const AddressOrGUID systemIdentifier, bool broadcast)</td><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2">SLNet::PluginInterface2</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#a30f7650d8045852663c46dc72c740043">SendUnified</a>(const char *data, const int length, PacketPriority priority, PacketReliability reliability, char orderingChannel, const AddressOrGUID systemIdentifier, bool broadcast)</td><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2">SLNet::PluginInterface2</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr><td class="entry"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#aa3c94a20fa174e1a699b15fa3826fe08">SetAutoProcessNewConnections</a>(bool b)</td><td class="entry"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml">SLNet::ConnectionGraph2</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#a462426e3996a2f1038cac5505ed11fca">SetRakPeerInterface</a>(RakPeerInterface *ptr)</td><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2">SLNet::PluginInterface2</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#aa278807355590c171e787be943dbb520">SetTCPInterface</a>(TCPInterface *ptr)</td><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2">SLNet::PluginInterface2</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a99cefc9306797dfa14dd046c49ad3bf3">SystemAddressAndGuidComp</a>(const SystemAddressAndGuid &amp;key, const SystemAddressAndGuid &amp;data)</td><td class="entry"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml">SLNet::ConnectionGraph2</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#ac298ef92904df807a3248e380e8edf43">tcpInterface</a></td><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2">SLNet::PluginInterface2</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#aa181a0ff58765c3d7878ac6dfd5e5a10">Update</a>(void)</td><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2">SLNet::PluginInterface2</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#a4bed8468dd7d3624c9d8b6e17737ba77">UsesReliabilityLayer</a>(void) const </td><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2">SLNet::PluginInterface2</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml#a566d52dbee675e1226905d97c4bc6be5">~ConnectionGraph2</a>()</td><td class="entry"><a class="el" href="../../db/dcc/class_s_l_net_1_1_connection_graph2.xhtml">SLNet::ConnectionGraph2</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#ae97f06b1fcaa2cc45de4394b89ba3a41">~PluginInterface2</a>()</td><td class="entry"><a class="el" href="../../de/d14/group___p_l_u_g_i_n___i_n_t_e_r_f_a_c_e___g_r_o_u_p.xhtml#db/d5e/class_s_l_net_1_1_plugin_interface2">SLNet::PluginInterface2</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Wed Aug 14 2019 22:09:49 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,124 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Source/src/FullyConnectedMesh2.cpp File 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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../files.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/dfa/_fully_connected_mesh2_8cpp.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">FullyConnectedMesh2.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="../../de/ddb/_native_feature_includes_8h_source.xhtml">slikenet/NativeFeatureIncludes.h</a>&quot;</code><br/>
</div>
<p><a href="../../da/dfa/_fully_connected_mesh2_8cpp_source.xhtml">Go to the source code of this file.</a></p>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_d1eb22c2ecfd8b50f59e9cbaf8260105.xhtml">src</a></li><li class="navelem"><a class="el" href="../../da/dfa/_fully_connected_mesh2_8cpp.xhtml">FullyConnectedMesh2.cpp</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,23 @@
var class_data_structures_1_1_ordered_list =
[
[ "OrderedList", "da/dfc/class_data_structures_1_1_ordered_list.xhtml#ae1f66689234c8a884517632575a4f13c", null ],
[ "~OrderedList", "da/dfc/class_data_structures_1_1_ordered_list.xhtml#afded705b8ce3775c3d5494b1b52aff76", null ],
[ "OrderedList", "da/dfc/class_data_structures_1_1_ordered_list.xhtml#a951c23d62ae43b7955d1f04cd7be19dc", null ],
[ "Clear", "da/dfc/class_data_structures_1_1_ordered_list.xhtml#ac3d85528ada636cae37a5474cb64b69c", null ],
[ "GetElementFromKey", "da/dfc/class_data_structures_1_1_ordered_list.xhtml#a9667d272bf826dc1d200f77112f90993", null ],
[ "GetElementFromKey", "da/dfc/class_data_structures_1_1_ordered_list.xhtml#ae16343544f15259dad97977b439b7383", null ],
[ "GetIndexFromKey", "da/dfc/class_data_structures_1_1_ordered_list.xhtml#a54b7abdd81f650f9d1755a4fd56b1aaa", null ],
[ "HasData", "da/dfc/class_data_structures_1_1_ordered_list.xhtml#aecaf8370213fb9ebdd99bc6262a930e6", null ],
[ "IMPLEMENT_DEFAULT_COMPARISON", "da/dfc/class_data_structures_1_1_ordered_list.xhtml#a3c38c2e0a64e1ddcf86feb6903303d06", null ],
[ "Insert", "da/dfc/class_data_structures_1_1_ordered_list.xhtml#a30d44cd52bdb782478472a95cc5a4b0a", null ],
[ "InsertAtEnd", "da/dfc/class_data_structures_1_1_ordered_list.xhtml#ac4285dfc63d32eeb9126b97b67a8ce3a", null ],
[ "InsertAtIndex", "da/dfc/class_data_structures_1_1_ordered_list.xhtml#a9ed08b2c35b20d08ebfab17927f5c4a2", null ],
[ "operator=", "da/dfc/class_data_structures_1_1_ordered_list.xhtml#a3c02e1629599ee604763a55cd8d81a31", null ],
[ "operator[]", "da/dfc/class_data_structures_1_1_ordered_list.xhtml#a59527cb330c873e4aadcae82acbb067a", null ],
[ "Remove", "da/dfc/class_data_structures_1_1_ordered_list.xhtml#a668f026293db98ed4e68301077fb585a", null ],
[ "RemoveAtIndex", "da/dfc/class_data_structures_1_1_ordered_list.xhtml#a65ef0eca14deb8698004b1cd074b6f0a", null ],
[ "RemoveFromEnd", "da/dfc/class_data_structures_1_1_ordered_list.xhtml#a198f57b525220448d3a1dd2276c01192", null ],
[ "RemoveIfExists", "da/dfc/class_data_structures_1_1_ordered_list.xhtml#a5c05db993081fec4efcd3fd6f3eb34e2", null ],
[ "Size", "da/dfc/class_data_structures_1_1_ordered_list.xhtml#ad64cf6af46df6a5e68747740ee2c1fec", null ],
[ "orderedList", "da/dfc/class_data_structures_1_1_ordered_list.xhtml#abccd21c52351b495680c3a4fbfbf5207", null ]
];

View File

@ -0,0 +1,798 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: DataStructures::OrderedList&lt; key_type, data_type, default_comparison_function &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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.xhtml"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.xhtml"><span>Class&#160;Index</span></a></li>
<li><a href="../../inherits.xhtml"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.xhtml"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/dfc/class_data_structures_1_1_ordered_list.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="../../d2/d29/class_data_structures_1_1_ordered_list-members.xhtml">List of all members</a> </div>
<div class="headertitle">
<div class="title">DataStructures::OrderedList&lt; key_type, data_type, default_comparison_function &gt; Class Template Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml">slikenet/DS_OrderedList.h</a>&gt;</code></p>
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
<img id="dynsection-0-trigger" src="../../closed.png" alt="+"/> Inheritance diagram for DataStructures::OrderedList&lt; key_type, data_type, default_comparison_function &gt;:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="../../d5/d3e/class_data_structures_1_1_ordered_list__inherit__graph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
<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:ae1f66689234c8a884517632575a4f13c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#ae1f66689234c8a884517632575a4f13c">OrderedList</a> ()</td></tr>
<tr class="separator:ae1f66689234c8a884517632575a4f13c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afded705b8ce3775c3d5494b1b52aff76"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#afded705b8ce3775c3d5494b1b52aff76">~OrderedList</a> ()</td></tr>
<tr class="separator:afded705b8ce3775c3d5494b1b52aff76"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a951c23d62ae43b7955d1f04cd7be19dc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a951c23d62ae43b7955d1f04cd7be19dc">OrderedList</a> (const <a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">OrderedList</a> &amp;original_copy)</td></tr>
<tr class="separator:a951c23d62ae43b7955d1f04cd7be19dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3c02e1629599ee604763a55cd8d81a31"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">OrderedList</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a3c02e1629599ee604763a55cd8d81a31">operator=</a> (const <a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">OrderedList</a> &amp;original_copy)</td></tr>
<tr class="separator:a3c02e1629599ee604763a55cd8d81a31"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aecaf8370213fb9ebdd99bc6262a930e6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#aecaf8370213fb9ebdd99bc6262a930e6">HasData</a> (const key_type &amp;key, int(*cf)(const key_type &amp;, const data_type &amp;)=default_comparison_function) const </td></tr>
<tr class="separator:aecaf8370213fb9ebdd99bc6262a930e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a54b7abdd81f650f9d1755a4fd56b1aaa"><td class="memItemLeft" align="right" valign="top">unsigned&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a54b7abdd81f650f9d1755a4fd56b1aaa">GetIndexFromKey</a> (const key_type &amp;key, bool *objectExists, int(*cf)(const key_type &amp;, const data_type &amp;)=default_comparison_function) const </td></tr>
<tr class="separator:a54b7abdd81f650f9d1755a4fd56b1aaa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9667d272bf826dc1d200f77112f90993"><td class="memItemLeft" align="right" valign="top">data_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a9667d272bf826dc1d200f77112f90993">GetElementFromKey</a> (const key_type &amp;key, int(*cf)(const key_type &amp;, const data_type &amp;)=default_comparison_function) const </td></tr>
<tr class="separator:a9667d272bf826dc1d200f77112f90993"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae16343544f15259dad97977b439b7383"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#ae16343544f15259dad97977b439b7383">GetElementFromKey</a> (const key_type &amp;key, data_type &amp;element, int(*cf)(const key_type &amp;, const data_type &amp;)=default_comparison_function) const </td></tr>
<tr class="separator:ae16343544f15259dad97977b439b7383"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a30d44cd52bdb782478472a95cc5a4b0a"><td class="memItemLeft" align="right" valign="top">unsigned&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a30d44cd52bdb782478472a95cc5a4b0a">Insert</a> (const key_type &amp;key, const data_type &amp;data, bool assertOnDuplicate, const char *file, unsigned int line, int(*cf)(const key_type &amp;, const data_type &amp;)=default_comparison_function)</td></tr>
<tr class="separator:a30d44cd52bdb782478472a95cc5a4b0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a668f026293db98ed4e68301077fb585a"><td class="memItemLeft" align="right" valign="top">unsigned&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a668f026293db98ed4e68301077fb585a">Remove</a> (const key_type &amp;key, int(*cf)(const key_type &amp;, const data_type &amp;)=default_comparison_function)</td></tr>
<tr class="separator:a668f026293db98ed4e68301077fb585a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c05db993081fec4efcd3fd6f3eb34e2"><td class="memItemLeft" align="right" valign="top">unsigned&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a5c05db993081fec4efcd3fd6f3eb34e2">RemoveIfExists</a> (const key_type &amp;key, int(*cf)(const key_type &amp;, const data_type &amp;)=default_comparison_function)</td></tr>
<tr class="separator:a5c05db993081fec4efcd3fd6f3eb34e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a59527cb330c873e4aadcae82acbb067a"><td class="memItemLeft" align="right" valign="top">data_type &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a59527cb330c873e4aadcae82acbb067a">operator[]</a> (const unsigned int position) const </td></tr>
<tr class="separator:a59527cb330c873e4aadcae82acbb067a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a65ef0eca14deb8698004b1cd074b6f0a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a65ef0eca14deb8698004b1cd074b6f0a">RemoveAtIndex</a> (const unsigned index)</td></tr>
<tr class="separator:a65ef0eca14deb8698004b1cd074b6f0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9ed08b2c35b20d08ebfab17927f5c4a2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a9ed08b2c35b20d08ebfab17927f5c4a2">InsertAtIndex</a> (const data_type &amp;data, const unsigned index, const char *file, unsigned int line)</td></tr>
<tr class="separator:a9ed08b2c35b20d08ebfab17927f5c4a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac4285dfc63d32eeb9126b97b67a8ce3a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#ac4285dfc63d32eeb9126b97b67a8ce3a">InsertAtEnd</a> (const data_type &amp;data, const char *file, unsigned int line)</td></tr>
<tr class="separator:ac4285dfc63d32eeb9126b97b67a8ce3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a198f57b525220448d3a1dd2276c01192"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a198f57b525220448d3a1dd2276c01192">RemoveFromEnd</a> (const unsigned num=1)</td></tr>
<tr class="separator:a198f57b525220448d3a1dd2276c01192"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac3d85528ada636cae37a5474cb64b69c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#ac3d85528ada636cae37a5474cb64b69c">Clear</a> (bool doNotDeallocate, const char *file, unsigned int line)</td></tr>
<tr class="separator:ac3d85528ada636cae37a5474cb64b69c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad64cf6af46df6a5e68747740ee2c1fec"><td class="memItemLeft" align="right" valign="top">unsigned&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#ad64cf6af46df6a5e68747740ee2c1fec">Size</a> (void) const </td></tr>
<tr class="separator:ad64cf6af46df6a5e68747740ee2c1fec"><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:a3c38c2e0a64e1ddcf86feb6903303d06"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#a3c38c2e0a64e1ddcf86feb6903303d06">IMPLEMENT_DEFAULT_COMPARISON</a> (void)</td></tr>
<tr class="separator:a3c38c2e0a64e1ddcf86feb6903303d06"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:abccd21c52351b495680c3a4fbfbf5207"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d4/d78/class_data_structures_1_1_list.xhtml">DataStructures::List</a>&lt; data_type &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml#abccd21c52351b495680c3a4fbfbf5207">orderedList</a></td></tr>
<tr class="separator:abccd21c52351b495680c3a4fbfbf5207"><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 key_type, class data_type, int(*)(const key_type &amp;, const data_type &amp;) default_comparison_function = defaultOrderedListComparison&lt;key_type, data_type&gt;&gt;<br/>
class DataStructures::OrderedList&lt; key_type, data_type, default_comparison_function &gt;</h3>
<dl class="section note"><dt>Note</dt><dd>IMPORTANT! If you use defaultOrderedListComparison then call IMPLEMENT_DEFAULT_COMPARISON or you will get an unresolved external linker error. </dd></dl>
<p>Definition at line <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml#l00040">40</a> of file <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml">DS_OrderedList.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="ae1f66689234c8a884517632575a4f13c"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class key_type , class data_type , int(*)(const key_type &amp;, const data_type &amp;) default_comparison_function&gt; </div>
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">DataStructures::OrderedList</a>&lt; key_type, data_type, default_comparison_function &gt;::<a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">OrderedList</a> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml#l00073">73</a> of file <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml">DS_OrderedList.h</a>.</p>
</div>
</div>
<a class="anchor" id="afded705b8ce3775c3d5494b1b52aff76"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class key_type , class data_type , int(*)(const key_type &amp;, const data_type &amp;) default_comparison_function&gt; </div>
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">DataStructures::OrderedList</a>&lt; key_type, data_type, default_comparison_function &gt;::~<a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">OrderedList</a> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml#l00078">78</a> of file <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml">DS_OrderedList.h</a>.</p>
<p>References <a class="el" href="../../d8/db0/defines_8h_source.xhtml#l00047">_FILE_AND_LINE_</a>.</p>
</div>
</div>
<a class="anchor" id="a951c23d62ae43b7955d1f04cd7be19dc"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class key_type , class data_type , int(*)(const key_type &amp;, const data_type &amp;) default_comparison_function&gt; </div>
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">DataStructures::OrderedList</a>&lt; key_type, data_type, default_comparison_function &gt;::<a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">OrderedList</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">OrderedList</a>&lt; key_type, data_type, default_comparison_function &gt; &amp;&#160;</td>
<td class="paramname"><em>original_copy</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml#l00084">84</a> of file <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml">DS_OrderedList.h</a>.</p>
<p>References <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml#l00069">DataStructures::OrderedList&lt; key_type, data_type, default_comparison_function &gt;::orderedList</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="ac3d85528ada636cae37a5474cb64b69c"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class key_type , class data_type , int(*)(const key_type &amp;, const data_type &amp;) default_comparison_function&gt; </div>
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">DataStructures::OrderedList</a>&lt; key_type, data_type, default_comparison_function &gt;::Clear </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>doNotDeallocate</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>file</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>line</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml#l00262">262</a> of file <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml">DS_OrderedList.h</a>.</p>
</div>
</div>
<a class="anchor" id="a9667d272bf826dc1d200f77112f90993"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class key_type, class data_type, int(*)(const key_type &amp;, const data_type &amp;) default_comparison_function&gt; </div>
<table class="memname">
<tr>
<td class="memname">data_type <a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">DataStructures::OrderedList</a>&lt; key_type, data_type, default_comparison_function &gt;::GetElementFromKey </td>
<td>(</td>
<td class="paramtype">const key_type &amp;&#160;</td>
<td class="paramname"><em>key</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int(*)(const key_type &amp;, const data_type &amp;)&#160;</td>
<td class="paramname"><em>cf</em> = <code>default_comparison_function</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml#l00105">105</a> of file <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml">DS_OrderedList.h</a>.</p>
<p>References <a class="el" href="../../d8/db0/defines_8h_source.xhtml#l00120">RakAssert</a>.</p>
</div>
</div>
<a class="anchor" id="ae16343544f15259dad97977b439b7383"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class key_type, class data_type, int(*)(const key_type &amp;, const data_type &amp;) default_comparison_function&gt; </div>
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">DataStructures::OrderedList</a>&lt; key_type, data_type, default_comparison_function &gt;::GetElementFromKey </td>
<td>(</td>
<td class="paramtype">const key_type &amp;&#160;</td>
<td class="paramname"><em>key</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">data_type &amp;&#160;</td>
<td class="paramname"><em>element</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int(*)(const key_type &amp;, const data_type &amp;)&#160;</td>
<td class="paramname"><em>cf</em> = <code>default_comparison_function</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml#l00114">114</a> of file <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml">DS_OrderedList.h</a>.</p>
</div>
</div>
<a class="anchor" id="a54b7abdd81f650f9d1755a4fd56b1aaa"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class key_type, class data_type, int(*)(const key_type &amp;, const data_type &amp;) default_comparison_function&gt; </div>
<table class="memname">
<tr>
<td class="memname">unsigned <a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">DataStructures::OrderedList</a>&lt; key_type, data_type, default_comparison_function &gt;::GetIndexFromKey </td>
<td>(</td>
<td class="paramtype">const key_type &amp;&#160;</td>
<td class="paramname"><em>key</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool *&#160;</td>
<td class="paramname"><em>objectExists</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int(*)(const key_type &amp;, const data_type &amp;)&#160;</td>
<td class="paramname"><em>cf</em> = <code>default_comparison_function</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml#l00124">124</a> of file <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml">DS_OrderedList.h</a>.</p>
<p>References <a class="el" href="../../d8/db0/defines_8h_source.xhtml#l00120">RakAssert</a>.</p>
<p>Referenced by <a class="el" href="../../d2/d81/_variable_delta_serializer_8cpp_source.xhtml#l00186">SLNet::VariableDeltaSerializer::DirtyAndFreeVarsAssociatedWithReceipt()</a>, <a class="el" href="../../d7/dcf/_string_table_8cpp_source.xhtml#l00097">SLNet::StringTable::EncodeString()</a>, <a class="el" href="../../d2/d81/_variable_delta_serializer_8cpp_source.xhtml#l00168">SLNet::VariableDeltaSerializer::FreeVarsAssociatedWithReceipt()</a>, and <a class="el" href="../../d9/daa/_command_parser_interface_8cpp_source.xhtml#l00119">SLNet::CommandParserInterface::GetRegisteredCommand()</a>.</p>
</div>
</div>
<a class="anchor" id="aecaf8370213fb9ebdd99bc6262a930e6"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class key_type, class data_type, int(*)(const key_type &amp;, const data_type &amp;) default_comparison_function&gt; </div>
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">DataStructures::OrderedList</a>&lt; key_type, data_type, default_comparison_function &gt;::HasData </td>
<td>(</td>
<td class="paramtype">const key_type &amp;&#160;</td>
<td class="paramname"><em>key</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int(*)(const key_type &amp;, const data_type &amp;)&#160;</td>
<td class="paramname"><em>cf</em> = <code>default_comparison_function</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>comparisonFunction must take a key_type and a data_type and return &lt;0, ==0, or &gt;0 If the data type has comparison operators already defined then you can just use defaultComparison </p>
<p>Definition at line <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml#l00097">97</a> of file <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml">DS_OrderedList.h</a>.</p>
</div>
</div>
<a class="anchor" id="a3c38c2e0a64e1ddcf86feb6903303d06"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class key_type, class data_type, int(*)(const key_type &amp;, const data_type &amp;) default_comparison_function = defaultOrderedListComparison&lt;key_type, data_type&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void <a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">DataStructures::OrderedList</a>&lt; key_type, data_type, default_comparison_function &gt;::IMPLEMENT_DEFAULT_COMPARISON </td>
<td>(</td>
<td class="paramtype">void&#160;</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 class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml#l00043">43</a> of file <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml">DS_OrderedList.h</a>.</p>
<p>Referenced by <a class="el" href="../../d9/dd5/_grid_sectorizer_8cpp_source.xhtml#l00030">GridSectorizer::Init()</a>.</p>
</div>
</div>
<a class="anchor" id="a30d44cd52bdb782478472a95cc5a4b0a"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class key_type, class data_type, int(*)(const key_type &amp;, const data_type &amp;) default_comparison_function&gt; </div>
<table class="memname">
<tr>
<td class="memname">unsigned <a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">DataStructures::OrderedList</a>&lt; key_type, data_type, default_comparison_function &gt;::Insert </td>
<td>(</td>
<td class="paramtype">const key_type &amp;&#160;</td>
<td class="paramname"><em>key</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const data_type &amp;&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>assertOnDuplicate</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>file</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>line</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int(*)(const key_type &amp;, const data_type &amp;)&#160;</td>
<td class="paramname"><em>cf</em> = <code>default_comparison_function</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml#l00176">176</a> of file <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml">DS_OrderedList.h</a>.</p>
<p>References <a class="el" href="../../d8/db0/defines_8h_source.xhtml#l00120">RakAssert</a>.</p>
<p>Referenced by <a class="el" href="../../d7/dcf/_string_table_8cpp_source.xhtml#l00076">SLNet::StringTable::AddString()</a>, <a class="el" href="../../d9/daa/_command_parser_interface_8cpp_source.xhtml#l00111">SLNet::CommandParserInterface::RegisterCommand()</a>, <a class="el" href="../../d0/d0c/_d_s___table_8cpp_source.xhtml#l00904">DataStructures::Table::SortTable()</a>, and <a class="el" href="../../d2/d81/_variable_delta_serializer_8cpp_source.xhtml#l00248">SLNet::VariableDeltaSerializer::StoreChangedVariablesList()</a>.</p>
</div>
</div>
<a class="anchor" id="ac4285dfc63d32eeb9126b97b67a8ce3a"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class key_type , class data_type, int(*)(const key_type &amp;, const data_type &amp;) default_comparison_function&gt; </div>
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">DataStructures::OrderedList</a>&lt; key_type, data_type, default_comparison_function &gt;::InsertAtEnd </td>
<td>(</td>
<td class="paramtype">const data_type &amp;&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>file</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>line</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml#l00250">250</a> of file <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml">DS_OrderedList.h</a>.</p>
</div>
</div>
<a class="anchor" id="a9ed08b2c35b20d08ebfab17927f5c4a2"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class key_type , class data_type, int(*)(const key_type &amp;, const data_type &amp;) default_comparison_function&gt; </div>
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">DataStructures::OrderedList</a>&lt; key_type, data_type, default_comparison_function &gt;::InsertAtIndex </td>
<td>(</td>
<td class="paramtype">const data_type &amp;&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const unsigned&#160;</td>
<td class="paramname"><em>index</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>file</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>line</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml#l00244">244</a> of file <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml">DS_OrderedList.h</a>.</p>
</div>
</div>
<a class="anchor" id="a3c02e1629599ee604763a55cd8d81a31"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class key_type , class data_type , int(*)(const key_type &amp;, const data_type &amp;) default_comparison_function&gt; </div>
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">OrderedList</a>&lt; key_type, data_type, default_comparison_function &gt; &amp; <a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">DataStructures::OrderedList</a>&lt; key_type, data_type, default_comparison_function &gt;::operator= </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">OrderedList</a>&lt; key_type, data_type, default_comparison_function &gt; &amp;&#160;</td>
<td class="paramname"><em>original_copy</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml#l00090">90</a> of file <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml">DS_OrderedList.h</a>.</p>
<p>References <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml#l00069">DataStructures::OrderedList&lt; key_type, data_type, default_comparison_function &gt;::orderedList</a>.</p>
</div>
</div>
<a class="anchor" id="a59527cb330c873e4aadcae82acbb067a"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class key_type , class data_type , int(*)(const key_type &amp;, const data_type &amp;) default_comparison_function&gt; </div>
<table class="memname">
<tr>
<td class="memname">data_type &amp; <a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">DataStructures::OrderedList</a>&lt; key_type, data_type, default_comparison_function &gt;::operator[] </td>
<td>(</td>
<td class="paramtype">const unsigned int&#160;</td>
<td class="paramname"><em>position</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml#l00268">268</a> of file <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml">DS_OrderedList.h</a>.</p>
</div>
</div>
<a class="anchor" id="a668f026293db98ed4e68301077fb585a"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class key_type, class data_type, int(*)(const key_type &amp;, const data_type &amp;) default_comparison_function&gt; </div>
<table class="memname">
<tr>
<td class="memname">unsigned <a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">DataStructures::OrderedList</a>&lt; key_type, data_type, default_comparison_function &gt;::Remove </td>
<td>(</td>
<td class="paramtype">const key_type &amp;&#160;</td>
<td class="paramname"><em>key</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int(*)(const key_type &amp;, const data_type &amp;)&#160;</td>
<td class="paramname"><em>cf</em> = <code>default_comparison_function</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml#l00204">204</a> of file <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml">DS_OrderedList.h</a>.</p>
<p>References <a class="el" href="../../d8/db0/defines_8h_source.xhtml#l00120">RakAssert</a>.</p>
</div>
</div>
<a class="anchor" id="a65ef0eca14deb8698004b1cd074b6f0a"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class key_type , class data_type , int(*)(const key_type &amp;, const data_type &amp;) default_comparison_function&gt; </div>
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">DataStructures::OrderedList</a>&lt; key_type, data_type, default_comparison_function &gt;::RemoveAtIndex </td>
<td>(</td>
<td class="paramtype">const unsigned&#160;</td>
<td class="paramname"><em>index</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml#l00238">238</a> of file <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml">DS_OrderedList.h</a>.</p>
<p>Referenced by <a class="el" href="../../d2/d81/_variable_delta_serializer_8cpp_source.xhtml#l00186">SLNet::VariableDeltaSerializer::DirtyAndFreeVarsAssociatedWithReceipt()</a>, and <a class="el" href="../../d2/d81/_variable_delta_serializer_8cpp_source.xhtml#l00168">SLNet::VariableDeltaSerializer::FreeVarsAssociatedWithReceipt()</a>.</p>
</div>
</div>
<a class="anchor" id="a198f57b525220448d3a1dd2276c01192"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class key_type , class data_type , int(*)(const key_type &amp;, const data_type &amp;) default_comparison_function&gt; </div>
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">DataStructures::OrderedList</a>&lt; key_type, data_type, default_comparison_function &gt;::RemoveFromEnd </td>
<td>(</td>
<td class="paramtype">const unsigned&#160;</td>
<td class="paramname"><em>num</em> = <code>1</code></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml#l00256">256</a> of file <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml">DS_OrderedList.h</a>.</p>
</div>
</div>
<a class="anchor" id="a5c05db993081fec4efcd3fd6f3eb34e2"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class key_type, class data_type, int(*)(const key_type &amp;, const data_type &amp;) default_comparison_function&gt; </div>
<table class="memname">
<tr>
<td class="memname">unsigned <a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">DataStructures::OrderedList</a>&lt; key_type, data_type, default_comparison_function &gt;::RemoveIfExists </td>
<td>(</td>
<td class="paramtype">const key_type &amp;&#160;</td>
<td class="paramname"><em>key</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int(*)(const key_type &amp;, const data_type &amp;)&#160;</td>
<td class="paramname"><em>cf</em> = <code>default_comparison_function</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml#l00223">223</a> of file <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml">DS_OrderedList.h</a>.</p>
</div>
</div>
<a class="anchor" id="ad64cf6af46df6a5e68747740ee2c1fec"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class key_type , class data_type , int(*)(const key_type &amp;, const data_type &amp;) default_comparison_function&gt; </div>
<table class="memname">
<tr>
<td class="memname">unsigned <a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">DataStructures::OrderedList</a>&lt; key_type, data_type, default_comparison_function &gt;::Size </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml#l00274">274</a> of file <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml">DS_OrderedList.h</a>.</p>
<p>Referenced by <a class="el" href="../../d7/dcf/_string_table_8cpp_source.xhtml#l00076">SLNet::StringTable::AddString()</a>, <a class="el" href="../../d7/dcf/_string_table_8cpp_source.xhtml#l00116">SLNet::StringTable::DecodeString()</a>, <a class="el" href="../../d9/d15/_reliability_layer_8cpp_source.xhtml#l00631">SLNet::ReliabilityLayer::HandleSocketReceiveFromConnectedPlayer()</a>, <a class="el" href="../../d9/daa/_command_parser_interface_8cpp_source.xhtml#l00095">SLNet::CommandParserInterface::SendCommandList()</a>, <a class="el" href="../../d0/d0c/_d_s___table_8cpp_source.xhtml#l00904">DataStructures::Table::SortTable()</a>, and <a class="el" href="../../d7/dcf/_string_table_8cpp_source.xhtml#l00040">SLNet::StringTable::~StringTable()</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="abccd21c52351b495680c3a4fbfbf5207"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class key_type, class data_type, int(*)(const key_type &amp;, const data_type &amp;) default_comparison_function = defaultOrderedListComparison&lt;key_type, data_type&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d4/d78/class_data_structures_1_1_list.xhtml">DataStructures::List</a>&lt;data_type&gt; <a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">DataStructures::OrderedList</a>&lt; key_type, data_type, default_comparison_function &gt;::orderedList</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml#l00069">69</a> of file <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml">DS_OrderedList.h</a>.</p>
<p>Referenced by <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml#l00090">DataStructures::OrderedList&lt; key_type, data_type, default_comparison_function &gt;::operator=()</a>, and <a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml#l00084">DataStructures::OrderedList&lt; key_type, data_type, default_comparison_function &gt;::OrderedList()</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>Source/include/slikenet/<a class="el" href="../../d6/d4d/_d_s___ordered_list_8h_source.xhtml">DS_OrderedList.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../da/d80/namespace_data_structures.xhtml">DataStructures</a></li><li class="navelem"><a class="el" href="../../da/dfc/class_data_structures_1_1_ordered_list.xhtml">OrderedList</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:49 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,123 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Source/include/slikenet/osx_adapter.h File 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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../files.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/dff/osx__adapter_8h.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">osx_adapter.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="../../da/dff/osx__adapter_8h_source.xhtml">Go to the source code of this file.</a></p>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../da/dff/osx__adapter_8h.xhtml">osx_adapter.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:48 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,201 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>SLikeNet: Source/include/slikenet/osx_adapter.h Source File</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="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
<div id="projectname">SLikeNet
&#160;<span id="projectnumber">0.1.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.xhtml"><span>Main&#160;Page</span></a></li>
<li><a href="../../pages.xhtml"><span>Related&#160;Pages</span></a></li>
<li><a href="../../modules.xhtml"><span>Modules</span></a></li>
<li><a href="../../namespaces.xhtml"><span>Namespaces</span></a></li>
<li><a href="../../annotated.xhtml"><span>Classes</span></a></li>
<li class="current"><a href="../../files.xhtml"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../files.xhtml"><span>File&#160;List</span></a></li>
<li><a href="../../globals.xhtml"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('da/dff/osx__adapter_8h_source.xhtml','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>Pages</a></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="headertitle">
<div class="title">osx_adapter.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../da/dff/osx__adapter_8h.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Copyright (c) 2016, SLikeSoft UG (haftungsbeschränkt)</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * This source code is licensed under the MIT-style license found in the</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * license.txt file in the root directory of this source tree.</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * This file declares adapters for all MS-specific functions used throughout SLikeNet.</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#ifdef __APPLE__</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define _TRUNCATE ((size_t)-1)</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor"></span><span class="keyword">typedef</span> <span class="keywordtype">int</span> errno_t;</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &lt;cstdarg&gt;</span> <span class="comment">// for va_start, va_end, va_list</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &lt;cstdio&gt;</span> <span class="comment">// for FILE</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &lt;ctime&gt;</span> <span class="comment">// for time_t</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">// MS specific security enhanced functions</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;errno_t fopen_s(FILE **pfile, <span class="keyword">const</span> <span class="keywordtype">char</span> *filename, <span class="keyword">const</span> <span class="keywordtype">char</span> *mode);</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;errno_t localtime_s(<span class="keyword">struct</span> tm* _tm, <span class="keyword">const</span> time_t *time);</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;errno_t mbstowcs_s(<span class="keywordtype">size_t</span> *pReturnValue, <span class="keywordtype">wchar_t</span> *wcstr, <span class="keywordtype">size_t</span> sizeInWords, <span class="keyword">const</span> <span class="keywordtype">char</span> *mbstr, <span class="keywordtype">size_t</span> count);</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keywordtype">int</span> sprintf_s(<span class="keywordtype">char</span> *buffer, <span class="keywordtype">size_t</span> sizeOfBuffer, <span class="keyword">const</span> <span class="keywordtype">char</span> *format, ...);</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;errno_t strcat_s(<span class="keywordtype">char</span> *strDestination, <span class="keywordtype">size_t</span> numberOfElements, <span class="keyword">const</span> <span class="keywordtype">char</span> *strSource);</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;errno_t strcpy_s(<span class="keywordtype">char</span>* strDestination, <span class="keywordtype">size_t</span> numberOfElements, <span class="keyword">const</span> <span class="keywordtype">char</span> *strSource);</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;errno_t strerror_s(<span class="keywordtype">char</span>* buffer, <span class="keywordtype">size_t</span> numberOfElements, <span class="keywordtype">int</span> errnum);</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;errno_t strncat_s(<span class="keywordtype">char</span> *strDest, <span class="keywordtype">size_t</span> numberOfElements, <span class="keyword">const</span> <span class="keywordtype">char</span> *strSource, <span class="keywordtype">size_t</span> count);</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;errno_t strncpy_s(<span class="keywordtype">char</span> *strDest, <span class="keywordtype">size_t</span> numberOfElements, <span class="keyword">const</span> <span class="keywordtype">char</span> *strSource, <span class="keywordtype">size_t</span> count);</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keywordtype">int</span> vsnprintf_s(<span class="keywordtype">char</span> *buffer, <span class="keywordtype">size_t</span> sizeOfBuffer, <span class="keywordtype">size_t</span> count, <span class="keyword">const</span> <span class="keywordtype">char</span> *format, va_list argptr);</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;errno_t wcscat_s(<span class="keywordtype">wchar_t</span> *strDestination, <span class="keywordtype">size_t</span> numberOfElements, <span class="keyword">const</span> <span class="keywordtype">wchar_t</span> *strSource);</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;errno_t wcscpy_s(<span class="keywordtype">wchar_t</span>* strDestination, <span class="keywordtype">size_t</span> numberOfElements, <span class="keyword">const</span> <span class="keywordtype">wchar_t</span> *strSource);</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment">// corresponding template overloads</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">template</span>&lt;<span class="keywordtype">size_t</span> BufferSize&gt; errno_t mbstowcs_s(<span class="keywordtype">size_t</span> *pReturnValue, <span class="keywordtype">wchar_t</span>(&amp;wcstr)[BufferSize], <span class="keyword">const</span> <span class="keywordtype">char</span> *mbstr, <span class="keywordtype">size_t</span> count)</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">return</span> mbstowcs_s(pReturnValue, wcstr, BufferSize, mbstr, count);</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;}</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="keyword">template</span>&lt;<span class="keywordtype">size_t</span> BufferSize&gt; <span class="keywordtype">int</span> sprintf_s(<span class="keywordtype">char</span> (&amp;buffer)[BufferSize], <span class="keyword">const</span> <span class="keywordtype">char</span>* format, ...)</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;{</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; va_list arglist;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; va_start(arglist, format);</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">int</span> numCharsWritten = vsnprintf_s(buffer, BufferSize, BufferSize - 1, format, arglist);</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; va_end(arglist);</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">return</span> numCharsWritten;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;}</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="keyword">template</span>&lt;<span class="keywordtype">size_t</span> BufferSize&gt; errno_t strcat_s(<span class="keywordtype">char</span> (&amp;strDestination)[BufferSize], <span class="keyword">const</span> <span class="keywordtype">char</span>* strSource)</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;{</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">return</span> strcat_s(strDestination, BufferSize, strSource);</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;}</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="keyword">template</span>&lt;<span class="keywordtype">size_t</span> BufferSize&gt; errno_t strcpy_s(<span class="keywordtype">char</span> (&amp;strDestination)[BufferSize], <span class="keyword">const</span> <span class="keywordtype">char</span>* strSource)</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;{</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">return</span> strcpy_s(strDestination, BufferSize, strSource);</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;}</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="keyword">template</span>&lt;<span class="keywordtype">size_t</span> BufferSize&gt; errno_t strerror_s(<span class="keywordtype">char</span>(&amp;buffer)[BufferSize], <span class="keywordtype">int</span> errnum)</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;{</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">return</span> strerror_s(buffer, BufferSize, errnum);</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;}</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="keyword">template</span>&lt;<span class="keywordtype">size_t</span> BufferSize&gt; errno_t strncat_s(<span class="keywordtype">char</span>(&amp;strDest)[BufferSize], <span class="keyword">const</span> <span class="keywordtype">char</span> *strSource, <span class="keywordtype">size_t</span> count)</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;{</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">return</span> strncat_s(strDest, BufferSize, strSource, count);</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;}</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="keyword">template</span>&lt;<span class="keywordtype">size_t</span> BufferSize&gt; errno_t strncpy_s(<span class="keywordtype">char</span>(&amp;strDest)[BufferSize], <span class="keyword">const</span> <span class="keywordtype">char</span> *strSource, <span class="keywordtype">size_t</span> count)</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;{</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">return</span> strncpy_s(strDest, BufferSize, strSource, count);</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;}</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="keyword">template</span>&lt;<span class="keywordtype">size_t</span> BufferSize&gt; <span class="keywordtype">int</span> vsnprintf_s(<span class="keywordtype">char</span> (&amp;buffer)[BufferSize], <span class="keywordtype">size_t</span> count, <span class="keyword">const</span> <span class="keywordtype">char</span> *format, va_list argptr)</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;{</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">return</span> vsnprintf_s(buffer, BufferSize, count, format, argptr);</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;}</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_74389ed8173ad57b461b9d623a1f3867.xhtml">Source</a></li><li class="navelem"><a class="el" href="../../dir_bbb90e3ef9167a594ae33323139a2595.xhtml">include</a></li><li class="navelem"><a class="el" href="../../dir_88467e66686deb9d3756fe4fc298e321.xhtml">slikenet</a></li><li class="navelem"><a class="el" href="../../da/dff/osx__adapter_8h.xhtml">osx_adapter.h</a></li>
<li class="footer">Generated on Wed Aug 14 2019 22:09:46 for SLikeNet by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.2 </li>
</ul>
</div>
</body>
</html>