diff options
| author | Chuck Lever <[email protected]> | 2024-10-03 18:54:45 +0000 |
|---|---|---|
| committer | Chuck Lever <[email protected]> | 2024-11-11 18:42:05 +0000 |
| commit | e9e1e7e75acd737cf41c6ee64d62da6ea0c10036 (patch) | |
| tree | 3cfd4d4186ae968d4031dacfef9da44b4c0efede /tools/net/sunrpc/xdrgen/generators/struct.py | |
| parent | xdrgen: XDR width for union types (diff) | |
| download | kernel-e9e1e7e75acd737cf41c6ee64d62da6ea0c10036.tar.gz kernel-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 <[email protected]>
Diffstat (limited to 'tools/net/sunrpc/xdrgen/generators/struct.py')
| -rw-r--r-- | tools/net/sunrpc/xdrgen/generators/struct.py | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/tools/net/sunrpc/xdrgen/generators/struct.py b/tools/net/sunrpc/xdrgen/generators/struct.py index 6dd7f4d7cd53..64911de46f62 100644 --- a/tools/net/sunrpc/xdrgen/generators/struct.py +++ b/tools/net/sunrpc/xdrgen/generators/struct.py @@ -12,7 +12,7 @@ from xdr_ast import _XdrBasic, _XdrString from xdr_ast import _XdrFixedLengthOpaque, _XdrVariableLengthOpaque from xdr_ast import _XdrFixedLengthArray, _XdrVariableLengthArray from xdr_ast import _XdrOptionalData, _XdrStruct, _XdrDeclaration -from xdr_ast import public_apis +from xdr_ast import public_apis, get_header_name def emit_struct_declaration(environment: Environment, node: _XdrStruct) -> None: @@ -247,6 +247,18 @@ def emit_struct_encoder(environment: Environment, node: _XdrStruct) -> None: print(template.render()) +def emit_struct_maxsize(environment: Environment, node: _XdrStruct) -> None: + """Emit one maxsize macro for an XDR struct type""" + macro_name = get_header_name().upper() + "_" + node.name + "_sz" + template = get_jinja2_template(environment, "maxsize", "struct") + print( + template.render( + macro=macro_name, + width=" + ".join(node.symbolic_width()), + ) + ) + + class XdrStructGenerator(SourceGenerator): """Generate source code for XDR structs""" @@ -270,3 +282,7 @@ class XdrStructGenerator(SourceGenerator): def emit_encoder(self, node: _XdrStruct) -> None: """Emit one encoder function for an XDR struct type""" emit_struct_encoder(self.environment, node) + + def emit_maxsize(self, node: _XdrStruct) -> None: + """Emit one maxsize macro for an XDR struct type""" + emit_struct_maxsize(self.environment, node) |
