ConsoleClass.f90 Source File


Contents

Source Code


Source Code

module ConsoleClass
    use MathClass
    implicit none

    type :: Console_
        character(:),allocatable :: line
    contains
        procedure,public :: log => logConsole
        procedure,public :: write => logConsole
        procedure,public :: writeLine => logConsole
        procedure,public :: read => readConsole
        procedure,public :: readLine => readlineConsole
        procedure,public :: in => inConsole
        
        procedure,public :: asInt => asIntConsole
        procedure,public :: asInteger => asIntConsole
        procedure,public :: as_Int => asIntConsole
        procedure,public :: as_Integer => asIntConsole

        procedure,public :: asReal => asRealConsole
        procedure,public :: as_Real => asRealConsole
        procedure,public :: asFloat => asRealConsole
        procedure,public :: as_Float => asRealConsole
        procedure,public :: asDouble => asRealConsole
        procedure,public :: as_Double => asRealConsole
        
        
        procedure,public :: asChar => asCharConsole
    end type
contains

! ###################################################################
subroutine logConsole(obj,line)
    class(Console_),intent(inout) :: obj
    character(*),intent(in) :: line

    
    write(*,*) trim(line)
    obj%line = line

end subroutine
! ###################################################################


! ###################################################################
subroutine readConsole(obj) 
    class(Console_),intent(inout) :: obj
    character(3000) :: aline
    read(*,*) aline
    obj%line = trim(aline)
end subroutine
! ###################################################################


! ###################################################################
function readLineConsole(obj) result(line)
    class(Console_),intent(inout) :: obj
    character(3000) :: aline
    character(:),allocatable :: line

    read(*,*) aline
    line = trim(aline)
    obj%line = line

end function
! ###################################################################


! ###################################################################
function asIntConsole(obj) result(ret)
    class(Console_),intent(inout) :: obj
    integer(int32) :: ret
    ret = fint(obj%line)

end function
! ###################################################################


! ###################################################################
function asRealConsole(obj) result(ret)
    class(Console_),intent(inout) :: obj
    real(real64) :: ret
    
    ret = freal(obj%line)

end function
! ###################################################################


! ###################################################################
function asCharConsole(obj) result(ret)
    class(Console_),intent(inout) :: obj
    character(:),allocatable :: ret
    
    ret = trim(obj%line)

end function
! ###################################################################

! ###################################################################
function inConsole(obj,word) result(ret)
    class(Console_),intent(inout) :: obj
    character(*),intent(in) :: word
    logical :: ret

    if( index(obj%line,trim(word))/=0 )then
        ret = .true.
    else
        ret = .false.
    endif
end function
! ###################################################################

end module