Wrapper to json_add_real_by_path for adding a real vector by path.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_core), | intent(inout) | :: | json | |||
type(json_value), | pointer | :: | me | the JSON structure |
||
character(kind=CK,len=*), | intent(in) | :: | path | the path to the variable |
||
real(kind=RK), | intent(in), | dimension(:) | :: | value | the vector to add |
|
logical(kind=LK), | intent(out), | optional | :: | found | if the variable was found |
|
logical(kind=LK), | intent(out), | optional | :: | was_created | if the variable had to be created |
subroutine json_add_real_vec_by_path(json,me,path,value,found,was_created)
implicit none
class(json_core),intent(inout) :: json
type(json_value),pointer :: me !! the JSON structure
character(kind=CK,len=*),intent(in) :: path !! the path to the variable
real(RK),dimension(:),intent(in) :: value !! the vector to add
logical(LK),intent(out),optional :: found !! if the variable was found
logical(LK),intent(out),optional :: was_created !! if the variable had to be created
type(json_value),pointer :: p !! pointer to path (which may exist)
type(json_value),pointer :: var !! new variable that is created
integer(IK) :: i !! counter
character(kind=CK,len=:),allocatable :: name !! the variable name
logical(LK) :: p_found !! if the path was successfully found (or created)
if ( .not. json%exception_thrown ) then
!get a pointer to the variable
!(creating it if necessary)
call json%create(me,path,p,found=p_found)
if (p_found) then
call json%info(p,name=name) ! want to keep the existing name
call json%create_array(var,name) ! create a new array variable
call json%replace(p,var,destroy=.true.) ! replace p with this array (destroy p)
!populate each element of the array:
do i=1,size(value)
call json%add(var, CK_'', value(i))
end do
end if
else
if ( present(found) ) found = .false.
if ( present(was_created) ) was_created = .false.
end if
end subroutine json_add_real_vec_by_path