!> Wrapper for interfacing `m_get_wavelength` with python
!>
!> Written by hand here.
!> Generation to be automated in future (including docstrings of some sort).
!> One other note:
!> This function returns a standard Fortran type.
!> In future, we will want to add in returning Fortran derived types too.
!> Doing that will require adding in an extra 'manager' layer
!> so there will be one extra file compared to what we have here.
module m_get_wavelength_w  ! Convention to date: just suffix wrappers with _w

    use m_get_wavelength, only: o_get_wavelength => get_wavelength
    ! We won't always need the renaming trick,
    ! but here we do as the wrapper function
    ! and the original function should have the same name.
    ! ("o_" for original)

    implicit none (type, external)
    private

    public :: get_wavelength

contains

    pure function get_wavelength(frequency) result(wavelength)

        ! Annoying that this has to be injected everywhere,
        ! but ok it can be automated.
        integer, parameter :: dp = selected_real_kind(15, 307)

        real(kind=dp), intent(in) :: frequency
            !! Frequency

        real(kind=dp) :: wavelength
            !! Corresponding wavelength

        wavelength = o_get_wavelength(frequency)

    end function get_wavelength

end module m_get_wavelength_w
