| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(input_t), | intent(inout) | :: | me | |||
| class(type_node), | intent(in), | pointer | :: | tree | ||
| type(type_dictionary), | intent(inout) | :: | no_cmp |
recursive subroutine fill_components(me,tree,no_cmp) type(input_t), intent(inout) :: me class(type_node), pointer, intent(in) :: tree type(type_dictionary), intent(inout) :: no_cmp type(input_t),pointer :: new_dict class(type_node),pointer :: tmp type(type_error),allocatable :: err type(type_key_value_pair), pointer :: pair type(type_list_item), pointer :: item character(:), allocatable :: type type(type_dictionary),pointer :: cmp integer :: nb select type(tree) class is(type_dictionary) pair => tree%first do while(associated(pair)) if(pair%key(1:1)/='!') then call fill_components(me,pair%value,no_cmp) endif pair=>pair%next enddo class is(type_list) item => tree%first do while(associated(item)) ! Adding elements to array in dictionary and increase size cmp => select_dict(item%node) type = cmp%get_string('type',error=err) call abort_if(err) allocate(new_dict) new_dict%root => cmp tmp => me%cmp_by_type%get(type) nb = increment_int_dict(no_cmp,type) select type(tmp); class is(input_t) call new_dict%root%set_path(type) tmp%cmp_arr(nb) = new_dict end select item => item%next nullify(new_dict) enddo end select end subroutine fill_components