json_clone Subroutine

private subroutine json_clone(json, from, to)

Create a deep copy of a json_value linked-list structure.

Notes

  • If from has children, then they are also cloned.
  • The parent of from is not linked to to.
  • If 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).

Example

    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

Arguments

Type IntentOptional AttributesName
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)


Contents

Source Code


Source Code

    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