Source code for fgen.wrapper_building.fortran_manager_module

"""
Generation of the Fortran manager module
"""

from pathlib import Path

from attrs import define

from fgen.data_models import Module, Package, PackageSharedElements
from fgen.jinja_environment import (
    JINJA_ENV,
    get_template_in_directory,
    post_process_jinja_rendering,
)


[docs]@define class FortranManagerModuleBuilder: """ Builder of Fortran manager modules """ package: Package """ Package for which the builder is building wrappers """ module: Module """ Module for which to build the wrapper """ shared: PackageSharedElements """ Elements which have to be shared across the package For example, the names of functions which are used in more than one wrapper module. """
[docs]def generate_fortran_manager_module(builder: FortranManagerModuleBuilder) -> str: """ Generate the Fortran manager module Parameters ---------- builder Builder to use to generate the Fortran manager module Returns ------- Fortran manager module as code """ template = get_template_in_directory( "fortran-manager-module.f90.jinja", Path(__file__).parent, JINJA_ENV ) result = post_process_jinja_rendering(template.render(builder=builder)) return result