json_clone Subroutine

private subroutine json_clone(json, from, to)

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

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)


Calls

proc~~json_clone~~CallsGraph proc~json_clone json_clone proc~json_value_clone_func json_value_clone_func proc~json_clone->proc~json_value_clone_func

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:
    ! [note: this is not part of json_core class]
    call json_value_clone_func(from,to)

    end subroutine json_clone