input_str1d Function

private function input_str1d(me, key, default_value, empty) result(val)

Type Bound

input_t

Arguments

Type IntentOptional Attributes Name
class(input_t), intent(in) :: me
character(len=*), intent(in) :: key
type(str_ptr), intent(in), optional :: default_value
logical, intent(in), optional :: empty

Return Value type(str_ptr), allocatable, (:)


Calls

proc~~input_str1d~~CallsGraph proc~input_str1d input_t%input_str1d proc~input_has_key input_t%input_has_key proc~input_str1d->proc~input_has_key proc~input_node input_t%input_node proc~input_str1d->proc~input_node proc~select_scalar select_scalar proc~input_str1d->proc~select_scalar get get proc~input_has_key->get proc~select_dict select_dict proc~input_has_key->proc~select_dict proc~input_node->get proc~dictionary_traverse dictionary_traverse proc~input_node->proc~dictionary_traverse proc~input_node->proc~select_dict proc~dictionary_traverse->proc~dictionary_traverse get_dictionary get_dictionary proc~dictionary_traverse->get_dictionary proc~abort_if abort_if proc~dictionary_traverse->proc~abort_if

Called by

proc~~input_str1d~~CalledByGraph proc~input_str1d input_t%input_str1d proc~fslink_init_part1 FSlink_init_part1 proc~fslink_init_part1->proc~input_str1d proc~fslink_init_part2 FSlink_init_part2 proc~fslink_init_part2->proc~input_str1d proc~mesh2d_init_part1 mesh2D_init_part1 proc~mesh2d_init_part1->proc~input_str1d proc~sssrclink_init_part1 SSsrcLink_init_part1 proc~sssrclink_init_part1->proc~input_str1d proc~sssrclink_init_part2 SSsrcLink_init_part2 proc~sssrclink_init_part2->proc~input_str1d program~reims_p reims_p program~reims_p->proc~input_str1d program~reims_p->proc~fslink_init_part1 program~reims_p->proc~fslink_init_part2 program~reims_p->proc~mesh2d_init_part1 program~reims_p->proc~sssrclink_init_part1 program~reims_p->proc~sssrclink_init_part2

Source Code

function input_str1d(me,key,default_value,empty) result(val)
    class(input_t), intent(in) :: me
    character(*), intent(in)   :: key
    type(str_ptr), optional, intent(in) :: default_value
    type(str_ptr), allocatable :: val(:)
    logical,      optional, intent(in) :: empty    

    type(type_list_item), pointer :: item
    type(type_scalar),    pointer :: element
    integer :: i

    if(present(empty)) then
        if(.not. me%has_key(key) .and. empty) then
            allocate(val(0))
            return
        endif
    endif

    if(present(default_value)) val = default_value
    if(.not.me%has_key(key) .and. present(default_value)) return
    select type(node=>me%node(key));class is(type_list)
        if (allocated(val)) deallocate(val)
        allocate(val(node%size()))
        item => node%first
        i = 1
        do while(associated(item))
            element => select_scalar(item%node);
            val(i)%p => element%string
            item => item%next
            i = i + 1
        enddo
        return
    end select
    if(present(default_value)) return
    error stop 'Can not convert to 1d array of "string" for key: '//key
end function input_str1d