input_cmp1d Function

private function input_cmp1d(me, keys) result(return_array)

Type Bound

input_t

Arguments

Type IntentOptional Attributes Name
class(input_t), intent(in) :: me
character(len=*), intent(in) :: keys(:)

Return Value type(input_t), pointer, (:)


Calls

proc~~input_cmp1d~~CallsGraph proc~input_cmp1d input_t%input_cmp1d cmp_arr cmp_arr proc~input_cmp1d->cmp_arr get get proc~input_cmp1d->get

Called by

proc~~input_cmp1d~~CalledByGraph proc~input_cmp1d input_t%input_cmp1d program~reims_p reims_p program~reims_p->proc~input_cmp1d

Source Code

function input_cmp1d(me,keys) result(return_array)
    class(input_t), intent(in) :: me
    character(*),   intent(in) :: keys(:)
    type(input_t),     pointer :: return_array(:)
    class(type_node),  pointer :: node
    integer :: i,j,nb_cmp

    nb_cmp = 0
    do i = 1, size(keys)
        node => me%cmp_by_type%get(trim(keys(i)))
        if (.not.associated(node)) continue
        select type(node); class is (input_t)
            nb_cmp = nb_cmp + size(node%cmp_arr)
        end select
    enddo
    allocate(return_array(nb_cmp))
    nb_cmp = 0
    do i = 1, size(keys)
        node => me%cmp_by_type%get(trim(keys(i)))
        if (.not.associated(node)) continue
        select type(node); class is (input_t)
            do j = 1, size(node%cmp_arr)
                node%cmp_arr(j)%path = trim(keys(i))
            enddo
            return_array(nb_cmp+1:nb_cmp+size(node%cmp_arr)) = node%cmp_arr
            nb_cmp = nb_cmp + size(node%cmp_arr)
        end select
    enddo
end function input_cmp1d