get_clasg_indexes Subroutine

private subroutine get_clasg_indexes(self, ai)

Get the argument indexes of CLAs groups defined parsing the actual passed CLAs.

Type Bound

command_line_interface

Arguments

Type IntentOptional Attributes Name
class(command_line_interface), intent(inout) :: self

CLI data.

integer(kind=I4P), intent(out), allocatable :: ai(:,:)

CLAs grouped indexes.


Calls

proc~~get_clasg_indexes~~CallsGraph proc~get_clasg_indexes flap_command_line_interface_t::command_line_interface%get_clasg_indexes proc~is_defined_group flap_command_line_interface_t::command_line_interface%is_defined_group proc~get_clasg_indexes->proc~is_defined_group

Called by

proc~~get_clasg_indexes~~CalledByGraph proc~get_clasg_indexes flap_command_line_interface_t::command_line_interface%get_clasg_indexes proc~get_args_from_invocation flap_command_line_interface_t::command_line_interface%get_args_from_invocation proc~get_args_from_invocation->proc~get_clasg_indexes proc~get_args_from_string flap_command_line_interface_t::command_line_interface%get_args_from_string proc~get_args_from_string->proc~get_clasg_indexes none~get_args flap_command_line_interface_t::command_line_interface%get_args none~get_args->proc~get_args_from_invocation none~get_args->proc~get_args_from_string proc~parse~2 flap_command_line_interface_t::command_line_interface%parse proc~parse~2->none~get_args proc~fake_call flap_test_group::fake_call proc~fake_call->proc~parse~2 none~get~2 flap_command_line_interface_t::command_line_interface%get proc~fake_call->none~get~2 proc~get_cla_list_varying_char~2 flap_command_line_interface_t::command_line_interface%get_cla_list_varying_char proc~get_cla_list_varying_char~2->proc~parse~2 proc~get_cla_list_varying_i1p~2 flap_command_line_interface_t::command_line_interface%get_cla_list_varying_I1P proc~get_cla_list_varying_i1p~2->proc~parse~2 proc~get_cla_list_varying_i2p~2 flap_command_line_interface_t::command_line_interface%get_cla_list_varying_I2P proc~get_cla_list_varying_i2p~2->proc~parse~2 proc~get_cla_list_varying_i4p~2 flap_command_line_interface_t::command_line_interface%get_cla_list_varying_I4P proc~get_cla_list_varying_i4p~2->proc~parse~2 proc~get_cla_list_varying_i8p~2 flap_command_line_interface_t::command_line_interface%get_cla_list_varying_I8P proc~get_cla_list_varying_i8p~2->proc~parse~2 proc~get_cla_list_varying_logical~2 flap_command_line_interface_t::command_line_interface%get_cla_list_varying_logical proc~get_cla_list_varying_logical~2->proc~parse~2 proc~get_cla_list_varying_r16p~2 flap_command_line_interface_t::command_line_interface%get_cla_list_varying_R16P proc~get_cla_list_varying_r16p~2->proc~parse~2 proc~get_cla_list_varying_r4p~2 flap_command_line_interface_t::command_line_interface%get_cla_list_varying_R4P proc~get_cla_list_varying_r4p~2->proc~parse~2 proc~get_cla_list_varying_r8p~2 flap_command_line_interface_t::command_line_interface%get_cla_list_varying_R8P proc~get_cla_list_varying_r8p~2->proc~parse~2 proc~get_cla_list~2 flap_command_line_interface_t::command_line_interface%get_cla_list proc~get_cla_list~2->proc~parse~2 proc~get_cla~2 flap_command_line_interface_t::command_line_interface%get_cla proc~get_cla~2->proc~parse~2 program~flap_save_bash_completion flap_save_bash_completion program~flap_save_bash_completion->proc~parse~2 program~flap_test_basic flap_test_basic program~flap_test_basic->proc~parse~2 none~get_varying~2 flap_command_line_interface_t::command_line_interface%get_varying program~flap_test_basic->none~get_varying~2 program~flap_test_basic->none~get~2 program~flap_test_choices_logical flap_test_choices_logical program~flap_test_choices_logical->proc~parse~2 program~flap_test_choices_logical->none~get~2 program~flap_test_nested flap_test_nested program~flap_test_nested->proc~parse~2 program~flap_test_nested->none~get~2 program~flap_test_string flap_test_string program~flap_test_string->proc~parse~2 program~flap_test_string->none~get~2 none~get_varying~2->proc~get_cla_list_varying_char~2 none~get_varying~2->proc~get_cla_list_varying_i1p~2 none~get_varying~2->proc~get_cla_list_varying_i2p~2 none~get_varying~2->proc~get_cla_list_varying_i4p~2 none~get_varying~2->proc~get_cla_list_varying_i8p~2 none~get_varying~2->proc~get_cla_list_varying_logical~2 none~get_varying~2->proc~get_cla_list_varying_r4p~2 none~get_varying~2->proc~get_cla_list_varying_r8p~2 none~get~2->proc~get_cla_list~2 none~get~2->proc~get_cla~2 program~flap_test_group flap_test_group program~flap_test_group->proc~fake_call program~flap_save_man_page flap_save_man_page program~flap_save_man_page->none~get~2 program~flap_save_usage_to_markdown flap_save_usage_to_markdown program~flap_save_usage_to_markdown->none~get~2 program~flap_test_action_store flap_test_action_store program~flap_test_action_store->none~get_varying~2 program~flap_test_action_store->none~get~2 program~flap_test_ansi_color_style flap_test_ansi_color_style program~flap_test_ansi_color_style->none~get~2 program~flap_test_duplicated_clas flap_test_duplicated_clas program~flap_test_duplicated_clas->none~get~2 program~flap_test_group_examples flap_test_group_examples program~flap_test_group_examples->none~get~2 program~flap_test_hidden flap_test_hidden program~flap_test_hidden->none~get~2 program~flap_test_ignore_unknown_clas flap_test_ignore_unknown_clas program~flap_test_ignore_unknown_clas->none~get~2 program~flap_test_minimal flap_test_minimal program~flap_test_minimal->none~get~2 program~flap_test_nargs_insufficient flap_test_nargs_insufficient program~flap_test_nargs_insufficient->none~get~2 program~flap_test_nargs_insufficient~2 flap_test_nargs_insufficient program~flap_test_nargs_insufficient~2->none~get~2

Source Code

  subroutine get_clasg_indexes(self, ai)
  !< Get the argument indexes of CLAs groups defined parsing the actual passed CLAs.
  class(command_line_interface), intent(inout) :: self   !< CLI data.
  integer(I4P), allocatable,     intent(out)   :: ai(:,:)!< CLAs grouped indexes.
  integer(I4P)                                 :: Na     !< Number of command line arguments passed.
  integer(I4P)                                 :: a      !< Counter for CLAs.
  integer(I4P)                                 :: aa     !< Counter for CLAs.
  integer(I4P)                                 :: g      !< Counter for CLAs group.
  logical                                      :: found  !< Flag for inquiring if a named group is found.

  allocate(ai(0:size(self%clasg,dim=1)-1,1:2))
  ai = 0
  if (allocated(self%args)) then
    Na = size(self%args,dim=1)
    a = 0
    found = .false.
    search_named: do while(a<Na)
      a = a + 1
      if (self%is_defined_group(group=trim(self%args(a)), g=g)) then
        found = .true.
        self%clasg(g)%is_called = .true.
        ai(g,1) = a + 1
        aa = a
        do while(aa<Na)
          aa = aa + 1
          if (self%is_defined_group(group=trim(self%args(aa)))) then
            a = aa - 1
            ai(g,2) = a
            exit
          else
            ai(g,2) = aa
          endif
        enddo
      elseif (.not.found) then
        ai(0,2) = a
      endif
    enddo search_named
    if (ai(0,2)>0) then
      ai(0,1) = 1
      self%clasg(0)%is_called = .true.
    elseif (all(ai==0)) then
      self%clasg(0)%is_called = .true.
    endif
  else
    self%clasg(0)%is_called = .true.
  endif
  endsubroutine get_clasg_indexes