append_clean_flags_array Subroutine

public subroutine append_clean_flags_array(flags_array, new_flags_array)

Append new flags to existing flags, removing duplicates and empty flags (array version)

Arguments

Type IntentOptional Attributes Name
type(string_t), intent(inout), allocatable :: flags_array(:)
type(string_t), intent(in) :: new_flags_array(:)

Variables

Type Visibility Attributes Name Initial
integer, public :: i

Source Code

subroutine append_clean_flags_array(flags_array, new_flags_array)
    type(string_t), allocatable, intent(inout) :: flags_array(:)
    type(string_t), intent(in) :: new_flags_array(:)

    integer :: i

    do i = 1, size(new_flags_array)
        if (string_array_contains(new_flags_array(i)%s, flags_array)) cycle
        ! Filter out empty flags and arguments
        if (new_flags_array(i)%s == "") cycle
        if (trim(new_flags_array(i)%s) == "-l") cycle
        if (trim(new_flags_array(i)%s) == "-L") cycle
        if (trim(new_flags_array(i)%s) == "-I") cycle
        if (trim(new_flags_array(i)%s) == "-J") cycle
        if (trim(new_flags_array(i)%s) == "-M") cycle
        flags_array = [flags_array, new_flags_array(i)]
    end do
end subroutine append_clean_flags_array