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:
call json%json_value_clone_func(from,to)
end subroutine json_clone