Sophie

Sophie

distrib > Mandriva > 2010.2 > i586 > media > contrib-backports > by-pkgid > 4f5f2dc0f55b453456458df885792b0b > files > 54

ucommon-doc-5.0.4-1mdv2010.2.i586.rpm

<!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"/>
<title>ucommon: ucommon::BufferProtocol Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
    </ul>
  </div>
  <div class="navpath"><a class="el" href="a00208.html">ucommon</a>::<a class="el" href="a00028.html">BufferProtocol</a>
  </div>
</div>
<div class="contents">
<h1>ucommon::BufferProtocol Class Reference</h1><!-- doxytag: class="ucommon::BufferProtocol" --><!-- doxytag: inherits="ucommon::CharacterProtocol" -->
<p>Common buffer protocol class.  
<a href="#_details">More...</a></p>

<p><code>#include &lt;<a class="el" href="a00195_source.html">protocols.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for ucommon::BufferProtocol:</div>
<div class="dynsection">
<div class="center"><img src="a00348.png" border="0" usemap="#ucommon_1_1_buffer_protocol_inherit__map" alt="Inheritance graph"/></div>
<map name="ucommon_1_1_buffer_protocol_inherit__map" id="ucommon_1_1_buffer_protocol_inherit__map">
<area shape="rect" id="node5" href="a00050.html" title="A generic file streaming class built from the buffer protocol." alt="" coords="5,155,157,181"/><area shape="rect" id="node7" href="a00135.html" title="Process pipe with I/O buffering." alt="" coords="181,155,413,181"/><area shape="rect" id="node9" href="a00151.html" title="A generic tcp socket class that offers i/o buffering." alt="" coords="437,155,640,181"/><area shape="rect" id="node2" href="a00030.html" title="Common character processing protocol." alt="" coords="156,5,439,32"/><area shape="rect" id="node11" href="a00143.html" title="Secure socket buffer." alt="" coords="437,229,640,256"/></map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for ucommon::BufferProtocol:</div>
<div class="dynsection">
<div class="center"><img src="a00349.png" border="0" usemap="#ucommon_1_1_buffer_protocol_coll__map" alt="Collaboration graph"/></div>
<map name="ucommon_1_1_buffer_protocol_coll__map" id="ucommon_1_1_buffer_protocol_coll__map">
<area shape="rect" id="node2" href="a00030.html" title="Common character processing protocol." alt="" coords="5,5,288,32"/></map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Public Types</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><b>type_t</b> { <b>BUF_RD</b>, 
<b>BUF_WR</b>, 
<b>BUF_RDWR</b>
 }</td></tr>
<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a1b4625218213ad7f1afbcfe2d8524397">_getch</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a character from the buffer.  <a href="#a1b4625218213ad7f1afbcfe2d8524397"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a0f3916df35a30ac944977e1751bcf8b5">_putch</a> (int ch)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Put a character into the buffer.  <a href="#a0f3916df35a30ac944977e1751bcf8b5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#aa4541d7fa6cbc95d4858c21ef6ce6e1c">eof</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if at end of input.  <a href="#aa4541d7fa6cbc95d4858c21ef6ce6e1c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af21bfeb395e6b7c1eaba8e788f74bbdf"></a><!-- doxytag: member="ucommon::BufferProtocol::err" ref="af21bfeb395e6b7c1eaba8e788f74bbdf" args="(void)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>err</b> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a59fd9e30d972cee0d0710f0bf82b1d08">flush</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Flush buffered memory to physical I/O.  <a href="#a59fd9e30d972cee0d0710f0bf82b1d08"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#ac20a4f351f845ade2d334f621627ab61">get</a> (char *address, size_t count)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get memory from the buffer.  <a href="#ac20a4f351f845ade2d334f621627ab61"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a417dd6821de8e67255fb8f5fee8c0706">getline</a> (<a class="el" href="a00148.html">string</a> &amp;buffer)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a string as a line of input from the buffer.  <a href="#a417dd6821de8e67255fb8f5fee8c0706"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a429ffacb0e63df98954491dbd41e1a50">getline</a> (char *<a class="el" href="a00148.html">string</a>, size_t size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get text as a line of input from the buffer.  <a href="#a429ffacb0e63df98954491dbd41e1a50"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a11f40bc3976c943c93c580c0e1df124b">is_input</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">See if input active.  <a href="#a11f40bc3976c943c93c580c0e1df124b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a3e13be577409e894f0e11ce00e86a1ce">is_open</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">See if buffer open.  <a href="#a3e13be577409e894f0e11ce00e86a1ce"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a92d6a68b809f277417ee75da0fa13c33">is_output</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">See if output active.  <a href="#a92d6a68b809f277417ee75da0fa13c33"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a41fd411fbf86118e4b26c36ccec2521a">is_pending</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">See if pending input.  <a href="#a41fd411fbf86118e4b26c36ccec2521a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#af226f45434154b7ef13f4f5ca5c37705">operator bool</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">See if buffer open.  <a href="#af226f45434154b7ef13f4f5ca5c37705"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a2885dc08963a16d68aa9a9000578c945">operator!</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">See if buffer closed.  <a href="#a2885dc08963a16d68aa9a9000578c945"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#aba5b8218517b805c8e2d532551701a77">printf</a> (const char *format,...)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Print formatted string to the buffer.  <a href="#aba5b8218517b805c8e2d532551701a77"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acc98bd7b6e164ddafba44afcd9de5d88"></a><!-- doxytag: member="ucommon::BufferProtocol::purge" ref="acc98bd7b6e164ddafba44afcd9de5d88" args="(void)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#acc98bd7b6e164ddafba44afcd9de5d88">purge</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Purge any pending input or output buffer data. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#ac5faf17adc9205fd22d5b602ee316ab4">put</a> (const char *address, size_t count=0)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Put memory into the buffer.  <a href="#ac5faf17adc9205fd22d5b602ee316ab4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a75a56813f2972710ce40411ca0625532">putline</a> (const char *<a class="el" href="a00148.html">string</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Put a string as a line of output to the buffer.  <a href="#a75a56813f2972710ce40411ca0625532"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a652f30ea28c1b3eef1e3d362c1db3385">reset</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Reset input buffer state.  <a href="#a652f30ea28c1b3eef1e3d362c1db3385"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aebcfbabcacfcf4c30684779e4b7e8e6c"></a><!-- doxytag: member="ucommon::BufferProtocol::seteof" ref="aebcfbabcacfcf4c30684779e4b7e8e6c" args="(void)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#aebcfbabcacfcf4c30684779e4b7e8e6c">seteof</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set eof flag. <br/></td></tr>
<tr><td colspan="2"><h2>Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0850660fb7ed4b7449eba443a7cf461c"></a><!-- doxytag: member="ucommon::BufferProtocol::_blocking" ref="a0850660fb7ed4b7449eba443a7cf461c" args="(void)" -->
virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a0850660fb7ed4b7449eba443a7cf461c">_blocking</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return true if blocking. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a821c8d2b7023cc5eeb60261e3905e3ee"></a><!-- doxytag: member="ucommon::BufferProtocol::_clear" ref="a821c8d2b7023cc5eeb60261e3905e3ee" args="(void)=0" -->
virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a821c8d2b7023cc5eeb60261e3905e3ee">_clear</a> (void)=0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Method to clear low level i/o error. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a5f0923302702e561a3c615873ba1fe89">_err</a> (void) const =0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Method to get low level i/o error.  <a href="#a5f0923302702e561a3c615873ba1fe89"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af604dfb2ec3d7f89c315e4aa7e134741"></a><!-- doxytag: member="ucommon::BufferProtocol::_flush" ref="af604dfb2ec3d7f89c315e4aa7e134741" args="(void)" -->
virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#af604dfb2ec3d7f89c315e4aa7e134741">_flush</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Flush buffer to physical i/o. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0bff400bc09929b1c771bf962c91b7af"></a><!-- doxytag: member="ucommon::BufferProtocol::_pending" ref="a0bff400bc09929b1c771bf962c91b7af" args="(void)" -->
virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a0bff400bc09929b1c771bf962c91b7af">_pending</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if data is pending. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#ad9add3680f74ccacc47283a1b2a18b2f">_pull</a> (char *address, size_t size)=0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Method to pull buffer from physical i/o (read).  <a href="#ad9add3680f74ccacc47283a1b2a18b2f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a5329c45421a6d759d8a786c06edadb41">_push</a> (const char *address, size_t size)=0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Method to push buffer into physical i/o (write).  <a href="#a5329c45421a6d759d8a786c06edadb41"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a854007bf604dc3904594ef62e13b5337">allocate</a> (size_t size, type_t access=BUF_RDWR)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Allocate I/O buffer(s) of specified size.  <a href="#a854007bf604dc3904594ef62e13b5337"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a4173fc99ff18a0f0380ebe14f4cb0747">BufferProtocol</a> (size_t size, type_t access=BUF_RDWR)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct a buffer of pre-allocated size and access type.  <a href="#a4173fc99ff18a0f0380ebe14f4cb0747"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3b9a42692a7076f0ca4baee75d545ae8"></a><!-- doxytag: member="ucommon::BufferProtocol::BufferProtocol" ref="a3b9a42692a7076f0ca4baee75d545ae8" args="()" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a3b9a42692a7076f0ca4baee75d545ae8">BufferProtocol</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct an empty (unallocated) buffer. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#ae64f25be7034393a0c580d1bbe0fff6e">gather</a> (size_t size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gather returns a pointer to contiguous input of specified size.  <a href="#ae64f25be7034393a0c580d1bbe0fff6e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a50742305e3d7d18f042b2a09227cf74e"></a><!-- doxytag: member="ucommon::BufferProtocol::release" ref="a50742305e3d7d18f042b2a09227cf74e" args="(void)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a50742305e3d7d18f042b2a09227cf74e">release</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Release (free) buffer memory. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#ab983c1a4273c4d060e084951d599ea64">request</a> (size_t size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request workspace in output buffer.  <a href="#ab983c1a4273c4d060e084951d599ea64"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#ae93e32ff6cdd40a69ea93f381562c27c">seteol</a> (const char *<a class="el" href="a00148.html">string</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set end of line marker.  <a href="#ae93e32ff6cdd40a69ea93f381562c27c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a2f9060bdad7cf07d59114aa65b04430c">unread</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get current input position.  <a href="#a2f9060bdad7cf07d59114aa65b04430c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#afc49d4dfdb541f025a756ad467bbc23d">unsaved</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get current output position.  <a href="#afc49d4dfdb541f025a756ad467bbc23d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3ca9e58e331b64477a004dc22170fde0"></a><!-- doxytag: member="ucommon::BufferProtocol::~BufferProtocol" ref="a3ca9e58e331b64477a004dc22170fde0" args="()" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a3ca9e58e331b64477a004dc22170fde0">~BufferProtocol</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy object by releasing buffer memory. <br/></td></tr>
<tr><td colspan="2"><h2>Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aefb2f947464baf952192cf1816e7850a"></a><!-- doxytag: member="ucommon::BufferProtocol::format" ref="aefb2f947464baf952192cf1816e7850a" args="" -->
const char *&nbsp;</td><td class="memItemRight" valign="bottom"><b>format</b></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Common buffer protocol class. </p>
<p>This is used to create objects which will stream character data as needed. This class can support bidirectional streaming as may be needed for serial devices, sockets, and pipes. The buffering mechanisms are hidden from derived classes, and two virtuals are used to communicate with the physical transport. </p>
<dl class="author"><dt><b>Author:</b></dt><dd>David Sugar &lt;<a href="mailto:dyfet@gnutelephony.org">dyfet@gnutelephony.org</a>&gt; </dd></dl>

<p>Definition at line <a class="el" href="a00195_source.html#l00165">165</a> of file <a class="el" href="a00195_source.html">protocols.h</a>.</p>
<hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a4173fc99ff18a0f0380ebe14f4cb0747"></a><!-- doxytag: member="ucommon::BufferProtocol::BufferProtocol" ref="a4173fc99ff18a0f0380ebe14f4cb0747" args="(size_t size, type_t access=BUF_RDWR)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ucommon::BufferProtocol::BufferProtocol </td>
          <td>(</td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">type_t&nbsp;</td>
          <td class="paramname"> <em>access</em> = <code>BUF_RDWR</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Construct a buffer of pre-allocated size and access type. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>of buffer to allocate. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>access</em>&nbsp;</td><td>mode of buffer. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a5f0923302702e561a3c615873ba1fe89"></a><!-- doxytag: member="ucommon::BufferProtocol::_err" ref="a5f0923302702e561a3c615873ba1fe89" args="(void) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int ucommon::BufferProtocol::_err </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [protected, pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Method to get low level i/o error. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>error from low level i/o methods. </dd></dl>

<p>Implemented in <a class="el" href="a00050.html#a6ae700c3330290bed856cee7afe7ac2c">ucommon::fbuf</a>, and <a class="el" href="a00151.html#a93a6dc195313a3499f46216d984765f2">ucommon::TCPBuffer</a>.</p>

</div>
</div>
<a class="anchor" id="a1b4625218213ad7f1afbcfe2d8524397"></a><!-- doxytag: member="ucommon::BufferProtocol::_getch" ref="a1b4625218213ad7f1afbcfe2d8524397" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ucommon::BufferProtocol::_getch </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get a character from the buffer. </p>
<p>If no data is available, return EOF. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>character from buffer or eof. </dd></dl>

<p>Implements <a class="el" href="a00030.html#af4c7630fd8ed62d09bb5df069c264a06">ucommon::CharacterProtocol</a>.</p>

</div>
</div>
<a class="anchor" id="ad9add3680f74ccacc47283a1b2a18b2f"></a><!-- doxytag: member="ucommon::BufferProtocol::_pull" ref="ad9add3680f74ccacc47283a1b2a18b2f" args="(char *address, size_t size)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual size_t ucommon::BufferProtocol::_pull </td>
          <td>(</td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>address</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected, pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Method to pull buffer from physical i/o (read). </p>
<p>The address is passed to this virtual since it is hidden as private. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>of buffer to pull data into. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>of buffer area being pulled.. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of read written, 0 on error or end of data. </dd></dl>

<p>Implemented in <a class="el" href="a00050.html#ae7e0f75970b1aa925498d9721f89ebe8">ucommon::fbuf</a>, <a class="el" href="a00151.html#aa707a8eafa0360cf7318fe12444ccbb6">ucommon::TCPBuffer</a>, <a class="el" href="a00143.html#a7239ef8827aefec0584fb742808048ce">ucommon::SSLBuffer</a>, and <a class="el" href="a00135.html#aea2201eee30b3bc0ffb4dbf13cde4190">ucommon::shell::iobuf</a>.</p>

</div>
</div>
<a class="anchor" id="a5329c45421a6d759d8a786c06edadb41"></a><!-- doxytag: member="ucommon::BufferProtocol::_push" ref="a5329c45421a6d759d8a786c06edadb41" args="(const char *address, size_t size)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual size_t ucommon::BufferProtocol::_push </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>address</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected, pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Method to push buffer into physical i/o (write). </p>
<p>The address is passed to this virtual since it is hidden as private. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>of data to push. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>of data to push. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of bytes written, 0 on error. </dd></dl>

<p>Implemented in <a class="el" href="a00050.html#a289f04f2b14036fdab067a6e7e570ae8">ucommon::fbuf</a>, <a class="el" href="a00151.html#ab7dd00490127cc7eb1fa194f6fe90f6f">ucommon::TCPBuffer</a>, and <a class="el" href="a00143.html#af0cbe6e362a9285e512d9e7bfcb83356">ucommon::SSLBuffer</a>.</p>

</div>
</div>
<a class="anchor" id="a0f3916df35a30ac944977e1751bcf8b5"></a><!-- doxytag: member="ucommon::BufferProtocol::_putch" ref="a0f3916df35a30ac944977e1751bcf8b5" args="(int ch)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ucommon::BufferProtocol::_putch </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>ch</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Put a character into the buffer. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>character put into buffer or eof. </dd></dl>

<p>Implements <a class="el" href="a00030.html#abc7a3a5f8cd7082fbcad88cbb8f64cc0">ucommon::CharacterProtocol</a>.</p>

</div>
</div>
<a class="anchor" id="a854007bf604dc3904594ef62e13b5337"></a><!-- doxytag: member="ucommon::BufferProtocol::allocate" ref="a854007bf604dc3904594ef62e13b5337" args="(size_t size, type_t access=BUF_RDWR)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ucommon::BufferProtocol::allocate </td>
          <td>(</td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">type_t&nbsp;</td>
          <td class="paramname"> <em>access</em> = <code>BUF_RDWR</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Allocate I/O buffer(s) of specified size. </p>
<p>If a buffer is currently allocated, it is released. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>of buffer to allocate. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>access</em>&nbsp;</td><td>mode of buffer. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="aa4541d7fa6cbc95d4858c21ef6ce6e1c"></a><!-- doxytag: member="ucommon::BufferProtocol::eof" ref="aa4541d7fa6cbc95d4858c21ef6ce6e1c" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ucommon::BufferProtocol::eof </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Check if at end of input. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if end of data, false if input still buffered. </dd></dl>

</div>
</div>
<a class="anchor" id="a59fd9e30d972cee0d0710f0bf82b1d08"></a><!-- doxytag: member="ucommon::BufferProtocol::flush" ref="a59fd9e30d972cee0d0710f0bf82b1d08" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ucommon::BufferProtocol::flush </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Flush buffered memory to physical I/O. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>true on success, false if not active or fails. </dd></dl>

<p>Definition at line <a class="el" href="a00195_source.html#l00340">340</a> of file <a class="el" href="a00195_source.html">protocols.h</a>.</p>

</div>
</div>
<a class="anchor" id="ae64f25be7034393a0c580d1bbe0fff6e"></a><!-- doxytag: member="ucommon::BufferProtocol::gather" ref="ae64f25be7034393a0c580d1bbe0fff6e" args="(size_t size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* ucommon::BufferProtocol::gather </td>
          <td>(</td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>size</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gather returns a pointer to contiguous input of specified size. </p>
<p>This may require moving the input data in memory. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>of gather space. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>data pointer to gathered data or NULL if not available. </dd></dl>

</div>
</div>
<a class="anchor" id="ac20a4f351f845ade2d334f621627ab61"></a><!-- doxytag: member="ucommon::BufferProtocol::get" ref="ac20a4f351f845ade2d334f621627ab61" args="(char *address, size_t count)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ucommon::BufferProtocol::get </td>
          <td>(</td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>address</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>count</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get memory from the buffer. </p>
<p>This method will become "get()" in abi 4 and may become a protected method. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>of characters save from buffer. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>of characters to get from buffer. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of characters actually copied. </dd></dl>

</div>
</div>
<a class="anchor" id="a417dd6821de8e67255fb8f5fee8c0706"></a><!-- doxytag: member="ucommon::BufferProtocol::getline" ref="a417dd6821de8e67255fb8f5fee8c0706" args="(string &amp;buffer)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ucommon::BufferProtocol::getline </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00148.html">string</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>buffer</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get a string as a line of input from the buffer. </p>
<p>The eol character(s) are used to mark the end of a line. Because the end of line character is stripped, the length of the string may be less than the actual count read. If at the end of the file buffer and unable to read more data an error occured then 0 is returned. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>buffer</em>&nbsp;</td><td>to save input into. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>count of characters actually read or 0 if at end of data. </dd></dl>

</div>
</div>
<a class="anchor" id="a429ffacb0e63df98954491dbd41e1a50"></a><!-- doxytag: member="ucommon::BufferProtocol::getline" ref="a429ffacb0e63df98954491dbd41e1a50" args="(char *string, size_t size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ucommon::BufferProtocol::getline </td>
          <td>(</td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>string</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get text as a line of input from the buffer. </p>
<p>The eol character(s) are used to mark the end of a line. Because the end of line character is stripped, the length of the string may be less than the actual count read. If at the end of the file buffer and unable to read more data an error occured then 0 is returned. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>string</em>&nbsp;</td><td>to save input into. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>limit of string to save. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>count of characters actually read or 0 if at end of data. </dd></dl>

</div>
</div>
<a class="anchor" id="a11f40bc3976c943c93c580c0e1df124b"></a><!-- doxytag: member="ucommon::BufferProtocol::is_input" ref="a11f40bc3976c943c93c580c0e1df124b" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ucommon::BufferProtocol::is_input </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>See if input active. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if input active. </dd></dl>

<p>Definition at line <a class="el" href="a00195_source.html#l00415">415</a> of file <a class="el" href="a00195_source.html">protocols.h</a>.</p>

</div>
</div>
<a class="anchor" id="a3e13be577409e894f0e11ce00e86a1ce"></a><!-- doxytag: member="ucommon::BufferProtocol::is_open" ref="a3e13be577409e894f0e11ce00e86a1ce" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ucommon::BufferProtocol::is_open </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>See if buffer open. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if buffer active. </dd></dl>

<p>Definition at line <a class="el" href="a00195_source.html#l00408">408</a> of file <a class="el" href="a00195_source.html">protocols.h</a>.</p>

</div>
</div>
<a class="anchor" id="a92d6a68b809f277417ee75da0fa13c33"></a><!-- doxytag: member="ucommon::BufferProtocol::is_output" ref="a92d6a68b809f277417ee75da0fa13c33" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ucommon::BufferProtocol::is_output </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>See if output active. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if output active. </dd></dl>

<p>Definition at line <a class="el" href="a00195_source.html#l00422">422</a> of file <a class="el" href="a00195_source.html">protocols.h</a>.</p>

</div>
</div>
<a class="anchor" id="a41fd411fbf86118e4b26c36ccec2521a"></a><!-- doxytag: member="ucommon::BufferProtocol::is_pending" ref="a41fd411fbf86118e4b26c36ccec2521a" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ucommon::BufferProtocol::is_pending </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>See if pending input. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if input pending. </dd></dl>

<p>Definition at line <a class="el" href="a00195_source.html#l00429">429</a> of file <a class="el" href="a00195_source.html">protocols.h</a>.</p>

</div>
</div>
<a class="anchor" id="af226f45434154b7ef13f4f5ca5c37705"></a><!-- doxytag: member="ucommon::BufferProtocol::operator bool" ref="af226f45434154b7ef13f4f5ca5c37705" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ucommon::BufferProtocol::operator bool </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>See if buffer open. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if buffer active. </dd></dl>

<p>Definition at line <a class="el" href="a00195_source.html#l00394">394</a> of file <a class="el" href="a00195_source.html">protocols.h</a>.</p>

</div>
</div>
<a class="anchor" id="a2885dc08963a16d68aa9a9000578c945"></a><!-- doxytag: member="ucommon::BufferProtocol::operator!" ref="a2885dc08963a16d68aa9a9000578c945" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ucommon::BufferProtocol::operator! </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>See if buffer closed. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if buffer inactive. </dd></dl>

<p>Definition at line <a class="el" href="a00195_source.html#l00401">401</a> of file <a class="el" href="a00195_source.html">protocols.h</a>.</p>

</div>
</div>
<a class="anchor" id="aba5b8218517b805c8e2d532551701a77"></a><!-- doxytag: member="ucommon::BufferProtocol::printf" ref="aba5b8218517b805c8e2d532551701a77" args="(const char *format,...)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ucommon::BufferProtocol::printf </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>format</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&nbsp;</td>
          <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Print formatted string to the buffer. </p>
<p>The maximum output size is the buffer size, and the operation flushes the buffer. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>format</em>&nbsp;</td><td>string. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of bytes written. </dd></dl>

</div>
</div>
<a class="anchor" id="ac5faf17adc9205fd22d5b602ee316ab4"></a><!-- doxytag: member="ucommon::BufferProtocol::put" ref="ac5faf17adc9205fd22d5b602ee316ab4" args="(const char *address, size_t count=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ucommon::BufferProtocol::put </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>address</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>count</em> = <code>0</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Put memory into the buffer. </p>
<p>If count is 0 then put as NULL terminated string. This method will become "put()" in abi 4 and may become a protected method. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>of characters to put into buffer. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>of characters to put into buffer. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of characters actually written. </dd></dl>

</div>
</div>
<a class="anchor" id="a75a56813f2972710ce40411ca0625532"></a><!-- doxytag: member="ucommon::BufferProtocol::putline" ref="a75a56813f2972710ce40411ca0625532" args="(const char *string)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ucommon::BufferProtocol::putline </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>string</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Put a string as a line of output to the buffer. </p>
<p>The eol character is appended to the end. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>string</em>&nbsp;</td><td>to write. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>total characters successfully written, including eol chars. </dd></dl>

</div>
</div>
<a class="anchor" id="ab983c1a4273c4d060e084951d599ea64"></a><!-- doxytag: member="ucommon::BufferProtocol::request" ref="ab983c1a4273c4d060e084951d599ea64" args="(size_t size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* ucommon::BufferProtocol::request </td>
          <td>(</td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>size</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Request workspace in output buffer. </p>
<p>This returns a pointer to memory from the output buffer and advances the output position. This is sometimes used for a form of zero copy write. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>of request area. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>data pointer or NULL if not available. </dd></dl>

</div>
</div>
<a class="anchor" id="a652f30ea28c1b3eef1e3d362c1db3385"></a><!-- doxytag: member="ucommon::BufferProtocol::reset" ref="a652f30ea28c1b3eef1e3d362c1db3385" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ucommon::BufferProtocol::reset </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Reset input buffer state. </p>
<p>Drops any pending input. </p>

</div>
</div>
<a class="anchor" id="ae93e32ff6cdd40a69ea93f381562c27c"></a><!-- doxytag: member="ucommon::BufferProtocol::seteol" ref="ae93e32ff6cdd40a69ea93f381562c27c" args="(const char *string)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ucommon::BufferProtocol::seteol </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>string</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set end of line marker. </p>
<p>Normally this is set to cr &amp; lf, which actually supports both lf alone and cr/lf termination of lines. However, <a class="el" href="a00028.html#a75a56813f2972710ce40411ca0625532" title="Put a string as a line of output to the buffer.">putline()</a> will always add the full cr/lf if this mode is used. This option only effects <a class="el" href="a00028.html#a429ffacb0e63df98954491dbd41e1a50" title="Get text as a line of input from the buffer.">getline()</a> and <a class="el" href="a00028.html#a75a56813f2972710ce40411ca0625532" title="Put a string as a line of output to the buffer.">putline()</a>. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>string</em>&nbsp;</td><td>for eol for getline and putline. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="a00195_source.html#l00204">204</a> of file <a class="el" href="a00195_source.html">protocols.h</a>.</p>

</div>
</div>
<a class="anchor" id="a2f9060bdad7cf07d59114aa65b04430c"></a><!-- doxytag: member="ucommon::BufferProtocol::unread" ref="a2f9060bdad7cf07d59114aa65b04430c" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ucommon::BufferProtocol::unread </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get current input position. </p>
<p>Sometimes used to help compute and report a "tell" offset. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>offset of input buffer. </dd></dl>

<p>Definition at line <a class="el" href="a00195_source.html#l00286">286</a> of file <a class="el" href="a00195_source.html">protocols.h</a>.</p>

</div>
</div>
<a class="anchor" id="afc49d4dfdb541f025a756ad467bbc23d"></a><!-- doxytag: member="ucommon::BufferProtocol::unsaved" ref="afc49d4dfdb541f025a756ad467bbc23d" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ucommon::BufferProtocol::unsaved </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get current output position. </p>
<p>Sometimes used to help compute a "trunc" operation. </p>

<p>Definition at line <a class="el" href="a00195_source.html#l00293">293</a> of file <a class="el" href="a00195_source.html">protocols.h</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>ucommon/<a class="el" href="a00195_source.html">protocols.h</a></li>
</ul>
</div>
<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jul 14 16:39:30 2011 for ucommon by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>