json_value_destroy Subroutine

private pure recursive subroutine json_value_destroy(json, p, destroy_next)

Destroy a json_value linked-list structure.

Note

The original FSON version of this routine was not properly freeing the memory. It was rewritten.

Note

This routine destroys this variable, it’s children, and (if destroy_next is true) the subsequent elements in an object or array. It does not destroy the parent or previous elements.

Note

There is some protection here to enable destruction of improperly-created linked lists. However, likely there are cases not handled. Use the json_value_validate method to validate a JSON structure that was manually created using json_value pointers.

Type Bound

json_core

Arguments

Type IntentOptional Attributes Name
class(json_core), intent(inout) :: json
type(json_value), pointer :: p

variable to destroy

logical(kind=LK), intent(in), optional :: destroy_next

if true, then p%next is also destroyed (default is true)


Calls

proc~~json_value_destroy~~CallsGraph proc~json_value_destroy json_core%json_value_destroy none~destroy json_core%destroy proc~json_value_destroy->none~destroy proc~destroy_json_data destroy_json_data proc~json_value_destroy->proc~destroy_json_data none~destroy->proc~json_value_destroy proc~destroy_json_core json_core%destroy_json_core none~destroy->proc~destroy_json_core

Called by

proc~~json_value_destroy~~CalledByGraph proc~json_value_destroy json_core%json_value_destroy none~destroy json_core%destroy proc~json_value_destroy->none~destroy none~destroy->proc~json_value_destroy proc~json_file_add json_file%json_file_add proc~json_file_add->none~destroy proc~json_file_destroy json_file%json_file_destroy proc~json_file_destroy->none~destroy proc~json_file_valid_path_op json_file%json_file_valid_path_op proc~json_file_valid_path_op->none~destroy none~valid_path json_core%valid_path proc~json_file_valid_path_op->none~valid_path proc~json_value_remove json_core%json_value_remove proc~json_value_remove->none~destroy proc~parse_array json_core%parse_array proc~parse_array->none~destroy proc~parse_value json_core%parse_value proc~parse_array->proc~parse_value proc~parse_object json_core%parse_object proc~parse_object->none~destroy proc~parse_object->proc~parse_object proc~parse_object->proc~parse_value proc~assign_string_to_json_file json_file%assign_string_to_json_file proc~assign_string_to_json_file->proc~json_file_destroy none~deserialize~2 json_file%deserialize proc~assign_string_to_json_file->none~deserialize~2 proc~finalize_json_file finalize_json_file proc~finalize_json_file->proc~json_file_destroy proc~json_value_remove_if_present json_core%json_value_remove_if_present proc~json_value_remove_if_present->proc~json_value_remove none~get json_core%get proc~json_value_remove_if_present->none~get proc~json_value_replace json_core%json_value_replace proc~json_value_replace->proc~json_value_remove none~insert_after json_core%insert_after proc~json_value_replace->none~insert_after proc~parse_value->proc~parse_array proc~parse_value->proc~parse_object none~remove_if_present json_core%remove_if_present none~remove_if_present->proc~json_value_remove_if_present proc~wrap_json_value_remove_if_present json_core%wrap_json_value_remove_if_present none~remove_if_present->proc~wrap_json_value_remove_if_present proc~convert json_core%convert proc~convert->proc~json_value_replace none~info json_core%info proc~convert->none~info proc~json_add_integer_by_path json_core%json_add_integer_by_path proc~json_add_integer_by_path->proc~json_value_replace none~create json_core%create proc~json_add_integer_by_path->none~create proc~json_add_integer_by_path->none~info proc~json_add_integer_vec_by_path json_core%json_add_integer_vec_by_path proc~json_add_integer_vec_by_path->proc~json_value_replace proc~json_add_integer_vec_by_path->none~create proc~json_add_integer_vec_by_path->none~info proc~json_add_logical_by_path json_core%json_add_logical_by_path proc~json_add_logical_by_path->proc~json_value_replace proc~json_add_logical_by_path->none~create proc~json_add_logical_by_path->none~info proc~json_add_logical_vec_by_path json_core%json_add_logical_vec_by_path proc~json_add_logical_vec_by_path->proc~json_value_replace proc~json_add_logical_vec_by_path->none~create proc~json_add_logical_vec_by_path->none~info proc~json_add_member_by_path json_core%json_add_member_by_path proc~json_add_member_by_path->proc~json_value_replace proc~json_add_member_by_path->none~create proc~json_add_member_by_path->none~info proc~json_add_real_by_path json_core%json_add_real_by_path proc~json_add_real_by_path->proc~json_value_replace proc~json_add_real_by_path->none~create proc~json_add_real_by_path->none~info proc~json_add_real_vec_by_path json_core%json_add_real_vec_by_path proc~json_add_real_vec_by_path->proc~json_value_replace proc~json_add_real_vec_by_path->none~create proc~json_add_real_vec_by_path->none~info proc~json_add_string_by_path json_core%json_add_string_by_path proc~json_add_string_by_path->proc~json_value_replace proc~json_add_string_by_path->none~create proc~json_add_string_by_path->none~info proc~json_add_string_vec_by_path json_core%json_add_string_vec_by_path proc~json_add_string_vec_by_path->proc~json_value_replace proc~json_add_string_vec_by_path->none~create proc~json_add_string_vec_by_path->none~info proc~json_parse_file json_core%json_parse_file proc~json_parse_file->proc~parse_value proc~json_parse_string json_core%json_parse_string proc~json_parse_string->proc~parse_value proc~wrap_assign_string_to_json_file json_file%wrap_assign_string_to_json_file proc~wrap_assign_string_to_json_file->proc~assign_string_to_json_file none~deserialize json_core%deserialize none~deserialize->proc~json_parse_string proc~wrap_json_parse_string json_core%wrap_json_parse_string none~deserialize->proc~wrap_json_parse_string none~load json_core%load none~load->proc~json_parse_file proc~json_add_string_by_path_path_ascii json_core%json_add_string_by_path_path_ascii proc~json_add_string_by_path_path_ascii->proc~json_add_string_by_path proc~json_add_string_by_path_value_ascii json_core%json_add_string_by_path_value_ascii proc~json_add_string_by_path_value_ascii->proc~json_add_string_by_path proc~json_add_string_vec_by_path_path_ascii json_core%json_add_string_vec_by_path_path_ascii proc~json_add_string_vec_by_path_path_ascii->proc~json_add_string_vec_by_path proc~json_add_string_vec_by_path_value_ascii json_core%json_add_string_vec_by_path_value_ascii proc~json_add_string_vec_by_path_value_ascii->proc~json_add_string_vec_by_path proc~json_file_remove json_file%json_file_remove proc~json_file_remove->none~remove_if_present proc~json_get_by_path_jsonpath_bracket json_core%json_get_by_path_jsonpath_bracket proc~json_get_by_path_jsonpath_bracket->proc~convert none~get_child json_core%get_child proc~json_get_by_path_jsonpath_bracket->none~get_child proc~wrap_json_add_integer_by_path json_core%wrap_json_add_integer_by_path proc~wrap_json_add_integer_by_path->proc~json_add_integer_by_path proc~wrap_json_add_integer_vec_by_path json_core%wrap_json_add_integer_vec_by_path proc~wrap_json_add_integer_vec_by_path->proc~json_add_integer_vec_by_path proc~wrap_json_add_logical_by_path json_core%wrap_json_add_logical_by_path proc~wrap_json_add_logical_by_path->proc~json_add_logical_by_path proc~wrap_json_add_logical_vec_by_path json_core%wrap_json_add_logical_vec_by_path proc~wrap_json_add_logical_vec_by_path->proc~json_add_logical_vec_by_path proc~wrap_json_add_member_by_path json_core%wrap_json_add_member_by_path proc~wrap_json_add_member_by_path->proc~json_add_member_by_path proc~wrap_json_add_real_by_path json_core%wrap_json_add_real_by_path proc~wrap_json_add_real_by_path->proc~json_add_real_by_path proc~wrap_json_add_real_vec_by_path json_core%wrap_json_add_real_vec_by_path proc~wrap_json_add_real_vec_by_path->proc~json_add_real_vec_by_path proc~wrap_json_add_string_by_path json_core%wrap_json_add_string_by_path proc~wrap_json_add_string_by_path->proc~json_add_string_by_path proc~wrap_json_add_string_vec_by_path json_core%wrap_json_add_string_vec_by_path proc~wrap_json_add_string_vec_by_path->proc~json_add_string_vec_by_path proc~wrap_json_value_remove_if_present->none~remove_if_present none~add_by_path~2 json_core%add_by_path none~add_by_path~2->proc~json_add_string_by_path_path_ascii none~add_by_path~2->proc~json_add_string_by_path_value_ascii none~add_by_path~2->proc~json_add_string_vec_by_path_path_ascii none~add_by_path~2->proc~json_add_string_vec_by_path_value_ascii none~remove~2 json_file%remove none~remove~2->proc~json_file_remove proc~wrap_json_file_remove json_file%wrap_json_file_remove none~remove~2->proc~wrap_json_file_remove proc~json_create_by_path json_core%json_create_by_path proc~json_create_by_path->proc~json_get_by_path_jsonpath_bracket proc~json_get_by_path_default json_core%json_get_by_path_default proc~json_create_by_path->proc~json_get_by_path_default proc~json_file_load json_file%json_file_load proc~json_file_load->none~load proc~json_file_load_from_string json_file%json_file_load_from_string proc~json_file_load_from_string->none~deserialize proc~json_get_by_path json_core%json_get_by_path proc~json_get_by_path->proc~json_get_by_path_jsonpath_bracket proc~json_get_by_path->proc~json_get_by_path_default proc~json_get_by_path_rfc6901 json_core%json_get_by_path_rfc6901 proc~json_get_by_path->proc~json_get_by_path_rfc6901 proc~wrap_json_parse_string->none~deserialize none~create->proc~json_create_by_path proc~wrap_json_create_by_path json_core%wrap_json_create_by_path none~create->proc~wrap_json_create_by_path none~deserialize~2->proc~json_file_load_from_string proc~wrap_json_file_load_from_string json_file%wrap_json_file_load_from_string none~deserialize~2->proc~wrap_json_file_load_from_string none~get->proc~json_get_by_path proc~json_get_alloc_string_vec json_core%json_get_alloc_string_vec none~get->proc~json_get_alloc_string_vec proc~json_get_alloc_string_vec_by_path json_core%json_get_alloc_string_vec_by_path none~get->proc~json_get_alloc_string_vec_by_path proc~json_get_array_by_path json_core%json_get_array_by_path none~get->proc~json_get_array_by_path proc~json_get_integer_by_path json_core%json_get_integer_by_path none~get->proc~json_get_integer_by_path proc~json_get_integer_vec json_core%json_get_integer_vec none~get->proc~json_get_integer_vec proc~json_get_integer_vec_by_path json_core%json_get_integer_vec_by_path none~get->proc~json_get_integer_vec_by_path proc~json_get_logical_by_path json_core%json_get_logical_by_path none~get->proc~json_get_logical_by_path proc~json_get_logical_vec json_core%json_get_logical_vec none~get->proc~json_get_logical_vec proc~json_get_logical_vec_by_path json_core%json_get_logical_vec_by_path none~get->proc~json_get_logical_vec_by_path proc~json_get_real32 json_core%json_get_real32 none~get->proc~json_get_real32 proc~json_get_real32_by_path json_core%json_get_real32_by_path none~get->proc~json_get_real32_by_path proc~json_get_real32_vec json_core%json_get_real32_vec none~get->proc~json_get_real32_vec proc~json_get_real32_vec_by_path json_core%json_get_real32_vec_by_path none~get->proc~json_get_real32_vec_by_path proc~json_get_real_by_path json_core%json_get_real_by_path none~get->proc~json_get_real_by_path proc~json_get_real_vec json_core%json_get_real_vec none~get->proc~json_get_real_vec proc~json_get_real_vec_by_path json_core%json_get_real_vec_by_path none~get->proc~json_get_real_vec_by_path proc~json_get_string_by_path json_core%json_get_string_by_path none~get->proc~json_get_string_by_path proc~json_get_string_vec json_core%json_get_string_vec none~get->proc~json_get_string_vec proc~json_get_string_vec_by_path json_core%json_get_string_vec_by_path none~get->proc~json_get_string_vec_by_path proc~wrap_json_get_alloc_string_vec_by_path json_core%wrap_json_get_alloc_string_vec_by_path none~get->proc~wrap_json_get_alloc_string_vec_by_path proc~wrap_json_get_array_by_path json_core%wrap_json_get_array_by_path none~get->proc~wrap_json_get_array_by_path proc~wrap_json_get_by_path json_core%wrap_json_get_by_path none~get->proc~wrap_json_get_by_path proc~wrap_json_get_integer_by_path json_core%wrap_json_get_integer_by_path none~get->proc~wrap_json_get_integer_by_path proc~wrap_json_get_integer_vec_by_path json_core%wrap_json_get_integer_vec_by_path none~get->proc~wrap_json_get_integer_vec_by_path proc~wrap_json_get_logical_by_path json_core%wrap_json_get_logical_by_path none~get->proc~wrap_json_get_logical_by_path proc~wrap_json_get_logical_vec_by_path json_core%wrap_json_get_logical_vec_by_path none~get->proc~wrap_json_get_logical_vec_by_path proc~wrap_json_get_real32_by_path json_core%wrap_json_get_real32_by_path none~get->proc~wrap_json_get_real32_by_path proc~wrap_json_get_real32_vec_by_path json_core%wrap_json_get_real32_vec_by_path none~get->proc~wrap_json_get_real32_vec_by_path proc~wrap_json_get_real_by_path json_core%wrap_json_get_real_by_path none~get->proc~wrap_json_get_real_by_path proc~wrap_json_get_real_vec_by_path json_core%wrap_json_get_real_vec_by_path none~get->proc~wrap_json_get_real_vec_by_path proc~wrap_json_get_string_by_path json_core%wrap_json_get_string_by_path none~get->proc~wrap_json_get_string_by_path proc~wrap_json_get_string_vec_by_path json_core%wrap_json_get_string_vec_by_path none~get->proc~wrap_json_get_string_vec_by_path proc~json_add_real32_by_path json_core%json_add_real32_by_path proc~json_add_real32_by_path->none~add_by_path~2 proc~json_add_real32_vec_by_path json_core%json_add_real32_vec_by_path proc~json_add_real32_vec_by_path->none~add_by_path~2 proc~json_file_add_integer json_file%json_file_add_integer proc~json_file_add_integer->none~add_by_path~2 proc~json_file_add_integer_vec json_file%json_file_add_integer_vec proc~json_file_add_integer_vec->none~add_by_path~2 proc~json_file_add_logical json_file%json_file_add_logical proc~json_file_add_logical->none~add_by_path~2 proc~json_file_add_logical_vec json_file%json_file_add_logical_vec proc~json_file_add_logical_vec->none~add_by_path~2 proc~json_file_add_object json_file%json_file_add_object proc~json_file_add_object->none~add_by_path~2 proc~json_file_add_real json_file%json_file_add_real proc~json_file_add_real->none~add_by_path~2 proc~json_file_add_real32 json_file%json_file_add_real32 proc~json_file_add_real32->none~add_by_path~2 proc~json_file_add_real32_vec json_file%json_file_add_real32_vec proc~json_file_add_real32_vec->none~add_by_path~2 proc~json_file_add_real_vec json_file%json_file_add_real_vec proc~json_file_add_real_vec->none~add_by_path~2 proc~json_file_add_string json_file%json_file_add_string proc~json_file_add_string->none~add_by_path~2 proc~json_file_add_string_vec json_file%json_file_add_string_vec proc~json_file_add_string_vec->none~add_by_path~2 proc~json_update_integer json_core%json_update_integer proc~json_update_integer->none~add_by_path~2 proc~json_update_integer->none~get proc~json_update_integer->none~info proc~json_update_logical json_core%json_update_logical proc~json_update_logical->none~add_by_path~2 proc~json_update_logical->none~get proc~json_update_logical->none~info proc~json_update_real json_core%json_update_real proc~json_update_real->none~add_by_path~2 proc~json_update_real->none~get proc~json_update_real->none~info proc~json_update_string json_core%json_update_string proc~json_update_string->none~add_by_path~2 proc~json_update_string->none~get proc~json_update_string->none~info proc~wrap_json_add_real32_by_path json_core%wrap_json_add_real32_by_path proc~wrap_json_add_real32_by_path->none~add_by_path~2 proc~wrap_json_add_real32_vec_by_path json_core%wrap_json_add_real32_vec_by_path proc~wrap_json_add_real32_vec_by_path->none~add_by_path~2 proc~wrap_json_file_remove->none~remove~2 proc~initialize_json_file_from_string initialize_json_file_from_string proc~initialize_json_file_from_string->none~deserialize~2 proc~initialize_json_file_from_string_v2 initialize_json_file_from_string_v2 proc~initialize_json_file_from_string_v2->none~deserialize~2 proc~json_file_add_string_path_ascii json_file%json_file_add_string_path_ascii proc~json_file_add_string_path_ascii->proc~json_file_add_string proc~json_file_add_string_value_ascii json_file%json_file_add_string_value_ascii proc~json_file_add_string_value_ascii->proc~json_file_add_string proc~json_file_add_string_vec_path_ascii json_file%json_file_add_string_vec_path_ascii proc~json_file_add_string_vec_path_ascii->proc~json_file_add_string_vec proc~json_file_add_string_vec_vec_ascii json_file%json_file_add_string_vec_vec_ascii proc~json_file_add_string_vec_vec_ascii->proc~json_file_add_string_vec proc~json_file_get_alloc_string_vec json_file%json_file_get_alloc_string_vec proc~json_file_get_alloc_string_vec->none~get proc~json_file_get_integer json_file%json_file_get_integer proc~json_file_get_integer->none~get proc~json_file_get_integer_vec json_file%json_file_get_integer_vec proc~json_file_get_integer_vec->none~get proc~json_file_get_logical json_file%json_file_get_logical proc~json_file_get_logical->none~get proc~json_file_get_logical_vec json_file%json_file_get_logical_vec proc~json_file_get_logical_vec->none~get proc~json_file_get_object json_file%json_file_get_object proc~json_file_get_object->none~get proc~json_file_get_real json_file%json_file_get_real proc~json_file_get_real->none~get proc~json_file_get_real32 json_file%json_file_get_real32 proc~json_file_get_real32->none~get proc~json_file_get_real32_vec json_file%json_file_get_real32_vec proc~json_file_get_real32_vec->none~get proc~json_file_get_real_vec json_file%json_file_get_real_vec proc~json_file_get_real_vec->none~get proc~json_file_get_string json_file%json_file_get_string proc~json_file_get_string->none~get proc~json_file_get_string_vec json_file%json_file_get_string_vec proc~json_file_get_string_vec->none~get proc~json_get_alloc_string_vec->none~get none~string_info json_core%string_info proc~json_get_alloc_string_vec->none~string_info proc~json_get_alloc_string_vec_by_path->none~get proc~json_get_array_by_path->none~get proc~json_get_integer_by_path->none~get proc~json_get_integer_vec->none~get proc~json_get_integer_vec_by_path->none~get proc~json_get_logical_by_path->none~get proc~json_get_logical_vec->none~get proc~json_get_logical_vec_by_path->none~get proc~json_get_real32->none~get proc~json_get_real32_by_path->none~get proc~json_get_real32_vec->none~get proc~json_get_real32_vec_by_path->none~get proc~json_get_real_by_path->none~get proc~json_get_real_vec->none~get proc~json_get_real_vec_by_path->none~get proc~json_get_string_by_path->none~get proc~json_get_string_vec->none~get proc~json_get_string_vec_by_path->none~get proc~json_info_by_path json_core%json_info_by_path proc~json_info_by_path->none~get proc~json_info_by_path->none~info proc~json_matrix_info_by_path json_core%json_matrix_info_by_path proc~json_matrix_info_by_path->none~get none~matrix_info json_core%matrix_info proc~json_matrix_info_by_path->none~matrix_info proc~json_rename_by_path json_core%json_rename_by_path proc~json_rename_by_path->none~get proc~json_string_info json_core%json_string_info proc~json_string_info->none~get proc~json_string_info->none~info proc~json_valid_path json_core%json_valid_path proc~json_valid_path->none~get proc~wrap_json_create_by_path->none~create proc~wrap_json_file_add_integer json_file%wrap_json_file_add_integer proc~wrap_json_file_add_integer->proc~json_file_add_integer proc~wrap_json_file_add_integer_vec json_file%wrap_json_file_add_integer_vec proc~wrap_json_file_add_integer_vec->proc~json_file_add_integer_vec proc~wrap_json_file_add_logical json_file%wrap_json_file_add_logical proc~wrap_json_file_add_logical->proc~json_file_add_logical proc~wrap_json_file_add_logical_vec json_file%wrap_json_file_add_logical_vec proc~wrap_json_file_add_logical_vec->proc~json_file_add_logical_vec proc~wrap_json_file_add_object json_file%wrap_json_file_add_object proc~wrap_json_file_add_object->proc~json_file_add_object proc~wrap_json_file_add_real json_file%wrap_json_file_add_real proc~wrap_json_file_add_real->proc~json_file_add_real proc~wrap_json_file_add_real32 json_file%wrap_json_file_add_real32 proc~wrap_json_file_add_real32->proc~json_file_add_real32 proc~wrap_json_file_add_real32_vec json_file%wrap_json_file_add_real32_vec proc~wrap_json_file_add_real32_vec->proc~json_file_add_real32_vec proc~wrap_json_file_add_real_vec json_file%wrap_json_file_add_real_vec proc~wrap_json_file_add_real_vec->proc~json_file_add_real_vec proc~wrap_json_file_add_string json_file%wrap_json_file_add_string proc~wrap_json_file_add_string->proc~json_file_add_string proc~wrap_json_file_add_string_vec json_file%wrap_json_file_add_string_vec proc~wrap_json_file_add_string_vec->proc~json_file_add_string_vec proc~wrap_json_file_load_from_string->none~deserialize~2 proc~wrap_json_get_alloc_string_vec_by_path->none~get proc~wrap_json_get_array_by_path->none~get proc~wrap_json_get_by_path->none~get proc~wrap_json_get_integer_by_path->none~get proc~wrap_json_get_integer_vec_by_path->none~get proc~wrap_json_get_logical_by_path->none~get proc~wrap_json_get_logical_vec_by_path->none~get proc~wrap_json_get_real32_by_path->none~get proc~wrap_json_get_real32_vec_by_path->none~get proc~wrap_json_get_real_by_path->none~get proc~wrap_json_get_real_vec_by_path->none~get proc~wrap_json_get_string_by_path->none~get proc~wrap_json_get_string_vec_by_path->none~get proc~wrap_json_value_get_child_by_name json_core%wrap_json_value_get_child_by_name proc~wrap_json_value_get_child_by_name->none~get interface~json_file json_file interface~json_file->proc~initialize_json_file_from_string interface~json_file->proc~initialize_json_file_from_string_v2 proc~wrap_initialize_json_file_from_string wrap_initialize_json_file_from_string interface~json_file->proc~wrap_initialize_json_file_from_string proc~wrap_initialize_json_file_from_string_v2 wrap_initialize_json_file_from_string_v2 interface~json_file->proc~wrap_initialize_json_file_from_string_v2 none~get_child->proc~wrap_json_value_get_child_by_name none~get~2 json_file%get none~get~2->proc~json_file_get_alloc_string_vec none~get~2->proc~json_file_get_integer none~get~2->proc~json_file_get_integer_vec none~get~2->proc~json_file_get_logical none~get~2->proc~json_file_get_logical_vec none~get~2->proc~json_file_get_object none~get~2->proc~json_file_get_real none~get~2->proc~json_file_get_real32 none~get~2->proc~json_file_get_real32_vec none~get~2->proc~json_file_get_real_vec none~get~2->proc~json_file_get_string none~get~2->proc~json_file_get_string_vec proc~wrap_json_file_get_alloc_string_vec json_file%wrap_json_file_get_alloc_string_vec none~get~2->proc~wrap_json_file_get_alloc_string_vec proc~wrap_json_file_get_integer json_file%wrap_json_file_get_integer none~get~2->proc~wrap_json_file_get_integer proc~wrap_json_file_get_integer_vec json_file%wrap_json_file_get_integer_vec none~get~2->proc~wrap_json_file_get_integer_vec proc~wrap_json_file_get_logical json_file%wrap_json_file_get_logical none~get~2->proc~wrap_json_file_get_logical proc~wrap_json_file_get_logical_vec json_file%wrap_json_file_get_logical_vec none~get~2->proc~wrap_json_file_get_logical_vec proc~wrap_json_file_get_object json_file%wrap_json_file_get_object none~get~2->proc~wrap_json_file_get_object proc~wrap_json_file_get_real json_file%wrap_json_file_get_real none~get~2->proc~wrap_json_file_get_real proc~wrap_json_file_get_real32 json_file%wrap_json_file_get_real32 none~get~2->proc~wrap_json_file_get_real32 proc~wrap_json_file_get_real32_vec json_file%wrap_json_file_get_real32_vec none~get~2->proc~wrap_json_file_get_real32_vec proc~wrap_json_file_get_real_vec json_file%wrap_json_file_get_real_vec none~get~2->proc~wrap_json_file_get_real_vec proc~wrap_json_file_get_string json_file%wrap_json_file_get_string none~get~2->proc~wrap_json_file_get_string proc~wrap_json_file_get_string_vec json_file%wrap_json_file_get_string_vec none~get~2->proc~wrap_json_file_get_string_vec none~info->proc~json_info_by_path proc~wrap_json_info_by_path json_core%wrap_json_info_by_path none~info->proc~wrap_json_info_by_path none~matrix_info->proc~json_matrix_info_by_path proc~json_matrix_info json_core%json_matrix_info none~matrix_info->proc~json_matrix_info proc~wrap_json_matrix_info_by_path json_core%wrap_json_matrix_info_by_path none~matrix_info->proc~wrap_json_matrix_info_by_path none~string_info->proc~json_string_info none~valid_path->proc~json_valid_path proc~wrap_json_valid_path json_core%wrap_json_valid_path none~valid_path->proc~wrap_json_valid_path proc~wrap_initialize_json_file_from_string->proc~initialize_json_file_from_string proc~wrap_initialize_json_file_from_string_v2->proc~initialize_json_file_from_string_v2 proc~json_check_children_for_duplicate_keys json_core%json_check_children_for_duplicate_keys proc~json_check_children_for_duplicate_keys->none~get_child none~get_path json_core%get_path proc~json_check_children_for_duplicate_keys->none~get_path proc~json_file_valid_path json_file%json_file_valid_path proc~json_file_valid_path->none~valid_path proc~json_file_variable_info json_file%json_file_variable_info proc~json_file_variable_info->none~info proc~json_file_variable_matrix_info json_file%json_file_variable_matrix_info proc~json_file_variable_matrix_info->none~matrix_info proc~json_get_by_path_default->none~get_child proc~json_get_by_path_rfc6901->none~get_child proc~json_get_path json_core%json_get_path proc~json_get_path->none~info proc~json_is_vector json_core%json_is_vector proc~json_is_vector->none~info proc~json_matrix_info->none~get_child proc~json_matrix_info->none~info proc~json_value_add_member json_core%json_value_add_member proc~json_value_add_member->none~info proc~json_value_insert_after_child_by_index json_core%json_value_insert_after_child_by_index proc~json_value_insert_after_child_by_index->none~get_child proc~json_value_insert_after_child_by_index->none~insert_after proc~json_value_reverse json_core%json_value_reverse proc~json_value_reverse->none~info proc~wrap_json_file_get_alloc_string_vec->none~get~2 proc~wrap_json_file_get_integer->none~get~2 proc~wrap_json_file_get_integer_vec->none~get~2 proc~wrap_json_file_get_logical->none~get~2 proc~wrap_json_file_get_logical_vec->none~get~2 proc~wrap_json_file_get_object->none~get~2 proc~wrap_json_file_get_real->none~get~2 proc~wrap_json_file_get_real32->none~get~2 proc~wrap_json_file_get_real32_vec->none~get~2 proc~wrap_json_file_get_real_vec->none~get~2 proc~wrap_json_file_get_string->none~get~2 proc~wrap_json_file_get_string_vec->none~get~2 proc~wrap_json_info_by_path->none~info proc~wrap_json_matrix_info_by_path->none~matrix_info proc~wrap_json_valid_path->none~valid_path none~get_path->proc~json_get_path proc~wrap_json_get_path json_core%wrap_json_get_path none~get_path->proc~wrap_json_get_path none~info~2 json_file%info none~info~2->proc~json_file_variable_info proc~wrap_json_file_variable_info json_file%wrap_json_file_variable_info none~info~2->proc~wrap_json_file_variable_info none~insert_after->proc~json_value_insert_after_child_by_index none~matrix_info~2 json_file%matrix_info none~matrix_info~2->proc~json_file_variable_matrix_info proc~wrap_json_file_variable_matrix_info json_file%wrap_json_file_variable_matrix_info none~matrix_info~2->proc~wrap_json_file_variable_matrix_info none~valid_path~2 json_file%valid_path none~valid_path~2->proc~json_file_valid_path proc~wrap_json_file_valid_path json_file%wrap_json_file_valid_path none~valid_path~2->proc~wrap_json_file_valid_path proc~json_value_print json_core%json_value_print proc~json_value_print->proc~json_is_vector proc~json_value_print->proc~json_value_print proc~json_print_to_unit json_core%json_print_to_unit proc~json_print_to_unit->proc~json_value_print proc~json_value_to_string json_core%json_value_to_string proc~json_value_to_string->proc~json_value_print proc~wrap_json_file_valid_path->none~valid_path~2 proc~wrap_json_file_variable_info->none~info~2 proc~wrap_json_file_variable_matrix_info->none~matrix_info~2 proc~wrap_json_get_path->none~get_path proc~assign_json_file_to_string json_file%assign_json_file_to_string proc~assign_json_file_to_string->proc~json_value_to_string proc~json_file_print_to_string json_file%json_file_print_to_string proc~json_file_print_to_string->proc~json_value_to_string

Source Code

    pure recursive subroutine json_value_destroy(json,p,destroy_next)

    implicit none

    class(json_core),intent(inout)  :: json
    type(json_value),pointer        :: p            !! variable to destroy
    logical(LK),intent(in),optional :: destroy_next !! if true, then `p%next`
                                                    !! is also destroyed (default is true)

    logical(LK)              :: des_next  !! local copy of `destroy_next`
                                          !! optional argument
    type(json_value),pointer :: child     !! for getting child elements
    logical                  :: circular  !! to check to malformed linked lists

    if (associated(p)) then

        if (present(destroy_next)) then
            des_next = destroy_next
        else
            des_next = .true.
        end if

        if (allocated(p%name)) deallocate(p%name)

        call destroy_json_data(p)

        if (associated(p%next)) then
            ! check for circular references:
            if (associated(p, p%next)) nullify(p%next)
        end if

        if (associated(p%children)) then
            do while (p%n_children > 0)
                child => p%children
                if (associated(child)) then
                    p%children => p%children%next
                    p%n_children = p%n_children - 1
                    ! check children for circular references:
                    circular = (associated(p%children) .and. &
                                associated(p%children,child))
                    call json%destroy(child,destroy_next=.false.)
                    if (circular) exit
                else
                    ! it is a malformed JSON object. But, we will
                    ! press ahead with the destroy process, since
                    ! otherwise, there would be no way to destroy it.
                    exit
                end if
            end do
            nullify(p%children)
            nullify(child)
        end if

        if (associated(p%next) .and. des_next) call json%destroy(p%next)

        nullify(p%previous)
        nullify(p%parent)
        nullify(p%tail)

        if (associated(p)) deallocate(p)
        nullify(p)

    end if

    end subroutine json_value_destroy