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

compression.h
1 /* file: compression.h */
2 /*******************************************************************************
3 * Copyright 2014-2018 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 interface.
19 //--
20 */
21 
22 #ifndef __COMPRESSION_H__
23 #define __COMPRESSION_H__
24 
25 #include "services/base.h"
26 #include "data_management/data/data_block.h"
27 #include "services/daal_defines.h"
28 #include "services/error_handling.h"
29 
30 namespace daal
31 {
32 namespace data_management
33 {
42 enum CompressionLevel
43 {
44  defaultLevel = -1,
45  level0 = 0,
46  level1,
47  level2,
48  level3,
49  level4,
50  level5,
51  level6,
52  level7,
53  level8,
54  level9,
55  lastCompressionLevel = level9
56 };
57 
62 enum CompressionMethod
63 {
64  zlib,
65  lzo,
66  rle,
67  bzip2
68 };
69 
73 namespace interface1
74 {
84 /* [CompressionParameter source code] */
85 struct DAAL_EXPORT CompressionParameter
86 {
87  CompressionLevel level;
93  CompressionParameter( CompressionLevel clevel = defaultLevel ) : level(clevel) {}
94 };
95 /* [CompressionParameter source code] */
96 
102 class DAAL_EXPORT CompressionIface
103 {
104 public:
111  virtual void setInputDataBlock( byte *inBlock, size_t size, size_t offset ) = 0;
116  virtual void setInputDataBlock( DataBlock &inBlock ) = 0;
121  virtual bool isOutputDataBlockFull() = 0;
126  virtual size_t getUsedOutputDataBlockSize() = 0;
133  virtual void run( byte *outBlock, size_t size, size_t offset ) = 0;
138  virtual void run( DataBlock &outBlock ) = 0;
139 
140  virtual ~CompressionIface() {}
141 };
142 
152 class DAAL_EXPORT Compression : public CompressionIface
153 {
154 public:
158  Compression(): _errors(new services::ErrorCollection())
159  {
160  this->_errors->setCanThrow(false);
161  _isOutBlockFull = false;
162  _usedOutBlockSize = 0;
163  }
164  virtual void setInputDataBlock( byte *inBlock, size_t size, size_t offset ) = 0;
165  virtual void setInputDataBlock( DataBlock &inBlock ) = 0;
166  bool isOutputDataBlockFull() { return _isOutBlockFull; }
167  size_t getUsedOutputDataBlockSize() { return _usedOutBlockSize; }
168  virtual void run( byte *outBlock, size_t size, size_t offset ) = 0;
169  virtual void run( DataBlock &outBlock ) = 0;
170  virtual ~Compression() {}
176  virtual void checkInputParams( byte *inBlock, size_t size )
177  {
178  if ( inBlock == NULL )
179  {
180  this->_errors->add(services::ErrorCompressionNullInputStream);
181  }
182  if ( size == 0 )
183  {
184  this->_errors->add(services::ErrorCompressionEmptyInputStream);
185  }
186  }
192  virtual void checkOutputParams( byte *outBlock, size_t size )
193  {
194  if ( outBlock == NULL )
195  {
196  this->_errors->add(services::ErrorCompressionNullOutputStream);
197  }
198  if ( size == 0 )
199  {
200  this->_errors->add(services::ErrorCompressionEmptyOutputStream);
201  }
202  }
203 
204  services::SharedPtr<services::ErrorCollection> getErrors()
205  {
206  return _errors;
207  }
208 
209 protected:
210  bool _isOutBlockFull;
211  size_t _usedOutBlockSize;
212 
213  services::SharedPtr<services::ErrorCollection> _errors;
214 };
215 
225 class DAAL_EXPORT CompressorImpl : public Compression
226 {
227 public:
231  CompressorImpl() : Compression()
232  {
233  _isInitialized = false;
234  }
235  virtual ~CompressorImpl() {}
236 
237 protected:
238  virtual void initialize() { _isInitialized = true; }
239  bool _isInitialized;
240 };
241 
251 class DAAL_EXPORT DecompressorImpl : public Compression
252 {
253 public:
257  DecompressorImpl() : Compression()
258  {
259  _isInitialized = false;
260  }
261  virtual ~DecompressorImpl() {}
262 
263 protected:
264  virtual void initialize() { _isInitialized = true; }
265  bool _isInitialized;
266 
267 };
268 
280 template<CompressionMethod dcmethod>
281 class DAAL_EXPORT Compressor : public CompressorImpl
282 {
283 public:
287  Compressor() : CompressorImpl() {}
288  virtual ~Compressor() {}
289 };
290 
302 template<CompressionMethod dcmethod>
303 class DAAL_EXPORT Decompressor : public DecompressorImpl
304 {
305 public:
309  Decompressor() : DecompressorImpl() {}
310  virtual ~Decompressor() {}
311 };
312 } // namespace interface1
313 using interface1::CompressionParameter;
314 using interface1::CompressionIface;
315 using interface1::Compression;
316 using interface1::CompressorImpl;
317 using interface1::DecompressorImpl;
318 using interface1::Compressor;
319 using interface1::Decompressor;
322 } // namespace data_management
323 } // namespace daal
324 #endif // __COMPRESSION_H
daal::data_management::level8
Definition: compression.h:53
daal::data_management::interface1::Compressor
Compressor class compresses an input data block and writes results into an output data block...
Definition: compression.h:281
daal
Definition: algorithm_base_common.h:31
daal::data_management::interface1::CompressorImpl::CompressorImpl
CompressorImpl()
Compressor constructor
Definition: compression.h:231
daal::services::ErrorCompressionEmptyInputStream
Definition: error_indexes.h:288
daal::data_management::interface1::Compression::checkOutputParams
virtual void checkOutputParams(byte *outBlock, size_t size)
Definition: compression.h:192
daal::data_management::level2
Definition: compression.h:47
daal::data_management::level7
Definition: compression.h:52
daal::data_management::interface1::Compression::checkInputParams
virtual void checkInputParams(byte *inBlock, size_t size)
Definition: compression.h:176
daal::data_management::interface1::Decompressor::Decompressor
Decompressor()
Decompressor constructor
Definition: compression.h:309
daal::data_management::CompressionLevel
CompressionLevel
Compression levels
Definition: compression.h:42
daal::data_management::defaultLevel
Definition: compression.h:44
daal_defines.h
daal::data_management::level4
Definition: compression.h:49
daal::data_management::interface1::CompressorImpl
Base class for the Compressor.
Definition: compression.h:225
daal::data_management::level0
Definition: compression.h:45
daal::data_management::interface1::CompressionParameter::CompressionParameter
CompressionParameter(CompressionLevel clevel=defaultLevel)
Definition: compression.h:93
daal::data_management::interface1::Compression
Base class for compression and decompression
Definition: compression.h:152
daal::data_management::rle
Definition: compression.h:66
daal::data_management::interface1::CompressionIface
Abstract interface class for compression and decompression.
Definition: compression.h:102
daal::data_management::interface1::Decompressor
Decompressor class decompresses an input data block and writes results into an output data block...
Definition: compression.h:303
daal::data_management::CompressionMethod
CompressionMethod
Compression methods
Definition: compression.h:62
daal::data_management::interface1::Compression::getUsedOutputDataBlockSize
size_t getUsedOutputDataBlockSize()
Definition: compression.h:167
daal::data_management::level1
Definition: compression.h:46
daal::services::ErrorCompressionEmptyOutputStream
Definition: error_indexes.h:289
daal::data_management::lzo
Definition: compression.h:65
daal::data_management::interface1::CompressionParameter::level
CompressionLevel level
Definition: compression.h:87
daal::data_management::interface1::CompressionParameter
Parameters for compression and decompression.
Definition: compression.h:85
daal::data_management::level6
Definition: compression.h:51
daal::data_management::bzip2
Definition: compression.h:67
daal::algorithms::implicit_als::training::offset
Definition: implicit_als_training_types.h:148
daal::data_management::interface1::Compressor::Compressor
Compressor()
Compressor constructor
Definition: compression.h:287
daal::data_management::level3
Definition: compression.h:48
daal::data_management::interface1::DecompressorImpl
Base class for the Decompressor.
Definition: compression.h:251
daal::data_management::zlib
Definition: compression.h:64
daal::data_management::level9
Definition: compression.h:54
daal::data_management::interface1::Compression::isOutputDataBlockFull
bool isOutputDataBlockFull()
Definition: compression.h:166
daal::services::ErrorCompressionNullInputStream
Definition: error_indexes.h:285
daal::data_management::interface1::DecompressorImpl::DecompressorImpl
DecompressorImpl()
Decompressor constructor
Definition: compression.h:257
daal::data_management::interface1::Compression::Compression
Compression()
Compression constructor.
Definition: compression.h:158
daal::services::ErrorCompressionNullOutputStream
Definition: error_indexes.h:286
daal::data_management::level5
Definition: compression.h:50
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.