binary_search_variable Subroutine

private subroutine binary_search_variable(cfg, var_name, ix)

Performa a binary search for the variable 'var_name'

Arguments

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

Called by

proc~~binary_search_variable~~CalledByGraph proc~binary_search_variable binary_search_variable proc~get_var_index get_var_index proc~get_var_index->proc~binary_search_variable proc~cfg_get_size CFG_get_size proc~cfg_get_size->proc~get_var_index proc~cfg_get_type CFG_get_type proc~cfg_get_type->proc~get_var_index proc~cfg_read_file CFG_read_file proc~cfg_read_file->proc~get_var_index proc~prepare_store_var prepare_store_var proc~cfg_read_file->proc~prepare_store_var proc~prepare_get_var prepare_get_var proc~prepare_get_var->proc~get_var_index proc~prepare_store_var->proc~get_var_index proc~add_int add_int proc~add_int->proc~prepare_store_var proc~add_int_array add_int_array proc~add_int_array->proc~prepare_store_var proc~add_logic add_logic proc~add_logic->proc~prepare_store_var proc~add_logic_array add_logic_array proc~add_logic_array->proc~prepare_store_var proc~add_real add_real proc~add_real->proc~prepare_store_var proc~add_real_array add_real_array proc~add_real_array->proc~prepare_store_var proc~add_string add_string proc~add_string->proc~prepare_store_var proc~add_string_array add_string_array proc~add_string_array->proc~prepare_store_var proc~cfg_update_from_arguments CFG_update_from_arguments proc~cfg_update_from_arguments->proc~cfg_read_file 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_add CFG_add interface~cfg_add->proc~add_int interface~cfg_add->proc~add_int_array interface~cfg_add->proc~add_logic interface~cfg_add->proc~add_logic_array interface~cfg_add->proc~add_real interface~cfg_add->proc~add_real_array interface~cfg_add->proc~add_string interface~cfg_add->proc~add_string_array 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~add_int proc~add_get_int->proc~get_int proc~add_get_int_array add_get_int_array proc~add_get_int_array->proc~add_int_array proc~add_get_int_array->proc~get_int_array proc~add_get_logic add_get_logic proc~add_get_logic->proc~add_logic proc~add_get_logic->proc~get_logic proc~add_get_logic_array add_get_logic_array proc~add_get_logic_array->proc~add_logic_array proc~add_get_logic_array->proc~get_logic_array proc~add_get_real add_get_real proc~add_get_real->proc~add_real proc~add_get_real->proc~get_real proc~add_get_real_array add_get_real_array proc~add_get_real_array->proc~add_real_array proc~add_get_real_array->proc~get_real_array proc~add_get_string add_get_string proc~add_get_string->proc~add_string proc~add_get_string->proc~get_string proc~add_get_string_array add_get_string_array proc~add_get_string_array->proc~add_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 binary_search_variable(cfg, var_name, ix)
    type(CFG_t), intent(in)      :: cfg
    character(len=*), intent(in) :: var_name
    integer, intent(out)         :: ix
    integer                      :: i_min, i_max, i_mid

    i_min = 1
    i_max = cfg%num_vars
    ix    = - 1

    do while (i_min < i_max)
       i_mid = i_min + (i_max - i_min) / 2
       if ( llt(cfg%vars(i_mid)%var_name, var_name) ) then
          i_min = i_mid + 1
       else
          i_max = i_mid
       end if
    end do

    ! If not found, binary_search_variable is not set here, and stays -1
    if (i_max == i_min .and. cfg%vars(i_min)%var_name == var_name) then
       ix = i_min
    else
       ix = -1
    end if
  end subroutine binary_search_variable