cli_get_int32 Subroutine

private subroutine cli_get_int32(this, name, value, err)

Read a value as integer(int32), strictly.

Conversion goes through pic_tokenizer’s parse_int, so 42x is ERROR_PARSE rather than 42.

Type Bound

cli_t

Arguments

Type IntentOptional Attributes Name
class(cli_t), intent(in) :: this
character(len=*), intent(in) :: name

Long name of a declared entry.

integer(kind=int32), intent(out) :: value

Parsed value; zero when the conversion failed.

type(error_t), intent(inout), optional :: err

Set on an undeclared name or an unparsable value.


Calls

proc~~cli_get_int32~~CallsGraph proc~cli_get_int32 cli_t%cli_get_int32 interface~parse_int parse_int proc~cli_get_int32->interface~parse_int proc~cli_find cli_t%cli_find proc~cli_get_int32->proc~cli_find proc~cli_get_string cli_t%cli_get_string proc~cli_get_int32->proc~cli_get_string proc~error_has_error error_t%error_has_error proc~cli_get_int32->proc~error_has_error proc~fail~2 fail proc~cli_get_int32->proc~fail~2 proc~parse_int_int32_char parse_int_int32_char interface~parse_int->proc~parse_int_int32_char proc~parse_int_int32_string parse_int_int32_string interface~parse_int->proc~parse_int_int32_string proc~parse_int_int64_char parse_int_int64_char interface~parse_int->proc~parse_int_int64_char proc~parse_int_int64_string parse_int_int64_string interface~parse_int->proc~parse_int_int64_string proc~cli_get_string->proc~cli_find proc~cli_get_string->proc~fail~2 proc~error_set error_t%error_set proc~fail~2->proc~error_set proc~parse_int_int32_char->proc~error_has_error proc~parse_int_int32_char->proc~error_set interface~strip strip proc~parse_int_int32_char->interface~strip proc~parse_integer_wide parse_integer_wide proc~parse_int_int32_char->proc~parse_integer_wide proc~parse_int_int32_string->proc~parse_int_int32_char proc~parse_int_int64_char->proc~parse_integer_wide proc~parse_int_int64_string->proc~parse_integer_wide proc~strip_char strip_char interface~strip->proc~strip_char proc~strip_string strip_string interface~strip->proc~strip_string proc~parse_integer_wide->proc~error_set proc~parse_integer_wide->interface~strip proc~strip_string->interface~strip

Variables

Type Visibility Attributes Name Initial
type(error_t), private :: local
type(string_type), private :: text

Source Code

   subroutine cli_get_int32(this, name, value, err)
      !! Read a value as `integer(int32)`, strictly.
      !!
      !! Conversion goes through `pic_tokenizer`'s `parse_int`, so `42x` is
      !! `ERROR_PARSE` rather than 42.
      class(cli_t), intent(in) :: this
      character(len=*), intent(in) :: name
         !! Long name of a declared entry.
      integer(int32), intent(out) :: value
         !! Parsed value; zero when the conversion failed.
      type(error_t), intent(inout), optional :: err
         !! Set on an undeclared name or an unparsable value.

      type(string_type) :: text
      type(error_t) :: local

      value = 0_int32
      call this%get_string(name, text, err)
      if (present(err)) then
         if (err%has_error()) return
      else
         if (this%find(name) == 0_default_int) return
      end if
      call parse_int(char(text), value, local)
      if (local%has_error()) then
         call fail(err, ERROR_PARSE, "pic_cli: "//name//" is not an integer: "//char(text))
      end if
   end subroutine cli_get_int32