subroutine get_double_array(this, path, array)
use fson_value_m, only: type_array, fson_value_get, fson_value_count, &
fson_value
implicit none
type(fson_value), pointer :: this, p, element
character(len=*), optional :: path
integer :: index, count
real(kind(1.0D0)), dimension(:) :: array
nullify(p)
! resolve the path to the value
if (present(path)) then
call get_by_path(this=this, path=path, p=p)
else
p => this
end if
if (.not.associated(p)) then
print *, "Unable to resolve path: ", path
call exit(1)
end if
if (p % value_type == TYPE_ARRAY) then
count = fson_value_count(p)
do index = 1, count
element => fson_value_get(p, index)
array(index) = element%value_double
end do
else
print *, "Resolved value is not an array. ", path
call exit(1)
end if
end subroutine get_double_array