from generators import SourceGenerator from generators import create_jinja2_environment, get_jinja2_template
from xdr_ast import _XdrBasic, _XdrUnion, _XdrVoid, get_header_name from xdr_ast import _XdrDeclaration, _XdrCaseSpec, public_apis, big_endian
def emit_union_declaration(environment: Environment, node: _XdrUnion) -> None: """Emit one declaration pair for an XDR union type""" if node.name in public_apis:
template = get_jinja2_template(environment, "declaration", "close")
print(template.render(name=node.name))
def emit_union_switch_spec_decoder(
environment: Environment, node: _XdrDeclaration
) -> None: """Emit a decoder for an XDR union's discriminant""" assert isinstance(node, _XdrBasic)
template = get_jinja2_template(environment, "decoder", "switch_spec")
print(template.render(name=node.name, type=node.spec.type_name))
def emit_union_case_spec_decoder(
environment: Environment, node: _XdrCaseSpec, big_endian_discriminant: bool
) -> None: """Emit decoder functions for an XDR union's case arm"""
if isinstance(node.arm, _XdrVoid): return
if big_endian_discriminant:
template = get_jinja2_template(environment, "decoder", "case_spec_be") else:
template = get_jinja2_template(environment, "decoder", "case_spec") for case in node.values:
print(template.render(case=case))
def emit_union_default_spec_decoder(environment: Environment, node: _XdrUnion) -> None: """Emit a decoder function for an XDR union's default arm"""
default_case = node.default
# Avoid a gcc warning about a default case with boolean discriminant if default_case isNoneand node.discriminant.spec.type_name == "bool": return
def emit_union_switch_spec_encoder(
environment: Environment, node: _XdrDeclaration
) -> None: """Emit an encoder for an XDR union's discriminant""" assert isinstance(node, _XdrBasic)
template = get_jinja2_template(environment, "encoder", "switch_spec")
print(template.render(name=node.name, type=node.spec.type_name))
def emit_union_case_spec_encoder(
environment: Environment, node: _XdrCaseSpec, big_endian_discriminant: bool
) -> None: """Emit encoder functions for an XDR union's case arm"""
if isinstance(node.arm, _XdrVoid): return
if big_endian_discriminant:
template = get_jinja2_template(environment, "encoder", "case_spec_be") else:
template = get_jinja2_template(environment, "encoder", "case_spec") for case in node.values:
print(template.render(case=case))
def emit_union_default_spec_encoder(environment: Environment, node: _XdrUnion) -> None: """Emit an encoder function for an XDR union's default arm"""
default_case = node.default
# Avoid a gcc warning about a default case with boolean discriminant if default_case isNoneand node.discriminant.spec.type_name == "bool": return
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.