Create a deep copy of a json_value linked-list structure.
from
has children, then they are also cloned.from
is not linked to to
.from
is an element of an array, then the previous and
next entries are not cloned (only that element and it’s children, if any). program test
use json_module
implicit none
type(json_core) :: json
type(json_value),pointer :: j1, j2
call json%load('../files/inputs/test1.json',j1)
call json%clone(j1,j2) !now have two independent copies
call json%destroy(j1) !destroys j1, but j2 remains
call json%print(j2,'j2.json')
call json%destroy(j2)
end program test
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_core), | intent(inout) | :: | json | |||
type(json_value), | pointer | :: | from | this is the structure to clone |
||
type(json_value), | pointer | :: | to | the clone is put here (it must not already be associated) |
subroutine json_clone(json,from,to)
implicit none
class(json_core),intent(inout) :: json
type(json_value),pointer :: from !! this is the structure to clone
type(json_value),pointer :: to !! the clone is put here
!! (it must not already be associated)
!call the main function:
call json%json_value_clone_func(from,to)
end subroutine json_clone