1#!/usr/bin/env python3 2# ex: set filetype=python: 3 4"""Generate header top boilerplate""" 5 6import os.path 7import time 8 9from generators import Boilerplate, header_guard_infix 10from generators import create_jinja2_environment, get_jinja2_template 11from xdr_ast import Specification 12 13 14class XdrHeaderTopGenerator(Boilerplate): 15 """Generate header boilerplate""" 16 17 def __init__(self, language: str, peer: str): 18 """Initialize an instance of this class""" 19 self.environment = create_jinja2_environment(language, "header_top") 20 self.peer = peer 21 22 def emit_declaration(self, filename: str, root: Specification) -> None: 23 """Emit the top header guard""" 24 template = get_jinja2_template(self.environment, "declaration", "header") 25 print( 26 template.render( 27 infix=header_guard_infix(filename), 28 filename=filename, 29 mtime=time.ctime(os.path.getmtime(filename)), 30 ) 31 ) 32 33 def emit_definition(self, filename: str, root: Specification) -> None: 34 """Emit the top header guard""" 35 template = get_jinja2_template(self.environment, "definition", "header") 36 print( 37 template.render( 38 infix=header_guard_infix(filename), 39 filename=filename, 40 mtime=time.ctime(os.path.getmtime(filename)), 41 ) 42 ) 43 44 def emit_source(self, filename: str, root: Specification) -> None: 45 pass 46