Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > 626e7b9df2c26f4a1ac4abc5819592a1 > files > 75

atlascpp-devel-0.6.2-1.fc15.i686.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>Atlas-C++: Filter.h Source File</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.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">Atlas-C++</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
    </ul>
  </div>
<div class="header">
  <div class="headertitle">
<div class="title">Filter.h</div>  </div>
</div>
<div class="contents">
<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// This file may be redistributed and modified only under the terms of</span>
<a name="l00002"></a>00002 <span class="comment">// the GNU Lesser General Public License (See COPYING for details).</span>
<a name="l00003"></a>00003 <span class="comment">// Copyright (C) 2000-2001 Michael Day, Stefanus Du Toit</span>
<a name="l00004"></a>00004 
<a name="l00005"></a>00005 <span class="comment">// $Id$</span>
<a name="l00006"></a>00006 
<a name="l00007"></a>00007 <span class="preprocessor">#ifndef ATLAS_FILTER_H</span>
<a name="l00008"></a>00008 <span class="preprocessor"></span><span class="preprocessor">#define ATLAS_FILTER_H</span>
<a name="l00009"></a>00009 <span class="preprocessor"></span>
<a name="l00010"></a>00010 <span class="preprocessor">#include &lt;iostream&gt;</span>
<a name="l00011"></a>00011 <span class="preprocessor">#include &lt;string&gt;</span>
<a name="l00012"></a>00012 
<a name="l00013"></a>00013 <span class="keyword">namespace </span>Atlas {
<a name="l00014"></a>00014 
<a name="l00029"></a><a class="code" href="class_atlas_1_1_filter.html">00029</a> <span class="keyword">class </span><a class="code" href="class_atlas_1_1_filter.html" title="Atlas stream filter.">Filter</a>
<a name="l00030"></a>00030 {
<a name="l00031"></a>00031     <span class="keyword">public</span>:
<a name="l00032"></a>00032    
<a name="l00033"></a>00033     <a class="code" href="class_atlas_1_1_filter.html" title="Atlas stream filter.">Filter</a>(<a class="code" href="class_atlas_1_1_filter.html" title="Atlas stream filter.">Filter</a>* = 0);
<a name="l00034"></a>00034     <span class="keyword">virtual</span> ~<a class="code" href="class_atlas_1_1_filter.html" title="Atlas stream filter.">Filter</a>();
<a name="l00035"></a>00035 
<a name="l00036"></a>00036     <span class="keyword">virtual</span> <span class="keywordtype">void</span> begin() = 0;
<a name="l00037"></a>00037     <span class="keyword">virtual</span> <span class="keywordtype">void</span> end() = 0;
<a name="l00038"></a>00038 
<a name="l00039"></a>00039     <span class="keyword">virtual</span> std::string encode(<span class="keyword">const</span> std::string&amp;) = 0;
<a name="l00040"></a>00040     <span class="keyword">virtual</span> std::string decode(<span class="keyword">const</span> std::string&amp;) = 0;
<a name="l00041"></a>00041 
<a name="l00042"></a>00042     <span class="keyword">enum</span> Type
<a name="l00043"></a>00043     {
<a name="l00044"></a>00044         CHECKSUM,
<a name="l00045"></a>00045         COMPRESSION,
<a name="l00046"></a>00046         ENCRYPTION
<a name="l00047"></a>00047     };
<a name="l00048"></a>00048 
<a name="l00049"></a>00049     <span class="keyword">protected</span>:
<a name="l00050"></a>00050 
<a name="l00051"></a>00051     <a class="code" href="class_atlas_1_1_filter.html" title="Atlas stream filter.">Filter</a>* m_next;
<a name="l00052"></a>00052 };
<a name="l00053"></a>00053 
<a name="l00054"></a>00054 <span class="keyword">typedef</span> <span class="keywordtype">int</span> int_type;
<a name="l00055"></a>00055 
<a name="l00056"></a><a class="code" href="class_atlas_1_1filterbuf.html">00056</a> <span class="keyword">class </span><a class="code" href="class_atlas_1_1filterbuf.html">filterbuf</a> : <span class="keyword">public</span> std::streambuf {
<a name="l00057"></a>00057 
<a name="l00058"></a>00058 <span class="keyword">public</span>:
<a name="l00059"></a>00059 
<a name="l00060"></a>00060   <a class="code" href="class_atlas_1_1filterbuf.html">filterbuf</a>(std::streambuf&amp; buffer,
<a name="l00061"></a>00061             <a class="code" href="class_atlas_1_1_filter.html" title="Atlas stream filter.">Filter</a>&amp; filter)
<a name="l00062"></a>00062    : m_streamBuffer(buffer), m_filter(filter)
<a name="l00063"></a>00063   {
<a name="l00064"></a>00064     setp(m_outBuffer, m_outBuffer + (m_outBufferSize - 1));
<a name="l00065"></a>00065     setg(m_inBuffer + m_inPutback, m_inBuffer + m_inPutback,
<a name="l00066"></a>00066          m_inBuffer + m_inPutback);
<a name="l00067"></a>00067   }
<a name="l00068"></a>00068   
<a name="l00069"></a>00069   <span class="keyword">virtual</span> ~<a class="code" href="class_atlas_1_1filterbuf.html">filterbuf</a>();
<a name="l00070"></a>00070   
<a name="l00071"></a>00071 <span class="keyword">protected</span>:
<a name="l00072"></a>00072   <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> m_outBufferSize = 10;
<a name="l00073"></a>00073   <span class="keywordtype">char</span> m_outBuffer[m_outBufferSize];
<a name="l00074"></a>00074 
<a name="l00075"></a>00075   <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> m_inBufferSize = 10;
<a name="l00076"></a>00076   <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> m_inPutback = 4;
<a name="l00077"></a>00077   <span class="keywordtype">char</span> m_inBuffer[m_inBufferSize];
<a name="l00078"></a>00078 
<a name="l00079"></a>00079   <span class="keywordtype">int</span> flushOutBuffer()
<a name="l00080"></a>00080   {
<a name="l00081"></a>00081     <span class="keywordtype">int</span> num = pptr() - pbase();
<a name="l00082"></a>00082     std::string encoded = m_filter.encode(std::string(pbase(), pptr()));
<a name="l00083"></a>00083     m_streamBuffer.sputn(encoded.c_str(), (long) encoded.size());
<a name="l00084"></a>00084     pbump(-num);
<a name="l00085"></a>00085     <span class="keywordflow">return</span> num;
<a name="l00086"></a>00086   }  
<a name="l00087"></a>00087   
<a name="l00088"></a>00088   <span class="keyword">virtual</span> int_type overflow(int_type c);
<a name="l00089"></a>00089   <span class="keyword">virtual</span> int_type underflow();
<a name="l00090"></a>00090   <span class="keyword">virtual</span> <span class="keywordtype">int</span> sync();
<a name="l00091"></a>00091   
<a name="l00092"></a>00092 <span class="keyword">private</span>:
<a name="l00093"></a>00093 
<a name="l00094"></a>00094   std::streambuf&amp; m_streamBuffer;
<a name="l00095"></a>00095   <a class="code" href="class_atlas_1_1_filter.html" title="Atlas stream filter.">Filter</a>&amp; m_filter;
<a name="l00096"></a>00096 };
<a name="l00097"></a>00097  
<a name="l00098"></a>00098 } <span class="comment">// Atlas namespace</span>
<a name="l00099"></a>00099 
<a name="l00100"></a>00100 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
<HR>
<P>Copyright 2000-2004 the respective authors.</P>
<P>This document can be licensed under the terms of the GNU Free Documentation
License or the GNU General Public License and may be freely distributed under
the terms given by one of these licenses.</P>