| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(input_t), | intent(in) | :: | me | |||
| character(len=*), | intent(in) | :: | key | |||
| character(len=*), | intent(in), | optional | :: | filter_key | ||
| character(len=*), | intent(in), | optional | :: | filter_value | ||
| logical, | intent(in), | optional | :: | empty |
function input_dict1d(me,key,filter_key,filter_value,empty) result(return_array) class(input_t), intent(in) :: me character(*), intent(in) :: key character(*), optional, intent(in) :: filter_key, filter_value class(input_t), allocatable :: dict_array(:), return_array(:) logical, optional, intent(in) :: empty type(type_error), allocatable :: err class(type_list), pointer :: list type(type_dictionary), pointer :: element type(type_list_item), pointer :: item integer :: i if(present(empty)) then if(.not.me%has_key(key) .and. empty) then allocate(return_array(0)) return endif endif list => select_list(me%node(key)) allocate(dict_array(list%size())) i = 0 item => list%first do while(associated(item)) element => select_dict(item%node); if (.not. present(filter_key) .or. & element%get_string(filter_key,'',err) == filter_value) then i = i + 1 dict_array(i)%root => element endif item => item%next enddo allocate(return_array(i)) return_array = dict_array(:i) end function input_dict1d