| 25 | |
| 26 | template <typename Sink> |
| 27 | static void EncodeAndWriteBlock(Sink & sink, size_t n, uint8_t const * s, BufferT & bwtBuffer) |
| 28 | { |
| 29 | bwtBuffer.resize(n); |
| 30 | auto const start = BWT(n, s, bwtBuffer.data()); |
| 31 | |
| 32 | MoveToFront mtf; |
| 33 | for (auto & b : bwtBuffer) |
| 34 | b = mtf.Transform(b); |
| 35 | |
| 36 | WriteVarUint(sink, start); |
| 37 | |
| 38 | HuffmanCoder huffman; |
| 39 | huffman.Init(bwtBuffer.begin(), bwtBuffer.end()); |
| 40 | huffman.WriteEncoding(sink); |
| 41 | huffman.EncodeAndWrite(sink, bwtBuffer.begin(), bwtBuffer.end()); |
| 42 | } |
| 43 | |
| 44 | template <typename Sink> |
| 45 | static void EncodeAndWriteBlock(Sink & sink, size_t n, uint8_t const * s) |
nothing calls this directly
no test coverage detected