github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/compress/flate/inflate.go (about) 1 // Copyright 2009 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // Package flateは、DEFLATE圧縮データ形式を実装しています。RFC 1951で説明されています。 6 // gzipとzlibパッケージは、DEFLATEベースのファイル形式へのアクセスを実装しています。 7 package flate 8 9 import ( 10 "github.com/shogo82148/std/io" 11 ) 12 13 // CorruptInputError は指定されたオフセットで破損した入力の存在を報告します。 14 type CorruptInputError int64 15 16 func (e CorruptInputError) Error() string 17 18 // InternalErrorはflateコード自体のエラーを報告します。 19 type InternalError string 20 21 func (e InternalError) Error() string 22 23 // ReadErrorは、入力を読み取る中で遭遇したエラーを報告します。 24 // 25 // Deprecated: もはや返されません。 26 type ReadError struct { 27 Offset int64 28 Err error 29 } 30 31 func (e *ReadError) Error() string 32 33 // WriteErrorは出力の書き込み中に遭遇したエラーを報告します。 34 // 35 // Deprecated: もう返されません。 36 type WriteError struct { 37 Offset int64 38 Err error 39 } 40 41 func (e *WriteError) Error() string 42 43 // Resetterは [NewReader] または [NewReaderDict] が返すReadCloserをリセットし、新しい基になる [Reader] に切り替えます。これにより、新しいものを割り当てる代わりにReadCloserを再利用することができます。 44 type Resetter interface { 45 Reset(r io.Reader, dict []byte) error 46 } 47 48 // [NewReader] で必要とされる実際の読み取りインターフェース。 49 // 渡された io.Reader が ReadByte も持っていない場合、 50 // [NewReader] は自身のバッファリングを導入します。 51 type Reader interface { 52 io.Reader 53 io.ByteReader 54 } 55 56 // NewReader returns a new ReadCloser that can be used 57 // to read the uncompressed version of r. 58 // If r does not also implement [io.ByteReader], 59 // the decompressor may read more data than necessary from r. 60 // The reader returns [io.EOF] after the final block in the DEFLATE stream has 61 // been encountered. Any trailing data after the final block is ignored. 62 // 63 // NewReaderによって返される [io.ReadCloser] は、 [Resetter] も実装しています。 64 func NewReader(r io.Reader) io.ReadCloser 65 66 // NewReaderDictは [NewReader] と同じようにリーダーを初期化しますが、 67 // 事前に設定された辞書でリーダーを初期化します。 68 // 返されたリーダーは、与えられた辞書で圧縮解除されたデータストリームが開始されたかのように振る舞います。 69 // この辞書は既に読み取られています。通常、NewWriterDictで圧縮されたデータを読み込むためにNewReaderDictが使用されます。 70 // 71 // NewReaderによって返されたReadCloserは [Resetter] も実装しています。 72 func NewReaderDict(r io.Reader, dict []byte) io.ReadCloser