[Mesa-dev] [RFC 05/13] gen_mesa_data: script to convert mesa xml into mesa_data entries
Dylan Baker
dylan at pnwbakers.com
Fri Nov 23 22:27:54 UTC 2018
---
src/mapi/glapi/gen/gen_mesa_data.py | 62 +++++++++++++++++++++++++++++
1 file changed, 62 insertions(+)
create mode 100755 src/mapi/glapi/gen/gen_mesa_data.py
diff --git a/src/mapi/glapi/gen/gen_mesa_data.py b/src/mapi/glapi/gen/gen_mesa_data.py
new file mode 100755
index 00000000000..6e9d0629660
--- /dev/null
+++ b/src/mapi/glapi/gen/gen_mesa_data.py
@@ -0,0 +1,62 @@
+#!/usr/bin/python
+
+from __future__ import print_function
+import xml.etree.ElementTree as et
+from xml.etree import ElementInclude
+
+import mesa_data
+import static_data
+
+
+def main():
+ tree = et.parse('gl_and_es_API.xml')
+ root = tree.getroot()
+ ElementInclude.include(root)
+ ElementInclude.include(root)
+
+ print('_FUNCTIONS = [')
+
+ for elem in root.findall('.//function'):
+ name = elem.attrib['name']
+ attribs = {}
+ if 'exec' in elem.attrib:
+ if elem.attrib['exec'] == 'dynamic':
+ attribs['exectype'] = mesa_data.ExecType.DYNAMIC
+ elif elem.attrib['exec'] == 'skip':
+ attribs['exectype'] = mesa_data.ExecType.SKIP
+ else:
+ raise Exception('Unknown ExecType: ' + elem.attrib['exec'])
+
+ if 'marshal' in elem.attrib:
+ if elem.attrib['marshal'] == 'custom':
+ attribs['marshal'] = mesa_data.MarshalType.CUSTOM
+ elif elem.attrib['marshal'] == 'sync':
+ attribs['marshal'] = mesa_data.MarshalType.SYNC
+ elif elem.attrib['marshal'] == 'async':
+ attribs['marshal'] = mesa_data.MarshalType.ASYNC
+ elif elem.attrib['marshal'] == 'draw':
+ attribs['marshal'] = mesa_data.MarshalType.DRAW
+ else:
+ raise Exception('Unknown MarshalType: ' + elem.attrib['marshal'])
+
+ if 'alias' in elem.attrib:
+ attribs['alias'] = True
+
+ attribs['offset'] = static_data.offsets.get(name)
+
+ params = []
+ for param in elem.findall('./param'):
+ params.append(mesa_data.Parameter(
+ param.attrib['name'],
+ bool(param.get('output', False)),
+ bool(param.get('img_null_flag', False))))
+
+ print(' ', end='')
+ print(str(mesa_data.Function(name, params, **attribs)), end=',\n')
+
+ print(']')
+ print('FUNCTIONS = {f.name: f for f in _FUNCTIONS}', end='')
+
+
+if __name__ == '__main__':
+ main()
--
2.19.2
More information about the mesa-dev
mailing list