C++ API Reference for Intel® Data Analytics Acceleration Library 2019 Update 5

compression_stream.h
1 /* file: compression_stream.h */
2 /*******************************************************************************
3 * Copyright 2014-2019 Intel Corporation.
4 *
5 * This software and the related documents are Intel copyrighted materials, and
6 * your use of them is governed by the express license under which they were
7 * provided to you (License). Unless the License provides otherwise, you may not
8 * use, modify, copy, publish, distribute, disclose or transmit this software or
9 * the related documents without Intel's prior written permission.
10 *
11 * This software and the related documents are provided as is, with no express
12 * or implied warranties, other than those that are expressly stated in the
13 * License.
14 *******************************************************************************/
15 
16 /*
17 //++
18 // Implementation of the compression and decompression stream interface.
19 //--
20 */
21 
22 #ifndef __COMPRESSION_STREAM_H__
23 #define __COMPRESSION_STREAM_H__
24 
25 #include "services/base.h"
26 #include "data_management/compression/compression.h"
27 #include "data_management/data/data_block.h"
28 #include "services/collection.h"
29 
30 namespace daal
31 {
32 namespace data_management
33 {
41 typedef services::Collection<services::SharedPtr<DataBlock> > DataBlockCollection;
42 typedef services::SharedPtr<DataBlockCollection> DataBlockCollectionPtr;
43 
44 namespace interface1
45 {
55 class DAAL_EXPORT CompressionStream : public Base
56 {
57 public:
63  CompressionStream(CompressorImpl *compr, size_t minSize = 1024 * 64);
64  virtual ~CompressionStream();
65 
70  virtual void push_back(DataBlock *inBlock);
71 
76  virtual void operator << (DataBlock *inBlock)
77  {
78  push_back(inBlock);
79  }
84  virtual void operator << (DataBlock inBlock)
85  {
86  push_back(&inBlock);
87  }
92  virtual DataBlockCollectionPtr getCompressedBlocksCollection();
97  virtual size_t getCompressedDataSize();
104  virtual size_t copyCompressedArray(byte *outPtr, size_t outSize);
110  virtual size_t copyCompressedArray(DataBlock &outBlock)
111  {
112  return copyCompressedArray(outBlock.getPtr(), outBlock.getSize());
113  }
114 
115  services::SharedPtr<services::ErrorCollection> getErrors()
116  {
117  return _errors;
118  }
119 
120 private:
121  void *_blocks;
122 
123  CompressorImpl *_compressor;
124  size_t _compressedDataSize;
125  size_t _minBlockSize;
126 
127  size_t _writePos;
128  size_t _readPos;
129 
130  void compressBlock(size_t pos);
131 
132  services::SharedPtr<services::ErrorCollection> _errors;
133 };
134 
144 class DAAL_EXPORT DecompressionStream : public Base
145 {
146 public:
152  DecompressionStream(DecompressorImpl *decompr, size_t minSize = 1024 * 64);
153  virtual ~DecompressionStream();
158  virtual void push_back(DataBlock *inBlock);
163  virtual void operator << (DataBlock *inBlock)
164  {
165  push_back(inBlock);
166  }
171  virtual void operator << (DataBlock inBlock)
172  {
173  push_back(&inBlock);
174  }
179  virtual DataBlockCollectionPtr getDecompressedBlocksCollection();
184  virtual size_t getDecompressedDataSize();
191  virtual size_t copyDecompressedArray(byte *outPtr, size_t outSize);
197  virtual size_t copyDecompressedArray(DataBlock &outBlock)
198  {
199  return copyDecompressedArray(outBlock.getPtr(), outBlock.getSize());
200  }
201 
202  services::SharedPtr<services::ErrorCollection> getErrors()
203  {
204  return _errors;
205  }
206 
207 private:
208  void *_blocks;
209 
210  DecompressorImpl *_decompressor;
211  size_t _decompressedDataSize;
212  size_t _minBlockSize;
213 
214  size_t _writePos;
215  size_t _readPos;
216 
217  void decompressBlock(size_t pos);
218 
219  services::SharedPtr<services::ErrorCollection> _errors;
220 };
221 } // namespace interface1
222 using interface1::CompressionStream;
223 using interface1::DecompressionStream;
226 } //namespace data_management
227 } //namespace daal
228 
229 #endif // __COMPRESSION_STREAM_H
daal
Definition: algorithm_base_common.h:31
daal::data_management::interface1::CompressionStream::copyCompressedArray
virtual size_t copyCompressedArray(DataBlock &outBlock)
Definition: compression_stream.h:110
daal::data_management::DataBlockCollection
services::Collection< services::SharedPtr< DataBlock > > DataBlockCollection
Collection of DataBlock-type elements.
Definition: compression_stream.h:41
daal::data_management::interface1::DataBlock::getPtr
virtual byte * getPtr() const DAAL_C11_OVERRIDE
Definition: data_block.h:123
daal::data_management::interface1::DecompressionStream::copyDecompressedArray
virtual size_t copyDecompressedArray(DataBlock &outBlock)
Definition: compression_stream.h:197
daal::data_management::interface1::CompressorImpl
Base class for the Compressor.
Definition: compression.h:225
daal::data_management::interface1::DataBlock::getSize
virtual size_t getSize() const DAAL_C11_OVERRIDE
Definition: data_block.h:133
daal::data_management::interface1::CompressionStream
CompressionStream class compresses input raw data by blocks.
Definition: compression_stream.h:55
daal::Base
Base class for Intel(R) Data Analytics Acceleration Library objects
Definition: base.h:39
daal::data_management::interface1::DecompressorImpl
Base class for the Decompressor.
Definition: compression.h:251
daal::data_management::interface1::DecompressionStream
DecompressionStream class decompresses compressed input data by blocks.
Definition: compression_stream.h:144
daal::data_management::interface1::DataBlock
Class that stores a pointer to a byte array and its size. Not responsible for memory management...
Definition: data_block.h:83

For more complete information about compiler optimizations, see our Optimization Notice.