Update THANKS
[xz/debian.git] / src / liblzma / lzma / fastpos_tablegen.c
blob957ccb7a6436276bc801b8f1b7a0800406d48c0d
1 // SPDX-License-Identifier: 0BSD
3 ///////////////////////////////////////////////////////////////////////////////
4 //
5 /// \file fastpos_tablegen.c
6 /// \brief Generates the lzma_fastpos[] lookup table
7 ///
8 // Authors: Igor Pavlov
9 // Lasse Collin
11 ///////////////////////////////////////////////////////////////////////////////
13 #include <inttypes.h>
14 #include <stdio.h>
16 #define lzma_attr_visibility_hidden
17 #include "fastpos.h"
20 int
21 main(void)
23 uint8_t fastpos[1 << FASTPOS_BITS];
25 const uint8_t fast_slots = 2 * FASTPOS_BITS;
26 uint32_t c = 2;
28 fastpos[0] = 0;
29 fastpos[1] = 1;
31 for (uint8_t slot_fast = 2; slot_fast < fast_slots; ++slot_fast) {
32 const uint32_t k = 1 << ((slot_fast >> 1) - 1);
33 for (uint32_t j = 0; j < k; ++j, ++c)
34 fastpos[c] = slot_fast;
37 // Split the SPDX string so that it won't accidentally match
38 // when tools search for the string.
39 printf("// SPDX" "-License-Identifier" ": 0BSD\n\n"
40 "// This file has been generated by fastpos_tablegen.c.\n\n"
41 "#include \"common.h\"\n"
42 "#include \"fastpos.h\"\n\n"
43 "const uint8_t lzma_fastpos[1 << FASTPOS_BITS] = {");
45 for (size_t i = 0; i < (1 << FASTPOS_BITS); ++i) {
46 if (i % 16 == 0)
47 printf("\n\t");
49 printf("%3u", (unsigned int)(fastpos[i]));
51 if (i != (1 << FASTPOS_BITS) - 1)
52 printf(",");
55 printf("\n};\n");
57 return 0;