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 | Intent | Optional | 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
        call add_strings(flags_array, new_flags_array(i))
    end do
end subroutine append_clean_flags_array