blob: b4b329c68711cfae1deb932ba91b5d3a0798f575 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
#pragma once
#include <array>
#include <cstdint>
#include <limits>
namespace base
{
class MoveToFront
{
public:
static size_t constexpr kNumBytes = static_cast<size_t>(std::numeric_limits<uint8_t>::max()) + 1;
MoveToFront();
// Returns index of the byte |b| in the current sequence of bytes, then, moves |b|
// to the first positions.
uint8_t Transform(uint8_t b);
uint8_t operator[](uint8_t i) const { return m_order[i]; }
private:
std::array<uint8_t, kNumBytes> m_order;
};
} // namespace
|