!> *Error passing* !> !> A very basic demo to get the idea. ! module m_error_v_passing use m_error_v, only: ErrorV, NO_ERROR_CODE implicit none (type, external) private public :: pass_error, pass_errors contains function pass_error(inv) result(is_err) !! Pass an error !! !! If an error is supplied, we return `.true.`, otherwise `.false.`. type(ErrorV), intent(in) :: inv !! Input error value logical :: is_err !! Whether `inv` is an error or not is_err = (inv % code /= NO_ERROR_CODE) end function pass_error function pass_errors(invs, n) result(is_errs) !! Pass a number of errors !! !! For each value in `invs`, if an error is supplied, we return `.true.`, otherwise `.false.`. type(ErrorV), dimension(n), intent(in) :: invs !! Input error values integer, intent(in) :: n !! Number of values being passed logical, dimension(n) :: is_errs !! Whether each value in `invs` is an error or not integer :: i do i = 1, n is_errs(i) = pass_error(invs(i)) end do end function pass_errors end module m_error_v_passing