Commit 63a23dbc authored by Henderson, Shane's avatar Henderson, Shane
Browse files

Merge branch 'stol' into 'master'

parents 3c72292f cbbd4bf1
Loading
Loading
Loading
Loading
Loading
+45 −0
Original line number Diff line number Diff line
@@ -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
@@ -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