Skip to content

Commit

Permalink
xdrgen: emit maxsize macros
Browse files Browse the repository at this point in the history
Add "definitions" subcommand logic to emit maxsize macros in
generated code.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
  • Loading branch information
Chuck Lever committed Nov 11, 2024
1 parent e9e1e7e commit ac15933
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 5 deletions.
24 changes: 21 additions & 3 deletions tools/net/sunrpc/xdrgen/subcmds/definitions.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,7 @@
logger.setLevel(logging.INFO)


def emit_header_definitions(
root: Specification, language: str, peer: str
) -> None:
def emit_header_definitions(root: Specification, language: str, peer: str) -> None:
"""Emit header definitions"""
for definition in root.definitions:
if isinstance(definition.value, _XdrConstant):
Expand All @@ -52,6 +50,25 @@ def emit_header_definitions(
gen.emit_definition(definition.value)


def emit_header_maxsize(root: Specification, language: str, peer: str) -> None:
"""Emit header maxsize macros"""
print("")
for definition in root.definitions:
if isinstance(definition.value, _XdrEnum):
gen = XdrEnumGenerator(language, peer)
elif isinstance(definition.value, _XdrPointer):
gen = XdrPointerGenerator(language, peer)
elif isinstance(definition.value, _XdrTypedef):
gen = XdrTypedefGenerator(language, peer)
elif isinstance(definition.value, _XdrStruct):
gen = XdrStructGenerator(language, peer)
elif isinstance(definition.value, _XdrUnion):
gen = XdrUnionGenerator(language, peer)
else:
continue
gen.emit_maxsize(definition.value)


def handle_parse_error(e: UnexpectedInput) -> bool:
"""Simple parse error reporting, no recovery attempted"""
print(e)
Expand All @@ -71,6 +88,7 @@ def subcmd(args: Namespace) -> int:
gen.emit_definition(args.filename, ast)

emit_header_definitions(ast, args.language, args.peer)
emit_header_maxsize(ast, args.language, args.peer)

gen = XdrHeaderBottomGenerator(args.language, args.peer)
gen.emit_definition(args.filename, ast)
Expand Down
3 changes: 1 addition & 2 deletions tools/net/sunrpc/xdrgen/subcmds/source.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,7 @@ def generate_client_source(filename: str, root: Specification, language: str) ->
gen = XdrSourceTopGenerator(language, "client")
gen.emit_source(filename, root)

# cel: todo: client needs XDR size macros

print("")
for definition in root.definitions:
emit_source_encoder(definition.value, language, "client")
for definition in root.definitions:
Expand Down

0 comments on commit ac15933

Please sign in to comment.