1 | ///////////////////////////////////////////////////////////////////////////////
|
---|
2 | //
|
---|
3 | /// \file fastpos_tablegen.c
|
---|
4 | /// \brief Generates the lzma_fastpos[] lookup table
|
---|
5 | ///
|
---|
6 | // Authors: Igor Pavlov
|
---|
7 | // Lasse Collin
|
---|
8 | //
|
---|
9 | // This file has been put into the public domain.
|
---|
10 | // You can do whatever you want with this file.
|
---|
11 | //
|
---|
12 | ///////////////////////////////////////////////////////////////////////////////
|
---|
13 |
|
---|
14 | #include <inttypes.h>
|
---|
15 | #include <stdio.h>
|
---|
16 | #include "fastpos.h"
|
---|
17 |
|
---|
18 |
|
---|
19 | int
|
---|
20 | main(void)
|
---|
21 | {
|
---|
22 | uint8_t fastpos[1 << FASTPOS_BITS];
|
---|
23 |
|
---|
24 | const uint8_t fast_slots = 2 * FASTPOS_BITS;
|
---|
25 | uint32_t c = 2;
|
---|
26 |
|
---|
27 | fastpos[0] = 0;
|
---|
28 | fastpos[1] = 1;
|
---|
29 |
|
---|
30 | for (uint8_t slot_fast = 2; slot_fast < fast_slots; ++slot_fast) {
|
---|
31 | const uint32_t k = 1 << ((slot_fast >> 1) - 1);
|
---|
32 | for (uint32_t j = 0; j < k; ++j, ++c)
|
---|
33 | fastpos[c] = slot_fast;
|
---|
34 | }
|
---|
35 |
|
---|
36 | printf("/* This file has been automatically generated "
|
---|
37 | "by fastpos_tablegen.c. */\n\n"
|
---|
38 | "#include \"common.h\"\n"
|
---|
39 | "#include \"fastpos.h\"\n\n"
|
---|
40 | "const uint8_t lzma_fastpos[1 << FASTPOS_BITS] = {");
|
---|
41 |
|
---|
42 | for (size_t i = 0; i < (1 << FASTPOS_BITS); ++i) {
|
---|
43 | if (i % 16 == 0)
|
---|
44 | printf("\n\t");
|
---|
45 |
|
---|
46 | printf("%3u", (unsigned int)(fastpos[i]));
|
---|
47 |
|
---|
48 | if (i != (1 << FASTPOS_BITS) - 1)
|
---|
49 | printf(",");
|
---|
50 | }
|
---|
51 |
|
---|
52 | printf("\n};\n");
|
---|
53 |
|
---|
54 | return 0;
|
---|
55 | }
|
---|