summaryrefslogtreecommitdiff
path: root/tools/net/sunrpc/xdrgen/generators/enum.py
diff options
context:
space:
mode:
authorChuck Lever <chuck.lever@oracle.com>2024-09-29 20:50:16 -0400
committerChuck Lever <chuck.lever@oracle.com>2024-11-11 13:42:00 -0500
commitb376d519bd142c65ba9bba35db12b6be95b46893 (patch)
treeebe7d15791bfb9aba385de6a2bac3a2c58a62122 /tools/net/sunrpc/xdrgen/generators/enum.py
parent6e853dcd2d3d6f796597c1042340a2de0ce2469f (diff)
xdrgen: Implement big-endian enums
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.py17
1 files changed, 13 insertions, 4 deletions
diff --git a/tools/net/sunrpc/xdrgen/generators/enum.py b/tools/net/sunrpc/xdrgen/generators/enum.py
index e37b5c297821..e63f45b8eb74 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
+from xdr_ast import _XdrEnum, public_apis, big_endian
class XdrEnumGenerator(SourceGenerator):
@@ -30,15 +30,24 @@ class XdrEnumGenerator(SourceGenerator):
for enumerator in node.enumerators:
print(template.render(name=enumerator.name, value=enumerator.value))
- template = self.environment.get_template("definition/close.j2")
+ if node.name in big_endian:
+ template = self.environment.get_template("definition/close_be.j2")
+ else:
+ 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")
+ if node.name in big_endian:
+ template = self.environment.get_template("decoder/enum_be.j2")
+ else:
+ 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")
+ if node.name in big_endian:
+ template = self.environment.get_template("encoder/enum_be.j2")
+ else:
+ template = self.environment.get_template("encoder/enum.j2")
print(template.render(name=node.name))