Skip to content

Commit ac15933

Browse files
committed
xdrgen: emit maxsize macros
Add "definitions" subcommand logic to emit maxsize macros in generated code. Signed-off-by: Chuck Lever <[email protected]>
1 parent e9e1e7e commit ac15933

File tree

2 files changed

+22
-5
lines changed

2 files changed

+22
-5
lines changed

tools/net/sunrpc/xdrgen/subcmds/definitions.py

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,7 @@
2828
logger.setLevel(logging.INFO)
2929

3030

31-
def emit_header_definitions(
32-
root: Specification, language: str, peer: str
33-
) -> None:
31+
def emit_header_definitions(root: Specification, language: str, peer: str) -> None:
3432
"""Emit header definitions"""
3533
for definition in root.definitions:
3634
if isinstance(definition.value, _XdrConstant):
@@ -52,6 +50,25 @@ def emit_header_definitions(
5250
gen.emit_definition(definition.value)
5351

5452

53+
def emit_header_maxsize(root: Specification, language: str, peer: str) -> None:
54+
"""Emit header maxsize macros"""
55+
print("")
56+
for definition in root.definitions:
57+
if isinstance(definition.value, _XdrEnum):
58+
gen = XdrEnumGenerator(language, peer)
59+
elif isinstance(definition.value, _XdrPointer):
60+
gen = XdrPointerGenerator(language, peer)
61+
elif isinstance(definition.value, _XdrTypedef):
62+
gen = XdrTypedefGenerator(language, peer)
63+
elif isinstance(definition.value, _XdrStruct):
64+
gen = XdrStructGenerator(language, peer)
65+
elif isinstance(definition.value, _XdrUnion):
66+
gen = XdrUnionGenerator(language, peer)
67+
else:
68+
continue
69+
gen.emit_maxsize(definition.value)
70+
71+
5572
def handle_parse_error(e: UnexpectedInput) -> bool:
5673
"""Simple parse error reporting, no recovery attempted"""
5774
print(e)
@@ -71,6 +88,7 @@ def subcmd(args: Namespace) -> int:
7188
gen.emit_definition(args.filename, ast)
7289

7390
emit_header_definitions(ast, args.language, args.peer)
91+
emit_header_maxsize(ast, args.language, args.peer)
7492

7593
gen = XdrHeaderBottomGenerator(args.language, args.peer)
7694
gen.emit_definition(args.filename, ast)

tools/net/sunrpc/xdrgen/subcmds/source.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,7 @@ def generate_client_source(filename: str, root: Specification, language: str) ->
8383
gen = XdrSourceTopGenerator(language, "client")
8484
gen.emit_source(filename, root)
8585

86-
# cel: todo: client needs XDR size macros
87-
86+
print("")
8887
for definition in root.definitions:
8988
emit_source_encoder(definition.value, language, "client")
9089
for definition in root.definitions:

0 commit comments

Comments
 (0)