makeqstrdata.py: Add support for conditionally defined qstrs.
Syntax is usual C #if*/#endif, but each qstr must be wrapped individually.
This commit is contained in:
parent
881d9af05e
commit
acb133d1b1
@ -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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user