summaryrefslogtreecommitdiffstats
path: root/openbsc/contrib/convert_to_enum.py
blob: bcd6f2ceeaa5fe496da454008afebb1a4648a89e (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
26
27
28
29
30
31
32
33
34
35
36
37
#!/usr/bin/env python

#
# Convert ETSI documents to an enum
#

import re, sys

def convert(string):
    string = string.strip().replace(" ", "").rjust(8, "0")
    var = 0
    offset = 7
    for char in string:
        assert offset >= 0
        var = var | (int(char) << offset)
        offset = offset - 1

    return var

def string(name):
    name = name.replace(" ", "_")
    name = name.replace('"', "")
    name = name.replace('/', '_')
    name = name.replace('(', '_')
    name = name.replace(')', '_')
    return "%s_%s" % (sys.argv[2], name.upper())

file = open(sys.argv[1])


for line in file:
    m = re.match(r"[ \t]*(?P<value>[01 ]+)[ ]+(?P<name>[a-zA-Z /0-9()]+)", line[:-1])

    if m:
        print "\t%s\t\t= %d," % (string(m.groupdict()["name"]), convert(m.groupdict()["value"]))
    else:
        print line[:-1]