Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > 1f9eb832ba1e4b88d9a5c2b384813bb4 > files > 1681

kdelibs3-apidocs-3.5.10-31.fc15.noarch.rpm

<?xml version="1.0" encoding="UTF-8"?>
<!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" lang="en_US" xml:lang="en_US">

<head>
  <title>kdecore: KBufferedIO Class Reference (kdecore)</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  <meta http-equiv="Content-Style-Type" content="text/css" />

  <meta http-equiv="pics-label" content='(pics-1.1 "http://www.icra.org/ratingsv02.html" comment "ICRAonline DE v2.0" l gen true for "http://www.kde.org"  r (nz 1 vz 1 lz 1 oz 1 cb 1) "http://www.rsac.org/ratingsv01.html" l gen true for "http://www.kde.org"  r (n 0 s 0 v 0 l 0))' />

  <meta name="trademark" content="KDE e.V." />
  <meta name="description" content="K Desktop Environment Homepage, KDE.org" />
  <meta name="MSSmartTagsPreventParsing" content="true" />
  <meta name="robots" content="all" />

  <link rel="shortcut icon" href="../../favicon.ico" />

<link rel="stylesheet" media="screen" type="text/css" title="APIDOX" href="doxygen.css" />



</head>

<body>

<div id="nav_header_top" align="right">
  <a href="#content" class="doNotDisplay" accesskey="2">Skip to main content ::</a>

  <a href="../.."><img id="nav_header_logo" alt="Home" align="left" src="../../kde_gear_64.png" border="0" /></a>
  <span class="doNotDisplay">::</span>

  <div id="nav_header_title" align="left">KDE API Reference</div>


</div>

<div id="nav_header_bottom" align="right">
  <span class="doNotDisplay">:: <a href="#navigation" accesskey="5">Skip to Link Menu</a><br/></span>
  <div id="nav_header_bottom_right" style="text-align: left;">
/ <a href="../..">API Reference</a>
 / <a href=".">kdecore</a>
  </div>
</div>


<table id="main" border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
      <td valign="top" class="menuheader" height="0"></td>

  <td id="contentcolumn" valign="top" rowspan="2" >
    <div id="content" style="padding-top: 0px;"><div style="width:100%; margin: 0px; padding: 0px;">
    <a name="content"></a>


<!-- Generated by Doxygen 1.7.4 -->
</div>
<div class="header">
  <div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#signals">Signals</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a>  </div>
  <div class="headertitle">
<div class="title">KBufferedIO Class Reference</div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="KBufferedIO" --><!-- doxytag: inherits="KAsyncIO" -->
<p>This abstract class implements basic functionality for buffered input/output.  
 <a href="classKBufferedIO.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="kbufferedio_8h_source.html">kbufferedio.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for KBufferedIO:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classKBufferedIO.png" usemap="#KBufferedIO_map" alt=""/>
  <map id="KBufferedIO_map" name="KBufferedIO_map">
<area href="classKAsyncIO.html" title="Asynchronous I/O Support." alt="KAsyncIO" shape="rect" coords="60,56,170,80"/>
<area href="qobject.html" alt="QObject" shape="rect" coords="0,0,110,24"/>
<area href="qiodevice.html" alt="QIODevice" shape="rect" coords="120,0,230,24"/>
<area href="classKExtendedSocket.html" title="The extended socket class." alt="KExtendedSocket" shape="rect" coords="60,168,170,192"/>
</map>
 </div></div>

<p><a href="classKBufferedIO-members.html">List of all members.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKBufferedIO.html#afeff126cc3c8a206ac1777514a6bd451">closeModes</a> { <br/>
&#160;&#160;<b>availRead</b> =  0x01, 
<b>dirtyWrite</b> =  0x02, 
<b>involuntary</b> =  0x10, 
<b>delayed</b> =  0x20, 
<br/>
&#160;&#160;<b>closedNow</b> =  0x40
<br/>
 }</td></tr>
<tr><td colspan="2"><h2><a name="signals"></a>
Signals</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKBufferedIO.html#a75a58d58207fb5c0def3671282cfbca9">bytesWritten</a> (int nbytes)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKBufferedIO.html#a58afe6a5d2c2b18b2bdd617b6683101f">closed</a> (int <a class="elRef" href="qiodevice.html#state">state</a>)</td></tr>
<tr><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKBufferedIO.html#a0c3b65d3d1c3232873d2f12241b4ef85">~KBufferedIO</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKBufferedIO.html#ad560fc71d551bce0e159d9412a2079b9">closeNow</a> ()=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKBufferedIO.html#aba4fa74fadd47da028110e1a79505205">setBufferSize</a> (int rsize, int wsize=-2)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKBufferedIO.html#a08310d20ed336bbf02d1a54d06eafb2b">bytesAvailable</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKBufferedIO.html#aa5d2a281107a3b4122c63a21226ef28c">waitForMore</a> (int msec)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKBufferedIO.html#a04979b4e08919c0c5c7058cf474d0658">bytesToWrite</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKBufferedIO.html#ab5af8692df30513a6f757ecaa4d1d1d5">canReadLine</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKBufferedIO.html#a0328c2d562208fa1ae4b1ae710202213">peekBlock</a> (char *data, uint maxlen)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKBufferedIO.html#a4b4ecfda0327f5d4c71c31014e5608f1">unreadBlock</a> (const char *data, uint len)</td></tr>
<tr><td colspan="2"><h2><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKBufferedIO.html#a3be5d096e1fbe4dd02147c6aa2f9de19">KBufferedIO</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual unsigned&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKBufferedIO.html#aabb1c8d6218cc4ae515e8b4f4ac22916">consumeReadBuffer</a> (unsigned nbytes, char *destbuffer, bool discard=true)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKBufferedIO.html#a0f3b7fa0af95441473235f23a8a12706">consumeWriteBuffer</a> (unsigned nbytes)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual unsigned&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKBufferedIO.html#ad1b22cb61e7a1746a27f43f166f832ba">feedReadBuffer</a> (unsigned nbytes, const char *buffer, bool atBeginning=false)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual unsigned&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKBufferedIO.html#ac59c203678f4ff0c0f39bd4c50f12ba2">feedWriteBuffer</a> (unsigned nbytes, const char *buffer)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual unsigned&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKBufferedIO.html#a688b7dbc73b9f7e40728b54d9e8c54c2">readBufferSize</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual unsigned&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKBufferedIO.html#aca27da5f07f5a4cf0a868fb92f9a6a89">writeBufferSize</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad2e4f2c5ab8185f1f6d124d481bedad5"></a><!-- doxytag: member="KBufferedIO::virtual_hook" ref="ad2e4f2c5ab8185f1f6d124d481bedad5" args="(int id, void *data)" -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>virtual_hook</b> (int id, void *data)</td></tr>
<tr><td colspan="2"><h2><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="qptrlist.html">QPtrList</a>&lt; <a class="elRef" href="qbytearray.html">QByteArray</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKBufferedIO.html#a5535b16be90a99b4f3ba8aeb7180ab16">inBuf</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="qptrlist.html">QPtrList</a>&lt; <a class="elRef" href="qbytearray.html">QByteArray</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKBufferedIO.html#aa0a1ea991ea6859b24c95cfc40dedd8e">outBuf</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKBufferedIO.html#aa12ed3917dd30fb40a286601bf1abd79">inBufIndex</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKBufferedIO.html#a2c769a786a9b4d3c8f2ee013452e8603">outBufIndex</a></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>This abstract class implements basic functionality for buffered input/output. </p>
<p>Through the available methods, you can find out how many bytes are available for reading, how many are still unsent and you can peek at the buffered data.</p>
<p>This class was intentionally written to resemble <a class="elRef" href="qsocket.html">QSocket</a>, because <a class="el" href="classKExtendedSocket.html" title="The extended socket class.">KExtendedSocket</a> is a subclass of this one. This is so that applications written using QSocket's buffering characteristics will be more easily ported to the more powerful <a class="el" href="classKExtendedSocket.html" title="The extended socket class.">KExtendedSocket</a> class.</p>
<p><a class="el" href="classKBufferedIO.html" title="This abstract class implements basic functionality for buffered input/output.">KBufferedIO</a> already provides a powerful internal buffering algorithm. However, this does not include the I/O itself, which must be implemented in derived classes. Thus, to implement a class that does some I/O, you must override, in addition to the pure virtual <a class="elRef" href="qiodevice.html">QIODevice</a> methods, these two: </p>
<ul>
<li><a class="el" href="classKBufferedIO.html#ad560fc71d551bce0e159d9412a2079b9" title="Closes the stream now, discarding the contents of the write buffer.">closeNow()</a> </li>
<li><a class="el" href="classKBufferedIO.html#aa5d2a281107a3b4122c63a21226ef28c" title="Waits for more data to be available and returns the amount of available data then.">waitForMore()</a></li>
</ul>
<p>If your derived class reimplements the buffering algorithm, you must then decide which buffering functions to override. For instance, you may want to change the protected functions like <a class="el" href="classKBufferedIO.html#ad1b22cb61e7a1746a27f43f166f832ba" title="Feeds data into the input buffer.">feedReadBuffer()</a> and <a class="el" href="classKBufferedIO.html#aabb1c8d6218cc4ae515e8b4f4ac22916" title="Consumes data from the input buffer.">consumeReadBuffer()</a>.</p>
<dl class="author"><dt><b>Author:</b></dt><dd>Thiago Macieira &lt;<a href="mailto:thiagom@mail.com">thiagom@mail.com</a>&gt; Buffered I/O </dd></dl>

<p>Definition at line <a class="el" href="kbufferedio_8h_source.html#l00056">56</a> of file <a class="el" href="kbufferedio_8h_source.html">kbufferedio.h</a>.</p>
</div><hr/><h2>Member Enumeration Documentation</h2>
<a class="anchor" id="afeff126cc3c8a206ac1777514a6bd451"></a><!-- doxytag: member="KBufferedIO::closeModes" ref="afeff126cc3c8a206ac1777514a6bd451" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="classKBufferedIO.html#afeff126cc3c8a206ac1777514a6bd451">KBufferedIO::closeModes</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The modes for <a class="el" href="classKBufferedIO.html#a58afe6a5d2c2b18b2bdd617b6683101f" title="This signal gets sent when the stream is closed.">closed()</a> signal. </p>

<p>Definition at line <a class="el" href="kbufferedio_8h_source.html#l00068">68</a> of file <a class="el" href="kbufferedio_8h_source.html">kbufferedio.h</a>.</p>

</div>
</div>
<hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a3be5d096e1fbe4dd02147c6aa2f9de19"></a><!-- doxytag: member="KBufferedIO::KBufferedIO" ref="a3be5d096e1fbe4dd02147c6aa2f9de19" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">KBufferedIO::KBufferedIO </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<h2><a class="anchor" id="impldetails"></a>
Implementation Details</h2>
<p>The <a class="el" href="classKBufferedIO.html" title="This abstract class implements basic functionality for buffered input/output.">KBufferedIO</a> class has two purposes: first, it defines an API on how that classes providing buffered I/O should provide. Next, it implements on top of that API a generic buffering, that should suffice for most cases.</p>
<p>The buffering implemented consists of two separate buffer areas, one for the input (or read) buffer, and one for the output (or write) buffer. Each of those buffers is implemented through a <a class="elRef" href="qlist.html">QList</a> of QByteArrays instead of simply QByteArrays. The idea is that, instead of having one large, contiguous buffer area, we have several small ones. Even though this could be seen as a waste of memory, it makes our life easier, because we can just append a new <a class="elRef" href="qbytearray.html">QByteArray</a> to the list and not have to worry with copying the rest of the buffer, should we need to expand.</p>
<p>This way, we have the capability of unlimited buffering, which can grow to the extent of available memory.</p>
<p>For each buffer, we provide three kinds of functions, available as protected members: consume, feed and size. The size functions calculate the current size of the buffer, by adding each individual <a class="elRef" href="qbytearray.html">QByteArray</a> size. The feed functions are used by the I/O functions that receive data from somewhere, i.e., from the system, in the case of the input buffer, and from the user, in the case of the output buffer. These two functions are used to give the buffers more data. And the consume functions are used by the functions that send out data (to the system, for the write buffer, and to the user, for the read buffer).</p>
<p>Note that for your own implementation, you can have your readBlock function merely call consumeReadBuffer, similarly to peekBlock. As for the writeBlock function, you'd call feedWriteBuffer.</p>
<p>Now, the function receiving data from the system will need to simply call feedReadBuffer, much in the same way of unreadBlock. The tricky part is for the output function. We do not provide a member function that copies data from the output buffer into another buffer for sending. We believe that would be a waste of resources and CPU time, since you'd have to allocate that buffer, copy data into it and then call the OS, which will likely just copy data out of it.</p>
<p>Instead, we found it better to leave it to you to access outBuf member variable directly and use the buffers there. Should you want to copy that into a larger buffer before sending, that's up to you.</p>
<p>Both buffers work in the same way: they're an "array" of buffers, each concatenated to the other. All data in all buffers is valid data, except for the first <a class="elRef" href="qbytearray.html">QByteArray</a>, whose valid data starts at inBufIndex/outBufIndex bytes from the start. That is, the data starts in the first <a class="elRef" href="qbytearray.html">QByteArray</a> buffer that many bytes from the start and goes on contiguously until the last <a class="elRef" href="qbytearray.html">QByteArray</a>. This has been decided like that because we didn't want to create a new <a class="elRef" href="qbytearray.html">QByteArray</a> of the remaining bytes in the first buffer, after a consume operation, because that could take some time. It is faster this way, although not really easy.</p>
<p>If you want to take a look at an implementation of a buffered I/O class, refer to KExtendedSocket's source code. </p>

<p>Definition at line <a class="el" href="kbufferedio_8cpp_source.html#l00089">89</a> of file <a class="el" href="kbufferedio_8cpp_source.html">kbufferedio.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a0c3b65d3d1c3232873d2f12241b4ef85"></a><!-- doxytag: member="KBufferedIO::~KBufferedIO" ref="a0c3b65d3d1c3232873d2f12241b4ef85" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">KBufferedIO::~KBufferedIO </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Destroys this class. </p>
<p>The flushing of the buffers is implementation dependant. The default implementation discards the contents </p>

<p>Definition at line <a class="el" href="kbufferedio_8cpp_source.html#l00097">97</a> of file <a class="el" href="kbufferedio_8cpp_source.html">kbufferedio.cpp</a>.</p>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a08310d20ed336bbf02d1a54d06eafb2b"></a><!-- doxytag: member="KBufferedIO::bytesAvailable" ref="a08310d20ed336bbf02d1a54d06eafb2b" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int KBufferedIO::bytesAvailable </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the number of bytes available for reading in the read buffer. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>the number of bytes available for reading </dd></dl>

<p>Reimplemented in <a class="el" href="classKExtendedSocket.html#a9b6f459c33e1c1b60bf5f4a496b92726">KExtendedSocket</a>.</p>

<p>Definition at line <a class="el" href="kbufferedio_8cpp_source.html#l00114">114</a> of file <a class="el" href="kbufferedio_8cpp_source.html">kbufferedio.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a04979b4e08919c0c5c7058cf474d0658"></a><!-- doxytag: member="KBufferedIO::bytesToWrite" ref="a04979b4e08919c0c5c7058cf474d0658" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int KBufferedIO::bytesToWrite </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the number of bytes yet to write, still in the write buffer. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>the number of unwritten bytes in the write buffer </dd></dl>

<p>Definition at line <a class="el" href="kbufferedio_8cpp_source.html#l00119">119</a> of file <a class="el" href="kbufferedio_8cpp_source.html">kbufferedio.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a75a58d58207fb5c0def3671282cfbca9"></a><!-- doxytag: member="KBufferedIO::bytesWritten" ref="a75a58d58207fb5c0def3671282cfbca9" args="(int nbytes)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void KBufferedIO::bytesWritten </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>nbytes</em></td><td>)</td>
          <td><code> [signal]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>This signal gets sent whenever bytes are written from the buffer. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">nbytes</td><td>the number of bytes sent. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ab5af8692df30513a6f757ecaa4d1d1d5"></a><!-- doxytag: member="KBufferedIO::canReadLine" ref="ab5af8692df30513a6f757ecaa4d1d1d5" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool KBufferedIO::canReadLine </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Checks whether there is enough data in the buffer to read a line. </p>
<p>The default implementation reads directly from inBuf, so if your implementation changes the meaning of that member, then you must override this function. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>true when there is enough data in the buffer to read a line </dd></dl>

<p>Definition at line <a class="el" href="kbufferedio_8cpp_source.html#l00125">125</a> of file <a class="el" href="kbufferedio_8cpp_source.html">kbufferedio.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a58afe6a5d2c2b18b2bdd617b6683101f"></a><!-- doxytag: member="KBufferedIO::closed" ref="a58afe6a5d2c2b18b2bdd617b6683101f" args="(int state)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void KBufferedIO::closed </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>state</em></td><td>)</td>
          <td><code> [signal]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>This signal gets sent when the stream is closed. </p>
<p>The <code>state</code> parameter will give the current state, in OR-ed bits: </p>
<ul>
<li>availRead: read buffer contains data to be read </li>
<li>dirtyWrite: write buffer wasn't empty when the stream closed </li>
<li>involuntary: the stream wasn't closed due to user request (i.e., call to close). Probably remote end closed it </li>
<li>delayed: the stream was closed voluntarily by the user, but it happened only after the write buffer was emptied </li>
<li>closedNow: the stream was closed voluntarily by the user, by explicitly calling closeNow, which means the write buffer's contents may have been discarded <dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">state</td><td>the state (see function description) </td></tr>
  </table>
  </dd>
</dl>
</li>
</ul>

</div>
</div>
<a class="anchor" id="ad560fc71d551bce0e159d9412a2079b9"></a><!-- doxytag: member="KBufferedIO::closeNow" ref="ad560fc71d551bce0e159d9412a2079b9" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void KBufferedIO::closeNow </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Closes the stream now, discarding the contents of the write buffer. </p>
<p>That is, we won't try to flush that buffer before closing. If you want that buffer to be flushed, you can call <a class="elRef" href="qiodevice.html#flush">QIODevice::flush()</a>, which is blocking, and then closeNow, or you can call <a class="elRef" href="qiodevice.html#close">QIODevice::close()</a> for a delayed close. </p>

<p>Implemented in <a class="el" href="classKExtendedSocket.html#aaa8aa193d1e4ad2aca3cae5bdcb5c8b4">KExtendedSocket</a>.</p>

</div>
</div>
<a class="anchor" id="aabb1c8d6218cc4ae515e8b4f4ac22916"></a><!-- doxytag: member="KBufferedIO::consumeReadBuffer" ref="aabb1c8d6218cc4ae515e8b4f4ac22916" args="(unsigned nbytes, char *destbuffer, bool discard=true)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned KBufferedIO::consumeReadBuffer </td>
          <td>(</td>
          <td class="paramtype">unsigned&#160;</td>
          <td class="paramname"><em>nbytes</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>destbuffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>discard</em> = <code>true</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Consumes data from the input buffer. </p>
<p>That is, this will copy the data stored in the input (read) buffer into the given <code>destbuffer</code>, as much as <code>nbytes</code>. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">nbytes</td><td>the maximum amount of bytes to copy into the buffer </td></tr>
    <tr><td class="paramname">destbuffer</td><td>the destination buffer into which to copy the data </td></tr>
    <tr><td class="paramname">discard</td><td>whether to discard the copied data after the operation </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the real amount of data copied. If it is less than nbytes, then all the buffer was copied. </dd></dl>

<p>Definition at line <a class="el" href="kbufferedio_8cpp_source.html#l00164">164</a> of file <a class="el" href="kbufferedio_8cpp_source.html">kbufferedio.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a0f3b7fa0af95441473235f23a8a12706"></a><!-- doxytag: member="KBufferedIO::consumeWriteBuffer" ref="a0f3b7fa0af95441473235f23a8a12706" args="(unsigned nbytes)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void KBufferedIO::consumeWriteBuffer </td>
          <td>(</td>
          <td class="paramtype">unsigned&#160;</td>
          <td class="paramname"><em>nbytes</em></td><td>)</td>
          <td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Consumes data from the output buffer. </p>
<p>Since this is called whenever we managed to send data out the wire, we can only discard this amount from the buffer. There is no copying and no "peeking" for the output buffer.</p>
<p>Note this function should be called AFTER the data was sent. After it is called, the data is no longer available in the buffer. And don't pass wrong nbytes values. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">nbytes</td><td>the amount of bytes to discard </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="kbufferedio_8cpp_source.html#l00214">214</a> of file <a class="el" href="kbufferedio_8cpp_source.html">kbufferedio.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="ad1b22cb61e7a1746a27f43f166f832ba"></a><!-- doxytag: member="KBufferedIO::feedReadBuffer" ref="ad1b22cb61e7a1746a27f43f166f832ba" args="(unsigned nbytes, const char *buffer, bool atBeginning=false)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned KBufferedIO::feedReadBuffer </td>
          <td>(</td>
          <td class="paramtype">unsigned&#160;</td>
          <td class="paramname"><em>nbytes</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>atBeginning</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Feeds data into the input buffer. </p>
<p>This happens when we detected available data in the device and read it.</p>
<p>The data will be appended to the buffer or inserted at the beginning, depending on whether <code>atBeginning</code> is set or not. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">nbytes</td><td>the number of bytes in the buffer </td></tr>
    <tr><td class="paramname">buffer</td><td>the data that was read </td></tr>
    <tr><td class="paramname">atBeginning</td><td>whether to append or insert at the beginning </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the number of bytes that have been appended </dd></dl>

<p>Definition at line <a class="el" href="kbufferedio_8cpp_source.html#l00243">243</a> of file <a class="el" href="kbufferedio_8cpp_source.html">kbufferedio.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="ac59c203678f4ff0c0f39bd4c50f12ba2"></a><!-- doxytag: member="KBufferedIO::feedWriteBuffer" ref="ac59c203678f4ff0c0f39bd4c50f12ba2" args="(unsigned nbytes, const char *buffer)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned KBufferedIO::feedWriteBuffer </td>
          <td>(</td>
          <td class="paramtype">unsigned&#160;</td>
          <td class="paramname"><em>nbytes</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>buffer</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Feeds data into the output buffer. </p>
<p>This happens when the user told us to write some data. The data will be appended to the buffer. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">nbytes</td><td>the number of bytes in the buffer </td></tr>
    <tr><td class="paramname">buffer</td><td>the data that is to be written </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the number of bytes that have been appended </dd></dl>

<p>Definition at line <a class="el" href="kbufferedio_8cpp_source.html#l00259">259</a> of file <a class="el" href="kbufferedio_8cpp_source.html">kbufferedio.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a0328c2d562208fa1ae4b1ae710202213"></a><!-- doxytag: member="KBufferedIO::peekBlock" ref="a0328c2d562208fa1ae4b1ae710202213" args="(char *data, uint maxlen)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int KBufferedIO::peekBlock </td>
          <td>(</td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint&#160;</td>
          <td class="paramname"><em>maxlen</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Reads into the user buffer at most maxlen bytes, but does not consume that data from the read buffer. </p>
<p>This is useful to check whether we already have the needed data to process something.</p>
<p>This function may want to try and read more data from the system provided it won't block.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">data</td><td>the user buffer pointer, at least maxlen bytes long </td></tr>
    <tr><td class="paramname">maxlen</td><td>the maximum length to be peeked </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the number of bytes actually copied. </dd></dl>

<p>Implemented in <a class="el" href="classKExtendedSocket.html#a2216569e363d7803ed8739250606b65c">KExtendedSocket</a>.</p>

</div>
</div>
<a class="anchor" id="a688b7dbc73b9f7e40728b54d9e8c54c2"></a><!-- doxytag: member="KBufferedIO::readBufferSize" ref="a688b7dbc73b9f7e40728b54d9e8c54c2" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned KBufferedIO::readBufferSize </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the number of bytes in the read buffer. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>the size of the read buffer in bytes </dd></dl>

<p>Definition at line <a class="el" href="kbufferedio_8cpp_source.html#l00270">270</a> of file <a class="el" href="kbufferedio_8cpp_source.html">kbufferedio.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="aba4fa74fadd47da028110e1a79505205"></a><!-- doxytag: member="KBufferedIO::setBufferSize" ref="aba4fa74fadd47da028110e1a79505205" args="(int rsize, int wsize=&#45;2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool KBufferedIO::setBufferSize </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>rsize</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>wsize</em> = <code>-2</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Sets the internal buffer size to value. </p>
<p>Not all implementations support this.</p>
<p>The parameters may be 0 to make the class unbuffered or -1 to let the class choose the size (which may be unlimited) or -2 to leave the buffer size untouched.</p>
<p>Note that setting the write buffer size to any value smaller than the current size of the buffer will force it to flush first, which can make this call blocking.</p>
<p>The default implementation does not support setting the buffer sizes. You can only call this function with values -1 for "don't care" or -2 for "unchanged" </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">rsize</td><td>the size of the read buffer </td></tr>
    <tr><td class="paramname">wsize</td><td>the size of the write buffer </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if setting both was ok. If false is returned, the buffers were left unchanged. </dd></dl>

<p>Reimplemented in <a class="el" href="classKExtendedSocket.html#ae4eac42697dca088b99a6f8abc2adf83">KExtendedSocket</a>.</p>

<p>Definition at line <a class="el" href="kbufferedio_8cpp_source.html#l00104">104</a> of file <a class="el" href="kbufferedio_8cpp_source.html">kbufferedio.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a4b4ecfda0327f5d4c71c31014e5608f1"></a><!-- doxytag: member="KBufferedIO::unreadBlock" ref="a4b4ecfda0327f5d4c71c31014e5608f1" args="(const char *data, uint len)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int KBufferedIO::unreadBlock </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint&#160;</td>
          <td class="paramname"><em>len</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Unreads some data. </p>
<p>That is, write the data to the beginning of the read buffer, so that next calls to readBlock or peekBlock will see this data instead.</p>
<p>Note not all devices implement this since this could mean a semantic problem. For instance, sockets are sequential devices, so they won't accept unreading. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">data</td><td>the data to be unread </td></tr>
    <tr><td class="paramname">len</td><td>the size of the data </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the number of bytes actually unread </dd></dl>

<p>Reimplemented in <a class="el" href="classKExtendedSocket.html#aab4226b508e353c8d19afe569c43b803">KExtendedSocket</a>.</p>

<p>Definition at line <a class="el" href="kbufferedio_8cpp_source.html#l00155">155</a> of file <a class="el" href="kbufferedio_8cpp_source.html">kbufferedio.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="aa5d2a281107a3b4122c63a21226ef28c"></a><!-- doxytag: member="KBufferedIO::waitForMore" ref="aa5d2a281107a3b4122c63a21226ef28c" args="(int msec)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int KBufferedIO::waitForMore </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>msec</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Waits for more data to be available and returns the amount of available data then. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">msec</td><td>number of milliseconds to wait, -1 to wait forever </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>-1 if we cannot wait (e.g., that doesn't make sense in this stream) </dd></dl>

<p>Implemented in <a class="el" href="classKExtendedSocket.html#a32f12f4c1426881a4fedd25023c0564e">KExtendedSocket</a>.</p>

</div>
</div>
<a class="anchor" id="aca27da5f07f5a4cf0a868fb92f9a6a89"></a><!-- doxytag: member="KBufferedIO::writeBufferSize" ref="aca27da5f07f5a4cf0a868fb92f9a6a89" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned KBufferedIO::writeBufferSize </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the number of bytes in the write buffer. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>the size of the write buffer in bytes </dd></dl>

<p>Definition at line <a class="el" href="kbufferedio_8cpp_source.html#l00283">283</a> of file <a class="el" href="kbufferedio_8cpp_source.html">kbufferedio.cpp</a>.</p>

</div>
</div>
<hr/><h2>Member Data Documentation</h2>
<a class="anchor" id="a5535b16be90a99b4f3ba8aeb7180ab16"></a><!-- doxytag: member="KBufferedIO::inBuf" ref="a5535b16be90a99b4f3ba8aeb7180ab16" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="elRef" href="qptrlist.html">QPtrList</a>&lt;<a class="elRef" href="qbytearray.html">QByteArray</a>&gt; <a class="el" href="classKBufferedIO.html#a5535b16be90a99b4f3ba8aeb7180ab16">KBufferedIO::inBuf</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>For an explanation on how this buffer work, please refer to the comments at the top of <a class="el" href="kbufferedio_8cpp_source.html">kbufferedio.cpp</a>, <a class="el" href="classKBufferedIO.html#impldetails">Implementation Details</a> . </p>

<p>Definition at line <a class="el" href="kbufferedio_8h_source.html#l00212">212</a> of file <a class="el" href="kbufferedio_8h_source.html">kbufferedio.h</a>.</p>

</div>
</div>
<a class="anchor" id="aa12ed3917dd30fb40a286601bf1abd79"></a><!-- doxytag: member="KBufferedIO::inBufIndex" ref="aa12ed3917dd30fb40a286601bf1abd79" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned <a class="el" href="classKBufferedIO.html#aa12ed3917dd30fb40a286601bf1abd79">KBufferedIO::inBufIndex</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Offset into first input buffer. </p>

<p>Definition at line <a class="el" href="kbufferedio_8h_source.html#l00220">220</a> of file <a class="el" href="kbufferedio_8h_source.html">kbufferedio.h</a>.</p>

</div>
</div>
<a class="anchor" id="aa0a1ea991ea6859b24c95cfc40dedd8e"></a><!-- doxytag: member="KBufferedIO::outBuf" ref="aa0a1ea991ea6859b24c95cfc40dedd8e" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="elRef" href="qptrlist.html">QPtrList</a>&lt;<a class="elRef" href="qbytearray.html">QByteArray</a>&gt; <a class="el" href="classKBufferedIO.html#aa0a1ea991ea6859b24c95cfc40dedd8e">KBufferedIO::outBuf</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>For an explanation on how this buffer work, please refer to the comments at the top of <a class="el" href="kbufferedio_8cpp_source.html">kbufferedio.cpp</a>, <a class="el" href="classKBufferedIO.html#impldetails">Implementation Details</a> . </p>

<p>Definition at line <a class="el" href="kbufferedio_8h_source.html#l00218">218</a> of file <a class="el" href="kbufferedio_8h_source.html">kbufferedio.h</a>.</p>

</div>
</div>
<a class="anchor" id="a2c769a786a9b4d3c8f2ee013452e8603"></a><!-- doxytag: member="KBufferedIO::outBufIndex" ref="a2c769a786a9b4d3c8f2ee013452e8603" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned <a class="el" href="classKBufferedIO.html#a2c769a786a9b4d3c8f2ee013452e8603">KBufferedIO::outBufIndex</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Offset into first output buffer. </p>

<p>Definition at line <a class="el" href="kbufferedio_8h_source.html#l00220">220</a> of file <a class="el" href="kbufferedio_8h_source.html">kbufferedio.h</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="kbufferedio_8h_source.html">kbufferedio.h</a></li>
<li><a class="el" href="kbufferedio_8cpp_source.html">kbufferedio.cpp</a></li>
</ul>
</div>
    </div></div>


      </td>
  </tr>
  <tr>
    <td valign="top" id="leftmenu" width="25%">
      <a name="navigation"></a>
      <div class="menu_box"><h2>kdecore</h2>
<div class="nav_list">
<ul><li><a href="index.html">Main Page</a></li><li><a href="modules.html">Modules</a></li><li><a href="namespaces.html">Namespace List</a></li><li><a href="hierarchy.html">Class Hierarchy</a></li><li><a href="classes.html">Alphabetical List</a></li><li><a href="annotated.html">Class List</a></li><li><a href="files.html">File List</a></li><li><a href="namespacemembers.html">Namespace Members</a></li><li><a href="functions.html">Class Members</a></li><li><a href="pages.html">Related Pages</a></li></ul>
<!--
<h2>Class Picker</h2>
<div style="text-align: center;">
<form name="guideform">
<select name="guidelinks" style="width:100%;" onChange="window.location=document.guideform.guidelinks.options[document.guideform.guidelinks.selectedIndex].value">
<option value="annotated.html">-- Choose --</option>
  <option value="classKAboutData.html">kaboutdata</option>,  <option value="classKAboutPerson.html">kaboutperson</option>,  <option value="classKAboutTranslator.html">kabouttranslator</option>,  <option value="classKAccel.html">kaccel</option>,  <option value="classKAcceleratorManager.html">kacceleratormanager</option>,  <option value="classKAccelManagerAlgorithm.html">kaccelmanageralgorithm</option>,  <option value="classKAccelShortcutList.html">kaccelshortcutlist</option>,  <option value="classKAccelString.html">kaccelstring</option>,  <option value="classKAddressInfo.html">kaddressinfo</option>,  <option value="classKAppDCOPInterface.html">kappdcopinterface</option>,  <option value="classKApplication.html">kapplication</option>,  <option value="classKAsyncIO.html">kasyncio</option>,  <option value="classKAudioPlayer.html">kaudioplayer</option>,  <option value="classKBufferedIO.html">kbufferedio</option>,  <option value="classKCalendarSystem.html">kcalendarsystem</option>,  <option value="classKCalendarSystemFactory.html">kcalendarsystemfactory</option>,  <option value="classKCalendarSystemJalali.html">kcalendarsystemjalali</option>,  <option value="classKCatalogue.html">kcatalogue</option>,  <option value="classKCharMacroExpander.html">kcharmacroexpander</option>,  <option value="classKCharsets.html">kcharsets</option>,  <option value="classKClipboardSynchronizer.html">kclipboardsynchronizer</option>,  <option value="classKCmdLineArgs.html">kcmdlineargs</option>,  <option value="classKCodecs.html">kcodecs</option>,  <option value="classKCompletion.html">kcompletion</option>,  <option value="classKCompletionBase.html">kcompletionbase</option>,  <option value="classKCompletionMatches.html">kcompletionmatches</option>,  <option value="classKCompTreeNode.html">kcomptreenode</option>,  <option value="classKConfig.html">kconfig</option>,  <option value="classKConfigBackEnd.html">kconfigbackend</option>,  <option value="classKConfigBase.html">kconfigbase</option>,  <option value="classKConfigDialogManager.html">kconfigdialogmanager</option>,  <option value="classKConfigGroup.html">kconfiggroup</option>,  <option value="classKConfigGroupSaver.html">kconfiggroupsaver</option>,  <option value="classKConfigINIBackEnd.html">kconfiginibackend</option>,  <option value="classKConfigSkeleton.html">kconfigskeleton</option>,  <option value="classKConfigSkeleton_1_1ItemBool.html">kconfigskeleton::itembool</option>,  <option value="classKConfigSkeleton_1_1ItemColor.html">kconfigskeleton::itemcolor</option>,  <option value="classKConfigSkeleton_1_1ItemDateTime.html">kconfigskeleton::itemdatetime</option>,  <option value="classKConfigSkeleton_1_1ItemDouble.html">kconfigskeleton::itemdouble</option>,  <option value="classKConfigSkeleton_1_1ItemEnum.html">kconfigskeleton::itemenum</option>,  <option value="classKConfigSkeleton_1_1ItemFont.html">kconfigskeleton::itemfont</option>,  <option value="classKConfigSkeleton_1_1ItemInt.html">kconfigskeleton::itemint</option>,  <option value="classKConfigSkeleton_1_1ItemInt64.html">kconfigskeleton::itemint64</option>,  <option value="classKConfigSkeleton_1_1ItemIntList.html">kconfigskeleton::itemintlist</option>,  <option value="classKConfigSkeleton_1_1ItemLong.html">kconfigskeleton::itemlong</option>,  <option value="classKConfigSkeleton_1_1ItemPassword.html">kconfigskeleton::itempassword</option>,  <option value="classKConfigSkeleton_1_1ItemPath.html">kconfigskeleton::itempath</option>,  <option value="classKConfigSkeleton_1_1ItemPathList.html">kconfigskeleton::itempathlist</option>,  <option value="classKConfigSkeleton_1_1ItemPoint.html">kconfigskeleton::itempoint</option>,  <option value="classKConfigSkeleton_1_1ItemProperty.html">kconfigskeleton::itemproperty</option>,  <option value="classKConfigSkeleton_1_1ItemRect.html">kconfigskeleton::itemrect</option>,  <option value="classKConfigSkeleton_1_1ItemSize.html">kconfigskeleton::itemsize</option>,  <option value="classKConfigSkeleton_1_1ItemString.html">kconfigskeleton::itemstring</option>,  <option value="classKConfigSkeleton_1_1ItemStringList.html">kconfigskeleton::itemstringlist</option>,  <option value="classKConfigSkeleton_1_1ItemUInt.html">kconfigskeleton::itemuint</option>,  <option value="classKConfigSkeleton_1_1ItemUInt64.html">kconfigskeleton::itemuint64</option>,  <option value="classKConfigSkeleton_1_1ItemULong.html">kconfigskeleton::itemulong</option>,  <option value="classKConfigSkeletonItem.html">kconfigskeletonitem</option>,  <option value="classKCrash.html">kcrash</option>,  <option value="classKDCOPPropertyProxy.html">kdcoppropertyproxy</option>,  <option value="classKDebugDCOPIface.html">kdebugdcopiface</option>,  <option value="classKDesktopFile.html">kdesktopfile</option>,  <option value="classKExtendedSocket.html">kextendedsocket</option>,  <option value="classKGenericFactory.html">kgenericfactory</option>,  <option value="classKGenericFactory_3_01KTypeList_3_01Product_00_01ProductListTail_01_4_00_01KTypeList_3_01Pare1ed8d1e5a9847c99711cad3b12c7e96c.html">kgenericfactory< ktypelist< product, productlisttail >, ktypelist< pare1ed8d1e5a9847c99711cad3b12c7e96c</option>,  <option value="classKGenericFactory_3_01KTypeList_3_01Product_00_01ProductListTail_01_4_00_01KTypeList_3_01Paref6a00f76851e0daa2cb662bb8a41fc7f.html">kgenericfactory< ktypelist< product, productlisttail >, ktypelist< paref6a00f76851e0daa2cb662bb8a41fc7f</option>,  <option value="classKGenericFactory_3_01KTypeList_3_01Product_00_01ProductListTail_01_4_00_01QObject_01_4.html">kgenericfactory< ktypelist< product, productlisttail >, qobject ></option>,  <option value="classKGlobal.html">kglobal</option>,  <option value="classKGlobalAccel.html">kglobalaccel</option>,  <option value="classKGlobalSettings.html">kglobalsettings</option>,  <option value="classKIcon.html">kicon</option>,  <option value="classKIconEffect.html">kiconeffect</option>,  <option value="classKIconLoader.html">kiconloader</option>,  <option value="classKIconTheme.html">kicontheme</option>,  <option value="classKInetSocketAddress.html">kinetsocketaddress</option>,  <option value="classKInstance.html">kinstance</option>,  <option value="classKIOBufferBase.html">kiobufferbase</option>,  <option value="classKIPC.html">kipc</option>,  <option value="classKKey.html">kkey</option>,  <option value="classKKeyNative.html">kkeynative</option>,  <option value="classKKeySequence.html">kkeysequence</option>,  <option value="classKLibFactory.html">klibfactory</option>,  <option value="classKLibLoader.html">klibloader</option>,  <option value="classKLibrary.html">klibrary</option>,  <option value="classKLocale.html">klocale</option>,  <option value="classKLockFile.html">klockfile</option>,  <option value="classKMacroExpanderBase.html">kmacroexpanderbase</option>,  <option value="classKMD4.html">kmd4</option>,  <option value="classKMD5.html">kmd5</option>,  <option value="classKMimeSourceFactory.html">kmimesourcefactory</option>,  <option value="classKMountPoint.html">kmountpoint</option>,  <option value="classKMultipleDrag.html">kmultipledrag</option>,  <option value="classKNetwork_1_1KActiveSocketBase.html">knetwork::kactivesocketbase</option>,  <option value="classKNetwork_1_1KBufferedSocket.html">knetwork::kbufferedsocket</option>,  <option value="classKNetwork_1_1KClientSocketBase.html">knetwork::kclientsocketbase</option>,  <option value="classKNetwork_1_1KDatagramPacket.html">knetwork::kdatagrampacket</option>,  <option value="classKNetwork_1_1KDatagramSocket.html">knetwork::kdatagramsocket</option>,  <option value="classKNetwork_1_1KHttpProxySocketDevice.html">knetwork::khttpproxysocketdevice</option>,  <option value="classKNetwork_1_1KInetSocketAddress.html">knetwork::kinetsocketaddress</option>,  <option value="classKNetwork_1_1KIpAddress.html">knetwork::kipaddress</option>,  <option value="classKNetwork_1_1KMulticastSocket.html">knetwork::kmulticastsocket</option>,  <option value="classKNetwork_1_1KMulticastSocketImpl.html">knetwork::kmulticastsocketimpl</option>,  <option value="classKNetwork_1_1KNetworkInterface.html">knetwork::knetworkinterface</option>,  <option value="classKNetwork_1_1KPassiveSocketBase.html">knetwork::kpassivesocketbase</option>,  <option value="classKNetwork_1_1KResolver.html">knetwork::kresolver</option>,  <option value="classKNetwork_1_1KResolverEntry.html">knetwork::kresolverentry</option>,  <option value="classKNetwork_1_1KResolverResults.html">knetwork::kresolverresults</option>,  <option value="classKNetwork_1_1KResolverWorkerBase_1_1ResolverLocker.html">knetwork::kresolverworkerbase::resolverlocker</option>,  <option value="classKNetwork_1_1KReverseResolver.html">knetwork::kreverseresolver</option>,  <option value="classKNetwork_1_1KServerSocket.html">knetwork::kserversocket</option>,  <option value="classKNetwork_1_1KSocketAddress.html">knetwork::ksocketaddress</option>,  <option value="classKNetwork_1_1KSocketBase.html">knetwork::ksocketbase</option>,  <option value="classKNetwork_1_1KSocketDevice.html">knetwork::ksocketdevice</option>,  <option value="classKNetwork_1_1KSocketDeviceFactory.html">knetwork::ksocketdevicefactory</option>,  <option value="classKNetwork_1_1KSocksSocketDevice.html">knetwork::ksockssocketdevice</option>,  <option value="classKNetwork_1_1KStreamSocket.html">knetwork::kstreamsocket</option>,  <option value="classKNetwork_1_1KUnixSocketAddress.html">knetwork::kunixsocketaddress</option>,  <option value="classKNotifyClient_1_1Instance.html">knotifyclient::instance</option>,  <option value="classKPalette.html">kpalette</option>,  <option value="classKPixmapProvider.html">kpixmapprovider</option>,  <option value="classKPopupAccelManager.html">kpopupaccelmanager</option>,  <option value="classKProcess.html">kprocess</option>,  <option value="classKProcessController.html">kprocesscontroller</option>,  <option value="classKProcIO.html">kprocio</option>,  <option value="classKProtocolInfoFactory.html">kprotocolinfofactory</option>,  <option value="classKPty.html">kpty</option>,  <option value="classKRandomSequence.html">krandomsequence</option>,  <option value="classKRegExp.html">kregexp</option>,  <option value="classKRegExpPrivate.html">kregexpprivate</option>,  <option value="classKRFCDate.html">krfcdate</option>,  <option value="classKRootProp.html">krootprop</option>,  <option value="classKSaveFile.html">ksavefile</option>,  <option value="classKServerSocket.html">kserversocket</option>,  <option value="classKSessionManaged.html">ksessionmanaged</option>,  <option value="classKShared.html">kshared</option>,  <option value="classKSharedConfig.html">ksharedconfig</option>,  <option value="classKSharedPtr.html">ksharedptr</option>,  <option value="classKShellProcess.html">kshellprocess</option>,  <option value="classKShortcut.html">kshortcut</option>,  <option value="classKShortcutList.html">kshortcutlist</option>,  <option value="classKSimpleConfig.html">ksimpleconfig</option>,  <option value="classKSocket.html">ksocket</option>,  <option value="classKSocketAddress.html">ksocketaddress</option>,  <option value="classKSocks.html">ksocks</option>,  <option value="classKSortableItem.html">ksortableitem</option>,  <option value="classKSortableValueList.html">ksortablevaluelist</option>,  <option value="classKStandardDirs.html">kstandarddirs</option>,  <option value="classKStaticDeleter.html">kstaticdeleter</option>,  <option value="classKStaticDeleterBase.html">kstaticdeleterbase</option>,  <option value="classKStdAccel_1_1ShortcutList.html">kstdaccel::shortcutlist</option>,  <option value="classKStringHandler.html">kstringhandler</option>,  <option value="classKSycocaEntry.html">ksycocaentry</option>,  <option value="classKSycocaFactoryList.html">ksycocafactorylist</option>,  <option value="classKTempDir.html">ktempdir</option>,  <option value="classKTempFile.html">ktempfile</option>,  <option value="classKTimezone.html">ktimezone</option>,  <option value="classKTimezoneDetails.html">ktimezonedetails</option>,  <option value="classKTimezones.html">ktimezones</option>,  <option value="classKTimezoneSource.html">ktimezonesource</option>,  <option value="classKUniqueApplication.html">kuniqueapplication</option>,  <option value="classKUnixSocketAddress.html">kunixsocketaddress</option>,  <option value="classKURL.html">kurl</option>,  <option value="classKURL_1_1List.html">kurl::list</option>,  <option value="classKURLDrag.html">kurldrag</option>,  <option value="classKUser.html">kuser</option>,  <option value="classKUserGroup.html">kusergroup</option>,  <option value="classKVMAllocator.html">kvmallocator</option>,  <option value="classKWin.html">kwin</option>,  <option value="classKWin_1_1WindowInfo.html">kwin::windowinfo</option>,  <option value="classKWinModule.html">kwinmodule</option>,  <option value="classKWordMacroExpander.html">kwordmacroexpander</option>,  <option value="classKXErrorHandler.html">kxerrorhandler</option>,  <option value="classKZoneAllocator.html">kzoneallocator</option>,  <option value="classNET.html">net</option>,
</select>
</form>
</div>
-->
</div></div>
<div class="menu_box"><h2>API Dox</h2>
<div class="nav_list">
<ul>
<li><a href="../../arts/html/index.html">arts</a></li><li><a href="../../dcop/html/index.html">dcop</a></li><li><a href="../../dnssd/html/index.html">dnssd</a></li><li><a href="../../interfaces/html/index.html">interfaces</a></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<a href="../../interfaces/kimproxy/interface/html/index.html">interface</a></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<a href="../../interfaces/kimproxy/library/html/index.html">library</a></li><li>&nbsp;&nbsp;<a href="../../interfaces/kspeech/html/index.html">kspeech</a></li><li>&nbsp;&nbsp;<a href="../../interfaces/ktexteditor/html/index.html">ktexteditor</a></li><li><a href="../../kabc/html/index.html">kabc</a></li><li><a href="../../kate/html/index.html">kate</a></li><li><a href="../../kcmshell/html/index.html">kcmshell</a></li><li><a href="../../kdecore/html/index.html">kdecore</a></li><li><a href="../../kded/html/index.html">kded</a></li><li><a href="../../kdefx/html/index.html">kdefx</a></li><li><a href="../../kdeprint/html/index.html">kdeprint</a></li><li><a href="../../kdesu/html/index.html">kdesu</a></li><li><a href="../../kdeui/html/index.html">kdeui</a></li><li><a href="../../kdoctools/html/index.html">kdoctools</a></li><li><a href="../../khtml/html/index.html">khtml</a></li><li><a href="../../kimgio/html/index.html">kimgio</a></li><li><a href="../../kinit/html/index.html">kinit</a></li><li><a href="../../kio/html/index.html">kio</a></li><li>&nbsp;&nbsp;<a href="../../kio/bookmarks/html/index.html">bookmarks</a></li><li>&nbsp;&nbsp;<a href="../../kio/httpfilter/html/index.html">httpfilter</a></li><li>&nbsp;&nbsp;<a href="../../kio/kfile/html/index.html">kfile</a></li><li>&nbsp;&nbsp;<a href="../../kio/kio/html/index.html">kio</a></li><li>&nbsp;&nbsp;<a href="../../kio/kioexec/html/index.html">kioexec</a></li><li>&nbsp;&nbsp;<a href="../../kio/kpasswdserver/html/index.html">kpasswdserver</a></li><li>&nbsp;&nbsp;<a href="../../kio/kssl/html/index.html">kssl</a></li><li><a href="../../kioslave/html/index.html">kioslave</a></li><li>&nbsp;&nbsp;<a href="../../kioslave/http/html/index.html">http</a></li><li><a href="../../kjs/html/index.html">kjs</a></li><li><a href="../../kmdi/html/index.html">kmdi</a></li><li>&nbsp;&nbsp;<a href="../../kmdi/kmdi/html/index.html">kmdi</a></li><li><a href="../../knewstuff/html/index.html">knewstuff</a></li><li><a href="../../kparts/html/index.html">kparts</a></li><li><a href="../../kresources/html/index.html">kresources</a></li><li><a href="../../kspell2/html/index.html">kspell2</a></li><li><a href="../../kunittest/html/index.html">kunittest</a></li><li><a href="../../kutils/html/index.html">kutils</a></li><li><a href="../../kwallet/html/index.html">kwallet</a></li><li><a href="../../libkmid/html/index.html">libkmid</a></li><li><a href="../../libkscreensaver/html/index.html">libkscreensaver</a></li>
</ul></div></div>


        </td>
</tr>
</table>

<span class="doNotDisplay">
  <a href="http://www.kde.org/" accesskey="8">KDE Home</a> |
  <a href="http://accessibility.kde.org/" accesskey="9">KDE Accessibility Home</a> |
  <a href="http://www.kde.org/media/accesskeys.php" accesskey="0">Description of Access Keys</a>
</span>


<div style="height: 8px"></div>

<div id="footer">
  <div id="footer_left">
    Maintained by <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;groo&#116;&#64;kde&#46;or&#x67;">Adriaan de Groot</a>
and
<a href="&#109;a&#105;&#108;&#116;&#111;&#58;w&#105;nter&#64;kde&#46;or&#x67">Allen Winter</a>.
<br/>
    KDE and K Desktop Environment are trademarks of <a href="http://www.kde.org/areas/kde-ev/" title="Homepage of the KDE non-profit Organization">KDE e.V.</a> |
    <a href="http://www.kde.org/contact/impressum.php">Legal</a>
  </div>
  <div id="footer_right"><img src="/media/images/footer_right.png" style="margin: 0px" alt="" /></div>
</div>

<!--
WARNING: DO NOT SEND MAIL TO THE FOLLOWING EMAIL ADDRESS! YOU WILL
BE BLOCKED INSTANTLY AND PERMANENTLY!
<a href="mailto:aaaatrap-425acc3b5374943f@kde.org">Block me</a>
WARNING END
-->

</body>
</html>