diff options
| author | Chuck Lever <chuck.lever@oracle.com> | 2024-10-03 14:54:45 -0400 |
|---|---|---|
| committer | Chuck Lever <chuck.lever@oracle.com> | 2024-11-11 13:42:05 -0500 |
| commit | e9e1e7e75acd737cf41c6ee64d62da6ea0c10036 (patch) | |
| tree | 3cfd4d4186ae968d4031dacfef9da44b4c0efede /tools/net/sunrpc/xdrgen/generators/enum.py | |
| parent | xdrgen: XDR width for union types (diff) | |
| download | linux-e9e1e7e75acd737cf41c6ee64d62da6ea0c10036.tar.gz linux-e9e1e7e75acd737cf41c6ee64d62da6ea0c10036.zip | |
xdrgen: Add generator code for XDR width macros
Introduce logic in the code generators to emit maxsize (XDR
width) definitions. In C, these are pre-processor macros.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Diffstat (limited to 'tools/net/sunrpc/xdrgen/generators/enum.py')
| -rw-r--r-- | tools/net/sunrpc/xdrgen/generators/enum.py | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/tools/net/sunrpc/xdrgen/generators/enum.py b/tools/net/sunrpc/xdrgen/generators/enum.py index e63f45b8eb74..e62f715d3996 100644 --- a/tools/net/sunrpc/xdrgen/generators/enum.py +++ b/tools/net/sunrpc/xdrgen/generators/enum.py @@ -4,7 +4,7 @@ """Generate code to handle XDR enum types""" from generators import SourceGenerator, create_jinja2_environment -from xdr_ast import _XdrEnum, public_apis, big_endian +from xdr_ast import _XdrEnum, public_apis, big_endian, get_header_name class XdrEnumGenerator(SourceGenerator): @@ -51,3 +51,14 @@ class XdrEnumGenerator(SourceGenerator): else: template = self.environment.get_template("encoder/enum.j2") print(template.render(name=node.name)) + + def emit_maxsize(self, node: _XdrEnum) -> None: + """Emit one maxsize macro for an XDR enum type""" + macro_name = get_header_name().upper() + "_" + node.name + "_sz" + template = self.environment.get_template("maxsize/enum.j2") + print( + template.render( + macro=macro_name, + width=" + ".join(node.symbolic_width()), + ) + ) |
