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 iso_fortran_env iso_fortran_env module~json_file_module->iso_fortran_env module~json_hash_module json_hash_module module~json_file_module->module~json_hash_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 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_hash_module->module~json_kinds module~json_hash_module->module~json_parameters module~json_hash_module->module~json_string_utilities module~json_hash_module->module~json_value_module module~json_kinds->iso_fortran_env module~json_parameters->module~json_kinds module~json_string_utilities->module~json_kinds module~json_string_utilities->module~json_parameters ieee_arithmetic ieee_arithmetic module~json_string_utilities->ieee_arithmetic iso_c_binding iso_c_binding module~json_string_utilities->iso_c_binding module~json_value_module->iso_fortran_env module~json_value_module->module~json_kinds module~json_value_module->module~json_parameters module~json_value_module->module~json_string_utilities module~json_value_module->ieee_arithmetic

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

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.

Example

 ...
 type(json_file) :: my_file
 type(json_value),pointer :: json_object
 type(json_core) :: json_core_object
 ...
 ! Construct a json_object:
 !could do this:
   my_file = json_file(json_object)
 !or:
   my_file = json_file(json_object,verbose=.true.)
 !or:
   my_file = json_file('{"x": [1]}',verbose=.true.)
 !or:
   my_file = json_file(json_object,json_core_object)
 !or:
   my_file = json_file('{"x": [1]}',json_core_object)
  • 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, allow_trailing_comma, parser_mode, parser_initial_stack_size, parser_max_stack_size, string_to_real_mode, null_to_integer_mode, null_to_integer_value, nullify_pointer) 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.

    Arguments

    Type IntentOptional Attributes Name
    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:

    Read more…
    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_keys Read more…
    logical(kind=LK), intent(in), optional :: escape_solidus

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

    Read more…
    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:

    Read more…
    integer(kind=IK), intent(in), optional :: non_normal_mode

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

    Read more…
    logical(kind=LK), intent(in), optional :: use_quiet_nan Read more…
    logical(kind=LK), intent(in), optional :: strict_integer_type_checking

    (default is true)

    Read more…
    logical(kind=LK), intent(in), optional :: allow_trailing_comma

    Allow a single trailing comma in arrays and objects. (default is true)

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

    Which version of the JSON parser to use:

    Read more…
    integer(kind=IK), intent(in), optional :: parser_initial_stack_size

    The initial stack size (in number of elements) to use when parser_mode=2 (non-recursive parser). (default is 32)

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

    The maximum stack size (in number of elements) to use when parser_mode=2 (non-recursive parser). (default is 10000)

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

    Which implementation to use for converting strings to real values:

    Read more…
    integer(kind=IK), intent(in), optional :: null_to_integer_mode

    if strict_type_checking=false:

    Read more…
    integer(kind=IK), intent(in), optional :: null_to_integer_value

    The integer value to return when retrieving a null as an integer and null_to_integer_mode=3. (default is 0).

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

    if True, then p will be nullified if present. (default is True). Normally, this should be done, because the json_file will destroy the pointer when the class goes out of scope (causing p to be a dangling pointer). However, if the intent is to use p in a json_file and then call nullify and continue to use p, then this should be set to False.

    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

    Type IntentOptional Attributes Name
    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, allow_trailing_comma, parser_mode, parser_initial_stack_size, parser_max_stack_size, string_to_real_mode, null_to_integer_mode, null_to_integer_value) 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.

    Example

      type(json_file) :: f
      f = json_file('{"key ": 1}', trailing_spaces_significant=.true.)
    

    Arguments

    Type IntentOptional Attributes Name
    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:

    Read more…
    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_keys Read more…
    logical(kind=LK), intent(in), optional :: escape_solidus

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

    Read more…
    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:

    Read more…
    integer(kind=IK), intent(in), optional :: non_normal_mode

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

    Read more…
    logical(kind=LK), intent(in), optional :: use_quiet_nan Read more…
    logical(kind=LK), intent(in), optional :: strict_integer_type_checking

    (default is true)

    Read more…
    logical(kind=LK), intent(in), optional :: allow_trailing_comma

    Allow a single trailing comma in arrays and objects. (default is true)

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

    Which version of the JSON parser to use:

    Read more…
    integer(kind=IK), intent(in), optional :: parser_initial_stack_size

    The initial stack size (in number of elements) to use when parser_mode=2 (non-recursive parser). (default is 32)

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

    The maximum stack size (in number of elements) to use when parser_mode=2 (non-recursive parser). (default is 10000)

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

    Which implementation to use for converting strings to real values:

    Read more…
    integer(kind=IK), intent(in), optional :: null_to_integer_mode

    if strict_type_checking=false:

    Read more…
    integer(kind=IK), intent(in), optional :: null_to_integer_value

    The integer value to return when retrieving a null as an integer and null_to_integer_mode=3. (default is 0).

    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, allow_trailing_comma, parser_mode, parser_initial_stack_size, parser_max_stack_size, string_to_real_mode, null_to_integer_mode, null_to_integer_value) result(file_object)

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

    Arguments

    Type IntentOptional Attributes Name
    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:

    Read more…
    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_keys Read more…
    logical(kind=LK), intent(in), optional :: escape_solidus

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

    Read more…
    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:

    Read more…
    integer(kind=IK), intent(in), optional :: non_normal_mode

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

    Read more…
    logical(kind=LK), intent(in), optional :: use_quiet_nan Read more…
    logical(kind=LK), intent(in), optional :: strict_integer_type_checking

    (default is true)

    Read more…
    logical(kind=LK), intent(in), optional :: allow_trailing_comma

    Allow a single trailing comma in arrays and objects. (default is true)

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

    Which version of the JSON parser to use:

    Read more…
    integer(kind=IK), intent(in), optional :: parser_initial_stack_size

    The initial stack size (in number of elements) to use when parser_mode=2 (non-recursive parser). (default is 32)

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

    The maximum stack size (in number of elements) to use when parser_mode=2 (non-recursive parser). (default is 10000)

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

    Which implementation to use for converting strings to real values:

    Read more…
    integer(kind=IK), intent(in), optional :: null_to_integer_mode

    if strict_type_checking=false:

    Read more…
    integer(kind=IK), intent(in), optional :: null_to_integer_value

    The integer value to return when retrieving a null as an integer and null_to_integer_mode=3. (default is 0).

    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

    Type IntentOptional Attributes Name
    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

    Type IntentOptional Attributes Name
    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

Type Visibility Attributes Name Initial
type(json_core), private :: core

The instance of the json_core factory used for this file.

type(json_hash_table), private :: hash

the hash table for this file (if enabled)

logical, private :: hash_enabled = .false.

whether to use a hash table for this file

type(json_value), private, 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, allow_trailing_comma, parser_mode, parser_initial_stack_size, parser_max_stack_size, string_to_real_mode, null_to_integer_mode, null_to_integer_value, nullify_pointer)

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, allow_trailing_comma, parser_mode, parser_initial_stack_size, parser_max_stack_size, string_to_real_mode, null_to_integer_mode, null_to_integer_value)

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, allow_trailing_comma, parser_mode, parser_initial_stack_size, parser_max_stack_size, string_to_real_mode, null_to_integer_mode, null_to_integer_value)

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
generic, public :: add_null => json_file_add_null, wrap_json_file_add_null, json_file_add_null_vec, wrap_json_file_add_null_vec

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

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 :: destroy_hash
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_hash
procedure, public :: initialize_json_core_in_file
procedure, public :: is_hash_enabled
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_null
procedure, public :: json_file_add_null_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 :: throw_exception
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_null
procedure, public :: wrap_json_file_add_null_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, allow_trailing_comma, parser_mode, parser_initial_stack_size, parser_max_stack_size, string_to_real_mode, null_to_integer_mode, null_to_integer_value, nullify_pointer) 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

Type IntentOptional Attributes Name
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:

Read more…
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_keys Read more…
logical(kind=LK), intent(in), optional :: escape_solidus

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

Read more…
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:

Read more…
integer(kind=IK), intent(in), optional :: non_normal_mode

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

Read more…
logical(kind=LK), intent(in), optional :: use_quiet_nan Read more…
logical(kind=LK), intent(in), optional :: strict_integer_type_checking

(default is true)

Read more…
logical(kind=LK), intent(in), optional :: allow_trailing_comma

Allow a single trailing comma in arrays and objects. (default is true)

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

Which version of the JSON parser to use:

Read more…
integer(kind=IK), intent(in), optional :: parser_initial_stack_size

The initial stack size (in number of elements) to use when parser_mode=2 (non-recursive parser). (default is 32)

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

The maximum stack size (in number of elements) to use when parser_mode=2 (non-recursive parser). (default is 10000)

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

Which implementation to use for converting strings to real values:

Read more…
integer(kind=IK), intent(in), optional :: null_to_integer_mode

if strict_type_checking=false:

Read more…
integer(kind=IK), intent(in), optional :: null_to_integer_value

The integer value to return when retrieving a null as an integer and null_to_integer_mode=3. (default is 0).

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

if True, then p will be nullified if present. (default is True). Normally, this should be done, because the json_file will destroy the pointer when the class goes out of scope (causing p to be a dangling pointer). However, if the intent is to use p in a json_file and then call nullify and continue to use p, then this should be set to False.

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, allow_trailing_comma, parser_mode, parser_initial_stack_size, parser_max_stack_size, string_to_real_mode, null_to_integer_mode, null_to_integer_value) 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

Type IntentOptional Attributes Name
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:

Read more…
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_keys Read more…
logical(kind=LK), intent(in), optional :: escape_solidus

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

Read more…
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:

Read more…
integer(kind=IK), intent(in), optional :: non_normal_mode

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

Read more…
logical(kind=LK), intent(in), optional :: use_quiet_nan Read more…
logical(kind=LK), intent(in), optional :: strict_integer_type_checking

(default is true)

Read more…
logical(kind=LK), intent(in), optional :: allow_trailing_comma

Allow a single trailing comma in arrays and objects. (default is true)

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

Which version of the JSON parser to use:

Read more…
integer(kind=IK), intent(in), optional :: parser_initial_stack_size

The initial stack size (in number of elements) to use when parser_mode=2 (non-recursive parser). (default is 32)

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

The maximum stack size (in number of elements) to use when parser_mode=2 (non-recursive parser). (default is 10000)

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

Which implementation to use for converting strings to real values:

Read more…
integer(kind=IK), intent(in), optional :: null_to_integer_mode

if strict_type_checking=false:

Read more…
integer(kind=IK), intent(in), optional :: null_to_integer_value

The integer value to return when retrieving a null as an integer and null_to_integer_mode=3. (default is 0).

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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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 is_hash_enabled(me) result(enabled)

Check if the hash table is enabled.

Arguments

Type IntentOptional Attributes Name
class(json_file), intent(in) :: me

Return Value logical(kind=LK)

private pure function json_file_failed(me) result(failed)

Check error status in the file.

Arguments

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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, allow_trailing_comma, parser_mode, parser_initial_stack_size, parser_max_stack_size, string_to_real_mode, null_to_integer_mode, null_to_integer_value) result(file_object)

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

Arguments

Type IntentOptional Attributes Name
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:

Read more…
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_keys Read more…
logical(kind=LK), intent(in), optional :: escape_solidus

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

Read more…
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:

Read more…
integer(kind=IK), intent(in), optional :: non_normal_mode

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

Read more…
logical(kind=LK), intent(in), optional :: use_quiet_nan Read more…
logical(kind=LK), intent(in), optional :: strict_integer_type_checking

(default is true)

Read more…
logical(kind=LK), intent(in), optional :: allow_trailing_comma

Allow a single trailing comma in arrays and objects. (default is true)

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

Which version of the JSON parser to use:

Read more…
integer(kind=IK), intent(in), optional :: parser_initial_stack_size

The initial stack size (in number of elements) to use when parser_mode=2 (non-recursive parser). (default is 32)

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

The maximum stack size (in number of elements) to use when parser_mode=2 (non-recursive parser). (default is 10000)

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

Which implementation to use for converting strings to real values:

Read more…
integer(kind=IK), intent(in), optional :: null_to_integer_mode

if strict_type_checking=false:

Read more…
integer(kind=IK), intent(in), optional :: null_to_integer_value

The integer value to return when retrieving a null as an integer and null_to_integer_mode=3. (default is 0).

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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
class(json_file), intent(inout) :: me
character(kind=CK, len=*), intent(in) :: str

private subroutine destroy_hash(me)

Destroy the hash table if it exists.

Arguments

Type IntentOptional Attributes Name
class(json_file), intent(inout) :: me

private subroutine finalize_json_file(me)

Finalizer for json_file class.

Read more…

Arguments

Type IntentOptional Attributes Name
type(json_file), intent(inout) :: me

private subroutine flag_not_found(found)

If found is present, set it it false.

Arguments

Type IntentOptional Attributes Name
logical(kind=LK), intent(out), optional :: found

private subroutine get_json_core_in_file(me, core)

Get a copy of the json_core in this json_file.

Arguments

Type IntentOptional Attributes Name
class(json_file), intent(in) :: me
type(json_core), intent(out) :: core

private subroutine initialize_hash(me, status_ok, initial_capacity)

Create a hash table from the contents of the JSON file.

Read more…

Arguments

Type IntentOptional Attributes Name
class(json_file), intent(inout) :: me
logical(kind=LK), intent(out) :: status_ok

true if no problems.

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

initial capacity of the hash table (number of buckets). If not provided, it will be set based on the number of members divided by the load factor to minimize the number of resizes needed as members are inserted

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, allow_trailing_comma, parser_mode, parser_initial_stack_size, parser_max_stack_size, string_to_real_mode, null_to_integer_mode, null_to_integer_value)

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

Read more…

Arguments

Type IntentOptional Attributes Name
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:

Read more…
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_keys Read more…
logical(kind=LK), intent(in), optional :: escape_solidus

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

Read more…
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:

Read more…
integer(kind=IK), intent(in), optional :: non_normal_mode

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

Read more…
logical(kind=LK), intent(in), optional :: use_quiet_nan Read more…
logical(kind=LK), intent(in), optional :: strict_integer_type_checking

(default is true)

Read more…
logical(kind=LK), intent(in), optional :: allow_trailing_comma

Allow a single trailing comma in arrays and objects. (default is true)

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

Which version of the JSON parser to use:

Read more…
integer(kind=IK), intent(in), optional :: parser_initial_stack_size

The initial stack size (in number of elements) to use when parser_mode=2 (non-recursive parser). (default is 32)

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

The maximum stack size (in number of elements) to use when parser_mode=2 (non-recursive parser). (default is 10000)

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

Which implementation to use for converting strings to real values:

Read more…
integer(kind=IK), intent(in), optional :: null_to_integer_mode

if strict_type_checking=false:

Read more…
integer(kind=IK), intent(in), optional :: null_to_integer_value

The integer value to return when retrieving a null as an integer and null_to_integer_mode=3. (default is 0).

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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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_null(me, path, found, was_created)

Author
Jacob Williams

Add a null value to a JSON file.

Arguments

Type IntentOptional Attributes Name
class(json_file), intent(inout) :: me
character(kind=CK, len=*), intent(in) :: path

the path to the variable

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_null_vec(me, path, n_values, found, was_created)

Author
Jacob Williams

Add a null vector to a JSON file.

Arguments

Type IntentOptional Attributes Name
class(json_file), intent(inout) :: me
character(kind=CK, len=*), intent(in) :: path

the path to the variable

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

number of nulls 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_object(me, path, p, found, was_created)

Author
Jacob Williams

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

Arguments

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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.

Read more…

Arguments

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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, destroy_pointer)

Author
Jacob Williams
Date
12/9/2013

Load the JSON data from a file.

Read more…

Arguments

Type IntentOptional Attributes Name
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)

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

destroy the pointer before loading (default is True)

private subroutine json_file_load_from_string(me, str, destroy_pointer)

Author
Jacob Williams
Date
1/13/2015

Load the JSON data from a string.

Read more…

Arguments

Type IntentOptional Attributes Name
class(json_file), intent(inout) :: me
character(kind=CK, len=*), intent(in) :: str

string to load JSON data from

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

destroy the pointer before loading (default is True)

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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
class(json_file), intent(inout) :: me
type(json_core), intent(in) :: core

private subroutine throw_exception(me, msg, found)

Throw an exception.

Arguments

Type IntentOptional Attributes Name
class(json_file), intent(inout) :: me
character(kind=CK, len=*), intent(in) :: msg

the error message

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

if the caller is handling the exception with an optimal return argument. If so, json%stop_on_error is ignored.

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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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_null(me, path, found, was_created)

Author
Jacob Williams

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

Arguments

Type IntentOptional Attributes Name
class(json_file), intent(inout) :: me
character(kind=CDK, len=*), intent(in) :: path

the path to the variable

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_null_vec(me, path, n_values, found, was_created)

Author
Jacob Williams

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

Arguments

Type IntentOptional Attributes Name
class(json_file), intent(inout) :: me
character(kind=CDK, len=*), intent(in) :: path

the path to the variable

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

number of nulls 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_object(me, path, p, found, was_created)

Author
Jacob Williams

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

Arguments

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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

Type IntentOptional Attributes Name
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