Welcome to mirror list, hosted at ThFree Co, Russian Federation.

move_to_front.hpp « base - github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
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