add Subroutine

private subroutine add(self, pref, cla)

Add CLA to CLAs list.

Note

If not otherwise declared the action on CLA value is set to “store” a value that must be passed after the switch name or directly passed in case of positional CLA.

Type Bound

command_line_arguments_group

Arguments

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

CLAsG data.

character(len=*), intent(in), optional :: pref

Prefixing string.

type(command_line_argument), intent(in) :: cla

CLA data.


Calls

proc~~add~~CallsGraph proc~add flap_command_line_arguments_group_t::command_line_arguments_group%add proc~check flap_command_line_arguments_group_t::command_line_arguments_group%check proc~add->proc~check proc~errored flap_command_line_arguments_group_t::command_line_arguments_group%errored proc~check->proc~errored proc~is_defined flap_command_line_arguments_group_t::command_line_arguments_group%is_defined proc~check->proc~is_defined interface~colorize face::colorize proc~errored->interface~colorize proc~print_error_message flap_object_t::object%print_error_message proc~errored->proc~print_error_message str str proc~errored->str proc~colorize_default face::colorize_default interface~colorize->proc~colorize_default proc~color_index face::color_index proc~colorize_default->proc~color_index proc~style_index face::style_index proc~colorize_default->proc~style_index proc~upper face::upper proc~colorize_default->proc~upper

Called by

proc~~add~~CalledByGraph proc~add flap_command_line_arguments_group_t::command_line_arguments_group%add proc~add~2 flap_command_line_interface_t::command_line_interface%add proc~add~2->proc~add proc~parse flap_command_line_arguments_group_t::command_line_arguments_group%parse proc~parse->proc~add proc~fake_call flap_test_group::fake_call proc~fake_call->proc~add~2 proc~parse~2 flap_command_line_interface_t::command_line_interface%parse 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~parse~2->proc~add~2 proc~parse~2->proc~parse program~flap_save_bash_completion flap_save_bash_completion program~flap_save_bash_completion->proc~add~2 program~flap_save_bash_completion->proc~parse~2 program~flap_save_man_page flap_save_man_page program~flap_save_man_page->proc~add~2 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->proc~add~2 program~flap_save_usage_to_markdown->none~get~2 program~flap_test_action_store flap_test_action_store program~flap_test_action_store->proc~add~2 none~get_varying~2 flap_command_line_interface_t::command_line_interface%get_varying 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->proc~add~2 program~flap_test_ansi_color_style->none~get~2 program~flap_test_basic flap_test_basic program~flap_test_basic->proc~add~2 program~flap_test_basic->proc~parse~2 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~add~2 program~flap_test_choices_logical->proc~parse~2 program~flap_test_choices_logical->none~get~2 program~flap_test_duplicated_clas flap_test_duplicated_clas program~flap_test_duplicated_clas->proc~add~2 program~flap_test_duplicated_clas->none~get~2 program~flap_test_group_examples flap_test_group_examples program~flap_test_group_examples->proc~add~2 program~flap_test_group_examples->none~get~2 program~flap_test_hidden flap_test_hidden program~flap_test_hidden->proc~add~2 program~flap_test_hidden->none~get~2 program~flap_test_ignore_unknown_clas flap_test_ignore_unknown_clas program~flap_test_ignore_unknown_clas->proc~add~2 program~flap_test_ignore_unknown_clas->none~get~2 program~flap_test_minimal flap_test_minimal program~flap_test_minimal->proc~add~2 program~flap_test_minimal->none~get~2 program~flap_test_nargs_insufficient flap_test_nargs_insufficient program~flap_test_nargs_insufficient->proc~add~2 program~flap_test_nargs_insufficient->none~get~2 program~flap_test_nargs_insufficient~2 flap_test_nargs_insufficient program~flap_test_nargs_insufficient~2->proc~add~2 program~flap_test_nargs_insufficient~2->none~get~2 program~flap_test_nested flap_test_nested program~flap_test_nested->proc~add~2 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~add~2 program~flap_test_string->proc~parse~2 program~flap_test_string->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_test_group flap_test_group program~flap_test_group->proc~fake_call 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

Source Code

  subroutine add(self, pref, cla)
  !< Add CLA to CLAs list.
  !<
  !< @note If not otherwise declared the action on CLA value is set to "store" a value that must be passed after the switch name
  !< or directly passed in case of positional CLA.
  class(command_line_arguments_group), intent(inout) :: self            !< CLAsG data.
  character(*), optional,              intent(in)    :: pref            !< Prefixing string.
  type(command_line_argument),         intent(in)    :: cla             !< CLA data.
  type(command_line_argument), allocatable           :: cla_list_new(:) !< New (extended) CLA list.
  integer(I4P)                                       :: c               !< Counter.

  if (self%Na>0_I4P) then
    if (.not.cla%is_positional) then
      allocate(cla_list_new(1:self%Na+1))
      do c=1, self%Na
        cla_list_new(c) = self%cla(c)
      enddo
      cla_list_new(self%Na+1) = cla
    else
      allocate(cla_list_new(1:self%Na+1))
      do c=1, cla%position - 1
        cla_list_new(c) = self%cla(c)
      enddo
      cla_list_new(cla%position) = cla
      do c=cla%position + 1, self%Na + 1
        cla_list_new(c) = self%cla(c-1)
      enddo
    endif
  else
    allocate(cla_list_new(1:1))
    cla_list_new(1)=cla
  endif
  call move_alloc(from=cla_list_new, to=self%cla)
  self%Na = self%Na + 1
  if (cla%is_required) then
    self%Na_required = self%Na_required + 1
  else
    self%Na_optional = self%Na_optional + 1
  endif
  if (allocated(cla_list_new)) deallocate(cla_list_new)
  call self%check(pref=pref)
  endsubroutine add