1*6bc85babSChuck Lever#!/usr/bin/env python3 2*6bc85babSChuck Lever# ex: set filetype=python: 3*6bc85babSChuck Lever 4*6bc85babSChuck Lever"""Generate code for XDR pass-through lines""" 5*6bc85babSChuck Lever 6*6bc85babSChuck Leverfrom generators import SourceGenerator, create_jinja2_environment 7*6bc85babSChuck Leverfrom xdr_ast import _XdrPassthru 8*6bc85babSChuck Lever 9*6bc85babSChuck Lever 10*6bc85babSChuck Leverclass XdrPassthruGenerator(SourceGenerator): 11*6bc85babSChuck Lever """Generate source code for XDR pass-through content""" 12*6bc85babSChuck Lever 13*6bc85babSChuck Lever def __init__(self, language: str, peer: str): 14*6bc85babSChuck Lever """Initialize an instance of this class""" 15*6bc85babSChuck Lever self.environment = create_jinja2_environment(language, "passthru") 16*6bc85babSChuck Lever self.peer = peer 17*6bc85babSChuck Lever 18*6bc85babSChuck Lever def emit_definition(self, node: _XdrPassthru) -> None: 19*6bc85babSChuck Lever """Emit one pass-through line""" 20*6bc85babSChuck Lever template = self.environment.get_template("definition.j2") 21*6bc85babSChuck Lever print(template.render(content=node.content)) 22*6bc85babSChuck Lever 23*6bc85babSChuck Lever def emit_decoder(self, node: _XdrPassthru) -> None: 24*6bc85babSChuck Lever """Emit one pass-through line""" 25*6bc85babSChuck Lever template = self.environment.get_template("source.j2") 26*6bc85babSChuck Lever print(template.render(content=node.content)) 27