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

rlecompression.h
1 /* file: rlecompression.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 run-length encoding interface.
21 //--
22 */
23 
24 #ifndef __RLECOMPRESSION_H__
25 #define __RLECOMPRESSION_H__
26 #include "data_management/compression/compression.h"
27 
28 namespace daal
29 {
30 namespace data_management
31 {
32 
33 namespace interface1
34 {
48 /* [RleCompressionParameter source code] */
49 class DAAL_EXPORT RleCompressionParameter : public data_management::CompressionParameter
50 {
51 public:
56  RleCompressionParameter(bool _isBlockHeader = 1) :
57  data_management::CompressionParameter(defaultLevel), isBlockHeader(_isBlockHeader) {}
58 
59  ~RleCompressionParameter() {}
60 
61  bool isBlockHeader;
62 };
63 /* [RleCompressionParameter source code] */
64 
75 template<> class DAAL_EXPORT Compressor<rle> : public data_management::CompressorImpl
76 {
77 public:
81  Compressor();
82  ~Compressor();
89  void setInputDataBlock( byte *inBlock, size_t size, size_t offset );
94  void setInputDataBlock( DataBlock &inBlock )
95  {
96  setInputDataBlock( inBlock.getPtr(), inBlock.getSize(), 0 );
97  }
98 
105  void run( byte *outBlock, size_t size, size_t offset );
110  void run( DataBlock &outBlock )
111  {
112  run( outBlock.getPtr(), outBlock.getSize(), 0 );
113  }
114 
115  RleCompressionParameter parameter;
117 protected:
118  void initialize();
119 
120 private:
121  void *_next_in;
122  size_t _avail_in;
123  void *_next_out;
124  size_t _avail_out;
125  size_t _headBytes;
126 
127  void finalizeCompression();
128 };
129 
140 template<> class DAAL_EXPORT Decompressor<rle> : public data_management::DecompressorImpl
141 {
142 public:
146  Decompressor();
147  ~Decompressor();
154  void setInputDataBlock( byte *inBlock, size_t size, size_t offset );
159  void setInputDataBlock( DataBlock &inBlock )
160  {
161  setInputDataBlock( inBlock.getPtr(), inBlock.getSize(), 0 );
162  }
169  void run( byte *outBlock, size_t size, size_t offset );
174  void run( DataBlock &outBlock )
175  {
176  run( outBlock.getPtr(), outBlock.getSize(), 0 );
177  }
178 
179  RleCompressionParameter parameter;
181 protected:
182  void initialize();
183 
184 private:
185  void *_next_in;
186  size_t _avail_in;
187  void *_next_out;
188  size_t _avail_out;
189  size_t _headBytes;
190 
191  void *_internalBuff;
192  size_t _internalBuffOff;
193  size_t _internalBuffLen;
194 
195  void finalizeCompression();
196 };
198 } // namespace interface1
199 using interface1::RleCompressionParameter;
200 using interface1::Compressor;
201 using interface1::Decompressor;
202 
203 } //namespace data_management
204 } //namespace daal
205 #endif //__RLECOMPRESSION_H
daal::data_management::interface1::Compressor< rle >::parameter
RleCompressionParameter parameter
Definition: rlecompression.h:115
daal::data_management::interface1::Decompressor< rle >::run
void run(DataBlock &outBlock)
Definition: rlecompression.h:174
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::interface1::DataBlock::getSize
virtual size_t getSize() const DAAL_C11_OVERRIDE
Definition: data_block.h:135
daal::data_management::interface1::RleCompressionParameter::RleCompressionParameter
RleCompressionParameter(bool _isBlockHeader=1)
Definition: rlecompression.h:56
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::RleCompressionParameter::isBlockHeader
bool isBlockHeader
Definition: rlecompression.h:61
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::interface1::Decompressor< rle >::setInputDataBlock
void setInputDataBlock(DataBlock &inBlock)
Definition: rlecompression.h:159
daal::data_management::interface1::RleCompressionParameter
Parameter for run-length encoding and decoding. A RLE encoded block may contain a header that consist...
Definition: rlecompression.h:49
daal::data_management::defaultLevel
Definition: compression.h:46
daal::data_management::interface1::Decompressor< rle >::parameter
RleCompressionParameter parameter
Definition: rlecompression.h:179
daal::data_management::interface1::CompressionParameter
Parameters for compression and decompression.
Definition: compression.h:87
daal::data_management::interface1::Compressor< rle >::run
void run(DataBlock &outBlock)
Definition: rlecompression.h:110
daal::data_management::interface1::Compressor< rle >::setInputDataBlock
void setInputDataBlock(DataBlock &inBlock)
Definition: rlecompression.h:94
daal::data_management::rle
Definition: compression.h:68

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