Show / Hide Table of Contents

Class Inflater

Inflater is used to decompress data that has been compressed according to the "deflate" standard described in rfc1951.

By default Zlib (rfc1950) headers and footers are expected in the input. You can use constructor

 public Inflater(bool noHeader)
passing true if there is no Zlib header information

The usage is as following. First you have to set some input with

SetInput()
, then Inflate() it. If inflate doesn't

inflate any bytes there may be three reasons:

  • IsNeedingInput() returns true because the input buffer is empty. You have to provide more input with
    SetInput()
    . NOTE: IsNeedingInput() also returns true when, the stream is finished.
  • IsNeedingDictionary() returns true, you have to provide a preset dictionary with
    SetDictionary()
    .
  • IsFinished returns true, the inflater has finished.
Once the first output byte is produced, a dictionary will not be needed at a later stage.

author of the original java version : John Leuner, Jochen Hoenicke

Inheritance
System.Object
Inflater
Inherited Members
System.Object.ToString()
System.Object.Equals(System.Object)
System.Object.Equals(System.Object, System.Object)
System.Object.ReferenceEquals(System.Object, System.Object)
System.Object.GetHashCode()
System.Object.GetType()
System.Object.MemberwiseClone()
Namespace: System.Dynamic.ExpandoObject
Assembly: cs.temp.dll.dll
Syntax
public class Inflater

Constructors

Inflater()

Creates a new inflater or RFC1951 decompressor RFC1950/Zlib headers and footers will be expected in the input data

Declaration
public Inflater()

Inflater(Boolean)

Creates a new inflater.

Declaration
public Inflater(bool noHeader)
Parameters
System.Boolean noHeader

True if no RFC1950/Zlib header and footer fields are expected in the input data

This is used for GZIPed/Zipped input.

For compatibility with Sun JDK you should provide one byte of input more than needed in this case.

Properties

Adler

Gets the adler checksum. This is either the checksum of all uncompressed bytes returned by inflate(), or if needsDictionary() returns true (and thus no output was yet produced) this is the adler checksum of the expected dictionary.

Declaration
public int Adler { get; }
Property Value
System.Int32

the adler checksum.

IsFinished

Returns true, if the inflater has finished. This means, that no input is needed and no output can be produced.

Declaration
public bool IsFinished { get; }
Property Value
System.Boolean

IsNeedingDictionary

Returns true, if a preset dictionary is needed to inflate the input.

Declaration
public bool IsNeedingDictionary { get; }
Property Value
System.Boolean

IsNeedingInput

Returns true, if the input buffer is empty. You should then call setInput(). NOTE: This method also returns true when the stream is finished.

Declaration
public bool IsNeedingInput { get; }
Property Value
System.Boolean

RemainingInput

Gets the number of unprocessed input bytes. Useful, if the end of the stream is reached and you want to further process the bytes after the deflate stream.

Declaration
public int RemainingInput { get; }
Property Value
System.Int32

The number of bytes of the input which have not been processed.

TotalIn

Gets the total number of processed compressed input bytes.

Declaration
public long TotalIn { get; }
Property Value
System.Int64

The total number of bytes of processed input bytes.

TotalOut

Gets the total number of output bytes returned by Inflate().

Declaration
public long TotalOut { get; }
Property Value
System.Int64

the total number of output bytes.

Methods

Inflate(Byte[])

Inflates the compressed stream to the output buffer. If this returns 0, you should check, whether IsNeedingDictionary(), IsNeedingInput() or IsFinished() returns true, to determine why no further output is produced.

Declaration
public int Inflate(byte[] buffer)
Parameters
System.Byte[] buffer

the output buffer.

Returns
System.Int32

The number of bytes written to the buffer, 0 if no further output can be produced.

Exceptions
System.ArgumentOutOfRangeException

if buffer has length 0.

System.FormatException

if deflated stream is invalid.

Inflate(Byte[], Int32, Int32)

Inflates the compressed stream to the output buffer. If this returns 0, you should check, whether needsDictionary(), needsInput() or finished() returns true, to determine why no further output is produced.

Declaration
public int Inflate(byte[] buffer, int offset, int count)
Parameters
System.Byte[] buffer

the output buffer.

System.Int32 offset

the offset in buffer where storing starts.

System.Int32 count

the maximum number of bytes to output.

Returns
System.Int32

the number of bytes written to the buffer, 0 if no further output can be produced.

Exceptions
System.ArgumentOutOfRangeException

if count is less than 0.

System.ArgumentOutOfRangeException

if the index and / or count are wrong.

System.FormatException

if deflated stream is invalid.

Reset()

Resets the inflater so that a new stream can be decompressed. All pending input and output will be discarded.

Declaration
public void Reset()

SetDictionary(Byte[])

Sets the preset dictionary. This should only be called, if needsDictionary() returns true and it should set the same dictionary, that was used for deflating. The getAdler() function returns the checksum of the dictionary needed.

Declaration
public void SetDictionary(byte[] buffer)
Parameters
System.Byte[] buffer

The dictionary.

SetDictionary(Byte[], Int32, Int32)

Sets the preset dictionary. This should only be called, if needsDictionary() returns true and it should set the same dictionary, that was used for deflating. The getAdler() function returns the checksum of the dictionary needed.

Declaration
public void SetDictionary(byte[] buffer, int index, int count)
Parameters
System.Byte[] buffer

The dictionary.

System.Int32 index

The index into buffer where the dictionary starts.

System.Int32 count

The number of bytes in the dictionary.

Exceptions
System.InvalidOperationException

No dictionary is needed.

SetInput(Byte[])

Sets the input. This should only be called, if needsInput() returns true.

Declaration
public void SetInput(byte[] buffer)
Parameters
System.Byte[] buffer

the input.

SetInput(Byte[], Int32, Int32)

Sets the input. This should only be called, if needsInput() returns true.

Declaration
public void SetInput(byte[] buffer, int index, int count)
Parameters
System.Byte[] buffer

The source of input data

System.Int32 index

The index into buffer where the input starts.

System.Int32 count

The number of bytes of input to use.

Exceptions
System.InvalidOperationException

No input is needed.

System.ArgumentOutOfRangeException

The index and/or count are wrong.

Back to top Built by Itinero, MIT licensed.