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.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include <algorithm>
4
#include <cmath>
5
#include <vector>
6
7
namespace
chunk_compression
{
8
9
/**
10
* @brief Compression strategies for chunk data
11
*/
12
template
<
typename
T>
13
class
ChunkCompressor
{
14
public
:
15
/**
16
* @brief Run-length encode a chunk
17
* @param chunk Input chunk
18
* @return Encoded chunk with value-count pairs
19
*/
20
static
std::vector<std::pair<T, size_t>>
run_length_encode
(
const
std::vector<T>& chunk) {
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
}
41
42
/**
43
* @brief Delta encode a chunk
44
* @param chunk Input chunk
45
* @return Delta-encoded chunk
46
*/
47
static
std::vector<T>
delta_encode
(
const
std::vector<T>& chunk) {
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
}
61
62
/**
63
* @brief Delta decode a chunk
64
* @param chunk Delta-encoded chunk
65
* @return Decoded chunk
66
*/
67
static
std::vector<T>
delta_decode
(
const
std::vector<T>& chunk) {
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
}
81
};
82
83
}
// namespace chunk_compression
chunk_compression::ChunkCompressor
Compression strategies for chunk data.
Definition
chunk_compression.hpp:13
chunk_compression::ChunkCompressor::delta_encode
static std::vector< T > delta_encode(const std::vector< T > &chunk)
Delta encode a chunk.
Definition
chunk_compression.hpp:47
chunk_compression::ChunkCompressor::run_length_encode
static std::vector< std::pair< T, size_t > > run_length_encode(const std::vector< T > &chunk)
Run-length encode a chunk.
Definition
chunk_compression.hpp:20
chunk_compression::ChunkCompressor::delta_decode
static std::vector< T > delta_decode(const std::vector< T > &chunk)
Delta decode a chunk.
Definition
chunk_compression.hpp:67
chunk_compression
Definition
chunk_compression.hpp:7
chunk_compression.hpp
Generated on Sat Dec 28 2024 01:08:54 for Advanced Chunk Processing Library by
1.9.8