prepare_get_var Subroutine

private subroutine prepare_get_var(cfg, var_name, var_type, var_size, ix)

Helper routine to get variables. This is useful because a lot of the same code is executed for the different types of variables.

Arguments

Type IntentOptional Attributes Name
type(CFG_t), intent(inout) :: cfg
character(len=*), intent(in) :: var_name
integer, intent(in) :: var_type
integer, intent(in) :: var_size
integer, intent(out) :: ix

Calls

proc~~prepare_get_var~~CallsGraph proc~prepare_get_var prepare_get_var proc~get_var_index get_var_index proc~prepare_get_var->proc~get_var_index proc~handle_error handle_error proc~prepare_get_var->proc~handle_error proc~binary_search_variable binary_search_variable proc~get_var_index->proc~binary_search_variable

Called by

proc~~prepare_get_var~~CalledByGraph proc~prepare_get_var prepare_get_var proc~get_int get_int proc~get_int->proc~prepare_get_var proc~get_int_array get_int_array proc~get_int_array->proc~prepare_get_var proc~get_logic get_logic proc~get_logic->proc~prepare_get_var proc~get_logic_array get_logic_array proc~get_logic_array->proc~prepare_get_var proc~get_real get_real proc~get_real->proc~prepare_get_var proc~get_real_array get_real_array proc~get_real_array->proc~prepare_get_var proc~get_string get_string proc~get_string->proc~prepare_get_var proc~get_string_array get_string_array proc~get_string_array->proc~prepare_get_var interface~cfg_get CFG_get interface~cfg_get->proc~get_int interface~cfg_get->proc~get_int_array interface~cfg_get->proc~get_logic interface~cfg_get->proc~get_logic_array interface~cfg_get->proc~get_real interface~cfg_get->proc~get_real_array interface~cfg_get->proc~get_string interface~cfg_get->proc~get_string_array proc~add_get_int add_get_int proc~add_get_int->proc~get_int proc~add_get_int_array add_get_int_array proc~add_get_int_array->proc~get_int_array proc~add_get_logic add_get_logic proc~add_get_logic->proc~get_logic proc~add_get_logic_array add_get_logic_array proc~add_get_logic_array->proc~get_logic_array proc~add_get_real add_get_real proc~add_get_real->proc~get_real proc~add_get_real_array add_get_real_array proc~add_get_real_array->proc~get_real_array proc~add_get_string add_get_string proc~add_get_string->proc~get_string proc~add_get_string_array add_get_string_array proc~add_get_string_array->proc~get_string_array interface~cfg_add_get CFG_add_get interface~cfg_add_get->proc~add_get_int interface~cfg_add_get->proc~add_get_int_array interface~cfg_add_get->proc~add_get_logic interface~cfg_add_get->proc~add_get_logic_array interface~cfg_add_get->proc~add_get_real interface~cfg_add_get->proc~add_get_real_array interface~cfg_add_get->proc~add_get_string interface~cfg_add_get->proc~add_get_string_array

Source Code

  subroutine prepare_get_var(cfg, var_name, var_type, var_size, ix)
    type(CFG_t), intent(inout)    :: cfg
    character(len=*), intent(in)  :: var_name
    integer, intent(in)           :: var_type, var_size
    integer, intent(out)          :: ix
    character(len=CFG_string_len) :: err_string

    call get_var_index(cfg, var_name, ix)

    if (ix == -1) then
       call handle_error("CFG_get: variable ["//var_name//"] not found")
    else if (cfg%vars(ix)%var_type /= var_type) then
       write(err_string, fmt="(A)") "CFG_get: variable [" &
            // var_name // "] has different type (" // &
            trim(CFG_type_names(cfg%vars(ix)%var_type)) // &
            ") than requested (" // trim(CFG_type_names(var_type)) // ")"
       call handle_error(err_string)
    else if (cfg%vars(ix)%var_size /= var_size) then
       write(err_string, fmt="(A,I0,A,I0,A)") "CFG_get: variable [" // &
          var_name // "] has different size (", cfg%vars(ix)%var_size,&
           ") than requested (", var_size, ")"
       call handle_error(err_string)
    else                        ! All good, variable will be used
       cfg%vars(ix)%used = .true.
    end if
  end subroutine prepare_get_var