Minsky
minsky::InflateFileZStream Struct Reference

#include <zStream.h>

Inheritance diagram for minsky::InflateFileZStream:
Inheritance graph
Collaboration diagram for minsky::InflateFileZStream:
Collaboration graph

Public Member Functions

template<class I >
 InflateFileZStream (const I &input)
 
 ~InflateFileZStream ()
 
void inflate ()
 
void throwError ()
 
- Public Member Functions inherited from minsky::ZStream
 ZStream (Bytef *input, std::size_t inputSize, Bytef *output, std::size_t outputSize)
 
void throwError () const
 

Public Attributes

std::string output
 
Bytef * inputData
 
std::size_t inputSize
 

Detailed Description

Definition at line 94 of file zStream.h.

Constructor & Destructor Documentation

◆ InflateFileZStream()

template<class I >
minsky::InflateFileZStream::InflateFileZStream ( const I &  input)
inline

Definition at line 101 of file zStream.h.

References output, and throwError().

101  :
102  ZStream((Bytef*)input.data(), input.size(), 0,0),
103  inputData((Bytef*)input.data()),inputSize(input.size())
104  {
105  next_out=(Bytef*)output.data();
106  avail_out=output.size();
107  if (inflateInit2(this,-MAX_WBITS)!=Z_OK) throwError(); //none of MAX_WBITS + 16, MAX_WBITS or -MAX_WBITS works. see https://stackoverflow.com/questions/1838699/how-can-i-decompress-a-gzip-stream-with-zlib
108  }
std::size_t inputSize
Definition: zStream.h:98
Definition: input.py:1
ZStream(Bytef *input, std::size_t inputSize, Bytef *output, std::size_t outputSize)
Definition: zStream.h:30
Here is the call graph for this function:

◆ ~InflateFileZStream()

minsky::InflateFileZStream::~InflateFileZStream ( )
inline

Definition at line 109 of file zStream.h.

109 {inflateEnd(this);}

Member Function Documentation

◆ inflate()

void minsky::InflateFileZStream::inflate ( )
inline

Definition at line 111 of file zStream.h.

References inputData, inputSize, output, and throwError().

111  {
112  int err;
113  while ((err=::inflate(this,Z_SYNC_FLUSH))==Z_OK)
114  {
115  // try doubling size
116  output.resize(2*output.size());
117  next_out=(Bytef*)(output.data())+total_out;
118  avail_out=output.size()-total_out;
119  next_in=inputData+total_in;
120  avail_in=inputSize-total_in;
121  }
122  if (err!=Z_STREAM_END) throwError();
123  }
std::size_t inputSize
Definition: zStream.h:98
Here is the call graph for this function:

◆ throwError()

void minsky::InflateFileZStream::throwError ( )
inline

Definition at line 124 of file zStream.h.

Referenced by inflate(), and InflateFileZStream().

124  {
125  throw std::runtime_error(std::string("compression failure: ")+(msg? msg:""));
126  }
Here is the caller graph for this function:

Member Data Documentation

◆ inputData

Bytef* minsky::InflateFileZStream::inputData

Definition at line 97 of file zStream.h.

Referenced by inflate().

◆ inputSize

std::size_t minsky::InflateFileZStream::inputSize

Definition at line 98 of file zStream.h.

Referenced by inflate().

◆ output

std::string minsky::InflateFileZStream::output

Definition at line 96 of file zStream.h.

Referenced by inflate(), and InflateFileZStream().


The documentation for this struct was generated from the following file: