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

compression.h
1 /* file: compression.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 interface.
21 //--
22 */
23 
24 #ifndef __COMPRESSION_H__
25 #define __COMPRESSION_H__
26 
27 #include "services/base.h"
28 #include "data_management/data/data_block.h"
29 #include "services/daal_defines.h"
30 #include "services/error_handling.h"
31 
32 namespace daal
33 {
34 namespace data_management
35 {
44 enum CompressionLevel
45 {
46  defaultLevel = -1,
47  level0 = 0,
48  level1,
49  level2,
50  level3,
51  level4,
52  level5,
53  level6,
54  level7,
55  level8,
56  level9,
57  lastCompressionLevel = level9
58 };
59 
64 enum CompressionMethod
65 {
66  zlib,
67  lzo,
68  rle,
69  bzip2
70 };
71 
75 namespace interface1
76 {
86 /* [CompressionParameter source code] */
87 struct DAAL_EXPORT CompressionParameter
88 {
89  CompressionLevel level;
95  CompressionParameter( CompressionLevel clevel = defaultLevel ) : level(clevel) {}
96 };
97 /* [CompressionParameter source code] */
98 
104 class DAAL_EXPORT CompressionIface
105 {
106 public:
113  virtual void setInputDataBlock( byte *inBlock, size_t size, size_t offset ) = 0;
118  virtual void setInputDataBlock( DataBlock &inBlock ) = 0;
123  virtual bool isOutputDataBlockFull() = 0;
128  virtual size_t getUsedOutputDataBlockSize() = 0;
135  virtual void run( byte *outBlock, size_t size, size_t offset ) = 0;
140  virtual void run( DataBlock &outBlock ) = 0;
141 
142  virtual ~CompressionIface() {}
143 };
144 
154 class DAAL_EXPORT Compression : public CompressionIface
155 {
156 public:
160  Compression(): _errors(new services::ErrorCollection())
161  {
162  this->_errors->setCanThrow(false);
163  _isOutBlockFull = false;
164  _usedOutBlockSize = 0;
165  }
166  virtual void setInputDataBlock( byte *inBlock, size_t size, size_t offset ) = 0;
167  virtual void setInputDataBlock( DataBlock &inBlock ) = 0;
168  bool isOutputDataBlockFull() { return _isOutBlockFull; }
169  size_t getUsedOutputDataBlockSize() { return _usedOutBlockSize; }
170  virtual void run( byte *outBlock, size_t size, size_t offset ) = 0;
171  virtual void run( DataBlock &outBlock ) = 0;
172  virtual ~Compression() {}
178  virtual void checkInputParams( byte *inBlock, size_t size )
179  {
180  if ( inBlock == NULL )
181  {
182  this->_errors->add(services::ErrorCompressionNullInputStream);
183  }
184  if ( size == 0 )
185  {
186  this->_errors->add(services::ErrorCompressionEmptyInputStream);
187  }
188  }
194  virtual void checkOutputParams( byte *outBlock, size_t size )
195  {
196  if ( outBlock == NULL )
197  {
198  this->_errors->add(services::ErrorCompressionNullOutputStream);
199  }
200  if ( size == 0 )
201  {
202  this->_errors->add(services::ErrorCompressionEmptyOutputStream);
203  }
204  }
205 
206  services::SharedPtr<services::ErrorCollection> getErrors()
207  {
208  return _errors;
209  }
210 
211 protected:
212  bool _isOutBlockFull;
213  size_t _usedOutBlockSize;
214 
215  services::SharedPtr<services::ErrorCollection> _errors;
216 };
217 
227 class DAAL_EXPORT CompressorImpl : public Compression
228 {
229 public:
233  CompressorImpl() : Compression()
234  {
235  _isInitialized = false;
236  }
237  virtual ~CompressorImpl() {}
238 
239 protected:
240  virtual void initialize() { _isInitialized = true; }
241  bool _isInitialized;
242 };
243 
253 class DAAL_EXPORT DecompressorImpl : public Compression
254 {
255 public:
259  DecompressorImpl() : Compression()
260  {
261  _isInitialized = false;
262  }
263  virtual ~DecompressorImpl() {}
264 
265 protected:
266  virtual void initialize() { _isInitialized = true; }
267  bool _isInitialized;
268 
269 };
270 
282 template<CompressionMethod dcmethod>
283 class DAAL_EXPORT Compressor : public CompressorImpl
284 {
285 public:
289  Compressor() : CompressorImpl() {}
290  virtual ~Compressor() {}
291 };
292 
304 template<CompressionMethod dcmethod>
305 class DAAL_EXPORT Decompressor : public DecompressorImpl
306 {
307 public:
311  Decompressor() : DecompressorImpl() {}
312  virtual ~Decompressor() {}
313 };
314 } // namespace interface1
315 using interface1::CompressionParameter;
316 using interface1::CompressionIface;
317 using interface1::Compression;
318 using interface1::CompressorImpl;
319 using interface1::DecompressorImpl;
320 using interface1::Compressor;
321 using interface1::Decompressor;
324 } // namespace data_management
325 } // namespace daal
326 #endif // __COMPRESSION_H
daal::services::ErrorCompressionNullInputStream
Definition: error_indexes.h:298
daal::data_management::level0
Definition: compression.h:47
daal::data_management::lzo
Definition: compression.h:67
daal::data_management::CompressionMethod
CompressionMethod
Compression methods
Definition: compression.h:64
daal::data_management::level2
Definition: compression.h:49
daal::data_management::zlib
Definition: compression.h:66
daal::data_management::interface1::Compressor
Compressor class compresses an input data block and writes results into an output data block...
Definition: compression.h:283
daal::data_management::level9
Definition: compression.h:56
daal::data_management::level4
Definition: compression.h:51
daal::data_management::level6
Definition: compression.h:53
daal::data_management::interface1::CompressionParameter::level
CompressionLevel level
Definition: compression.h:89
daal::data_management::interface1::Compression::Compression
Compression()
Compression constructor.
Definition: compression.h:160
daal::data_management::interface1::CompressorImpl
Base class for the Compressor.
Definition: compression.h:227
daal::data_management::interface1::Decompressor::Decompressor
Decompressor()
Decompressor constructor
Definition: compression.h:311
daal::data_management::interface1::Decompressor
Decompressor class decompresses an input data block and writes results into an output data block...
Definition: compression.h:305
daal::data_management::interface1::Compression::checkOutputParams
virtual void checkOutputParams(byte *outBlock, size_t size)
Definition: compression.h:194
daal::data_management::interface1::CompressionIface
Abstract interface class for compression and decompression.
Definition: compression.h:104
daal::data_management::level5
Definition: compression.h:52
daal::data_management::interface1::Compression::isOutputDataBlockFull
bool isOutputDataBlockFull()
Definition: compression.h:168
daal::data_management::interface1::CompressorImpl::CompressorImpl
CompressorImpl()
Compressor constructor
Definition: compression.h:233
daal::services::ErrorCompressionEmptyInputStream
Definition: error_indexes.h:301
daal_defines.h
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::level8
Definition: compression.h:55
daal::data_management::bzip2
Definition: compression.h:69
daal::data_management::level3
Definition: compression.h:50
daal::data_management::defaultLevel
Definition: compression.h:46
daal::data_management::level1
Definition: compression.h:48
daal::data_management::CompressionLevel
CompressionLevel
Compression levels
Definition: compression.h:44
daal::data_management::interface1::DecompressorImpl
Base class for the Decompressor.
Definition: compression.h:253
daal::data_management::interface1::CompressionParameter
Parameters for compression and decompression.
Definition: compression.h:87
daal::data_management::level7
Definition: compression.h:54
daal::data_management::interface1::Compressor::Compressor
Compressor()
Compressor constructor
Definition: compression.h:289
daal::data_management::interface1::Compression::getUsedOutputDataBlockSize
size_t getUsedOutputDataBlockSize()
Definition: compression.h:169
daal::data_management::interface1::CompressionParameter::CompressionParameter
CompressionParameter(CompressionLevel clevel=defaultLevel)
Definition: compression.h:95
daal::data_management::interface1::Compression
Base class for compression and decompression
Definition: compression.h:154
daal::data_management::interface1::DecompressorImpl::DecompressorImpl
DecompressorImpl()
Decompressor constructor
Definition: compression.h:259
daal::services::ErrorCompressionNullOutputStream
Definition: error_indexes.h:299
daal::data_management::interface1::Compression::checkInputParams
virtual void checkInputParams(byte *inBlock, size_t size)
Definition: compression.h:178
daal::services::ErrorCompressionEmptyOutputStream
Definition: error_indexes.h:302
daal::data_management::rle
Definition: compression.h:68

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