diff options
author | Jiri Kosina <jkosina@suse.com> | 2024-11-18 21:29:33 +0100 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.com> | 2024-11-18 21:29:33 +0100 |
commit | f33e46a0c6bddd341d0989484a2546bba7ac4a3c (patch) | |
tree | 4918985ab00890205c8d77d0553472e12e01cd55 /tools/net/sunrpc/xdrgen/generators/enum.py | |
parent | 66ef47faa90d838cda131fe1f7776456cc3b59f2 (diff) | |
parent | a025b0dbd83f85cf81ff447431cfd8b2d3cacb0a (diff) |
Merge branch 'for-6.13/wacom' into for-linus
- Sanitization of BTN_TOOL_RUBBER handling (Jason Gerecke)
Diffstat (limited to 'tools/net/sunrpc/xdrgen/generators/enum.py')
-rw-r--r-- | tools/net/sunrpc/xdrgen/generators/enum.py | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/tools/net/sunrpc/xdrgen/generators/enum.py b/tools/net/sunrpc/xdrgen/generators/enum.py new file mode 100644 index 000000000000..855e43f4ae38 --- /dev/null +++ b/tools/net/sunrpc/xdrgen/generators/enum.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python3 +# ex: set filetype=python: + +"""Generate code to handle XDR enum types""" + +from generators import SourceGenerator, create_jinja2_environment +from xdr_ast import _XdrEnum, public_apis + + +class XdrEnumGenerator(SourceGenerator): + """Generate source code for XDR enum types""" + + def __init__(self, language: str, peer: str): + """Initialize an instance of this class""" + self.environment = create_jinja2_environment(language, "enum") + self.peer = peer + + def emit_declaration(self, node: _XdrEnum) -> None: + """Emit one declaration pair for an XDR enum type""" + if node.name in public_apis: + template = self.environment.get_template("declaration/close.j2") + print(template.render(name=node.name)) + + def emit_definition(self, node: _XdrEnum) -> None: + """Emit one definition for an XDR enum type""" + template = self.environment.get_template("definition/open.j2") + print(template.render(name=node.name)) + + template = self.environment.get_template("definition/enumerator.j2") + for enumerator in node.enumerators: + print(template.render(name=enumerator.name, value=enumerator.value)) + + template = self.environment.get_template("definition/close.j2") + print(template.render(name=node.name)) + + def emit_decoder(self, node: _XdrEnum) -> None: + """Emit one decoder function for an XDR enum type""" + template = self.environment.get_template("decoder/enum.j2") + print(template.render(name=node.name)) + + def emit_encoder(self, node: _XdrEnum) -> None: + """Emit one encoder function for an XDR enum type""" + template = self.environment.get_template("encoder/enum.j2") + print(template.render(name=node.name)) |