aboutsummaryrefslogtreecommitdiffstats
path: root/tools/net/sunrpc/xdrgen/generators/enum.py
diff options
context:
space:
mode:
authorChuck Lever <chuck.lever@oracle.com>2024-10-03 14:54:45 -0400
committerChuck Lever <chuck.lever@oracle.com>2024-11-11 13:42:05 -0500
commite9e1e7e75acd737cf41c6ee64d62da6ea0c10036 (patch)
tree3cfd4d4186ae968d4031dacfef9da44b4c0efede /tools/net/sunrpc/xdrgen/generators/enum.py
parentxdrgen: XDR width for union types (diff)
downloadlinux-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.py13
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()),
+ )
+ )