File: make_predefined_table.py

package info (click to toggle)
python-crcmod 1.7%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 304 kB
  • sloc: python: 1,782; ansic: 671; makefile: 100
file content (45 lines) | stat: -rw-r--r-- 1,410 bytes parent folder | download | duplicates (14)
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

from __future__ import print_function

import numbers

import crcmod.predefined

table_data = [
    [   "Name",            'name',     32,    ],
    [   "Polynomial",      'poly',     22,    ],
    [   "Reversed?",       'reverse',  10,    ],
    [   "Init-value",      'init',     20,    ],
    [   "XOR-out",         'xor_out',  20,    ],
    [   "Check",           'check',    20,    ],
]

ccitt_defns = [
    'kermit',
    'crc-ccitt-false',
    'crc-aug-ccitt',
]

column_dashes = '  '.join(('=' * table_data_item[2] for table_data_item in table_data))
print(column_dashes)
print('  '.join(("%-*s" % (table_data_item[2], table_data_item[0]) for table_data_item in table_data)).strip())
print(column_dashes)

for defn in crcmod.predefined._crc_definitions:
    poly_width = crcmod.crcmod._verifyPoly(defn['poly'])
    hex_width = (poly_width + 3) // 4
    defn_data_list = []
    for (header_text, key, width) in table_data:
        if isinstance(defn[key], bool):
            item = "%s" % (defn[key],)
        elif isinstance(defn[key], numbers.Integral):
            item = "0x%0*X" % (hex_width, defn[key])
        else:
            item = "``%s``" % (defn[key])
            if defn['name'] in ccitt_defns:
                item = ' '.join([item, '[#ccitt]_'])
        item = "%-*s" % (width, item)
        defn_data_list.append(item)
    print('  '.join(defn_data_list).strip())

print(column_dashes)