C++ API Reference for Intel® Data Analytics Acceleration Library 2020 Update 1

compression_stream.h
1 /* file: compression_stream.h */
2 /*******************************************************************************
3 * Copyright 2014-2020 Intel Corporation
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *******************************************************************************/
17 
18 /*
19 //++
20 // Implementation of the compression and decompression stream interface.
21 //--
22 */
23 
24 #ifndef __COMPRESSION_STREAM_H__
25 #define __COMPRESSION_STREAM_H__
26 
27 #include "services/base.h"
28 #include "data_management/compression/compression.h"
29 #include "data_management/data/data_block.h"
30 #include "services/collection.h"
31 
32 namespace daal
33 {
34 namespace data_management
35 {
43 typedef services::Collection<services::SharedPtr<DataBlock> > DataBlockCollection;
44 typedef services::SharedPtr<DataBlockCollection> DataBlockCollectionPtr;
45 
46 namespace interface1
47 {
57 class DAAL_EXPORT CompressionStream : public Base
58 {
59 public:
65  CompressionStream(CompressorImpl *compr, size_t minSize = 1024 * 64);
66  virtual ~CompressionStream();
67 
72  virtual void push_back(DataBlock *inBlock);
73 
78  virtual void operator << (DataBlock *inBlock)
79  {
80  push_back(inBlock);
81  }
86  virtual void operator << (DataBlock inBlock)
87  {
88  push_back(&inBlock);
89  }
94  virtual DataBlockCollectionPtr getCompressedBlocksCollection();
99  virtual size_t getCompressedDataSize();
106  virtual size_t copyCompressedArray(byte *outPtr, size_t outSize);
112  virtual size_t copyCompressedArray(DataBlock &outBlock)
113  {
114  return copyCompressedArray(outBlock.getPtr(), outBlock.getSize());
115  }
116 
117  services::SharedPtr<services::ErrorCollection> getErrors()
118  {
119  return _errors;
120  }
121 
122 private:
123  void *_blocks;
124 
125  CompressorImpl *_compressor;
126  size_t _compressedDataSize;
127  size_t _minBlockSize;
128 
129  size_t _writePos;
130  size_t _readPos;
131 
132  void compressBlock(size_t pos);
133 
134  services::SharedPtr<services::ErrorCollection> _errors;
135 };
136 
146 class DAAL_EXPORT DecompressionStream : public Base
147 {
148 public:
154  DecompressionStream(DecompressorImpl *decompr, size_t minSize = 1024 * 64);
155  virtual ~DecompressionStream();
160  virtual void push_back(DataBlock *inBlock);
165  virtual void operator << (DataBlock *inBlock)
166  {
167  push_back(inBlock);
168  }
173  virtual void operator << (DataBlock inBlock)
174  {
175  push_back(&inBlock);
176  }
181  virtual DataBlockCollectionPtr getDecompressedBlocksCollection();
186  virtual size_t getDecompressedDataSize();
193  virtual size_t copyDecompressedArray(byte *outPtr, size_t outSize);
199  virtual size_t copyDecompressedArray(DataBlock &outBlock)
200  {
201  return copyDecompressedArray(outBlock.getPtr(), outBlock.getSize());
202  }
203 
204  services::SharedPtr<services::ErrorCollection> getErrors()
205  {
206  return _errors;
207  }
208 
209 private:
210  void *_blocks;
211 
212  DecompressorImpl *_decompressor;
213  size_t _decompressedDataSize;
214  size_t _minBlockSize;
215 
216  size_t _writePos;
217  size_t _readPos;
218 
219  void decompressBlock(size_t pos);
220 
221  services::SharedPtr<services::ErrorCollection> _errors;
222 };
223 } // namespace interface1
224 using interface1::CompressionStream;
225 using interface1::DecompressionStream;
228 } //namespace data_management
229 } //namespace daal
230 
231 #endif // __COMPRESSION_STREAM_H
daal::Base
Base class for Intel(R) Data Analytics Acceleration Library objects
Definition: base.h:41
daal::data_management::interface1::DataBlock::getSize
virtual size_t getSize() const DAAL_C11_OVERRIDE
Definition: data_block.h:135
daal::data_management::interface1::DecompressionStream::copyDecompressedArray
virtual size_t copyDecompressedArray(DataBlock &outBlock)
Definition: compression_stream.h:199
daal::data_management::interface1::CompressorImpl
Base class for the Compressor.
Definition: compression.h:227
daal::data_management::interface1::CompressionStream::copyCompressedArray
virtual size_t copyCompressedArray(DataBlock &outBlock)
Definition: compression_stream.h:112
daal::data_management::interface1::DataBlock::getPtr
virtual byte * getPtr() const DAAL_C11_OVERRIDE
Definition: data_block.h:125
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:85
daal::data_management::DataBlockCollection
services::Collection< services::SharedPtr< DataBlock > > DataBlockCollection
Collection of DataBlock-type elements.
Definition: compression_stream.h:43
daal::data_management::interface1::DecompressorImpl
Base class for the Decompressor.
Definition: compression.h:253
daal::data_management::interface1::DecompressionStream
DecompressionStream class decompresses compressed input data by blocks.
Definition: compression_stream.h:146
daal::data_management::interface1::CompressionStream
CompressionStream class compresses input raw data by blocks.
Definition: compression_stream.h:57

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