summaryrefslogtreecommitdiffstatshomepage
path: root/py/makeqstrdata.py
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2014-04-10 12:58:31 +0100
committerDamien George <damien.p.george@gmail.com>2014-04-10 12:58:31 +0100
commit3a8b1607fcbffdbff0a0001d6baacea7693d15b9 (patch)
tree359d2b30a91c4ffc37ce2ce2734abfa6331d6dd3 /py/makeqstrdata.py
parent635543c72cc9ccfb20c1ec1f64d329eef35ebe2d (diff)
parent978607aeffb5b1deca3a4ad4b0ab0d0e15b5e271 (diff)
downloadmicropython-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.py23
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