📄 zinflate_8h-source.html
字号:
00073 };00074 00075 <span class="keyword">static</span> code_t NormalizeCode(code_t code, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> codeBits);00076 <span class="keywordtype">void</span> FillCacheEntry(LookupEntry &entry, code_t normalizedCode) <span class="keyword">const</span>;00077 00078 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m_maxCodeBits, m_cacheBits, m_cacheMask, m_normalizedCacheMask;00079 std::vector<CodeInfo, AllocatorWithCleanup<CodeInfo> > m_codeToValue;00080 <span class="keyword">mutable</span> std::vector<LookupEntry, AllocatorWithCleanup<LookupEntry> > m_cache;00081 };00082 <span class="comment"></span>00083 <span class="comment">//! DEFLATE (RFC 1951) decompressor</span>00084 <span class="comment"></span><a name="l00085"></a><a class="code" href="class_inflator.html">00085</a> <span class="keyword">class </span><a class="code" href="class_inflator.html">Inflator</a> : <span class="keyword">public</span> AutoSignaling<Filter>00086 {00087 <span class="keyword">public</span>:00088 <span class="keyword">class </span>Err : <span class="keyword">public</span> <a class="code" href="class_exception.html">Exception</a>00089 {00090 <span class="keyword">public</span>:00091 Err(<a class="code" href="class_exception.html#_zlib_decompressor_1_1_unsupported_preset_dictionaryw7">ErrorType</a> e, <span class="keyword">const</span> std::string &s)00092 : <a class="code" href="class_exception.html">Exception</a>(e, s) {}00093 };00094 <span class="keyword">class </span>UnexpectedEndErr : <span class="keyword">public</span> Err {<span class="keyword">public</span>: UnexpectedEndErr() : Err(<a class="code" href="class_exception.html#_zlib_decompressor_1_1_unsupported_preset_dictionaryw7_zlib_decompressor_1_1_unsupported_preset_dictionaryw4">INVALID_DATA_FORMAT</a>, <span class="stringliteral">"Inflator: unexpected end of compressed block"</span>) {}};00095 <span class="keyword">class </span>BadBlockErr : <span class="keyword">public</span> Err {<span class="keyword">public</span>: BadBlockErr() : Err(<a class="code" href="class_exception.html#_zlib_decompressor_1_1_unsupported_preset_dictionaryw7_zlib_decompressor_1_1_unsupported_preset_dictionaryw4">INVALID_DATA_FORMAT</a>, <span class="stringliteral">"Inflator: error in compressed block"</span>) {}};00096 <span class="comment"></span>00097 <span class="comment"> /*! \param repeat decompress multiple compressed streams in series</span>00098 <span class="comment"> \param autoSignalPropagation 0 to turn off MessageEnd signal</span>00099 <span class="comment"> */</span>00100 <a class="code" href="class_inflator.html#_inflatora0">Inflator</a>(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *attachment = NULL, <span class="keywordtype">bool</span> repeat = <span class="keyword">false</span>, <span class="keywordtype">int</span> autoSignalPropagation = -1);00101 00102 <span class="keywordtype">void</span> IsolatedInitialize(<span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html">NameValuePairs</a> &parameters);00103 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_inflator.html#_zlib_decompressora3">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);00104 <span class="keywordtype">bool</span> IsolatedFlush(<span class="keywordtype">bool</span> hardFlush, <span class="keywordtype">bool</span> blocking);00105 00106 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetLog2WindowSize()<span class="keyword"> const </span>{<span class="keywordflow">return</span> 15;}00107 00108 <span class="keyword">protected</span>:00109 <a class="code" href="class_byte_queue.html">ByteQueue</a> m_inQueue;00110 00111 <span class="keyword">private</span>:00112 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MaxPrestreamHeaderSize()<span class="keyword"> const </span>{<span class="keywordflow">return</span> 0;}00113 <span class="keyword">virtual</span> <span class="keywordtype">void</span> ProcessPrestreamHeader() {}00114 <span class="keyword">virtual</span> <span class="keywordtype">void</span> ProcessDecompressedData(<span class="keyword">const</span> byte *string, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length)00115 {<a class="code" href="class_filter.html#_zlib_decompressora8">AttachedTransformation</a>()-><a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_0">Put</a>(string, length);}00116 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MaxPoststreamTailSize()<span class="keyword"> const </span>{<span class="keywordflow">return</span> 0;}00117 <span class="keyword">virtual</span> <span class="keywordtype">void</span> ProcessPoststreamTail() {}00118 00119 <span class="keywordtype">void</span> ProcessInput(<span class="keywordtype">bool</span> flush);00120 <span class="keywordtype">void</span> DecodeHeader();00121 <span class="keywordtype">bool</span> DecodeBody();00122 <span class="keywordtype">void</span> FlushOutput();00123 <span class="keywordtype">void</span> OutputByte(byte b);00124 <span class="keywordtype">void</span> OutputString(<span class="keyword">const</span> byte *string, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length);00125 <span class="keywordtype">void</span> OutputPast(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> distance);00126 00127 <span class="keyword">enum</span> State {PRE_STREAM, WAIT_HEADER, DECODING_BODY, POST_STREAM, AFTER_END};00128 State m_state;00129 <span class="keywordtype">bool</span> m_repeat, m_eof, m_decodersInitializedWithFixedCodes;00130 byte m_blockType;00131 word16 m_storedLen;00132 <span class="keyword">enum</span> NextDecode {LITERAL, LENGTH_BITS, DISTANCE, DISTANCE_BITS};00133 NextDecode m_nextDecode;00134 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m_literal, m_distance; <span class="comment">// for LENGTH_BITS or DISTANCE_BITS</span>00135 <a class="code" href="class_huffman_decoder.html">HuffmanDecoder</a> m_literalDecoder, m_distanceDecoder;00136 <a class="code" href="class_low_first_bit_reader.html">LowFirstBitReader</a> m_reader;00137 <a class="code" href="class_sec_block.html">SecByteBlock</a> m_window;00138 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m_maxDistance, m_current, m_lastFlush;00139 };00140 00141 NAMESPACE_END00142 00143 <span class="preprocessor">#endif</span></pre></div><hr size="1"><address style="align: right;"><small>Generated on Tue Jul 8 23:34:29 2003 for Crypto++ by<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border=0 > </a>1.3.2 </small></address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -