📄 filters_8cpp-source.html
字号:
<a name="l00432"></a>00432 <a class="code" href="class_filter_with_buffered_input.html#3176a4422a073fa15ed7807f781704b4">NextPutModifiable</a>(m_queue.GetContigousBlocks(len), len);<a name="l00433"></a>00433 }<a name="l00434"></a>00434 }<a name="l00435"></a>00435 <a name="l00436"></a><a class="code" href="class_filter_with_buffered_input.html#0e49fdd45ab18631d9f0c2e5aba3dc0f">00436</a> <span class="keywordtype">void</span> <a class="code" href="class_filter_with_buffered_input.html#0e49fdd45ab18631d9f0c2e5aba3dc0f">FilterWithBufferedInput::NextPutMultiple</a>(<span class="keyword">const</span> byte *inString, <span class="keywordtype">size_t</span> length)<a name="l00437"></a>00437 {<a name="l00438"></a>00438 assert(m_blockSize > 1); <span class="comment">// m_blockSize = 1 should always override this function</span><a name="l00439"></a>00439 <span class="keywordflow">while</span> (length > 0)<a name="l00440"></a>00440 {<a name="l00441"></a>00441 assert(length >= m_blockSize);<a name="l00442"></a>00442 <a class="code" href="class_filter_with_buffered_input.html#ea864f9148947328c18fab2e17603d61">NextPutSingle</a>(inString);<a name="l00443"></a>00443 inString += m_blockSize;<a name="l00444"></a>00444 length -= m_blockSize;<a name="l00445"></a>00445 }<a name="l00446"></a>00446 }<a name="l00447"></a>00447 <a name="l00448"></a>00448 <span class="comment">// *************************************************************</span><a name="l00449"></a>00449 <a name="l00450"></a><a class="code" href="class_redirector.html#f5fe25d9b6e17ec878e8f2b188702736">00450</a> <span class="keywordtype">void</span> <a class="code" href="class_redirector.html#f5fe25d9b6e17ec878e8f2b188702736" title="initialize or reinitialize this object">Redirector::Initialize</a>(<span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html" title="interface for retrieving values given their names">NameValuePairs</a> &parameters, <span class="keywordtype">int</span> propagation)<a name="l00451"></a>00451 {<a name="l00452"></a>00452 m_target = parameters.<a class="code" href="class_name_value_pairs.html#943b2009297783f1c35bae46efc3b5f7" title="get a named value, returns the default if the name doesn't exist">GetValueWithDefault</a>(<span class="stringliteral">"RedirectionTargetPointer"</span>, (<a class="code" href="class_buffered_transformation.html" title="interface for buffered transformations">BufferedTransformation</a>*)NULL);<a name="l00453"></a>00453 m_behavior = parameters.<a class="code" href="class_name_value_pairs.html#7ddb654b7afcd1a04422a7b4b01366d9" title="get a named value with type int, with default">GetIntValueWithDefault</a>(<span class="stringliteral">"RedirectionBehavior"</span>, <a class="code" href="class_redirector.html#2de79d5742280aa614c218c7b950de679bedf58acdacc835d476e8783c169c2f">PASS_EVERYTHING</a>);<a name="l00454"></a>00454 <a name="l00455"></a>00455 <span class="keywordflow">if</span> (m_target && <a class="code" href="class_redirector.html#47ceefd50d8a6e30b1daf16e10c84436">GetPassSignals</a>())<a name="l00456"></a>00456 m_target-><a class="code" href="class_buffered_transformation.html#0dd5456c06e0e47d901e8055b50df929" title="initialize or reinitialize this object">Initialize</a>(parameters, propagation);<a name="l00457"></a>00457 }<a name="l00458"></a>00458 <a name="l00459"></a>00459 <span class="comment">// *************************************************************</span><a name="l00460"></a>00460 <a name="l00461"></a><a class="code" href="class_proxy_filter.html#1eb33984fa222e94a7048455fc17ab20">00461</a> <a class="code" href="class_proxy_filter.html#1eb33984fa222e94a7048455fc17ab20">ProxyFilter::ProxyFilter</a>(<a class="code" href="class_buffered_transformation.html" title="interface for buffered transformations">BufferedTransformation</a> *filter, <span class="keywordtype">size_t</span> firstSize, <span class="keywordtype">size_t</span> lastSize, <a class="code" href="class_buffered_transformation.html" title="interface for buffered transformations">BufferedTransformation</a> *attachment)<a name="l00462"></a>00462 : <a class="code" href="class_filter_with_buffered_input.html">FilterWithBufferedInput</a>(firstSize, 1, lastSize, attachment), m_filter(filter)<a name="l00463"></a>00463 {<a name="l00464"></a>00464 <span class="keywordflow">if</span> (<a class="code" href="class_proxy_filter.html#1f89e47a61f678d1d2dbb52ca2ba2996">m_filter</a>.<a class="code" href="classmember__ptr.html#2d10dec2a51691b589d56b71ec78e59a">get</a>())<a name="l00465"></a>00465 <a class="code" href="class_proxy_filter.html#1f89e47a61f678d1d2dbb52ca2ba2996">m_filter</a>->Attach(<span class="keyword">new</span> <a class="code" href="class_output_proxy.html">OutputProxy</a>(*<span class="keyword">this</span>, <span class="keyword">false</span>));<a name="l00466"></a>00466 }<a name="l00467"></a>00467 <a name="l00468"></a><a class="code" href="class_proxy_filter.html#e5d15b0c5bcc601a58dde22e01ce9b79">00468</a> <span class="keywordtype">bool</span> <a class="code" href="class_proxy_filter.html#e5d15b0c5bcc601a58dde22e01ce9b79">ProxyFilter::IsolatedFlush</a>(<span class="keywordtype">bool</span> hardFlush, <span class="keywordtype">bool</span> blocking)<a name="l00469"></a>00469 {<a name="l00470"></a>00470 <span class="keywordflow">return</span> <a class="code" href="class_proxy_filter.html#1f89e47a61f678d1d2dbb52ca2ba2996">m_filter</a>.<a class="code" href="classmember__ptr.html#2d10dec2a51691b589d56b71ec78e59a">get</a>() ? <a class="code" href="class_proxy_filter.html#1f89e47a61f678d1d2dbb52ca2ba2996">m_filter</a>->Flush(hardFlush, -1, blocking) : <span class="keyword">false</span>;<a name="l00471"></a>00471 }<a name="l00472"></a>00472 <a name="l00473"></a><a class="code" href="class_proxy_filter.html#98a1d161913c42feb64951c396f0f3e0">00473</a> <span class="keywordtype">void</span> <a class="code" href="class_proxy_filter.html#98a1d161913c42feb64951c396f0f3e0">ProxyFilter::SetFilter</a>(<a class="code" href="class_filter.html" title="provides an implementation of BufferedTransformation's attachment interface">Filter</a> *filter)<a name="l00474"></a>00474 {<a name="l00475"></a>00475 <a class="code" href="class_proxy_filter.html#1f89e47a61f678d1d2dbb52ca2ba2996">m_filter</a>.<a class="code" href="classmember__ptr.html#0191c833924d93e9093b07bab31010fe">reset</a>(filter);<a name="l00476"></a>00476 <span class="keywordflow">if</span> (filter)<a name="l00477"></a>00477 {<a name="l00478"></a>00478 <a class="code" href="class_output_proxy.html">OutputProxy</a> *proxy;<a name="l00479"></a>00479 std::auto_ptr<OutputProxy> temp(proxy = <span class="keyword">new</span> <a class="code" href="class_output_proxy.html">OutputProxy</a>(*<span class="keyword">this</span>, <span class="keyword">false</span>));<a name="l00480"></a>00480 <a class="code" href="class_proxy_filter.html#1f89e47a61f678d1d2dbb52ca2ba2996">m_filter</a>->TransferAllTo(*proxy);<a name="l00481"></a>00481 <a class="code" href="class_proxy_filter.html#1f89e47a61f678d1d2dbb52ca2ba2996">m_filter</a>->Attach(temp.release());<a name="l00482"></a>00482 }<a name="l00483"></a>00483 }<a name="l00484"></a>00484 <a name="l00485"></a><a class="code" href="class_proxy_filter.html#4aede5b8689f514ed621c2c2fd04eab9">00485</a> <span class="keywordtype">void</span> <a class="code" href="class_proxy_filter.html#4aede5b8689f514ed621c2c2fd04eab9">ProxyFilter::NextPutMultiple</a>(<span class="keyword">const</span> byte *s, <span class="keywordtype">size_t</span> len)<a name="l00486"></a>00486 {<a name="l00487"></a>00487 <span class="keywordflow">if</span> (<a class="code" href="class_proxy_filter.html#1f89e47a61f678d1d2dbb52ca2ba2996">m_filter</a>.<a class="code" href="classmember__ptr.html#2d10dec2a51691b589d56b71ec78e59a">get</a>())<a name="l00488"></a>00488 <a class="code" href="class_proxy_filter.html#1f89e47a61f678d1d2dbb52ca2ba2996">m_filter</a>->Put(s, len);<a name="l00489"></a>00489 }<a name="l00490"></a>00490 <a name="l00491"></a><a class="code" href="class_proxy_filter.html#efeb38f54cf5e4de9a2bf02ecfd66158">00491</a> <span class="keywordtype">void</span> <a class="code" href="class_proxy_filter.html#efeb38f54cf5e4de9a2bf02ecfd66158">ProxyFilter::NextPutModifiable</a>(byte *s, <span class="keywordtype">size_t</span> len)<a name="l00492"></a>00492 {<a name="l00493"></a>00493 <span class="keywordflow">if</span> (<a class="code" href="class_proxy_filter.html#1f89e47a61f678d1d2dbb52ca2ba2996">m_filter</a>.<a class="code" href="classmember__ptr.html#2d10dec2a51691b589d56b71ec78e59a">get</a>())<a name="l00494"></a>00494 <a class="code" href="class_proxy_filter.html#1f89e47a61f678d1d2dbb52ca2ba2996">m_filter</a>->PutModifiable(s, len);<a name="l00495"></a>00495 }<a name="l00496"></a>00496 <a name="l00497"></a>00497 <span class="comment">// *************************************************************</span><a name="l00498"></a>00498 <a name="l00499"></a><a class="code" href="class_random_number_sink.html#d9eb1681d33e03ebf6ef43dc70299c9e">00499</a> <span class="keywordtype">void</span> <a class="code" href="class_random_number_sink.html#d9eb1681d33e03ebf6ef43dc70299c9e">RandomNumberSink::IsolatedInitialize</a>(<span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html" title="interface for retrieving values given their names">NameValuePairs</a> &parameters)<a name="l00500"></a>00500 {<a name="l00501"></a>00501 parameters.<a class="code" href="class_name_value_pairs.html#c66048d3bc2a741712486d02e1f75d78">GetRequiredParameter</a>(<span class="stringliteral">"RandomNumberSink"</span>, <span class="stringliteral">"RandomNumberGeneratorPointer"</span>, m_rng);<a name="l00502"></a>00502 }<a name="l00503"></a>00503 <a name="l00504"></a><a class="code" href="class_random_number_sink.html#df9210745b275fdc14bebf1347c51a9b">00504</a> <span class="keywordtype">size_t</span> <a class="code" href="class_random_number_sink.html#df9210745b275fdc14bebf1347c51a9b" title="input multiple bytes for blocking or non-blocking processing">RandomNumberSink::Put2</a>(<span class="keyword">const</span> byte *begin, <span class="keywordtype">size_t</span> length, <span class="keywordtype">int</span> messageEnd, <span class="keywordtype">bool</span> blocking)<a name="l00505"></a>00505 {<a name="l00506"></a>00506 m_rng-><a class="code" href="class_random_number_generator.html#6feb4f0afedb62a495b7a9ae311fa1cb" title="update RNG state with additional unpredictable values">IncorporateEntropy</a>(begin, length);<a name="l00507"></a>00507 <span class="keywordflow">return</span> 0;<a name="l00508"></a>00508 }<a name="l00509"></a>00509 <a name="l00510"></a><a class="code" href="class_array_sink.html#2e29344d51a7912e0a88dde1ae4ca556">00510</a> <span class="keywordtype">size_t</span> <a class="code" href="class_array_sink.html#2e29344d51a7912e0a88dde1ae4ca556" title="input multiple bytes for blocking or non-blocking processing">ArraySink::Put2</a>(<span class="keyword">const</span> byte *begin, <span class="keywordtype">size_t</span> length, <span class="keywordtype">int</span> messageEnd, <span class="keywordtype">bool</span> blocking)<a name="l00511"></a>00511 {<a name="l00512"></a>00512 memcpy(<a class="code" href="class_array_sink.html#bc61873fb8764a6b2c51e352b4723879">m_buf</a>+<a class="code" href="class_array_sink.html#b72ea9d4d82758339fcbca763d814b11">m_total</a>, begin, STDMIN(length, SaturatingSubtract(<a class="code" href="class_array_sink.html#41c64d23b476b2a1cfb2b0b30c0e8c80">m_size</a>, <a class="code" href="class_array_sink.html#b72ea9d4d82758339fcbca763d814b11">m_total</a>)));<a name="l00513"></a>00513 <a class="code" href="class_array_sink.html#b72ea9d4d82758339fcbca763d814b11">m_total</a> += length;<a name="l00514"></a>00514 <span class="keywordflow">return</span> 0;<a name="l00515"></a>00515 }<a name="l00516"></a>00516 <a name="l00517"></a><a class="code" href="class_array_sink.html#535e57a894542c088131bc84955c475b">00517</a> byte * <a class="code" href="class_array_sink.html#535e57a894542c088131bc84955c475b" title="request space which can be written into by the caller, and then used as input to...">ArraySink::CreatePutSpace</a>(<span class="keywordtype">size_t</span> &size)<a name="l00518"></a>00518 {<a name="l00519"></a>00519 size = SaturatingSubtract(<a class="code" href="class_array_sink.html#41c64d23b476b2a1cfb2b0b30c0e8c80">m_size</a>, <a class="code" href="class_array_sink.html#b72ea9d4d82758339fcbca763d814b11">m_total</a>);<a name="l00520"></a>00520 <span class="keywordflow">return</span> <a class="code" href="class_array_sink.html#bc61873fb8764a6b2c51e352b4723879">m_buf</a> + <a class="code" href="class_array_sink.html#b72ea9d4d82758339fcbca763d814b11">m_total</a>;<a name="l00521"></a>00521 }<a name="l00522"></a>00522 <a name="l00523"></a><a class="code" href="class_array_sink.html#0b677032fc5455f0ad134d4271ac40c3">00523</a> <span class="keywordtype">void</span> <a class="code" href="class_array_sink.html#0b677032fc5455f0ad134d4271ac40c3">ArraySink::IsolatedInitialize</a>(<span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html" title="interface for retrieving values given their names">NameValuePairs</a> &parameters)<a name="l00524"></a>00524 {<a name="l00525"></a>00525 <a class="code" href="class_byte_array_parameter.html">ByteArrayParameter</a> array;<a name="l00526"></a>00526 <span class="keywordflow">if</span> (!parameters.<a class="code" href="class_name_value_pairs.html#96686e9f8d6ce3ab870e516fb72b608e" title="get a named value, returns true if the name exists">GetValue</a>(<a class="code" href="namespace_name.html#54b71c75bd8b50e8bddfacf1f7b7b338" title="ByteArrayParameter.">Name::OutputBuffer</a>(), array))<a name="l00527"></a>00527 <span class="keywordflow">throw</span> <a class="code" href="class_invalid_argument.html" title="exception thrown when an invalid argument is detected">InvalidArgument</a>(<span class="stringliteral">"ArraySink: missing OutputBuffer argument"</span>);<a name="l00528"></a>00528 <a class="code" href="class_array_sink.html#bc61873fb8764a6b2c51e352b4723879">m_buf</a> = array.<a class="code" href="class_byte_array_parameter.html#5f4b9c9a11ba16472cec72c56f2787cc">begin</a>();<a name="l00529"></a>00529 <a class="code" href="class_array_sink.html#41c64d23b476b2a1cfb2b0b30c0e8c80">m_size</a> = array.<a class="code" href="class_byte_array_parameter.html#4150de4d52b4921633947f06ed7d905d">size</a>();<a name="l00530"></a>00530 <a class="code" href="class_array_sink.html#b72ea9d4d82758339fcbca763d814b11">m_total</a> = 0;<a name="l00531"></a>00531 }<a name="l00532"></a>00532 <a name="l00533"></a><a class="code" href="class_array_xor_sink.html#dc9d43ea392d62c8e87f29702085da3e">00533</a> <span class="keywordtype">size_t</span> <a class="code" href="class_array_xor_sink.html#dc9d43ea392d62c8e87f29702085da3e" title="input multiple bytes for blocking or non-blocking processing">ArrayXorSink::Put2</a>(<span class="keyword">const</span> byte *begin, <span class="keywordtype">size_t</span> length, <span class="keywordtype">int</span> messageEnd, <span class="keywordtype">bool</span> blocking)<a name="l00534"></a>00534 {<a name="l00535"></a>00535 xorbuf(<a class="code" href="class_array_sink.html#bc61873fb8764a6b2c51e352b4723879">m_buf</a>+<a class="code" href="class_array_sink.html#b72ea9d4d82758339fcbca763d814b11">m_total</a>, begin, STDMIN(length, SaturatingSubtract(<a class="code" href="class_array_sink.html#41c64d23b476b2a1cfb2b0b30c0e8c80">m_size</a>, <a class="code" href="class_array_sink.html#b72ea9d4d82758339fcbca763d814b11">m_total</a>)));<a name="l00536"></a>00536 <a class="code" href="class_array_sink.html#b72ea9d4d82758339fcbca763d814b11">m_total</a> += length;<a name="l00537"></a>00537 <span class="keywordflow">return</span> 0;<a name="l00538"></a>00538 }<a name="l00539"></a>00539 <a name="l00540"></a>00540 <span class="comment">// *************************************************************</span><a name="l00541"></a>00541 <a name="l00542"></a><a class="code" href="class_stream_transformation_filter.html#4bbaa88285b9e7ba5933e81fbe1f5eb3">00542</a> <span class="keywordtype">size_t</span> <a class="code" href="class_stream_transformation_filter.html#4bbaa88285b9e7ba5933e81fbe1f5eb3">StreamTransformationFilter::LastBlockSize</a>(<a class="code" href="class_stream_transformation.html" title="interface for the data processing part of stream ciphers">StreamTransformation</a> &c, <a class="code" href="class_stream_transformation_filter.html#0a08a5d90e124cde39850d544cf
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -