JASSv2
instream_deflate.h
Go to the documentation of this file.
1 /*
2  INSTREAM_DEFLATE.H
3  ------------------
4  Copyright (c) 2016 Andrew Trotman
5  Released under the 2-clause BSD license (See:https://en.wikipedia.org/wiki/BSD_licenses)
6 */
13 #pragma once
14 
15 #include "zlib.h"
16 #include "instream.h"
17 
18 namespace JASS
19  {
20  /*
21  CLASS INSTREAM_DEFLATE
22  ----------------------
23  */
27  class instream_deflate : public instream
28  {
29  private:
30  z_stream stream;
31  uint64_t bytes_read;
32  uint8_t *buffer;
33  static const size_t buffer_length = (10 * 1024 * 1024);
34 
35  public:
36  /*
37  INSTREAM_DEFLATE::INSTREAM_DEFLATE()
38  ------------------------------------
39  */
44  instream_deflate(std::shared_ptr<instream> &source);
45 
46  /*
47  INSTREAM_DEFLATE::~INSTREAM_DEFLATE()
48  -------------------------------------
49  */
54  {
55  /* Nothing */
56  }
57 
58  /*
59  INSTREAM_DEFLATE::READ()
60  ------------------------
61  */
66  virtual void read(document &buffer);
67 
68  /*
69  INSTREAM_DEFLATE::UNITTEST()
70  ----------------------------
71  */
75  static void unittest(void);
76  };
77 }
static void unittest(void)
Unit test this class.
Definition: instream_deflate.cpp:93
std::shared_ptr< instream > source
If this object is reading from another instream then this is that instream.
Definition: instream.h:48
Read data from an input stream.
Definition: instream.h:45
virtual void read(document &buffer)
Read buffer.contents.size() bytes of data into buffer.contents, resizing on eof.
Definition: instream_deflate.cpp:36
Container class representing a document through the indexing pipeline.
Definition: document.h:31
virtual ~instream_deflate()
Destructor.
Definition: instream_deflate.h:53
z_stream stream
The Zlib stream processing data structure.
Definition: instream_deflate.h:30
Base class for reading data from some input source.
instream_deflate(std::shared_ptr< instream > &source)
Constructor.
Definition: instream_deflate.cpp:19
uint64_t bytes_read
How many bytes of data have been decoded from the stream.
Definition: instream_deflate.h:31
static const size_t buffer_length
size of the internal buffer
Definition: instream_deflate.h:33
Subclass of instream for reading from .gz files (files compressed with deflate).
Definition: instream_deflate.h:27
uint8_t * buffer
Internal deflation buffer.
Definition: instream_deflate.h:32
Definition: compress_integer_elias_delta_simd.c:23