diff options
author | Damien George <damien.p.george@gmail.com> | 2014-04-10 12:58:31 +0100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-04-10 12:58:31 +0100 |
commit | 3a8b1607fcbffdbff0a0001d6baacea7693d15b9 (patch) | |
tree | 359d2b30a91c4ffc37ce2ce2734abfa6331d6dd3 /py/makeqstrdata.py | |
parent | 635543c72cc9ccfb20c1ec1f64d329eef35ebe2d (diff) | |
parent | 978607aeffb5b1deca3a4ad4b0ab0d0e15b5e271 (diff) | |
download | micropython-3a8b1607fcbffdbff0a0001d6baacea7693d15b9.tar.gz micropython-3a8b1607fcbffdbff0a0001d6baacea7693d15b9.zip |
Merge branch 'master' of github.com:micropython/micropython
Diffstat (limited to 'py/makeqstrdata.py')
-rw-r--r-- | py/makeqstrdata.py | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/py/makeqstrdata.py b/py/makeqstrdata.py index 7413365712..e60f000440 100644 --- a/py/makeqstrdata.py +++ b/py/makeqstrdata.py @@ -29,6 +29,7 @@ def do_work(infiles): for infile in infiles: with open(infile, 'rt') as f: line_number = 0 + conditional = None for line in f: line_number += 1 line = line.strip() @@ -37,6 +38,18 @@ def do_work(infiles): if len(line) == 0 or line.startswith('//'): continue + if line[0] == '#': + if conditional == "<endif>": + assert line == "#endif" + conditional = None + else: + assert conditional is None + conditional = line + continue + + if conditional == "<endif>": + assert False, "#endif expected before '%s'" % line + # verify line is of the correct form match = re.match(r'Q\((.+)\)$', line) if not match: @@ -52,15 +65,21 @@ def do_work(infiles): continue # add the qstr to the list, with order number to retain original order in file - qstrs[ident] = (len(qstrs), ident, qstr) + qstrs[ident] = (len(qstrs), ident, qstr, conditional) + if conditional is not None: + conditional = "<endif>" # process the qstrs, printing out the generated C header file print('// This file was automatically generated by makeqstrdata.py') print('') - for order, ident, qstr in sorted(qstrs.values(), key=lambda x: x[0]): + for order, ident, qstr, conditional in sorted(qstrs.values(), key=lambda x: x[0]): qhash = compute_hash(qstr) qlen = len(qstr) + if conditional: + print(conditional) print('Q({}, (const byte*)"\\x{:02x}\\x{:02x}\\x{:02x}\\x{:02x}" "{}")'.format(ident, qhash & 0xff, (qhash >> 8) & 0xff, qlen & 0xff, (qlen >> 8) & 0xff, qstr)) + if conditional: + print('#endif') return True |