Module dc_present

module dc_present

        ! Uses
    use dc_types, only: DP, TOKEN, STRING
    use dc_trace, only: BeginSub, EndSub

        ! Interfaces
    public interface present_and_eq
    public interface present_and_ne
    public interface present_select

        ! Subroutines and functions
    public function present_and_true (arg) result (result)
    public function present_and_false (arg) result (result)
    public function present_and_zero (arg) result (result)
    public function present_and_nonzero (arg) result (result)
    private function present_and_eq_integer (arg, val) result (result)
    private function present_and_eq_real (arg, val) result (result)
    private function present_and_eq_double (arg, val) result (result)
    private function present_and_ne_integer (arg, val) result (result)
    private function present_and_ne_real (arg, val) result (result)
    private function present_and_ne_double (arg, val) result (result)
    public function present_and_not_empty (arg) result (result)
    private function present_select_Char (invalid, default, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9) result (result)
    private function present_select_Int (invalid, default, d0, d1, d2, d3, d4, d5, d6, d7, d8, d9) result (result)
    private function present_select_Real (invalid, default, r0, r1, r2, r3, r4, r5, r6, r7, r8, r9) result (result)
    private function present_select_Double (invalid, default, f0, f1, f2, f3, f4, f5, f6, f7, f8, f9) result (result)
    private function present_select_Char_auto (invalid, default, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9) result (result)
    private function present_select_Int_auto (invalid, default, d0, d1, d2, d3, d4, d5, d6, d7, d8, d9) result (result)
    private function present_select_Real_auto (invalid, default, r0, r1, r2, r3, r4, r5, r6, r7, r8, r9) result (result)
    private function present_select_Double_auto (invalid, default, f0, f1, f2, f3, f4, f5, f6, f7, f8, f9) result (result)

end module dc_present

Description of Interfaces

present_and_eq

public interface present_and_eq
    module procedure present_and_eq_integer
    module procedure present_and_eq_real
    module procedure present_and_eq_double
end interface present_and_eq

present_and_ne

public interface present_and_ne
    module procedure present_and_ne_integer
    module procedure present_and_ne_real
    module procedure present_and_ne_double
end interface present_and_ne

present_select

public interface present_select
    module procedure present_select_Char
    module procedure present_select_Char_auto
    module procedure present_select_Int
    module procedure present_select_Int_auto
    module procedure present_select_Real
    module procedure present_select_Real_auto
    module procedure present_select_Double
    module procedure present_select_Double_auto
end interface present_select

Description of Subroutines and Functions

present_and_true

public function present_and_true (arg) result (result)
    logical, optional, intent(in) :: arg
    logical :: result
end function present_and_true

present_and_false

public function present_and_false (arg) result (result)
    logical, optional, intent(in) :: arg
    logical :: result
end function present_and_false

present_and_zero

public function present_and_zero (arg) result (result)
    integer, optional, intent(in) :: arg
    logical :: result
end function present_and_zero

present_and_nonzero

public function present_and_nonzero (arg) result (result)
    integer, optional, intent(in) :: arg
    logical :: result
end function present_and_nonzero

present_and_eq_integer

private function present_and_eq_integer (arg, val) result (result)
    integer, optional, intent(in) :: arg
    integer, intent(in) :: val
    logical :: result
end function present_and_eq_integer

present_and_eq_real

private function present_and_eq_real (arg, val) result (result)
    real, optional, intent(in) :: arg
    real, intent(in) :: val
    logical :: result
end function present_and_eq_real

present_and_eq_double

private function present_and_eq_double (arg, val) result (result)
    real (kind=DP), optional, intent(in) :: arg
    real (kind=DP), intent(in) :: val
    logical :: result
end function present_and_eq_double

present_and_ne_integer

private function present_and_ne_integer (arg, val) result (result)
    integer, optional, intent(in) :: arg
    integer, intent(in) :: val
    logical :: result
end function present_and_ne_integer

present_and_ne_real

private function present_and_ne_real (arg, val) result (result)
    real, optional, intent(in) :: arg
    real, intent(in) :: val
    logical :: result
end function present_and_ne_real

present_and_ne_double

private function present_and_ne_double (arg, val) result (result)
    real (kind=DP), optional, intent(in) :: arg
    real (kind=DP), intent(in) :: val
    logical :: result
end function present_and_ne_double

present_and_not_empty

public function present_and_not_empty (arg) result (result)
    character (len=*), optional, intent(in) :: arg
    logical :: result
end function present_and_not_empty

present_select_Char

private function present_select_Char (invalid, default, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9) result (result)
    character (len=*), intent(in) :: invalid
    character (len=*), intent(in) :: default
    character (len=*), optional, intent(in) :: c0
    character (len=*), optional, intent(in) :: c1
    character (len=*), optional, intent(in) :: c2
    character (len=*), optional, intent(in) :: c3
    character (len=*), optional, intent(in) :: c4
    character (len=*), optional, intent(in) :: c5
    character (len=*), optional, intent(in) :: c6
    character (len=*), optional, intent(in) :: c7
    character (len=*), optional, intent(in) :: c8
    character (len=*), optional, intent(in) :: c9
    character (len=STRING) :: result
end function present_select_Char

present_select_Int

private function present_select_Int (invalid, default, d0, d1, d2, d3, d4, d5, d6, d7, d8, d9) result (result)
    integer, intent(in) :: invalid
    integer, intent(in) :: default
    integer, optional, intent(in) :: d0
    integer, optional, intent(in) :: d1
    integer, optional, intent(in) :: d2
    integer, optional, intent(in) :: d3
    integer, optional, intent(in) :: d4
    integer, optional, intent(in) :: d5
    integer, optional, intent(in) :: d6
    integer, optional, intent(in) :: d7
    integer, optional, intent(in) :: d8
    integer, optional, intent(in) :: d9
    integer :: result
end function present_select_Int

present_select_Real

private function present_select_Real (invalid, default, r0, r1, r2, r3, r4, r5, r6, r7, r8, r9) result (result)
    real, intent(in) :: invalid
    real, intent(in) :: default
    real, optional, intent(in) :: r0
    real, optional, intent(in) :: r1
    real, optional, intent(in) :: r2
    real, optional, intent(in) :: r3
    real, optional, intent(in) :: r4
    real, optional, intent(in) :: r5
    real, optional, intent(in) :: r6
    real, optional, intent(in) :: r7
    real, optional, intent(in) :: r8
    real, optional, intent(in) :: r9
    real :: result
end function present_select_Real

present_select_Double

private function present_select_Double (invalid, default, f0, f1, f2, f3, f4, f5, f6, f7, f8, f9) result (result)
    real (kind=DP), intent(in) :: invalid
    real (kind=DP), intent(in) :: default
    real (kind=DP), optional, intent(in) :: f0
    real (kind=DP), optional, intent(in) :: f1
    real (kind=DP), optional, intent(in) :: f2
    real (kind=DP), optional, intent(in) :: f3
    real (kind=DP), optional, intent(in) :: f4
    real (kind=DP), optional, intent(in) :: f5
    real (kind=DP), optional, intent(in) :: f6
    real (kind=DP), optional, intent(in) :: f7
    real (kind=DP), optional, intent(in) :: f8
    real (kind=DP), optional, intent(in) :: f9
    real (kind=DP) :: result
end function present_select_Double

present_select_Char_auto

private function present_select_Char_auto (invalid, default, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9) result (result)
    logical, intent(in) :: invalid
    character (len=*), intent(in) :: default
    character (len=*), optional, intent(in) :: c0
    character (len=*), optional, intent(in) :: c1
    character (len=*), optional, intent(in) :: c2
    character (len=*), optional, intent(in) :: c3
    character (len=*), optional, intent(in) :: c4
    character (len=*), optional, intent(in) :: c5
    character (len=*), optional, intent(in) :: c6
    character (len=*), optional, intent(in) :: c7
    character (len=*), optional, intent(in) :: c8
    character (len=*), optional, intent(in) :: c9
    character (len=STRING) :: result
end function present_select_Char_auto

present_select_Int_auto

private function present_select_Int_auto (invalid, default, d0, d1, d2, d3, d4, d5, d6, d7, d8, d9) result (result)
    logical, intent(in) :: invalid
    integer, intent(in) :: default
    integer, optional, intent(in) :: d0
    integer, optional, intent(in) :: d1
    integer, optional, intent(in) :: d2
    integer, optional, intent(in) :: d3
    integer, optional, intent(in) :: d4
    integer, optional, intent(in) :: d5
    integer, optional, intent(in) :: d6
    integer, optional, intent(in) :: d7
    integer, optional, intent(in) :: d8
    integer, optional, intent(in) :: d9
    integer :: result
end function present_select_Int_auto

present_select_Real_auto

private function present_select_Real_auto (invalid, default, r0, r1, r2, r3, r4, r5, r6, r7, r8, r9) result (result)
    logical, intent(in) :: invalid
    real, intent(in) :: default
    real, optional, intent(in) :: r0
    real, optional, intent(in) :: r1
    real, optional, intent(in) :: r2
    real, optional, intent(in) :: r3
    real, optional, intent(in) :: r4
    real, optional, intent(in) :: r5
    real, optional, intent(in) :: r6
    real, optional, intent(in) :: r7
    real, optional, intent(in) :: r8
    real, optional, intent(in) :: r9
    real :: result
end function present_select_Real_auto

present_select_Double_auto

private function present_select_Double_auto (invalid, default, f0, f1, f2, f3, f4, f5, f6, f7, f8, f9) result (result)
    logical, intent(in) :: invalid
    real (kind=DP), intent(in) :: default
    real (kind=DP), optional, intent(in) :: f0
    real (kind=DP), optional, intent(in) :: f1
    real (kind=DP), optional, intent(in) :: f2
    real (kind=DP), optional, intent(in) :: f3
    real (kind=DP), optional, intent(in) :: f4
    real (kind=DP), optional, intent(in) :: f5
    real (kind=DP), optional, intent(in) :: f6
    real (kind=DP), optional, intent(in) :: f7
    real (kind=DP), optional, intent(in) :: f8
    real (kind=DP), optional, intent(in) :: f9
    real (kind=DP) :: result
end function present_select_Double_auto