add_features_csv Subroutine

private subroutine add_features_csv(features, csv)

Parse a comma-separated --features value into the features array.

Empty tokens are ignored; whitespace around tokens is stripped.

Arguments

Type IntentOptional Attributes Name
type(string_t), intent(inout), allocatable :: features(:)
character(len=*), intent(in) :: csv

Calls

proc~~add_features_csv~~CallsGraph proc~add_features_csv add_features_csv proc~push_feature push_feature proc~add_features_csv->proc~push_feature

Called by

proc~~add_features_csv~~CalledByGraph proc~add_features_csv add_features_csv proc~parse_cli parse_cli proc~parse_cli->proc~add_features_csv proc~parse_cli_config parse_cli_config proc~parse_cli_config->proc~parse_cli

Source Code

   subroutine add_features_csv(features, csv)
      type(string_t), allocatable, intent(inout) :: features(:)
      character(len=*), intent(in) :: csv

      integer :: n, p, q
      character(len=:), allocatable :: s, tok

      s = trim(csv)
      if (len_trim(s) == 0) return

      p = 1
      n = len_trim(s)

      do
         if (p > n) exit
         q = index(s(p:), ",")
         if (q == 0) then
            tok = adjustl(s(p:n))
            call push_feature(features, trim(tok))
            exit
         else
            tok = adjustl(s(p:p+q-2))
            call push_feature(features, trim(tok))
            p = p + q
         end if
      end do
   end subroutine add_features_csv