mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 17:13:52 +02:00
xdrgen: emit maxsize macros
Add "definitions" subcommand logic to emit maxsize macros in generated code. Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
This commit is contained in:
parent
e9e1e7e75a
commit
ac159338d5
|
|
@ -28,9 +28,7 @@ from xdr_parse import xdr_parser, set_xdr_annotate
|
|||
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):
|
||||
|
|
@ -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)
|
||||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user