Advanced Chunk Processing Library 0.2.0
A comprehensive C++ library for advanced data chunking strategies and processing operations
Loading...
Searching...
No Matches
chunk_compression::ChunkCompressor< T > Class Template Reference

Compression strategies for chunk data. More...

#include <chunk_compression.hpp>

Static Public Member Functions

static std::vector< T > delta_decode (const std::vector< T > &chunk)
 Delta decode a chunk.
 
static std::vector< T > delta_encode (const std::vector< T > &chunk)
 Delta encode a chunk.
 
static std::vector< std::pair< T, size_t > > run_length_encode (const std::vector< T > &chunk)
 Run-length encode a chunk.
 

Detailed Description

template<typename T>
class chunk_compression::ChunkCompressor< T >

Compression strategies for chunk data.

Definition at line 13 of file chunk_compression.hpp.

Member Function Documentation

◆ delta_decode()

template<typename T >
static std::vector< T > chunk_compression::ChunkCompressor< T >::delta_decode ( const std::vector< T > &  chunk)
inlinestatic

Delta decode a chunk.

Parameters
chunkDelta-encoded chunk
Returns
Decoded chunk

Definition at line 67 of file chunk_compression.hpp.

67 {
68 if (chunk.empty())
69 return {};
70
71 std::vector<T> result;
72 result.reserve(chunk.size());
73 result.push_back(chunk[0]);
74
75 for (size_t i = 1; i < chunk.size(); ++i) {
76 result.push_back(result.back() + chunk[i]);
77 }
78
79 return result;
80 }

Referenced by TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), and TEST_F().

◆ delta_encode()

template<typename T >
static std::vector< T > chunk_compression::ChunkCompressor< T >::delta_encode ( const std::vector< T > &  chunk)
inlinestatic

Delta encode a chunk.

Parameters
chunkInput chunk
Returns
Delta-encoded chunk

Definition at line 47 of file chunk_compression.hpp.

47 {
48 if (chunk.empty())
49 return {};
50
51 std::vector<T> result;
52 result.reserve(chunk.size());
53 result.push_back(chunk[0]);
54
55 for (size_t i = 1; i < chunk.size(); ++i) {
56 result.push_back(chunk[i] - chunk[i - 1]);
57 }
58
59 return result;
60 }

Referenced by TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), and TEST_F().

◆ run_length_encode()

template<typename T >
static std::vector< std::pair< T, size_t > > chunk_compression::ChunkCompressor< T >::run_length_encode ( const std::vector< T > &  chunk)
inlinestatic

Run-length encode a chunk.

Parameters
chunkInput chunk
Returns
Encoded chunk with value-count pairs

Definition at line 20 of file chunk_compression.hpp.

20 {
21 std::vector<std::pair<T, size_t>> result;
22 if (chunk.empty())
23 return result;
24
25 T current = chunk[0];
26 size_t count = 1;
27
28 for (size_t i = 1; i < chunk.size(); ++i) {
29 if (chunk[i] == current) {
30 ++count;
31 } else {
32 result.emplace_back(current, count);
33 current = chunk[i];
34 count = 1;
35 }
36 }
37 result.emplace_back(current, count);
38
39 return result;
40 }

Referenced by TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), and TEST_F().


The documentation for this class was generated from the following file: