xref: /linux/tools/net/sunrpc/xdrgen/generators/passthru.py (revision c17ee635fd3a482b2ad2bf5e269755c2eae5f25e)
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