json_file_module Module

Higher-level json_file interface for the json_value type.

License

  • JSON-Fortran is released under a BSD-style license. See the LICENSE file for details.

Uses

  • module~~json_file_module~~UsesGraph module~json_file_module json_file_module module~json_string_utilities json_string_utilities module~json_file_module->module~json_string_utilities module~json_value_module json_value_module module~json_file_module->module~json_value_module module~json_kinds json_kinds module~json_file_module->module~json_kinds module~json_parameters json_parameters module~json_file_module->module~json_parameters iso_fortran_env iso_fortran_env module~json_file_module->iso_fortran_env module~json_string_utilities->module~json_kinds module~json_string_utilities->module~json_parameters ieee_arithmetic ieee_arithmetic module~json_string_utilities->ieee_arithmetic module~json_value_module->module~json_string_utilities module~json_value_module->module~json_kinds module~json_value_module->module~json_parameters module~json_value_module->iso_fortran_env module~json_value_module->ieee_arithmetic module~json_kinds->iso_fortran_env module~json_parameters->module~json_kinds

Used by

  • module~~json_file_module~~UsedByGraph module~json_file_module json_file_module module~json_module json_module module~json_module->module~json_file_module

Contents

assign_json_file assign_json_file_to_string assign_string_to_json_file finalize_json_file get_json_core_in_file initialize_json_core_in_file json_file_add json_file_add_integer json_file_add_integer_vec json_file_add_logical json_file_add_logical_vec json_file_add_object json_file_add_real json_file_add_real32 json_file_add_real32_vec json_file_add_real_vec json_file_add_string json_file_add_string_path_ascii json_file_add_string_value_ascii json_file_add_string_vec json_file_add_string_vec_path_ascii json_file_add_string_vec_vec_ascii json_file_check_for_errors json_file_clear_exceptions json_file_destroy json_file_get_alloc_string_vec json_file_get_integer json_file_get_integer_vec json_file_get_logical json_file_get_logical_vec json_file_get_object json_file_get_real json_file_get_real32 json_file_get_real32_vec json_file_get_real_vec json_file_get_root json_file_get_string json_file_get_string_vec json_file_load json_file_load_from_string json_file_move_pointer json_file_nullify json_file_print_error_message json_file_print_to_console json_file_print_to_filename json_file_print_to_string json_file_print_to_unit json_file_remove json_file_rename json_file_rename_name_ascii json_file_rename_path_ascii json_file_traverse json_file_update_integer json_file_update_logical json_file_update_real json_file_update_real32 json_file_update_string json_file_update_string_name_ascii json_file_update_string_val_ascii json_file_variable_info json_file_variable_matrix_info set_json_core_in_file wrap_assign_string_to_json_file wrap_json_file_add_integer wrap_json_file_add_integer_vec wrap_json_file_add_logical wrap_json_file_add_logical_vec wrap_json_file_add_object wrap_json_file_add_real wrap_json_file_add_real32 wrap_json_file_add_real32_vec wrap_json_file_add_real_vec wrap_json_file_add_string wrap_json_file_add_string_vec wrap_json_file_get_alloc_string_vec wrap_json_file_get_integer wrap_json_file_get_integer_vec wrap_json_file_get_logical wrap_json_file_get_logical_vec wrap_json_file_get_object wrap_json_file_get_real wrap_json_file_get_real32 wrap_json_file_get_real32_vec wrap_json_file_get_real_vec wrap_json_file_get_string wrap_json_file_get_string_vec wrap_json_file_load_from_string wrap_json_file_remove wrap_json_file_rename wrap_json_file_update_integer wrap_json_file_update_logical wrap_json_file_update_real wrap_json_file_update_real32 wrap_json_file_update_string wrap_json_file_variable_info wrap_json_file_variable_matrix_info

Interfaces

public interface json_file

Structure constructor to initialize a json_file object with an existing json_value object or a JSON string, and either the json_core settings or a json_core instance.

Read more…
  • private function initialize_json_file(p, verbose, compact_reals, print_signs, real_format, spaces_per_tab, strict_type_checking, trailing_spaces_significant, case_sensitive_keys, no_whitespace, unescape_strings, comment_char, path_mode, path_separator, compress_vectors, allow_duplicate_keys, escape_solidus, stop_on_error, null_to_real_mode, non_normal_mode, use_quiet_nan, strict_integer_type_checking) result(file_object)

    Author
    Izaak Beekman
    Date
    07/23/2015

    Cast a json_value object as a json_file object. It also calls the initialize() method.

    Read more…

    Arguments

    TypeIntentOptionalAttributesName
    type(json_value), optional pointer:: p

    json_value object to cast as a json_file object. This will be nullified.

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

    mainly useful for debugging (default is false)

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

    to compact the real number strings for output (default is true)

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

    always print numeric sign (default is false)

    character(kind=CDK,len=*), intent(in), optional :: real_format

    Real number format: ‘E’ [default], ‘*’, ‘G’, ‘EN’, or ‘ES’

    integer(kind=IK), intent(in), optional :: spaces_per_tab

    number of spaces per tab for indenting (default is 2)

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

    if true, no integer, double, or logical type conversions are done for the get routines (default is false).

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

    for name and path comparisons, is trailing space to be considered significant. (default is false)

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

    for name and path comparisons, are they case sensitive. (default is true)

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

    if true, printing the JSON structure is done without adding any non-significant spaces or linebreaks (default is false)

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

    If false, then the raw escaped string is returned from json_get_string and similar routines. If true [default], then the string is returned unescaped.

    character(kind=CK,len=*), intent(in), optional :: comment_char

    If present, these characters are used to denote comments in the JSON file, which will be ignored if present. Example: !, #, or /!#. Setting this to a blank string disables the ignoring of comments. (Default is /!#).

    integer(kind=IK), intent(in), optional :: path_mode

    How the path strings are interpreted in the get_by_path routines:

    character(kind=CK,len=1), intent(in), optional :: path_separator

    The path separator to use in the “default” mode for the paths in the various get_by_path routines. Example: . [default] or %. Note: if path_mode/=1 then this is ignored.

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

    If true, then arrays of integers, nulls, doubles, and logicals are printed all on one line. [Note: no_whitespace will override this option if necessary]. (Default is False).

    logical(kind=LK), intent(in), optional :: allow_duplicate_keysRead more…
    logical(kind=LK), intent(in), optional :: escape_solidus
    • If True then the solidus “/” is always escaped “\/” when serializing JSON
    • If False [default], then it is not escaped.

    Note that this option does not affect parsing (both escaped and unescaped are still valid in all cases).

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

    If an exception is raised, then immediately quit. (Default is False).

    integer(kind=IK), intent(in), optional :: null_to_real_mode

    if strict_type_checking=false:

    • 1 : an exception will be raised if try to retrieve a null as a real.
    • 2 : a null retrieved as a real will return a NaN. [default]
    • 3 : a null retrieved as a real will return 0.0.
    integer(kind=IK), intent(in), optional :: non_normal_mode

    How to serialize NaN, Infinity, and -Infinity real values:

    • 1 : as strings (e.g., “NaN”, “Infinity”, “-Infinity”) [default]
    • 2 : as JSON null values
    logical(kind=LK), intent(in), optional :: use_quiet_nanRead more…
    logical(kind=LK), intent(in), optional :: strict_integer_type_checking
    • If false, when parsing JSON, if an integer numeric value cannot be converted to an integer (integer(IK)), then an attempt is then make to convert it to a real (real(RK)).
    • If true, an exception will be raised if the integer value cannot be read.

    (default is true)

    Return Value type(json_file)

  • private function initialize_json_file_v2(json_value_object, json_core_object) result(file_object)

    Author
    Jacob Williams
    Date
    4/26/2016

    Cast a json_value pointer and a json_core object as a json_file object.

    Arguments

    TypeIntentOptionalAttributesName
    type(json_value), intent(in), pointer:: json_value_object
    type(json_core), intent(in) :: json_core_object

    Return Value type(json_file)

  • private function initialize_json_file_from_string(str, verbose, compact_reals, print_signs, real_format, spaces_per_tab, strict_type_checking, trailing_spaces_significant, case_sensitive_keys, no_whitespace, unescape_strings, comment_char, path_mode, path_separator, compress_vectors, allow_duplicate_keys, escape_solidus, stop_on_error, null_to_real_mode, non_normal_mode, use_quiet_nan, strict_integer_type_checking) result(file_object)

    Author
    Jacob Williams
    Date
    01/19/2019

    Cast a JSON string as a json_file object. It also calls the initialize() method.

    Read more…

    Arguments

    TypeIntentOptionalAttributesName
    character(kind=CK,len=*), intent(in) :: str

    string to load JSON data from

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

    mainly useful for debugging (default is false)

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

    to compact the real number strings for output (default is true)

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

    always print numeric sign (default is false)

    character(kind=CDK,len=*), intent(in), optional :: real_format

    Real number format: ‘E’ [default], ‘*’, ‘G’, ‘EN’, or ‘ES’

    integer(kind=IK), intent(in), optional :: spaces_per_tab

    number of spaces per tab for indenting (default is 2)

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

    if true, no integer, double, or logical type conversions are done for the get routines (default is false).

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

    for name and path comparisons, is trailing space to be considered significant. (default is false)

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

    for name and path comparisons, are they case sensitive. (default is true)

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

    if true, printing the JSON structure is done without adding any non-significant spaces or linebreaks (default is false)

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

    If false, then the raw escaped string is returned from json_get_string and similar routines. If true [default], then the string is returned unescaped.

    character(kind=CK,len=*), intent(in), optional :: comment_char

    If present, these characters are used to denote comments in the JSON file, which will be ignored if present. Example: !, #, or /!#. Setting this to a blank string disables the ignoring of comments. (Default is /!#).

    integer(kind=IK), intent(in), optional :: path_mode

    How the path strings are interpreted in the get_by_path routines:

    character(kind=CK,len=1), intent(in), optional :: path_separator

    The path separator to use in the “default” mode for the paths in the various get_by_path routines. Example: . [default] or %. Note: if path_mode/=1 then this is ignored.

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

    If true, then arrays of integers, nulls, doubles, and logicals are printed all on one line. [Note: no_whitespace will override this option if necessary]. (Default is False).

    logical(kind=LK), intent(in), optional :: allow_duplicate_keysRead more…
    logical(kind=LK), intent(in), optional :: escape_solidus
    • If True then the solidus “/” is always escaped “\/” when serializing JSON
    • If False [default], then it is not escaped.

    Note that this option does not affect parsing (both escaped and unescaped are still valid in all cases).

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

    If an exception is raised, then immediately quit. (Default is False).

    integer(kind=IK), intent(in), optional :: null_to_real_mode

    if strict_type_checking=false:

    • 1 : an exception will be raised if try to retrieve a null as a real.
    • 2 : a null retrieved as a real will return a NaN. [default]
    • 3 : a null retrieved as a real will return 0.0.
    integer(kind=IK), intent(in), optional :: non_normal_mode

    How to serialize NaN, Infinity, and -Infinity real values:

    • 1 : as strings (e.g., “NaN”, “Infinity”, “-Infinity”) [default]
    • 2 : as JSON null values
    logical(kind=LK), intent(in), optional :: use_quiet_nanRead more…
    logical(kind=LK), intent(in), optional :: strict_integer_type_checking
    • If false, when parsing JSON, if an integer numeric value cannot be converted to an integer (integer(IK)), then an attempt is then make to convert it to a real (real(RK)).
    • If true, an exception will be raised if the integer value cannot be read.

    (default is true)

    Return Value type(json_file)

  • private function wrap_initialize_json_file_from_string(str, verbose, compact_reals, print_signs, real_format, spaces_per_tab, strict_type_checking, trailing_spaces_significant, case_sensitive_keys, no_whitespace, unescape_strings, comment_char, path_mode, path_separator, compress_vectors, allow_duplicate_keys, escape_solidus, stop_on_error, null_to_real_mode, non_normal_mode, use_quiet_nan, strict_integer_type_checking) result(file_object)

    Alternate version of initialize_json_file_from_string, where “str” is kind=CDK.

    Arguments

    TypeIntentOptionalAttributesName
    character(kind=CDK,len=*), intent(in) :: str

    string to load JSON data from

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

    mainly useful for debugging (default is false)

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

    to compact the real number strings for output (default is true)

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

    always print numeric sign (default is false)

    character(kind=CDK,len=*), intent(in), optional :: real_format

    Real number format: ‘E’ [default], ‘*’, ‘G’, ‘EN’, or ‘ES’

    integer(kind=IK), intent(in), optional :: spaces_per_tab

    number of spaces per tab for indenting (default is 2)

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

    if true, no integer, double, or logical type conversions are done for the get routines (default is false).

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

    for name and path comparisons, is trailing space to be considered significant. (default is false)

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

    for name and path comparisons, are they case sensitive. (default is true)

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

    if true, printing the JSON structure is done without adding any non-significant spaces or linebreaks (default is false)

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

    If false, then the raw escaped string is returned from json_get_string and similar routines. If true [default], then the string is returned unescaped.

    character(kind=CK,len=*), intent(in), optional :: comment_char

    If present, these characters are used to denote comments in the JSON file, which will be ignored if present. Example: !, #, or /!#. Setting this to a blank string disables the ignoring of comments. (Default is /!#).

    integer(kind=IK), intent(in), optional :: path_mode

    How the path strings are interpreted in the get_by_path routines:

    character(kind=CK,len=1), intent(in), optional :: path_separator

    The path separator to use in the “default” mode for the paths in the various get_by_path routines. Example: . [default] or %. Note: if path_mode/=1 then this is ignored.

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

    If true, then arrays of integers, nulls, doubles, and logicals are printed all on one line. [Note: no_whitespace will override this option if necessary]. (Default is False).

    logical(kind=LK), intent(in), optional :: allow_duplicate_keysRead more…
    logical(kind=LK), intent(in), optional :: escape_solidus
    • If True then the solidus “/” is always escaped “\/” when serializing JSON
    • If False [default], then it is not escaped.

    Note that this option does not affect parsing (both escaped and unescaped are still valid in all cases).

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

    If an exception is raised, then immediately quit. (Default is False).

    integer(kind=IK), intent(in), optional :: null_to_real_mode

    if strict_type_checking=false:

    • 1 : an exception will be raised if try to retrieve a null as a real.
    • 2 : a null retrieved as a real will return a NaN. [default]
    • 3 : a null retrieved as a real will return 0.0.
    integer(kind=IK), intent(in), optional :: non_normal_mode

    How to serialize NaN, Infinity, and -Infinity real values:

    • 1 : as strings (e.g., “NaN”, “Infinity”, “-Infinity”) [default]
    • 2 : as JSON null values
    logical(kind=LK), intent(in), optional :: use_quiet_nanRead more…
    logical(kind=LK), intent(in), optional :: strict_integer_type_checking
    • If false, when parsing JSON, if an integer numeric value cannot be converted to an integer (integer(IK)), then an attempt is then make to convert it to a real (real(RK)).
    • If true, an exception will be raised if the integer value cannot be read.

    (default is true)

    Return Value type(json_file)

  • private function initialize_json_file_from_string_v2(str, json_core_object) result(file_object)

    Author
    Jacob Williams
    Date
    1/19/2019

    Cast a JSON string and a json_core object as a json_file object.

    Arguments

    TypeIntentOptionalAttributesName
    character(kind=CK,len=*), intent(in) :: str

    string to load JSON data from

    type(json_core), intent(in) :: json_core_object

    Return Value type(json_file)

  • private function wrap_initialize_json_file_from_string_v2(str, json_core_object) result(file_object)

    Alternate version of initialize_json_file_from_string_v2, where “str” is kind=CDK.

    Arguments

    TypeIntentOptionalAttributesName
    character(kind=CDK,len=*), intent(in) :: str

    string to load JSON data from

    type(json_core), intent(in) :: json_core_object

    Return Value type(json_file)


Derived Types

type, public :: json_file

The json_file is the main public class that is used to open a file and get data from it.

Read more…

Components

TypeVisibilityAttributesNameInitial
type(json_core), public :: core

The instance of the json_core factory used for this file.

type(json_value), public, pointer:: p=> null()

the JSON structure read from the file

Constructor

Structure constructor to initialize a json_file object with an existing json_value object or a JSON string, and either the json_core settings or a json_core instance.

Read more…
private function initialize_json_file(p, verbose, compact_reals, print_signs, real_format, spaces_per_tab, strict_type_checking, trailing_spaces_significant, case_sensitive_keys, no_whitespace, unescape_strings, comment_char, path_mode, path_separator, compress_vectors, allow_duplicate_keys, escape_solidus, stop_on_error, null_to_real_mode, non_normal_mode, use_quiet_nan, strict_integer_type_checking)

Cast a json_value object as a json_file object. It also calls the initialize() method.

Read more…
private function initialize_json_file_v2(json_value_object, json_core_object)

Cast a json_value pointer and a json_core object as a json_file object.

private function initialize_json_file_from_string(str, verbose, compact_reals, print_signs, real_format, spaces_per_tab, strict_type_checking, trailing_spaces_significant, case_sensitive_keys, no_whitespace, unescape_strings, comment_char, path_mode, path_separator, compress_vectors, allow_duplicate_keys, escape_solidus, stop_on_error, null_to_real_mode, non_normal_mode, use_quiet_nan, strict_integer_type_checking)

Cast a JSON string as a json_file object. It also calls the initialize() method.

Read more…
private function wrap_initialize_json_file_from_string(str, verbose, compact_reals, print_signs, real_format, spaces_per_tab, strict_type_checking, trailing_spaces_significant, case_sensitive_keys, no_whitespace, unescape_strings, comment_char, path_mode, path_separator, compress_vectors, allow_duplicate_keys, escape_solidus, stop_on_error, null_to_real_mode, non_normal_mode, use_quiet_nan, strict_integer_type_checking)

Alternate version of initialize_json_file_from_string, where “str” is kind=CDK.

private function initialize_json_file_from_string_v2(str, json_core_object)

Cast a JSON string and a json_core object as a json_file object.

private function wrap_initialize_json_file_from_string_v2(str, json_core_object)

Alternate version of initialize_json_file_from_string_v2, where “str” is kind=CDK.

Finalizations Procedures

final :: finalize_json_file

Type-Bound Procedures

generic, public :: add => json_file_add, json_file_add_object, wrap_json_file_add_object, json_file_add_integer, wrap_json_file_add_integer, json_file_add_real32, wrap_json_file_add_real32, json_file_add_real, wrap_json_file_add_real, json_file_add_logical, wrap_json_file_add_logical, json_file_add_string, wrap_json_file_add_string, json_file_add_integer_vec, wrap_json_file_add_integer_vec, json_file_add_real32_vec, wrap_json_file_add_real32_vec, json_file_add_real_vec, wrap_json_file_add_real_vec, json_file_add_logical_vec, wrap_json_file_add_logical_vec, json_file_add_string_vec, wrap_json_file_add_string_vec

Add a variable to a json_file, by specifying the path.

Read more…
generic, public :: add => json_file_add_string_path_ascii, json_file_add_string_value_ascii, json_file_add_string_vec_path_ascii, json_file_add_string_vec_vec_ascii
procedure, public :: assign_json_file
procedure, public, pass(me) :: assign_json_file_to_string
procedure, public :: assign_string_to_json_file
generic, public :: assignment(=) => assign_json_file, assign_json_file_to_string, assign_string_to_json_file, wrap_assign_string_to_json_file
procedure, public :: check_for_errors => json_file_check_for_errors
procedure, public :: clear_exceptions => json_file_clear_exceptions
generic, public :: deserialize => json_file_load_from_string, wrap_json_file_load_from_string

Load JSON from a string.

procedure, public :: destroy => json_file_destroy
procedure, public :: failed => json_file_failed
generic, public :: get => json_file_get_object, wrap_json_file_get_object, json_file_get_integer, wrap_json_file_get_integer, json_file_get_real32, wrap_json_file_get_real32, json_file_get_real, wrap_json_file_get_real, json_file_get_logical, wrap_json_file_get_logical, json_file_get_string, wrap_json_file_get_string, json_file_get_integer_vec, wrap_json_file_get_integer_vec, json_file_get_real32_vec, wrap_json_file_get_real32_vec, json_file_get_real_vec, wrap_json_file_get_real_vec, json_file_get_logical_vec, wrap_json_file_get_logical_vec, json_file_get_string_vec, wrap_json_file_get_string_vec, json_file_get_alloc_string_vec, wrap_json_file_get_alloc_string_vec, json_file_get_root

Get a variable from a json_file, by specifying the path.

procedure, public :: get_core => get_json_core_in_file
generic, public :: info => json_file_variable_info, wrap_json_file_variable_info
generic, public :: initialize => initialize_json_core_in_file, set_json_core_in_file
procedure, public :: initialize_json_core_in_file
procedure, public :: json_file_add
procedure, public :: json_file_add_integer
procedure, public :: json_file_add_integer_vec
procedure, public :: json_file_add_logical
procedure, public :: json_file_add_logical_vec
procedure, public :: json_file_add_object
procedure, public :: json_file_add_real
procedure, public :: json_file_add_real32
procedure, public :: json_file_add_real32_vec
procedure, public :: json_file_add_real_vec
procedure, public :: json_file_add_string
procedure, public :: json_file_add_string_path_ascii
procedure, public :: json_file_add_string_value_ascii
procedure, public :: json_file_add_string_vec
procedure, public :: json_file_add_string_vec_path_ascii
procedure, public :: json_file_add_string_vec_vec_ascii
procedure, public :: json_file_get_alloc_string_vec
procedure, public :: json_file_get_integer
procedure, public :: json_file_get_integer_vec
procedure, public :: json_file_get_logical
procedure, public :: json_file_get_logical_vec
procedure, public :: json_file_get_object
procedure, public :: json_file_get_real
procedure, public :: json_file_get_real32
procedure, public :: json_file_get_real32_vec
procedure, public :: json_file_get_real_vec
procedure, public :: json_file_get_root
procedure, public :: json_file_get_string
procedure, public :: json_file_get_string_vec
procedure, public :: json_file_load_from_string
procedure, public :: json_file_print_to_console
procedure, public :: json_file_print_to_filename
procedure, public :: json_file_print_to_unit
procedure, public :: json_file_remove
procedure, public :: json_file_rename
procedure, public :: json_file_rename_name_ascii
procedure, public :: json_file_rename_path_ascii
procedure, public :: json_file_update_integer
procedure, public :: json_file_update_logical
procedure, public :: json_file_update_real
procedure, public :: json_file_update_real32
procedure, public :: json_file_update_string
procedure, public :: json_file_update_string_name_ascii
procedure, public :: json_file_update_string_val_ascii
procedure, public :: json_file_valid_path
procedure, public, pass(me) :: json_file_valid_path_op
procedure, public :: json_file_variable_info
procedure, public :: json_file_variable_matrix_info
procedure, public :: load => json_file_load

Load JSON from a file.

procedure, public :: load_file => json_file_load

The same as load, but only here for backward compatibility

generic, public :: load_from_string => json_file_load_from_string, wrap_json_file_load_from_string

The same as deserialize, but only here for backward compatibility

generic, public :: matrix_info => json_file_variable_matrix_info, wrap_json_file_variable_matrix_info
procedure, public :: move => json_file_move_pointer
procedure, public :: nullify => json_file_nullify
generic, public :: operator(.in.) => json_file_valid_path_op, wrap_json_file_valid_path_op
generic, public :: print => json_file_print_to_console, json_file_print_to_unit, json_file_print_to_filename
procedure, public :: print_error_message => json_file_print_error_message
generic, public :: print_file => json_file_print_to_console, json_file_print_to_unit, json_file_print_to_filename

The same as print, but only here for backward compatibility

procedure, public :: print_to_string => json_file_print_to_string

The same as serialize, but only here for backward compatibility

generic, public :: remove => json_file_remove, wrap_json_file_remove

Remove a variable from a json_file by specifying the path.

generic, public :: rename => json_file_rename, wrap_json_file_rename

Rename a variable, specifying it by path

generic, public :: rename => json_file_rename_path_ascii, json_file_rename_name_ascii
procedure, public :: serialize => json_file_print_to_string

Print the json_value structure to an allocatable string

procedure, public :: set_json_core_in_file
procedure, public :: traverse => json_file_traverse
generic, public :: update => json_file_update_integer, wrap_json_file_update_integer, json_file_update_logical, wrap_json_file_update_logical, json_file_update_real32, wrap_json_file_update_real32, json_file_update_real, wrap_json_file_update_real, json_file_update_string, wrap_json_file_update_string

Update a scalar variable in a json_file, by specifying the path.

Read more…
generic, public :: update => json_file_update_string_name_ascii, json_file_update_string_val_ascii
generic, public :: valid_path => json_file_valid_path, wrap_json_file_valid_path

Verify that a path is valid (i.e., a variable with this path exists in the file).

procedure, public :: wrap_assign_string_to_json_file
procedure, public :: wrap_json_file_add_integer
procedure, public :: wrap_json_file_add_integer_vec
procedure, public :: wrap_json_file_add_logical
procedure, public :: wrap_json_file_add_logical_vec
procedure, public :: wrap_json_file_add_object
procedure, public :: wrap_json_file_add_real
procedure, public :: wrap_json_file_add_real32
procedure, public :: wrap_json_file_add_real32_vec
procedure, public :: wrap_json_file_add_real_vec
procedure, public :: wrap_json_file_add_string
procedure, public :: wrap_json_file_add_string_vec
procedure, public :: wrap_json_file_get_alloc_string_vec
procedure, public :: wrap_json_file_get_integer
procedure, public :: wrap_json_file_get_integer_vec
procedure, public :: wrap_json_file_get_logical
procedure, public :: wrap_json_file_get_logical_vec
procedure, public :: wrap_json_file_get_object
procedure, public :: wrap_json_file_get_real
procedure, public :: wrap_json_file_get_real32
procedure, public :: wrap_json_file_get_real32_vec
procedure, public :: wrap_json_file_get_real_vec
procedure, public :: wrap_json_file_get_string
procedure, public :: wrap_json_file_get_string_vec
procedure, public :: wrap_json_file_load_from_string
procedure, public :: wrap_json_file_remove
procedure, public :: wrap_json_file_rename
procedure, public :: wrap_json_file_update_integer
procedure, public :: wrap_json_file_update_logical
procedure, public :: wrap_json_file_update_real
procedure, public :: wrap_json_file_update_real32
procedure, public :: wrap_json_file_update_string
procedure, public :: wrap_json_file_valid_path
procedure, public, pass(me) :: wrap_json_file_valid_path_op
procedure, public :: wrap_json_file_variable_info
procedure, public :: wrap_json_file_variable_matrix_info

Functions

private function initialize_json_file(p, verbose, compact_reals, print_signs, real_format, spaces_per_tab, strict_type_checking, trailing_spaces_significant, case_sensitive_keys, no_whitespace, unescape_strings, comment_char, path_mode, path_separator, compress_vectors, allow_duplicate_keys, escape_solidus, stop_on_error, null_to_real_mode, non_normal_mode, use_quiet_nan, strict_integer_type_checking) result(file_object)

Author
Izaak Beekman
Date
07/23/2015

Cast a json_value object as a json_file object. It also calls the initialize() method.

Read more…

Arguments

TypeIntentOptionalAttributesName
type(json_value), optional pointer:: p

json_value object to cast as a json_file object. This will be nullified.

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

mainly useful for debugging (default is false)

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

to compact the real number strings for output (default is true)

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

always print numeric sign (default is false)

character(kind=CDK,len=*), intent(in), optional :: real_format

Real number format: ‘E’ [default], ‘*’, ‘G’, ‘EN’, or ‘ES’

integer(kind=IK), intent(in), optional :: spaces_per_tab

number of spaces per tab for indenting (default is 2)

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

if true, no integer, double, or logical type conversions are done for the get routines (default is false).

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

for name and path comparisons, is trailing space to be considered significant. (default is false)

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

for name and path comparisons, are they case sensitive. (default is true)

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

if true, printing the JSON structure is done without adding any non-significant spaces or linebreaks (default is false)

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

If false, then the raw escaped string is returned from json_get_string and similar routines. If true [default], then the string is returned unescaped.

character(kind=CK,len=*), intent(in), optional :: comment_char

If present, these characters are used to denote comments in the JSON file, which will be ignored if present. Example: !, #, or /!#. Setting this to a blank string disables the ignoring of comments. (Default is /!#).

integer(kind=IK), intent(in), optional :: path_mode

How the path strings are interpreted in the get_by_path routines:

character(kind=CK,len=1), intent(in), optional :: path_separator

The path separator to use in the “default” mode for the paths in the various get_by_path routines. Example: . [default] or %. Note: if path_mode/=1 then this is ignored.

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

If true, then arrays of integers, nulls, doubles, and logicals are printed all on one line. [Note: no_whitespace will override this option if necessary]. (Default is False).

logical(kind=LK), intent(in), optional :: allow_duplicate_keysRead more…
logical(kind=LK), intent(in), optional :: escape_solidus
  • If True then the solidus “/” is always escaped “\/” when serializing JSON
  • If False [default], then it is not escaped.

Note that this option does not affect parsing (both escaped and unescaped are still valid in all cases).

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

If an exception is raised, then immediately quit. (Default is False).

integer(kind=IK), intent(in), optional :: null_to_real_mode

if strict_type_checking=false:

  • 1 : an exception will be raised if try to retrieve a null as a real.
  • 2 : a null retrieved as a real will return a NaN. [default]
  • 3 : a null retrieved as a real will return 0.0.
integer(kind=IK), intent(in), optional :: non_normal_mode

How to serialize NaN, Infinity, and -Infinity real values:

  • 1 : as strings (e.g., “NaN”, “Infinity”, “-Infinity”) [default]
  • 2 : as JSON null values
logical(kind=LK), intent(in), optional :: use_quiet_nanRead more…
logical(kind=LK), intent(in), optional :: strict_integer_type_checking
  • If false, when parsing JSON, if an integer numeric value cannot be converted to an integer (integer(IK)), then an attempt is then make to convert it to a real (real(RK)).
  • If true, an exception will be raised if the integer value cannot be read.

(default is true)

Return Value type(json_file)

private function initialize_json_file_from_string(str, verbose, compact_reals, print_signs, real_format, spaces_per_tab, strict_type_checking, trailing_spaces_significant, case_sensitive_keys, no_whitespace, unescape_strings, comment_char, path_mode, path_separator, compress_vectors, allow_duplicate_keys, escape_solidus, stop_on_error, null_to_real_mode, non_normal_mode, use_quiet_nan, strict_integer_type_checking) result(file_object)

Author
Jacob Williams
Date
01/19/2019

Cast a JSON string as a json_file object. It also calls the initialize() method.

Read more…

Arguments

TypeIntentOptionalAttributesName
character(kind=CK,len=*), intent(in) :: str

string to load JSON data from

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

mainly useful for debugging (default is false)

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

to compact the real number strings for output (default is true)

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

always print numeric sign (default is false)

character(kind=CDK,len=*), intent(in), optional :: real_format

Real number format: ‘E’ [default], ‘*’, ‘G’, ‘EN’, or ‘ES’

integer(kind=IK), intent(in), optional :: spaces_per_tab

number of spaces per tab for indenting (default is 2)

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

if true, no integer, double, or logical type conversions are done for the get routines (default is false).

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

for name and path comparisons, is trailing space to be considered significant. (default is false)

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

for name and path comparisons, are they case sensitive. (default is true)

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

if true, printing the JSON structure is done without adding any non-significant spaces or linebreaks (default is false)

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

If false, then the raw escaped string is returned from json_get_string and similar routines. If true [default], then the string is returned unescaped.

character(kind=CK,len=*), intent(in), optional :: comment_char

If present, these characters are used to denote comments in the JSON file, which will be ignored if present. Example: !, #, or /!#. Setting this to a blank string disables the ignoring of comments. (Default is /!#).

integer(kind=IK), intent(in), optional :: path_mode

How the path strings are interpreted in the get_by_path routines:

character(kind=CK,len=1), intent(in), optional :: path_separator

The path separator to use in the “default” mode for the paths in the various get_by_path routines. Example: . [default] or %. Note: if path_mode/=1 then this is ignored.

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

If true, then arrays of integers, nulls, doubles, and logicals are printed all on one line. [Note: no_whitespace will override this option if necessary]. (Default is False).

logical(kind=LK), intent(in), optional :: allow_duplicate_keysRead more…
logical(kind=LK), intent(in), optional :: escape_solidus
  • If True then the solidus “/” is always escaped “\/” when serializing JSON
  • If False [default], then it is not escaped.

Note that this option does not affect parsing (both escaped and unescaped are still valid in all cases).

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

If an exception is raised, then immediately quit. (Default is False).

integer(kind=IK), intent(in), optional :: null_to_real_mode

if strict_type_checking=false:

  • 1 : an exception will be raised if try to retrieve a null as a real.
  • 2 : a null retrieved as a real will return a NaN. [default]
  • 3 : a null retrieved as a real will return 0.0.
integer(kind=IK), intent(in), optional :: non_normal_mode

How to serialize NaN, Infinity, and -Infinity real values:

  • 1 : as strings (e.g., “NaN”, “Infinity”, “-Infinity”) [default]
  • 2 : as JSON null values
logical(kind=LK), intent(in), optional :: use_quiet_nanRead more…
logical(kind=LK), intent(in), optional :: strict_integer_type_checking
  • If false, when parsing JSON, if an integer numeric value cannot be converted to an integer (integer(IK)), then an attempt is then make to convert it to a real (real(RK)).
  • If true, an exception will be raised if the integer value cannot be read.

(default is true)

Return Value type(json_file)

private function initialize_json_file_from_string_v2(str, json_core_object) result(file_object)

Author
Jacob Williams
Date
1/19/2019

Cast a JSON string and a json_core object as a json_file object.

Arguments

TypeIntentOptionalAttributesName
character(kind=CK,len=*), intent(in) :: str

string to load JSON data from

type(json_core), intent(in) :: json_core_object

Return Value type(json_file)

private function initialize_json_file_v2(json_value_object, json_core_object) result(file_object)

Author
Jacob Williams
Date
4/26/2016

Cast a json_value pointer and a json_core object as a json_file object.

Arguments

TypeIntentOptionalAttributesName
type(json_value), intent(in), pointer:: json_value_object
type(json_core), intent(in) :: json_core_object

Return Value type(json_file)

private pure function json_file_failed(me) result(failed)

Check error status in the file.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(in) :: me

Return Value logical(kind=LK)

will be true if there has been an error.

private function json_file_valid_path(me, path) result(found)

Author
Jacob Williams

Returns true if the path is present in the JSON file.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path

the path to the variable

Return Value logical(kind=LK)

if the variable was found

private function json_file_valid_path_op(path, me) result(found)

Author
Jacob Williams

A wrapper for json_file_valid_path for the .in. operator

Arguments

TypeIntentOptionalAttributesName
character(kind=CK,len=*), intent(in) :: path

the path to the variable

class(json_file), intent(in) :: me

the JSON file

Return Value logical(kind=LK)

if the variable was found

private function wrap_initialize_json_file_from_string(str, verbose, compact_reals, print_signs, real_format, spaces_per_tab, strict_type_checking, trailing_spaces_significant, case_sensitive_keys, no_whitespace, unescape_strings, comment_char, path_mode, path_separator, compress_vectors, allow_duplicate_keys, escape_solidus, stop_on_error, null_to_real_mode, non_normal_mode, use_quiet_nan, strict_integer_type_checking) result(file_object)

Alternate version of initialize_json_file_from_string, where “str” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
character(kind=CDK,len=*), intent(in) :: str

string to load JSON data from

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

mainly useful for debugging (default is false)

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

to compact the real number strings for output (default is true)

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

always print numeric sign (default is false)

character(kind=CDK,len=*), intent(in), optional :: real_format

Real number format: ‘E’ [default], ‘*’, ‘G’, ‘EN’, or ‘ES’

integer(kind=IK), intent(in), optional :: spaces_per_tab

number of spaces per tab for indenting (default is 2)

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

if true, no integer, double, or logical type conversions are done for the get routines (default is false).

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

for name and path comparisons, is trailing space to be considered significant. (default is false)

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

for name and path comparisons, are they case sensitive. (default is true)

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

if true, printing the JSON structure is done without adding any non-significant spaces or linebreaks (default is false)

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

If false, then the raw escaped string is returned from json_get_string and similar routines. If true [default], then the string is returned unescaped.

character(kind=CK,len=*), intent(in), optional :: comment_char

If present, these characters are used to denote comments in the JSON file, which will be ignored if present. Example: !, #, or /!#. Setting this to a blank string disables the ignoring of comments. (Default is /!#).

integer(kind=IK), intent(in), optional :: path_mode

How the path strings are interpreted in the get_by_path routines:

character(kind=CK,len=1), intent(in), optional :: path_separator

The path separator to use in the “default” mode for the paths in the various get_by_path routines. Example: . [default] or %. Note: if path_mode/=1 then this is ignored.

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

If true, then arrays of integers, nulls, doubles, and logicals are printed all on one line. [Note: no_whitespace will override this option if necessary]. (Default is False).

logical(kind=LK), intent(in), optional :: allow_duplicate_keysRead more…
logical(kind=LK), intent(in), optional :: escape_solidus
  • If True then the solidus “/” is always escaped “\/” when serializing JSON
  • If False [default], then it is not escaped.

Note that this option does not affect parsing (both escaped and unescaped are still valid in all cases).

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

If an exception is raised, then immediately quit. (Default is False).

integer(kind=IK), intent(in), optional :: null_to_real_mode

if strict_type_checking=false:

  • 1 : an exception will be raised if try to retrieve a null as a real.
  • 2 : a null retrieved as a real will return a NaN. [default]
  • 3 : a null retrieved as a real will return 0.0.
integer(kind=IK), intent(in), optional :: non_normal_mode

How to serialize NaN, Infinity, and -Infinity real values:

  • 1 : as strings (e.g., “NaN”, “Infinity”, “-Infinity”) [default]
  • 2 : as JSON null values
logical(kind=LK), intent(in), optional :: use_quiet_nanRead more…
logical(kind=LK), intent(in), optional :: strict_integer_type_checking
  • If false, when parsing JSON, if an integer numeric value cannot be converted to an integer (integer(IK)), then an attempt is then make to convert it to a real (real(RK)).
  • If true, an exception will be raised if the integer value cannot be read.

(default is true)

Return Value type(json_file)

private function wrap_initialize_json_file_from_string_v2(str, json_core_object) result(file_object)

Alternate version of initialize_json_file_from_string_v2, where “str” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
character(kind=CDK,len=*), intent(in) :: str

string to load JSON data from

type(json_core), intent(in) :: json_core_object

Return Value type(json_file)

private function wrap_json_file_valid_path(me, path) result(found)

Author
Jacob Williams

Alternate version of json_file_valid_path, where “path” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path

the path to the variable

Return Value logical(kind=LK)

if the variable was found

private function wrap_json_file_valid_path_op(path, me) result(found)

Author
Jacob Williams

Alternate version of json_file_valid_path_op, where “path” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
character(kind=CDK,len=*), intent(in) :: path

the path to the variable

class(json_file), intent(in) :: me

the JSON file

Return Value logical(kind=LK)

if the variable was found


Subroutines

private subroutine assign_json_file(me, f)

Author
Jacob Williams

Assignment operator for json_core = json_core. This will duplicate the json_core and also perform a deep copy of the json_value data structure.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(out) :: me
type(json_file), intent(in) :: f

private subroutine assign_json_file_to_string(str, me)

Author
Jacob Williams

Assignment operator for character = json_core. This is just a wrapper for the json_value_to_string routine.

Read more…

Arguments

TypeIntentOptionalAttributesName
character(kind=CK,len=:), intent(out), allocatable:: str
class(json_file), intent(in) :: me

private subroutine assign_string_to_json_file(me, str)

Author
Jacob Williams

Assignment operator for json_core = character. This is just a wrapper for the json_file_load_from_string routine.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: str

private subroutine finalize_json_file(me)

Finalizer for json_file class.

Read more…

Arguments

TypeIntentOptionalAttributesName
type(json_file), intent(inout) :: me

private subroutine get_json_core_in_file(me, core)

Get a copy of the json_core in this json_file.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(in) :: me
type(json_core), intent(out) :: core

private subroutine initialize_json_core_in_file(me, verbose, compact_reals, print_signs, real_format, spaces_per_tab, strict_type_checking, trailing_spaces_significant, case_sensitive_keys, no_whitespace, unescape_strings, comment_char, path_mode, path_separator, compress_vectors, allow_duplicate_keys, escape_solidus, stop_on_error, null_to_real_mode, non_normal_mode, use_quiet_nan, strict_integer_type_checking)

Initialize the json_core for this json_file. This is just a wrapper for json_initialize.

Read more…

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
logical(kind=LK), intent(in), optional :: verbose

mainly useful for debugging (default is false)

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

to compact the real number strings for output (default is true)

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

always print numeric sign (default is false)

character(kind=CDK,len=*), intent(in), optional :: real_format

Real number format: ‘E’ [default], ‘*’, ‘G’, ‘EN’, or ‘ES’

integer(kind=IK), intent(in), optional :: spaces_per_tab

number of spaces per tab for indenting (default is 2)

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

if true, no integer, double, or logical type conversions are done for the get routines (default is false).

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

for name and path comparisons, is trailing space to be considered significant. (default is false)

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

for name and path comparisons, are they case sensitive. (default is true)

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

if true, printing the JSON structure is done without adding any non-significant spaces or linebreaks (default is false)

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

If false, then the raw escaped string is returned from json_get_string and similar routines. If true [default], then the string is returned unescaped.

character(kind=CK,len=*), intent(in), optional :: comment_char

If present, these characters are used to denote comments in the JSON file, which will be ignored if present. Example: !, #, or /!#. Setting this to a blank string disables the ignoring of comments. (Default is /!#).

integer(kind=IK), intent(in), optional :: path_mode

How the path strings are interpreted in the get_by_path routines:

character(kind=CK,len=1), intent(in), optional :: path_separator

The path separator to use in the “default” mode for the paths in the various get_by_path routines. Example: . [default] or %. Note: if path_mode/=1 then this is ignored.

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

If true, then arrays of integers, nulls, doubles, and logicals are printed all on one line. [Note: no_whitespace will override this option if necessary]. (Default is False).

logical(kind=LK), intent(in), optional :: allow_duplicate_keysRead more…
logical(kind=LK), intent(in), optional :: escape_solidus
  • If True then the solidus “/” is always escaped “\/” when serializing JSON
  • If False [default], then it is not escaped.

Note that this option does not affect parsing (both escaped and unescaped are still valid in all cases).

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

If an exception is raised, then immediately quit. (Default is False).

integer(kind=IK), intent(in), optional :: null_to_real_mode

if strict_type_checking=false:

  • 1 : an exception will be raised if try to retrieve a null as a real.
  • 2 : a null retrieved as a real will return a NaN. [default]
  • 3 : a null retrieved as a real will return 0.0.
integer(kind=IK), intent(in), optional :: non_normal_mode

How to serialize NaN, Infinity, and -Infinity real values:

  • 1 : as strings (e.g., “NaN”, “Infinity”, “-Infinity”) [default]
  • 2 : as JSON null values
logical(kind=LK), intent(in), optional :: use_quiet_nanRead more…
logical(kind=LK), intent(in), optional :: strict_integer_type_checking
  • If false, when parsing JSON, if an integer numeric value cannot be converted to an integer (integer(IK)), then an attempt is then make to convert it to a real (real(RK)).
  • If true, an exception will be raised if the integer value cannot be read.

(default is true)

private subroutine json_file_add(me, p, destroy_original)

Author
Jacob Williams

Add a json_value pointer as the root object to a JSON file.

Read more…

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
type(json_value), intent(in), pointer:: p

pointer to the variable to add

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

if the file currently contains an associated pointer, it is destroyed. [Default is True]

private subroutine json_file_add_integer(me, path, val, found, was_created)

Author
Jacob Williams

Add an integer value to a JSON file.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path

the path to the variable

integer(kind=IK), intent(in) :: val

value

logical(kind=LK), intent(out), optional :: found

if the variable was found

logical(kind=LK), intent(out), optional :: was_created

if the variable had to be created

private subroutine json_file_add_integer_vec(me, path, vec, found, was_created)

Author
Jacob Williams

Add an integer vector to a JSON file.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path

the path to the variable

integer(kind=IK), intent(in), dimension(:):: vec

the value vector

logical(kind=LK), intent(out), optional :: found

if the variable was found

logical(kind=LK), intent(out), optional :: was_created

if the variable had to be created

private subroutine json_file_add_logical(me, path, val, found, was_created)

Author
Jacob Williams

Add a logical(LK) value to a JSON file.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path

the path to the variable

logical(kind=LK), intent(in) :: val

value

logical(kind=LK), intent(out), optional :: found

if the variable was found

logical(kind=LK), intent(out), optional :: was_created

if the variable had to be created

private subroutine json_file_add_logical_vec(me, path, vec, found, was_created)

Author
Jacob Williams

Add a logical(LK) vector to a JSON file.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path

the path to the variable

logical(kind=LK), intent(in), dimension(:):: vec

the value vector

logical(kind=LK), intent(out), optional :: found

if the variable was found

logical(kind=LK), intent(out), optional :: was_created

if the variable had to be created

private subroutine json_file_add_object(me, path, p, found, was_created)

Author
Jacob Williams

Add a json_value pointer to an object to a JSON file.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path

the path to the variable

type(json_value), intent(in), pointer:: p

pointer to the variable to add

logical(kind=LK), intent(out), optional :: found

if the variable was found

logical(kind=LK), intent(out), optional :: was_created

if the variable had to be created

private subroutine json_file_add_real(me, path, val, found, was_created)

Author
Jacob Williams

Add a real(RK) variable value to a JSON file.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path

the path to the variable

real(kind=RK), intent(in) :: val

value

logical(kind=LK), intent(out), optional :: found

if the variable was found

logical(kind=LK), intent(out), optional :: was_created

if the variable had to be created

private subroutine json_file_add_real32(me, path, val, found, was_created)

Author
Jacob Williams

Alternate version of json_file_add_real where val is real32.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path

the path to the variable

real(kind=real32), intent(in) :: val

value

logical(kind=LK), intent(out), optional :: found

if the variable was found

logical(kind=LK), intent(out), optional :: was_created

if the variable had to be created

private subroutine json_file_add_real32_vec(me, path, vec, found, was_created)

Author
Jacob Williams

Alternate version of json_file_add_real_vec where vec is real32.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path

the path to the variable

real(kind=real32), intent(in), dimension(:):: vec

the value vector

logical(kind=LK), intent(out), optional :: found

if the variable was found

logical(kind=LK), intent(out), optional :: was_created

if the variable had to be created

private subroutine json_file_add_real_vec(me, path, vec, found, was_created)

Author
Jacob Williams

Add a real(RK) vector to a JSON file.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path

the path to the variable

real(kind=RK), intent(in), dimension(:):: vec

the value vector

logical(kind=LK), intent(out), optional :: found

if the variable was found

logical(kind=LK), intent(out), optional :: was_created

if the variable had to be created

private subroutine json_file_add_string(me, path, val, found, was_created, trim_str, adjustl_str)

Author
Jacob Williams

Add a character string to a json file.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path

the path to the variable

character(kind=CK,len=*), intent(in) :: val

value

logical(kind=LK), intent(out), optional :: found

if the variable was found

logical(kind=LK), intent(out), optional :: was_created

if the variable had to be created

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

if TRIM() should be called for the val

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

if ADJUSTL() should be called for the val (note that ADJUSTL is done before TRIM)

private subroutine json_file_add_string_path_ascii(me, path, val, found, was_created, trim_str, adjustl_str)

Author
Jacob Williams

Wrapper for json_file_add_string where “path” is kind=CDK).

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path

the path to the variable

character(kind=CK,len=*), intent(in) :: val

value

logical(kind=LK), intent(out), optional :: found

if the variable was found

logical(kind=LK), intent(out), optional :: was_created

if the variable had to be created

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

if TRIM() should be called for the val

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

if ADJUSTL() should be called for the val (note that ADJUSTL is done before TRIM)

private subroutine json_file_add_string_value_ascii(me, path, val, found, was_created, trim_str, adjustl_str)

Author
Jacob Williams

Wrapper for json_file_add_string where “val” is kind=CDK).

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path

the path to the variable

character(kind=CDK,len=*), intent(in) :: val

value

logical(kind=LK), intent(out), optional :: found

if the variable was found

logical(kind=LK), intent(out), optional :: was_created

if the variable had to be created

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

if TRIM() should be called for the val

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

if ADJUSTL() should be called for the val (note that ADJUSTL is done before TRIM)

private subroutine json_file_add_string_vec(me, path, vec, found, was_created, ilen, trim_str, adjustl_str)

Author
Jacob Williams

Add a string vector to a JSON file.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path

the path to the variable

character(kind=CK,len=*), intent(in), dimension(:):: vec

the value vector

logical(kind=LK), intent(out), optional :: found

if the variable was found

logical(kind=LK), intent(out), optional :: was_created

if the variable had to be created

integer(kind=IK), intent(in), optional dimension(:):: ilen

the string lengths of each element in value. If not present, the full len(value) string is added for each element.

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

if TRIM() should be called for each element

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

if ADJUSTL() should be called for each element (note that ADJUSTL is done before TRIM)

private subroutine json_file_add_string_vec_path_ascii(me, path, vec, found, was_created, ilen, trim_str, adjustl_str)

Author
Jacob Williams

Alternate version of json_file_add_string_vec, where “path” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path

the path to the variable

character(kind=CK,len=*), intent(in), dimension(:):: vec

the value vector

logical(kind=LK), intent(out), optional :: found

if the variable was found

logical(kind=LK), intent(out), optional :: was_created

if the variable had to be created

integer(kind=IK), intent(in), optional dimension(:):: ilen

the string lengths of each element in value. If not present, the full len(value) string is added for each element.

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

if TRIM() should be called for each element

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

if ADJUSTL() should be called for each element (note that ADJUSTL is done before TRIM)

private subroutine json_file_add_string_vec_vec_ascii(me, path, vec, found, was_created, ilen, trim_str, adjustl_str)

Author
Jacob Williams

Alternate version of json_file_add_string_vec, where “vec” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path

the path to the variable

character(kind=CDK,len=*), intent(in), dimension(:):: vec

the value vector

logical(kind=LK), intent(out), optional :: found

if the variable was found

logical(kind=LK), intent(out), optional :: was_created

if the variable had to be created

integer(kind=IK), intent(in), optional dimension(:):: ilen

the string lengths of each element in value. If not present, the full len(value) string is added for each element.

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

if TRIM() should be called for each element

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

if ADJUSTL() should be called for each element (note that ADJUSTL is done before TRIM)

private subroutine json_file_check_for_errors(me, status_ok, error_msg)

Retrieve error status and message from the class.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
logical(kind=LK), intent(out), optional :: status_ok

true if there were no errors

character(kind=CK,len=:), intent(out), optional allocatable:: error_msg

the error message (if there were errors)

private pure subroutine json_file_clear_exceptions(me)

Clear exceptions in the class.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me

private subroutine json_file_destroy(me, destroy_core)

Author
Jacob Williams

Destroy the json_value data in a json_file. This may be done when the variable is no longer needed, or will be reused to open a different file. Otherwise a memory leak will occur.

Read more…

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
logical, intent(in), optional :: destroy_core

to also destroy the json_core. default is to leave it as is.

private subroutine json_file_get_alloc_string_vec(me, path, vec, ilen, found, default, default_ilen)

Author
Jacob Williams
Date
12/17/2016

Get an (allocatable length) string vector from a JSON file. This is just a wrapper for json_get_alloc_string_vec_by_path.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path

the path to the variable

character(kind=CK,len=:), intent(out), dimension(:), allocatable:: vec

value vector

integer(kind=IK), intent(out), dimension(:), allocatable:: ilen

the actual length of each character string in the array

logical(kind=LK), intent(out), optional :: found
character(kind=CK,len=*), intent(in), optional dimension(:):: default
integer(kind=IK), intent(in), optional dimension(:):: default_ilen

the actual length of default

private subroutine json_file_get_integer(me, path, val, found, default)

Author
Jacob Williams
Date
12/9/2013

Get an integer value from a JSON file.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path

the path to the variable

integer(kind=IK), intent(out) :: val

value

logical(kind=LK), intent(out), optional :: found

if it was really found

integer(kind=IK), intent(in), optional :: default

private subroutine json_file_get_integer_vec(me, path, vec, found, default)

Author
Jacob Williams
Date
1/20/2014

Get an integer vector from a JSON file.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path

the path to the variable

integer(kind=IK), intent(out), dimension(:), allocatable:: vec

the value vector

logical(kind=LK), intent(out), optional :: found

if it was really found

integer(kind=IK), intent(in), optional dimension(:):: default

private subroutine json_file_get_logical(me, path, val, found, default)

Author
Jacob Williams
Date
12/9/2013

Get a logical(LK) value from a JSON file.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path

the path to the variable

logical(kind=LK), intent(out) :: val

value

logical(kind=LK), intent(out), optional :: found

if it was really found

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

private subroutine json_file_get_logical_vec(me, path, vec, found, default)

Author
Jacob Williams
Date
1/20/2014

Get a logical(LK) vector from a JSON file.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path

the path to the variable

logical(kind=LK), intent(out), dimension(:), allocatable:: vec

the value vector

logical(kind=LK), intent(out), optional :: found

if it was really found

logical(kind=LK), intent(in), optional dimension(:):: default

private subroutine json_file_get_object(me, path, p, found)

Author
Jacob Williams
Date
2/3/2014

Get a json_value pointer to an object from a JSON file.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path

the path to the variable

type(json_value), intent(out), pointer:: p

pointer to the variable

logical(kind=LK), intent(out), optional :: found

if it was really found

private subroutine json_file_get_real(me, path, val, found, default)

Author
Jacob Williams
Date
12/9/2013

Get a real(RK) variable value from a JSON file.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path

the path to the variable

real(kind=RK), intent(out) :: val

value

logical(kind=LK), intent(out), optional :: found

if it was really found

real(kind=RK), intent(in), optional :: default

private subroutine json_file_get_real32(me, path, val, found, default)

Author
Jacob Williams
Date
1/21/2019

Alternate version of json_file_get_real where val is real32.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path

the path to the variable

real(kind=real32), intent(out) :: val

value

logical(kind=LK), intent(out), optional :: found

if it was really found

real(kind=real32), intent(in), optional :: default

private subroutine json_file_get_real32_vec(me, path, vec, found, default)

Author
Jacob Williams
Date
1/21/2019

Alternate version of json_file_get_real_vec where vec is real32.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path

the path to the variable

real(kind=real32), intent(out), dimension(:), allocatable:: vec

the value vector

logical(kind=LK), intent(out), optional :: found

if it was really found

real(kind=real32), intent(in), optional dimension(:):: default

private subroutine json_file_get_real_vec(me, path, vec, found, default)

Author
Jacob Williams
Date
1/19/2014

Get a real(RK) vector from a JSON file.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path

the path to the variable

real(kind=RK), intent(out), dimension(:), allocatable:: vec

the value vector

logical(kind=LK), intent(out), optional :: found

if it was really found

real(kind=RK), intent(in), optional dimension(:):: default

private subroutine json_file_get_root(me, p)

Author
Izaak Beekman
Date
7/23/2015

Get a json_value pointer to the JSON file root.

Read more…

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
type(json_value), intent(out), pointer:: p

pointer to the variable

private subroutine json_file_get_string(me, path, val, found, default)

Author
Jacob Williams
Date
12/9/2013

Get a character string from a json file. The output val is an allocatable character string.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path

the path to the variable

character(kind=CK,len=:), intent(out), allocatable:: val

value

logical(kind=LK), intent(out), optional :: found

if it was really found

character(kind=CK,len=*), intent(in), optional :: default

private subroutine json_file_get_string_vec(me, path, vec, found, default)

Author
Jacob Williams
Date
1/19/2014

Get a string vector from a JSON file.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path

the path to the variable

character(kind=CK,len=*), intent(out), dimension(:), allocatable:: vec

value vector

logical(kind=LK), intent(out), optional :: found

if it was really found

character(kind=CK,len=*), intent(in), optional dimension(:):: default

private subroutine json_file_load(me, filename, unit)

Author
Jacob Williams
Date
12/9/2013

Load the JSON data from a file.

Read more…

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: filename

the filename to open

integer(kind=IK), intent(in), optional :: unit

the unit number to use (if not present, a newunit is used)

private subroutine json_file_load_from_string(me, str)

Author
Jacob Williams
Date
1/13/2015

Load the JSON data from a string.

Read more…

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: str

string to load JSON data from

private subroutine json_file_move_pointer(to, from)

Author
Jacob Williams
Date
12/5/2014

Move the json_value pointer from one json_file to another. The “from” pointer is then nullified, but not destroyed.

Read more…

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: to
class(json_file), intent(inout) :: from

private subroutine json_file_nullify(me)

Author
Jacob Williams

Nullify the json_value pointer in a json_file, but do not destroy it.

Read more…

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me

private subroutine json_file_print_error_message(me, io_unit)

This is a wrapper for json_print_error_message.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
integer, intent(in), optional :: io_unit

private subroutine json_file_print_to_console(me)

Author
Jacob Williams
Date
1/11/2015

Print the JSON file to the console.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me

private subroutine json_file_print_to_filename(me, filename)

Author
Jacob Williams
Date
1/11/2015

Print the JSON structure to the specified filename. The file is opened, printed, and then closed.

Read more…

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: filename

filename to print to

private subroutine json_file_print_to_string(me, str)

Author
Jacob Williams
Date
1/11/2015

Print the JSON file to a string.

Read more…

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=:), intent(out), allocatable:: str

string to print JSON data to

private subroutine json_file_print_to_unit(me, iunit)

Author
Jacob Williams
Date
12/9/2013

Prints the JSON file to the specified file unit number.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
integer(kind=IK), intent(in) :: iunit

file unit number (must not be -1)

private subroutine json_file_remove(me, path)

Author
Jacob Williams
Date
7/7/2018

Remove a variable from a JSON file.

Read more…

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path

the path to the variable

private subroutine json_file_rename(me, path, name, found)

Author
Jacob Williams

Rename a variable in a JSON file.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path

the path to the variable

character(kind=CK,len=*), intent(in) :: name

the new name

logical(kind=LK), intent(out), optional :: found

if the variable was found

private subroutine json_file_rename_name_ascii(me, path, name, found)

Author
Jacob Williams

Wrapper for json_file_rename where “name” is kind=CDK).

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path

the path to the variable

character(kind=CDK,len=*), intent(in) :: name

the new name

logical(kind=LK), intent(out), optional :: found

if the variable was found

private subroutine json_file_rename_path_ascii(me, path, name, found)

Author
Jacob Williams

Wrapper for json_file_rename where “path” is kind=CDK).

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path

the path to the variable

character(kind=CK,len=*), intent(in) :: name

the new name

logical(kind=LK), intent(out), optional :: found

if the variable was found

private subroutine json_file_traverse(me, traverse_callback)

Author
Jacob Williams
Date
6/11/2016

Traverse the JSON structure in the file. This routine calls the user-specified json_traverse_callback_func for each element of the structure.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
procedure(json_traverse_callback_func) :: traverse_callback

private subroutine json_file_update_integer(me, path, val, found)

Author
Jacob Williams
Date
1/10/2015

Given the path string, if the variable is present in the file, and is a scalar, then update its value. If it is not present, then create it and set its value.

Read more…

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path
integer(kind=IK), intent(in) :: val
logical(kind=LK), intent(out) :: found

private subroutine json_file_update_logical(me, path, val, found)

Author
Jacob Williams
Date
1/10/2015

Given the path string, if the variable is present in the file, and is a scalar, then update its value. If it is not present, then create it and set its value.

Read more…

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path
logical(kind=LK), intent(in) :: val
logical(kind=LK), intent(out) :: found

private subroutine json_file_update_real(me, path, val, found)

Author
Jacob Williams
Date
1/10/2015

Given the path string, if the variable is present in the file, and is a scalar, then update its value. If it is not present, then create it and set its value.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path
real(kind=RK), intent(in) :: val
logical(kind=LK), intent(out) :: found

private subroutine json_file_update_real32(me, path, val, found)

Author
Jacob Williams
Date
1/21/2019

Alternate version of json_file_update_real where val is real32.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path
real(kind=real32), intent(in) :: val
logical(kind=LK), intent(out) :: found

private subroutine json_file_update_string(me, path, val, found, trim_str, adjustl_str)

Author
Jacob Williams
Date
1/10/2015

Given the path string, if the variable is present in the file, and is a scalar, then update its value. If it is not present, then create it and set its value.

Read more…

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path
character(kind=CK,len=*), intent(in) :: val
logical(kind=LK), intent(out) :: found
logical(kind=LK), intent(in), optional :: trim_str

if TRIM() should be called for the val

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

if ADJUSTL() should be called for the val (note that ADJUSTL is done before TRIM)

private subroutine json_file_update_string_name_ascii(me, path, val, found, trim_str, adjustl_str)

Alternate version of json_file_update_string, where “path” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path
character(kind=CK,len=*), intent(in) :: val
logical(kind=LK), intent(out) :: found
logical(kind=LK), intent(in), optional :: trim_str

if TRIM() should be called for the val

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

if ADJUSTL() should be called for the val (note that ADJUSTL is done before TRIM)

private subroutine json_file_update_string_val_ascii(me, path, val, found, trim_str, adjustl_str)

Alternate version of json_file_update_string, where “val” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path
character(kind=CDK,len=*), intent(in) :: val
logical(kind=LK), intent(out) :: found
logical(kind=LK), intent(in), optional :: trim_str

if TRIM() should be called for the val

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

if ADJUSTL() should be called for the val (note that ADJUSTL is done before TRIM)

private subroutine json_file_variable_info(me, path, found, var_type, n_children, name)

Author
Jacob Williams
Date
2/3/2014

Returns information about a variable in a json_file.

Read more…

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path

path to the variable

logical(kind=LK), intent(out), optional :: found

the variable exists in the structure

integer(kind=IK), intent(out), optional :: var_type

variable type

integer(kind=IK), intent(out), optional :: n_children

number of children

character(kind=CK,len=:), intent(out), optional allocatable:: name

variable name

private subroutine json_file_variable_matrix_info(me, path, is_matrix, found, var_type, n_sets, set_size, name)

Author
Jacob Williams
Date
6/26/2016

Returns matrix information about a variable in a json_file.

Read more…

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CK,len=*), intent(in) :: path

path to the variable

logical(kind=LK), intent(out) :: is_matrix

true if it is a valid matrix

logical(kind=LK), intent(out), optional :: found

true if it was found

integer(kind=IK), intent(out), optional :: var_type

variable type of data in the matrix (if all elements have the same type)

integer(kind=IK), intent(out), optional :: n_sets

number of data sets (i.e., matrix rows if using row-major order)

integer(kind=IK), intent(out), optional :: set_size

size of each data set (i.e., matrix cols if using row-major order)

character(kind=CK,len=:), intent(out), optional allocatable:: name

variable name

private subroutine set_json_core_in_file(me, core)

Set the json_core for this json_file.

Read more…

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
type(json_core), intent(in) :: core

private subroutine wrap_assign_string_to_json_file(me, str)

Author
Jacob Williams

Alternate version of assign_string_to_json_file, where “str” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: str

private subroutine wrap_json_file_add_integer(me, path, val, found, was_created)

Author
Jacob Williams

Alternate version of json_file_add_integer, where “path” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path

the path to the variable

integer(kind=IK), intent(in) :: val

value

logical(kind=LK), intent(out), optional :: found

if the variable was found

logical(kind=LK), intent(out), optional :: was_created

if the variable had to be created

private subroutine wrap_json_file_add_integer_vec(me, path, vec, found, was_created)

Author
Jacob Williams

Alternate version of json_file_add_integer_vec, where “path” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path

the path to the variable

integer(kind=IK), intent(in), dimension(:):: vec

the value vector

logical(kind=LK), intent(out), optional :: found

if the variable was found

logical(kind=LK), intent(out), optional :: was_created

if the variable had to be created

private subroutine wrap_json_file_add_logical(me, path, val, found, was_created)

Author
Jacob Williams

Alternate version of json_file_add_logical, where “path” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path

the path to the variable

logical(kind=LK), intent(in) :: val

value

logical(kind=LK), intent(out), optional :: found

if the variable was found

logical(kind=LK), intent(out), optional :: was_created

if the variable had to be created

private subroutine wrap_json_file_add_logical_vec(me, path, vec, found, was_created)

Author
Jacob Williams

Alternate version of json_file_add_logical_vec, where “path” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path

the path to the variable

logical(kind=LK), intent(in), dimension(:):: vec

the value vector

logical(kind=LK), intent(out), optional :: found

if the variable was found

logical(kind=LK), intent(out), optional :: was_created

if the variable had to be created

private subroutine wrap_json_file_add_object(me, path, p, found, was_created)

Author
Jacob Williams

Alternate version of json_file_add_object, where “path” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path

the path to the variable

type(json_value), intent(in), pointer:: p

pointer to the variable to add

logical(kind=LK), intent(out), optional :: found

if the variable was found

logical(kind=LK), intent(out), optional :: was_created

if the variable had to be created

private subroutine wrap_json_file_add_real(me, path, val, found, was_created)

Author
Jacob Williams

Alternate version of json_file_add_real, where “path” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path

the path to the variable

real(kind=RK), intent(in) :: val

value

logical(kind=LK), intent(out), optional :: found

if the variable was found

logical(kind=LK), intent(out), optional :: was_created

if the variable had to be created

private subroutine wrap_json_file_add_real32(me, path, val, found, was_created)

Author
Jacob Williams

Alternate version of json_file_add_real32, where “path” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path

the path to the variable

real(kind=real32), intent(in) :: val

value

logical(kind=LK), intent(out), optional :: found

if the variable was found

logical(kind=LK), intent(out), optional :: was_created

if the variable had to be created

private subroutine wrap_json_file_add_real32_vec(me, path, vec, found, was_created)

Author
Jacob Williams

Alternate version of json_file_add_real32_vec, where “path” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path

the path to the variable

real(kind=real32), intent(in), dimension(:):: vec

the value vector

logical(kind=LK), intent(out), optional :: found

if the variable was found

logical(kind=LK), intent(out), optional :: was_created

if the variable had to be created

private subroutine wrap_json_file_add_real_vec(me, path, vec, found, was_created)

Author
Jacob Williams

Alternate version of json_file_add_real_vec, where “path” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path

the path to the variable

real(kind=RK), intent(in), dimension(:):: vec

the value vector

logical(kind=LK), intent(out), optional :: found

if the variable was found

logical(kind=LK), intent(out), optional :: was_created

if the variable had to be created

private subroutine wrap_json_file_add_string(me, path, val, found, was_created, trim_str, adjustl_str)

Author
Jacob Williams

Alternate version of json_file_add_string, where “path” and “val” are kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path

the path to the variable

character(kind=CDK,len=*), intent(in) :: val

value

logical(kind=LK), intent(out), optional :: found

if the variable was found

logical(kind=LK), intent(out), optional :: was_created

if the variable had to be created

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

if TRIM() should be called for the val

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

if ADJUSTL() should be called for the val (note that ADJUSTL is done before TRIM)

private subroutine wrap_json_file_add_string_vec(me, path, vec, found, was_created, ilen, trim_str, adjustl_str)

Author
Jacob Williams

Alternate version of json_file_add_string_vec, where “path” and “vec” are kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path

the path to the variable

character(kind=CDK,len=*), intent(in), dimension(:):: vec

the value vector

logical(kind=LK), intent(out), optional :: found

if the variable was found

logical(kind=LK), intent(out), optional :: was_created

if the variable had to be created

integer(kind=IK), intent(in), optional dimension(:):: ilen

the string lengths of each element in value. If not present, the full len(value) string is added for each element.

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

if TRIM() should be called for each element

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

if ADJUSTL() should be called for each element (note that ADJUSTL is done before TRIM)

private subroutine wrap_json_file_get_alloc_string_vec(me, path, vec, ilen, found, default, default_ilen)

Alternate version of json_file_get_alloc_string_vec, where “path” is kind=CDK. This is just a wrapper for wrap_json_get_alloc_string_vec_by_path.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path

the path to the variable

character(kind=CK,len=:), intent(out), dimension(:), allocatable:: vec

value vector

integer(kind=IK), intent(out), dimension(:), allocatable:: ilen

the actual length of each character string in the array

logical(kind=LK), intent(out), optional :: found
character(kind=CK,len=*), intent(in), optional dimension(:):: default
integer(kind=IK), intent(in), optional dimension(:):: default_ilen

the actual length of default

private subroutine wrap_json_file_get_integer(me, path, val, found, default)

Alternate version of json_file_get_integer, where “path” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path

the path to the variable

integer(kind=IK), intent(out) :: val

value

logical(kind=LK), intent(out), optional :: found

if it was really found

integer(kind=IK), intent(in), optional :: default

private subroutine wrap_json_file_get_integer_vec(me, path, vec, found, default)

Alternate version of json_file_get_integer_vec, where “path” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path

the path to the variable

integer(kind=IK), intent(out), dimension(:), allocatable:: vec

the value vector

logical(kind=LK), intent(out), optional :: found

if it was really found

integer(kind=IK), intent(in), optional dimension(:):: default

private subroutine wrap_json_file_get_logical(me, path, val, found, default)

Alternate version of json_file_get_logical, where “path” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path

the path to the variable

logical(kind=LK), intent(out) :: val

value

logical(kind=LK), intent(out), optional :: found

if it was really found

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

private subroutine wrap_json_file_get_logical_vec(me, path, vec, found, default)

Alternate version of json_file_get_logical_vec, where “path” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path

the path to the variable

logical(kind=LK), intent(out), dimension(:), allocatable:: vec

the value vector

logical(kind=LK), intent(out), optional :: found

if it was really found

logical(kind=LK), intent(in), optional dimension(:):: default

private subroutine wrap_json_file_get_object(me, path, p, found)

Alternate version of json_file_get_object, where “path” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path

the path to the variable

type(json_value), intent(out), pointer:: p

pointer to the variable

logical(kind=LK), intent(out), optional :: found

if it was really found

private subroutine wrap_json_file_get_real(me, path, val, found, default)

Alternate version of json_file_get_real, where “path” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path

the path to the variable

real(kind=RK), intent(out) :: val

value

logical(kind=LK), intent(out), optional :: found

if it was really found

real(kind=RK), intent(in), optional :: default

private subroutine wrap_json_file_get_real32(me, path, val, found, default)

Alternate version of json_file_get_real32, where “path” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path

the path to the variable

real(kind=real32), intent(out) :: val

value

logical(kind=LK), intent(out), optional :: found

if it was really found

real(kind=real32), intent(in), optional :: default

private subroutine wrap_json_file_get_real32_vec(me, path, vec, found, default)

Alternate version of json_file_get_real32_vec, where “path” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path

the path to the variable

real(kind=real32), intent(out), dimension(:), allocatable:: vec

the value vector

logical(kind=LK), intent(out), optional :: found

if it was really found

real(kind=real32), intent(in), optional dimension(:):: default

private subroutine wrap_json_file_get_real_vec(me, path, vec, found, default)

Alternate version of json_file_get_real_vec, where “path” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path

the path to the variable

real(kind=RK), intent(out), dimension(:), allocatable:: vec

the value vector

logical(kind=LK), intent(out), optional :: found

if it was really found

real(kind=RK), intent(in), optional dimension(:):: default

private subroutine wrap_json_file_get_string(me, path, val, found, default)

Alternate version of json_file_get_string, where “path” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path

the path to the variable

character(kind=CK,len=:), intent(out), allocatable:: val

value

logical(kind=LK), intent(out), optional :: found

if it was really found

character(kind=CK,len=*), intent(in), optional :: default

private subroutine wrap_json_file_get_string_vec(me, path, vec, found, default)

Alternate version of json_file_get_string_vec, where “path” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path

the path to the variable

character(kind=CK,len=*), intent(out), dimension(:), allocatable:: vec

value vector

logical(kind=LK), intent(out), optional :: found

if it was really found

character(kind=CK,len=*), intent(in), optional dimension(:):: default

private subroutine wrap_json_file_load_from_string(me, str)

Alternate version of json_file_load_from_string, where “str” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: str

private subroutine wrap_json_file_remove(me, path)

Alternate version of json_file_remove, where “path” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path

the path to the variable

private subroutine wrap_json_file_rename(me, path, name, found)

Author
Jacob Williams

Alternate version of json_file_rename, where “path” and “name” are kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path

the path to the variable

character(kind=CDK,len=*), intent(in) :: name

the new name

logical(kind=LK), intent(out), optional :: found

if the variable was found

private subroutine wrap_json_file_update_integer(me, path, val, found)

Alternate version of json_file_update_integer, where “path” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path
integer(kind=IK), intent(in) :: val
logical(kind=LK), intent(out) :: found

private subroutine wrap_json_file_update_logical(me, path, val, found)

Alternate version of json_file_update_logical, where “path” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path
logical(kind=LK), intent(in) :: val
logical(kind=LK), intent(out) :: found

private subroutine wrap_json_file_update_real(me, path, val, found)

Alternate version of json_file_update_real, where “path” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path
real(kind=RK), intent(in) :: val
logical(kind=LK), intent(out) :: found

private subroutine wrap_json_file_update_real32(me, path, val, found)

Alternate version of json_file_update_real32, where “path” is kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path
real(kind=real32), intent(in) :: val
logical(kind=LK), intent(out) :: found

private subroutine wrap_json_file_update_string(me, path, val, found, trim_str, adjustl_str)

Alternate version of json_file_update_string, where “path” and “val” are kind=CDK.

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path
character(kind=CDK,len=*), intent(in) :: val
logical(kind=LK), intent(out) :: found
logical(kind=LK), intent(in), optional :: trim_str

if TRIM() should be called for the val

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

if ADJUSTL() should be called for the val (note that ADJUSTL is done before TRIM)

private subroutine wrap_json_file_variable_info(me, path, found, var_type, n_children, name)

Alternate version of json_file_variable_info, where “path” is kind=CDK.

Read more…

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path
logical(kind=LK), intent(out), optional :: found
integer(kind=IK), intent(out), optional :: var_type
integer(kind=IK), intent(out), optional :: n_children
character(kind=CK,len=:), intent(out), optional allocatable:: name

variable name

private subroutine wrap_json_file_variable_matrix_info(me, path, is_matrix, found, var_type, n_sets, set_size, name)

Alternate version of json_file_variable_matrix_info, where “path” is kind=CDK.

Read more…

Arguments

TypeIntentOptionalAttributesName
class(json_file), intent(inout) :: me
character(kind=CDK,len=*), intent(in) :: path

path to the variable

logical(kind=LK), intent(out) :: is_matrix

true if it is a valid matrix

logical(kind=LK), intent(out), optional :: found

true if it was found

integer(kind=IK), intent(out), optional :: var_type

variable type of data in the matrix (if all elements have the same type)

integer(kind=IK), intent(out), optional :: n_sets

number of data sets (i.e., matrix rows if using row-major order)

integer(kind=IK), intent(out), optional :: set_size

size of each data set (i.e., matrix cols if using row-major order)

character(kind=CK,len=:), intent(out), optional allocatable:: name

variable name