⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filters_8h-source.html

📁 Crypto++是一个非常强大的密码学库,主要是功能全
💻 HTML
📖 第 1 页 / 共 5 页
字号:
00104         <span class="keywordtype">bool</span> m_transparent;00105         <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> m_currentMessageBytes, m_totalBytes;00106         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m_currentSeriesMessages, m_totalMessages, m_totalMessageSeries;00107 };00108 <span class="comment"></span>00109 <span class="comment">//! .</span><a name="l00110"></a><a class="code" href="class_transparent_filter.html">00110</a> <span class="comment"></span><span class="keyword">class </span>CRYPTOPP_DLL TransparentFilter : <span class="keyword">public</span> MeterFilter00111 {00112 <span class="keyword">public</span>:00113         TransparentFilter(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *attachment=NULL) : MeterFilter(attachment, <span class="keyword">true</span>) {}00114 };00115 <span class="comment"></span>00116 <span class="comment">//! .</span><a name="l00117"></a><a class="code" href="class_opaque_filter.html">00117</a> <span class="comment"></span><span class="keyword">class </span>CRYPTOPP_DLL OpaqueFilter : <span class="keyword">public</span> MeterFilter00118 {00119 <span class="keyword">public</span>:00120         OpaqueFilter(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *attachment=NULL) : MeterFilter(attachment, <span class="keyword">false</span>) {}00121 };00122 <span class="comment"></span>00123 <span class="comment">/*! FilterWithBufferedInput divides up the input stream into</span>00124 <span class="comment">        a first block, a number of middle blocks, and a last block.</span>00125 <span class="comment">        First and last blocks are optional, and middle blocks may</span>00126 <span class="comment">        be a stream instead (i.e. blockSize == 1).</span>00127 <span class="comment">*/</span><a name="l00128"></a><a class="code" href="class_filter_with_buffered_input.html">00128</a> <span class="keyword">class </span>CRYPTOPP_DLL FilterWithBufferedInput : <span class="keyword">public</span> Filter00129 {00130 <span class="keyword">public</span>:00131         FilterWithBufferedInput(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *attachment);<span class="comment"></span>00132 <span class="comment">        //! firstSize and lastSize may be 0, blockSize must be at least 1</span>00133 <span class="comment"></span>        FilterWithBufferedInput(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstSize, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> blockSize, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> lastSize, <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *attachment);00134 00135         <span class="keywordtype">void</span> IsolatedInitialize(<span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html">NameValuePairs</a> &amp;parameters);<a name="l00136"></a><a class="code" href="class_filter_with_buffered_input.html#_stream_transformation_filtera6">00136</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_buffered_transformation.html#_unflushable_3_01_sink_01_4z1_9">Put2</a>(<span class="keyword">const</span> byte *inString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length, <span class="keywordtype">int</span> messageEnd, <span class="keywordtype">bool</span> blocking)00137         {00138                 <span class="keywordflow">return</span> PutMaybeModifiable(const_cast&lt;byte *&gt;(inString), length, messageEnd, blocking, <span class="keyword">false</span>);00139         }<a name="l00140"></a><a class="code" href="class_filter_with_buffered_input.html#_stream_transformation_filtera7">00140</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_9">PutModifiable2</a>(byte *inString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length, <span class="keywordtype">int</span> messageEnd, <span class="keywordtype">bool</span> blocking)00141         {00142                 <span class="keywordflow">return</span> PutMaybeModifiable(inString, length, messageEnd, blocking, <span class="keyword">true</span>);00143         }<span class="comment"></span>00144 <span class="comment">        /*! calls ForceNextPut() if hardFlush is true */</span>00145         <span class="keywordtype">bool</span> IsolatedFlush(<span class="keywordtype">bool</span> hardFlush, <span class="keywordtype">bool</span> blocking);00146 <span class="comment"></span>00147 <span class="comment">        /*! the input buffer may contain more than blockSize bytes if lastSize != 0</span>00148 <span class="comment">                ForceNextPut() forces a call to NextPut() if this is the case </span>00149 <span class="comment">        */</span>00150         <span class="keywordtype">void</span> ForceNextPut();00151 00152 <span class="keyword">protected</span>:00153         <span class="keywordtype">bool</span> DidFirstPut() {<span class="keywordflow">return</span> m_firstInputDone;}00154 00155         <span class="keyword">virtual</span> <span class="keywordtype">void</span> InitializeDerivedAndReturnNewSizes(<span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html">NameValuePairs</a> &amp;parameters, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;firstSize, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;blockSize, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;lastSize)00156                 {InitializeDerived(parameters);}00157         <span class="keyword">virtual</span> <span class="keywordtype">void</span> InitializeDerived(<span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html">NameValuePairs</a> &amp;parameters) {}00158         <span class="comment">// FirstPut() is called if (firstSize != 0 and totalLength &gt;= firstSize)</span>00159         <span class="comment">// or (firstSize == 0 and (totalLength &gt; 0 or a MessageEnd() is received))</span>00160         <span class="keyword">virtual</span> <span class="keywordtype">void</span> FirstPut(<span class="keyword">const</span> byte *inString) =0;00161         <span class="comment">// NextPut() is called if totalLength &gt;= firstSize+blockSize+lastSize</span>00162         <span class="keyword">virtual</span> <span class="keywordtype">void</span> NextPutSingle(<span class="keyword">const</span> byte *inString) {assert(<span class="keyword">false</span>);}00163         <span class="comment">// Same as NextPut() except length can be a multiple of blockSize</span>00164         <span class="comment">// Either NextPut() or NextPutMultiple() must be overriden</span>00165         <span class="keyword">virtual</span> <span class="keywordtype">void</span> NextPutMultiple(<span class="keyword">const</span> byte *inString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length);00166         <span class="comment">// Same as NextPutMultiple(), but inString can be modified</span>00167         <span class="keyword">virtual</span> <span class="keywordtype">void</span> NextPutModifiable(byte *inString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length)00168                 {NextPutMultiple(inString, length);}00169         <span class="comment">// LastPut() is always called</span>00170         <span class="comment">// if totalLength &lt; firstSize then length == totalLength</span>00171         <span class="comment">// else if totalLength &lt;= firstSize+lastSize then length == totalLength-firstSize</span>00172         <span class="comment">// else lastSize &lt;= length &lt; lastSize+blockSize</span>00173         <span class="keyword">virtual</span> <span class="keywordtype">void</span> LastPut(<span class="keyword">const</span> byte *inString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length) =0;00174         <span class="keyword">virtual</span> <span class="keywordtype">void</span> FlushDerived() {}00175 00176 <span class="keyword">private</span>:00177         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> PutMaybeModifiable(byte *begin, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length, <span class="keywordtype">int</span> messageEnd, <span class="keywordtype">bool</span> blocking, <span class="keywordtype">bool</span> modifiable);00178         <span class="keywordtype">void</span> NextPutMaybeModifiable(byte *inString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length, <span class="keywordtype">bool</span> modifiable)00179         {00180                 <span class="keywordflow">if</span> (modifiable) NextPutModifiable(inString, length);00181                 <span class="keywordflow">else</span> NextPutMultiple(inString, length);00182         }00183 00184         <span class="comment">// This function should no longer be used, put this here to cause a compiler error</span>00185         <span class="comment">// if someone tries to override NextPut().</span>00186         <span class="keyword">virtual</span> <span class="keywordtype">int</span> NextPut(<span class="keyword">const</span> byte *inString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length) {assert(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0;}00187 00188         <span class="keyword">class </span>BlockQueue00189         {00190         <span class="keyword">public</span>:00191                 <span class="keywordtype">void</span> ResetQueue(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> blockSize, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxBlocks);00192                 byte *GetBlock();00193                 byte *GetContigousBlocks(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;numberOfBytes);00194                 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetAll(byte *outString);00195                 <span class="keywordtype">void</span> Put(<span class="keyword">const</span> byte *inString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length);00196                 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> CurrentSize()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_size;}00197                 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MaxSize()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_buffer.size();}00198 00199         <span class="keyword">private</span>:00200                 <a class="code" href="class_sec_block.html">SecByteBlock</a> m_buffer;00201                 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m_blockSize, m_maxBlocks, m_size;00202                 byte *m_begin;00203         };00204 00205         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m_firstSize, m_blockSize, m_lastSize;00206         <span class="keywordtype">bool</span> m_firstInputDone;00207         BlockQueue m_queue;00208 };00209 <span class="comment"></span>00210 <span class="comment">//! .</span><a name="l00211"></a><a class="code" href="class_filter_with_input_queue.html">00211</a> <span class="comment"></span><span class="keyword">class </span>CRYPTOPP_DLL FilterWithInputQueue : <span class="keyword">public</span> Filter00212 {00213 <span class="keyword">public</span>:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -