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%parse('../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:
! [note: this is not part of json_core class]
call json_value_clone_func(from,to)
end subroutine json_clone