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 == "": + assert line == "#endif" + conditional = None + else: + assert conditional is None + conditional = line + continue + + if conditional == "": + 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 = "" # 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