| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299 |
- <!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>RakNet: RakNet::StringTable 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="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">RakNet
-  <span id="projectnumber">4.0</span>
- </div>
- </td>
- </tr>
- </tbody>
- </table>
- </div>
- <!-- end header part -->
- <!-- Generated by Doxygen 1.8.2 -->
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="pages.html"><span>Related Pages</span></a></li>
- <li><a href="modules.html"><span>Modules</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Class List</span></a></li>
- <li><a href="classes.html"><span>Class Index</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Class Members</span></a></li>
- </ul>
- </div>
- <div id="nav-path" class="navpath">
- <ul>
- <li class="navelem"><a class="el" href="namespaceRakNet.html">RakNet</a></li><li class="navelem"><a class="el" href="classRakNet_1_1StringTable.html">StringTable</a></li> </ul>
- </div>
- </div><!-- top -->
- <div class="header">
- <div class="summary">
- <a href="#pub-methods">Public Member Functions</a> |
- <a href="#pub-static-methods">Static Public Member Functions</a> |
- <a href="#pro-methods">Protected Member Functions</a> |
- <a href="#pro-static-attribs">Static Protected Attributes</a> |
- <a href="classRakNet_1_1StringTable-members.html">List of all members</a> </div>
- <div class="headertitle">
- <div class="title">RakNet::StringTable Class Reference</div> </div>
- </div><!--header-->
- <div class="contents">
- <p>Writes a string index, instead of the whole string.
- <a href="classRakNet_1_1StringTable.html#details">More...</a></p>
- <p><code>#include <StringTable.h></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:a7da5d7b252198829fc71b1d83ad23e4b"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classRakNet_1_1StringTable.html#a7da5d7b252198829fc71b1d83ad23e4b">AddString</a> (const char *str, bool copyString)</td></tr>
- <tr class="separator:a7da5d7b252198829fc71b1d83ad23e4b"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ad72386a9d2ee67529f8e1c2ee0075342"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classRakNet_1_1StringTable.html#ad72386a9d2ee67529f8e1c2ee0075342">EncodeString</a> (const char *input, int maxCharsToWrite, <a class="el" href="classRakNet_1_1BitStream.html">RakNet::BitStream</a> *output)</td></tr>
- <tr class="separator:ad72386a9d2ee67529f8e1c2ee0075342"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a50d83aa562f438cd26c1469e3a3aa3fc"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classRakNet_1_1StringTable.html#a50d83aa562f438cd26c1469e3a3aa3fc">DecodeString</a> (char *output, int maxCharsToWrite, <a class="el" href="classRakNet_1_1BitStream.html">RakNet::BitStream</a> *input)</td></tr>
- <tr class="separator:a50d83aa562f438cd26c1469e3a3aa3fc"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a0107c35a886a84fc13434c9bd13ff166"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0107c35a886a84fc13434c9bd13ff166"></a>
-  </td><td class="memItemRight" valign="bottom"><a class="el" href="classRakNet_1_1StringTable.html#a0107c35a886a84fc13434c9bd13ff166">StringTable</a> ()</td></tr>
- <tr class="memdesc:a0107c35a886a84fc13434c9bd13ff166"><td class="mdescLeft"> </td><td class="mdescRight">Private Constructor. <br/></td></tr>
- <tr class="separator:a0107c35a886a84fc13434c9bd13ff166"><td class="memSeparator" colspan="2"> </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:a617d718082882aff164a1b7438dcaf02"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classRakNet_1_1StringTable.html">StringTable</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classRakNet_1_1StringTable.html#a617d718082882aff164a1b7438dcaf02">Instance</a> (void)</td></tr>
- <tr class="separator:a617d718082882aff164a1b7438dcaf02"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a97a4694667352c36c51482bc5eaa65cc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a97a4694667352c36c51482bc5eaa65cc"></a>
- static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classRakNet_1_1StringTable.html#a97a4694667352c36c51482bc5eaa65cc">AddReference</a> (void)</td></tr>
- <tr class="memdesc:a97a4694667352c36c51482bc5eaa65cc"><td class="mdescLeft"> </td><td class="mdescRight">Used so I can allocate and deallocate this singleton at runtime. <br/></td></tr>
- <tr class="separator:a97a4694667352c36c51482bc5eaa65cc"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a9e4ff943574ceb7c3a545725a428e0e7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9e4ff943574ceb7c3a545725a428e0e7"></a>
- static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classRakNet_1_1StringTable.html#a9e4ff943574ceb7c3a545725a428e0e7">RemoveReference</a> (void)</td></tr>
- <tr class="memdesc:a9e4ff943574ceb7c3a545725a428e0e7"><td class="mdescLeft"> </td><td class="mdescRight">Used so I can allocate and deallocate this singleton at runtime. <br/></td></tr>
- <tr class="separator:a9e4ff943574ceb7c3a545725a428e0e7"><td class="memSeparator" colspan="2"> </td></tr>
- </table><table class="memberdecls">
- <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
- Protected Member Functions</h2></td></tr>
- <tr class="memitem:af5e8803a9ced2dfe6f9dceba6e1d9742"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classRakNet_1_1StringTable.html#af5e8803a9ced2dfe6f9dceba6e1d9742">LogStringNotFound</a> (const char *strName)</td></tr>
- <tr class="separator:af5e8803a9ced2dfe6f9dceba6e1d9742"><td class="memSeparator" colspan="2"> </td></tr>
- </table><table class="memberdecls">
- <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-static-attribs"></a>
- Static Protected Attributes</h2></td></tr>
- <tr class="memitem:a1abd5e46239e1e0df0d6cf7d16e452b1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1abd5e46239e1e0df0d6cf7d16e452b1"></a>
- static <a class="el" href="classRakNet_1_1StringTable.html">StringTable</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classRakNet_1_1StringTable.html#a1abd5e46239e1e0df0d6cf7d16e452b1">instance</a></td></tr>
- <tr class="memdesc:a1abd5e46239e1e0df0d6cf7d16e452b1"><td class="mdescLeft"> </td><td class="mdescRight">Singleton instance. <br/></td></tr>
- <tr class="separator:a1abd5e46239e1e0df0d6cf7d16e452b1"><td class="memSeparator" colspan="2"> </td></tr>
- </table>
- <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
- <div class="textblock"><p>Writes a string index, instead of the whole string. </p>
- <p>This is an even more efficient alternative to <a class="el" href="classRakNet_1_1StringCompressor.html" title="Writes and reads strings to and from bitstreams.">StringCompressor</a> in that it writes a single byte from a lookup table and only does compression.<br/>
- if the string does not already exist in the table.<br/>
- All string tables must match on all systems - hence you must add all the strings in the same order on all systems.<br/>
- Furthermore, this must be done before sending packets that use this class, since the strings are ordered for fast lookup. Adding after that time would mess up all the indices so don't do it.<br/>
- Don't use this class to write strings which were not previously registered with AddString, since you just waste bandwidth then. Use <a class="el" href="classRakNet_1_1StringCompressor.html" title="Writes and reads strings to and from bitstreams.">StringCompressor</a> instead. </p>
- </div><h2 class="groupheader">Member Function Documentation</h2>
- <a class="anchor" id="a7da5d7b252198829fc71b1d83ad23e4b"></a>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void RakNet::StringTable::AddString </td>
- <td>(</td>
- <td class="paramtype">const char * </td>
- <td class="paramname"><em>str</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool </td>
- <td class="paramname"><em>copyString</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Add a string to the string table. </p>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">str</td><td>The string to add to the string table </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">copyString</td><td>true to make a copy of the passed string (takes more memory), false to not do so (if your string is in static memory). </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a class="anchor" id="a50d83aa562f438cd26c1469e3a3aa3fc"></a>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool RakNet::StringTable::DecodeString </td>
- <td>(</td>
- <td class="paramtype">char * </td>
- <td class="paramname"><em>output</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">int </td>
- <td class="paramname"><em>maxCharsToWrite</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classRakNet_1_1BitStream.html">RakNet::BitStream</a> * </td>
- <td class="paramname"><em>input</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Writes input to output, uncompressed. Takes care of the null terminator for you. Relies on the <a class="el" href="classRakNet_1_1StringCompressor.html" title="Writes and reads strings to and from bitstreams.">StringCompressor</a> class, which is automatically reference counted in the constructor and destructor in <a class="el" href="classRakNet_1_1RakPeer.html" title="Main interface for network communications.">RakPeer</a>. You can call the reference counting functions yourself if you wish too. </p>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[out]</td><td class="paramname">output</td><td>A block of bytes to receive the output </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">maxCharsToWrite</td><td>Size, in bytes, of <em>output</em> . A NULL terminator will always be appended to the output string. If the maxCharsToWrite is not large enough, the string will be truncated. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">input</td><td>The bitstream containing the compressed string </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a class="anchor" id="ad72386a9d2ee67529f8e1c2ee0075342"></a>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void RakNet::StringTable::EncodeString </td>
- <td>(</td>
- <td class="paramtype">const char * </td>
- <td class="paramname"><em>input</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">int </td>
- <td class="paramname"><em>maxCharsToWrite</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classRakNet_1_1BitStream.html">RakNet::BitStream</a> * </td>
- <td class="paramname"><em>output</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Writes input to output, compressed. Takes care of the null terminator for you. Relies on the <a class="el" href="classRakNet_1_1StringCompressor.html" title="Writes and reads strings to and from bitstreams.">StringCompressor</a> class, which is automatically reference counted in the constructor and destructor in <a class="el" href="classRakNet_1_1RakPeer.html" title="Main interface for network communications.">RakPeer</a>. You can call the reference counting functions yourself if you wish too. </p>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">input</td><td>Pointer to an ASCII string </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">maxCharsToWrite</td><td>The size of <em>input</em> </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">output</td><td>The bitstream to write the compressed string to </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a class="anchor" id="a617d718082882aff164a1b7438dcaf02"></a>
- <div class="memitem">
- <div class="memproto">
- <table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">static <a class="el" href="classRakNet_1_1StringTable.html">StringTable</a>* RakNet::StringTable::Instance </td>
- <td>(</td>
- <td class="paramtype">void </td>
- <td class="paramname"></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>static function because only static functions can access static members The <a class="el" href="classRakNet_1_1RakPeer.html" title="Main interface for network communications.">RakPeer</a> constructor adds a reference to this class, so don't call this until an instance of <a class="el" href="classRakNet_1_1RakPeer.html" title="Main interface for network communications.">RakPeer</a> exists, or unless you call AddReference yourself. </p>
- <dl class="section return"><dt>Returns</dt><dd>the unique instance of the <a class="el" href="classRakNet_1_1StringTable.html" title="Writes a string index, instead of the whole string.">StringTable</a> </dd></dl>
- </div>
- </div>
- <a class="anchor" id="af5e8803a9ced2dfe6f9dceba6e1d9742"></a>
- <div class="memitem">
- <div class="memproto">
- <table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">void RakNet::StringTable::LogStringNotFound </td>
- <td>(</td>
- <td class="paramtype">const char * </td>
- <td class="paramname"><em>strName</em></td><td>)</td>
- <td></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>Called when you mess up and send a string using this class that was not registered with AddString </p>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">maxCharsToWrite</td><td>Size, in bytes, of <em>output</em> . A NULL terminator will always be appended to the output string. If the maxCharsToWrite is not large enough, the string will be truncated. </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <hr/>The documentation for this class was generated from the following file:<ul>
- <li>D:/temp/RakNet_PC/Source/<a class="el" href="StringTable_8h.html">StringTable.h</a></li>
- </ul>
- </div><!-- contents -->
- <!-- start footer part -->
- <hr class="footer"/><address class="footer"><small>
- Generated on Mon Jun 2 2014 20:10:29 for RakNet by  <a href="http://www.doxygen.org/index.html">
- <img class="footer" src="doxygen.png" alt="doxygen"/>
- </a> 1.8.2
- </small></address>
- </body>
- </html>
|