Loading src/Strings.f90 +45 −0 Original line number Diff line number Diff line Loading @@ -116,6 +116,10 @@ TYPE :: StringType !> copydetails Strings::str_to_sik PROCEDURE,PASS :: str_to_sik GENERIC :: stoi => str_to_sik !> copybrief Strings::str_to_sbk !> copydetails Strings::str_to_sbk PROCEDURE,PASS :: str_to_sbk GENERIC :: stob => str_to_sbk !> copybrief Strings::str_to_srk !> copydetails Strings::str_to_srk PROCEDURE,PASS :: str_to_srk Loading Loading @@ -1322,6 +1326,47 @@ ELEMENTAL FUNCTION str_to_sik(this,stt,stp) RESULT(i) ENDFUNCTION str_to_sik ! !------------------------------------------------------------------------------- !> @brief convert a string to a logical !> @param this the string being converted !> @param stt position for starting conversion !> @param stp end of conversion !> @returns l the logical that will be output !> ELEMENTAL FUNCTION str_to_sbk(this,stt,stp) RESULT(l) CLASS(StringType),INTENT(IN) :: this INTEGER(SIK),INTENT(IN),OPTIONAL :: stt INTEGER(SIK),INTENT(IN),OPTIONAL :: stp LOGICAL(SBK) :: l ! INTEGER(SIK) :: begStr,endStr,ioerr TYPE(StringType) :: tmpstr !Bypass the world if the string isn't allocated ioerr = -HUGE(ioerr) IF(ALLOCATED(this%s)) THEN !Find the beginning IF(PRESENT(stt)) THEN begStr = stt ELSE begStr = 1 ENDIF !Find the end IF(PRESENT(stp)) THEN endStr = stp ELSE endStr = LEN(this%s) ENDIF tmpstr = this%s(begStr:endStr) tmpstr = tmpstr%upper() l=.FALSE. IF(TRIM(tmpstr) == "T" .OR. TRIM(tmpstr) == "TRUE" .OR. TRIM(tmpstr) == "1") THEN l=.TRUE. ENDIF ENDIF ENDFUNCTION str_to_sbk ! !------------------------------------------------------------------------------- !> @brief convert a string to a float !> @param this the string being converted !> @param stt position for starting conversion Loading Loading
src/Strings.f90 +45 −0 Original line number Diff line number Diff line Loading @@ -116,6 +116,10 @@ TYPE :: StringType !> copydetails Strings::str_to_sik PROCEDURE,PASS :: str_to_sik GENERIC :: stoi => str_to_sik !> copybrief Strings::str_to_sbk !> copydetails Strings::str_to_sbk PROCEDURE,PASS :: str_to_sbk GENERIC :: stob => str_to_sbk !> copybrief Strings::str_to_srk !> copydetails Strings::str_to_srk PROCEDURE,PASS :: str_to_srk Loading Loading @@ -1322,6 +1326,47 @@ ELEMENTAL FUNCTION str_to_sik(this,stt,stp) RESULT(i) ENDFUNCTION str_to_sik ! !------------------------------------------------------------------------------- !> @brief convert a string to a logical !> @param this the string being converted !> @param stt position for starting conversion !> @param stp end of conversion !> @returns l the logical that will be output !> ELEMENTAL FUNCTION str_to_sbk(this,stt,stp) RESULT(l) CLASS(StringType),INTENT(IN) :: this INTEGER(SIK),INTENT(IN),OPTIONAL :: stt INTEGER(SIK),INTENT(IN),OPTIONAL :: stp LOGICAL(SBK) :: l ! INTEGER(SIK) :: begStr,endStr,ioerr TYPE(StringType) :: tmpstr !Bypass the world if the string isn't allocated ioerr = -HUGE(ioerr) IF(ALLOCATED(this%s)) THEN !Find the beginning IF(PRESENT(stt)) THEN begStr = stt ELSE begStr = 1 ENDIF !Find the end IF(PRESENT(stp)) THEN endStr = stp ELSE endStr = LEN(this%s) ENDIF tmpstr = this%s(begStr:endStr) tmpstr = tmpstr%upper() l=.FALSE. IF(TRIM(tmpstr) == "T" .OR. TRIM(tmpstr) == "TRUE" .OR. TRIM(tmpstr) == "1") THEN l=.TRUE. ENDIF ENDIF ENDFUNCTION str_to_sbk ! !------------------------------------------------------------------------------- !> @brief convert a string to a float !> @param this the string being converted !> @param stt position for starting conversion Loading