The json_file
is the main public class that is
used to open a file and get data from it.
A json_file
contains only two items: an instance of a json_core,
which is used for all data manipulation, and a json_value pointer,
which is used to construct the linked-list data structure.
Note that most methods in the json_file
class are simply wrappers
to the lower-level routines in the json_value_module.
program test
use json_module
implicit none
type(json_file) :: json
integer :: ival
real(real64) :: rval
character(len=:),allocatable :: cval
logical :: found
call json%initialize(compact_reals=.true.)
call json%load(filename='myfile.json')
call json%print() !print to the console
call json%get('var.i',ival,found)
call json%get('var.r(3)',rval,found)
call json%get('var.c',cval,found)
call json%destroy()
end program test
The destroy()
method may be called to free the memory if necessary.
json_file includes a finalizer that also calls
destroy()
when the variable goes out of scope.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(json_core), | private | :: | core |
The instance of the json_core factory used for this file. |
|||
type(json_value), | private, | pointer | :: | p | => | null() |
the JSON structure read from the 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.
...
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)
Cast a json_value object as a json_file object.
It also calls the initialize()
method.
initialize_json_core, json_initialize, initialize_json_core_in_file, initialize_json_file, initialize_json_file_v2, initialize_json_file_from_string, and initialize_json_file_from_string_v2 all have a similar interface.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(json_value), | optional, | pointer | :: | p |
|
|
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 |
|
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: |
|
integer(kind=IK), | intent(in), | optional | :: | path_mode |
How the path strings are interpreted in the
|
|
character(kind=CK, len=1), | intent(in), | optional | :: | path_separator |
The |
|
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: |
|
logical(kind=LK), | intent(in), | optional | :: | allow_duplicate_keys |
|
|
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). |
|
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 |
|
integer(kind=IK), | intent(in), | optional | :: | non_normal_mode |
How to serialize NaN, Infinity, and -Infinity real values: |
|
logical(kind=LK), | intent(in), | optional | :: | use_quiet_nan |
|
|
logical(kind=LK), | intent(in), | optional | :: | strict_integer_type_checking |
(default is true) |
Cast a json_value pointer and a json_core object as a json_file object.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(json_value), | intent(in), | pointer | :: | json_value_object | ||
type(json_core), | intent(in) | :: | json_core_object |
Cast a JSON string as a json_file object.
It also calls the initialize()
method.
type(json_file) :: f
f = json_file('{"key ": 1}', trailing_spaces_significant=.true.)
initialize_json_core, json_initialize, initialize_json_core_in_file, initialize_json_file, initialize_json_file_v2, initialize_json_file_from_string, and initialize_json_file_from_string_v2 all have a similar interface.
Type | Intent | Optional | 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 |
|
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: |
|
integer(kind=IK), | intent(in), | optional | :: | path_mode |
How the path strings are interpreted in the
|
|
character(kind=CK, len=1), | intent(in), | optional | :: | path_separator |
The |
|
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: |
|
logical(kind=LK), | intent(in), | optional | :: | allow_duplicate_keys |
|
|
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). |
|
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 |
|
integer(kind=IK), | intent(in), | optional | :: | non_normal_mode |
How to serialize NaN, Infinity, and -Infinity real values: |
|
logical(kind=LK), | intent(in), | optional | :: | use_quiet_nan |
|
|
logical(kind=LK), | intent(in), | optional | :: | strict_integer_type_checking |
(default is true) |
Alternate version of initialize_json_file_from_string, where “str” is kind=CDK.
Type | Intent | Optional | 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 |
|
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: |
|
integer(kind=IK), | intent(in), | optional | :: | path_mode |
How the path strings are interpreted in the
|
|
character(kind=CK, len=1), | intent(in), | optional | :: | path_separator |
The |
|
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: |
|
logical(kind=LK), | intent(in), | optional | :: | allow_duplicate_keys |
|
|
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). |
|
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 |
|
integer(kind=IK), | intent(in), | optional | :: | non_normal_mode |
How to serialize NaN, Infinity, and -Infinity real values: |
|
logical(kind=LK), | intent(in), | optional | :: | use_quiet_nan |
|
|
logical(kind=LK), | intent(in), | optional | :: | strict_integer_type_checking |
(default is true) |
Cast a JSON string and a json_core object as a json_file object.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(kind=CK, len=*), | intent(in) | :: | str |
string to load JSON data from |
||
type(json_core), | intent(in) | :: | json_core_object |
Alternate version of initialize_json_file_from_string_v2, where “str” is kind=CDK.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(kind=CDK, len=*), | intent(in) | :: | str |
string to load JSON data from |
||
type(json_core), | intent(in) | :: | json_core_object |
Finalizer for json_file class.
Just a wrapper for json_file_destroy.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(json_file), | intent(inout) | :: | me |
Add a variable to a json_file, by specifying the path.
program test
use json_module, rk=>json_rk, ik=>json_ik
implicit none
type(json_file) :: f
call f%initialize() ! specify whatever init options you want.
call f%add('inputs.t', 0.0_rk)
call f%add('inputs.x', [1.0_rk,2.0_rk,3.0_rk])
call f%add('inputs.flag', .true.)
call f%print() ! print to the console
end program test
Add a json_value pointer as the root object to a JSON file.
This is mostly equivalent to:
f = [[json_file]](p)
But without the finalization calls.
And:
if (destroy_original) call [[json_file]]%destroy()
call [[json_file]]%add('$',p)
Type | Intent | Optional | 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] |
Add a json_value pointer to an object to a JSON file.
Type | Intent | Optional | 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 |
Alternate version of json_file_add_object, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Add an integer value to a JSON file.
Type | Intent | Optional | 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 |
Alternate version of json_file_add_integer, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Alternate version of json_file_add_real where val
is real32
.
Type | Intent | Optional | 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 |
Alternate version of json_file_add_real32, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Add a real(RK) variable value to a JSON file.
Type | Intent | Optional | 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 |
Alternate version of json_file_add_real, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Add a logical(LK) value to a JSON file.
Type | Intent | Optional | 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 |
Alternate version of json_file_add_logical, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Add a character string to a json file.
Type | Intent | Optional | 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 |
|
logical(kind=LK), | intent(in), | optional | :: | adjustl_str |
if ADJUSTL() should be called for the |
Alternate version of json_file_add_string, where “path” and “val” are kind=CDK.
Type | Intent | Optional | 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 |
|
logical(kind=LK), | intent(in), | optional | :: | adjustl_str |
if ADJUSTL() should be called for the |
Add an integer vector to a JSON file.
Type | Intent | Optional | 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 |
Alternate version of json_file_add_integer_vec, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Alternate version of json_file_add_real_vec where vec
is real32
.
Type | Intent | Optional | 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 |
Alternate version of json_file_add_real32_vec, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Add a real(RK) vector to a JSON file.
Type | Intent | Optional | 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 |
Alternate version of json_file_add_real_vec, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Add a logical(LK) vector to a JSON file.
Type | Intent | Optional | 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 |
Alternate version of json_file_add_logical_vec, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Add a string vector to a JSON file.
Type | Intent | Optional | 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 |
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) |
Alternate version of json_file_add_string_vec, where “path” and “vec” are kind=CDK.
Type | Intent | Optional | 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 |
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) |
Wrapper for json_file_add_string where “path” is kind=CDK).
Type | Intent | Optional | 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 |
|
logical(kind=LK), | intent(in), | optional | :: | adjustl_str |
if ADJUSTL() should be called for the |
Wrapper for json_file_add_string where “val” is kind=CDK).
Type | Intent | Optional | 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 |
|
logical(kind=LK), | intent(in), | optional | :: | adjustl_str |
if ADJUSTL() should be called for the |
Alternate version of json_file_add_string_vec, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
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) |
Alternate version of json_file_add_string_vec, where “vec” is kind=CDK.
Type | Intent | Optional | 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 |
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) |
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.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(out) | :: | me | |||
type(json_file), | intent(in) | :: | f |
Assignment operator for character = json_core. This is just a wrapper for the json_value_to_string routine.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(kind=CK, len=:), | intent(out), | allocatable | :: | str | ||
class(json_file), | intent(in) | :: | me |
Assignment operator for json_core = character. This is just a wrapper for the json_file_load_from_string routine.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | str |
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.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(out) | :: | me | |||
type(json_file), | intent(in) | :: | f |
Assignment operator for character = json_core. This is just a wrapper for the json_value_to_string routine.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(kind=CK, len=:), | intent(out), | allocatable | :: | str | ||
class(json_file), | intent(in) | :: | me |
Assignment operator for json_core = character. This is just a wrapper for the json_file_load_from_string routine.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | str |
Alternate version of assign_string_to_json_file, where “str” is kind=CDK.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CDK, len=*), | intent(in) | :: | str |
Retrieve error status and message from the class.
Type | Intent | Optional | 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) |
Clear exceptions in the class.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me |
Load JSON from a string.
Load the JSON data from a string.
Load JSON from a string:
type(json_file) :: f
call f%deserialize('{ "name": "Leonidas" }')
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | str |
string to load JSON data from |
Alternate version of json_file_load_from_string, where “str” is kind=CDK.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CDK, len=*), | intent(in) | :: | str |
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.
Optionally, also destroy the json_core instance (this is not necessary to prevent memory leaks, since a json_core does not use pointers).
destroy_core
argumentThis routine will be called automatically when the variable goes out of scope.
Type | Intent | Optional | 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. |
Check error status in the file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(in) | :: | me |
will be true if there has been an error.
Get a variable from a json_file, by specifying the path.
Get a json_value pointer to an object from a JSON file.
Type | Intent | Optional | 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 |
Alternate version of json_file_get_object, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Get an integer value from a JSON file.
Type | Intent | Optional | 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 |
Alternate version of json_file_get_integer, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Alternate version of json_file_get_real where val
is real32
.
Type | Intent | Optional | 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 |
Alternate version of json_file_get_real32, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Get a real(RK) variable value from a JSON file.
Type | Intent | Optional | 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 |
Alternate version of json_file_get_real, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Get a logical(LK) value from a JSON file.
Type | Intent | Optional | 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 |
Alternate version of json_file_get_logical, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Get a character string from a json file. The output val is an allocatable character string.
Type | Intent | Optional | 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 |
Alternate version of json_file_get_string, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Get an integer vector from a JSON file.
Type | Intent | Optional | 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 |
Alternate version of json_file_get_integer_vec, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Alternate version of json_file_get_real_vec where vec
is real32
.
Type | Intent | Optional | 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 |
Alternate version of json_file_get_real32_vec, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Get a real(RK) vector from a JSON file.
Type | Intent | Optional | 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 |
Alternate version of json_file_get_real_vec, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Get a logical(LK) vector from a JSON file.
Type | Intent | Optional | 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 |
Alternate version of json_file_get_logical_vec, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Get a string vector from a JSON file.
Type | Intent | Optional | 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 |
Alternate version of json_file_get_string_vec, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Get an (allocatable length) string vector from a JSON file. This is just a wrapper for json_get_alloc_string_vec_by_path.
Type | Intent | Optional | 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 |
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.
Type | Intent | Optional | 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 |
Get a json_value pointer to the JSON file root.
This is equivalent to calling json_file%get('$',p)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
type(json_value), | intent(out), | pointer | :: | p |
pointer to the variable |
Get a copy of the json_core in this json_file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(in) | :: | me | |||
type(json_core), | intent(out) | :: | core |
Returns information about a variable in a json_file.
If found
is present, no exceptions will be thrown if an
error occurs. Otherwise, an exception will be thrown if the
variable is not found.
Type | Intent | Optional | 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 |
Alternate version of json_file_variable_info, where “path” is kind=CDK.
If found
is present, no exceptions will be thrown if an
error occurs. Otherwise, an exception will be thrown if the
variable is not found.
Type | Intent | Optional | 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 |
Initialize the json_core for this json_file. This is just a wrapper for json_initialize.
This does not destroy the data in the file.
initialize_json_core, json_initialize, initialize_json_core_in_file, initialize_json_file, initialize_json_file_v2, initialize_json_file_from_string, and initialize_json_file_from_string_v2 all have a similar interface.
Type | Intent | Optional | 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 |
|
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: |
|
integer(kind=IK), | intent(in), | optional | :: | path_mode |
How the path strings are interpreted in the
|
|
character(kind=CK, len=1), | intent(in), | optional | :: | path_separator |
The |
|
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: |
|
logical(kind=LK), | intent(in), | optional | :: | allow_duplicate_keys |
|
|
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). |
|
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 |
|
integer(kind=IK), | intent(in), | optional | :: | non_normal_mode |
How to serialize NaN, Infinity, and -Infinity real values: |
|
logical(kind=LK), | intent(in), | optional | :: | use_quiet_nan |
|
|
logical(kind=LK), | intent(in), | optional | :: | strict_integer_type_checking |
(default is true) |
Set the json_core for this json_file.
This does not destroy the data in the file.
This one is used if you want to initialize the file with an already-existing json_core (presumably, this was already initialized by a call to initialize_json_core or similar).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
type(json_core), | intent(in) | :: | core |
Initialize the json_core for this json_file. This is just a wrapper for json_initialize.
This does not destroy the data in the file.
initialize_json_core, json_initialize, initialize_json_core_in_file, initialize_json_file, initialize_json_file_v2, initialize_json_file_from_string, and initialize_json_file_from_string_v2 all have a similar interface.
Type | Intent | Optional | 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 |
|
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: |
|
integer(kind=IK), | intent(in), | optional | :: | path_mode |
How the path strings are interpreted in the
|
|
character(kind=CK, len=1), | intent(in), | optional | :: | path_separator |
The |
|
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: |
|
logical(kind=LK), | intent(in), | optional | :: | allow_duplicate_keys |
|
|
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). |
|
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 |
|
integer(kind=IK), | intent(in), | optional | :: | non_normal_mode |
How to serialize NaN, Infinity, and -Infinity real values: |
|
logical(kind=LK), | intent(in), | optional | :: | use_quiet_nan |
|
|
logical(kind=LK), | intent(in), | optional | :: | strict_integer_type_checking |
(default is true) |
Add a json_value pointer as the root object to a JSON file.
This is mostly equivalent to:
f = [[json_file]](p)
But without the finalization calls.
And:
if (destroy_original) call [[json_file]]%destroy()
call [[json_file]]%add('$',p)
Type | Intent | Optional | 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] |
Add an integer value to a JSON file.
Type | Intent | Optional | 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 |
Add an integer vector to a JSON file.
Type | Intent | Optional | 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 |
Add a logical(LK) value to a JSON file.
Type | Intent | Optional | 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 |
Add a logical(LK) vector to a JSON file.
Type | Intent | Optional | 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 |
Add a json_value pointer to an object to a JSON file.
Type | Intent | Optional | 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 |
Add a real(RK) variable value to a JSON file.
Type | Intent | Optional | 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 |
Alternate version of json_file_add_real where val
is real32
.
Type | Intent | Optional | 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 |
Alternate version of json_file_add_real_vec where vec
is real32
.
Type | Intent | Optional | 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 |
Add a real(RK) vector to a JSON file.
Type | Intent | Optional | 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 |
Add a character string to a json file.
Type | Intent | Optional | 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 |
|
logical(kind=LK), | intent(in), | optional | :: | adjustl_str |
if ADJUSTL() should be called for the |
Wrapper for json_file_add_string where “path” is kind=CDK).
Type | Intent | Optional | 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 |
|
logical(kind=LK), | intent(in), | optional | :: | adjustl_str |
if ADJUSTL() should be called for the |
Wrapper for json_file_add_string where “val” is kind=CDK).
Type | Intent | Optional | 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 |
|
logical(kind=LK), | intent(in), | optional | :: | adjustl_str |
if ADJUSTL() should be called for the |
Add a string vector to a JSON file.
Type | Intent | Optional | 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 |
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) |
Alternate version of json_file_add_string_vec, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
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) |
Alternate version of json_file_add_string_vec, where “vec” is kind=CDK.
Type | Intent | Optional | 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 |
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) |
Get an (allocatable length) string vector from a JSON file. This is just a wrapper for json_get_alloc_string_vec_by_path.
Type | Intent | Optional | 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 |
Get an integer value from a JSON file.
Type | Intent | Optional | 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 |
Get an integer vector from a JSON file.
Type | Intent | Optional | 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 |
Get a logical(LK) value from a JSON file.
Type | Intent | Optional | 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 |
Get a logical(LK) vector from a JSON file.
Type | Intent | Optional | 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 |
Get a json_value pointer to an object from a JSON file.
Type | Intent | Optional | 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 |
Get a real(RK) variable value from a JSON file.
Type | Intent | Optional | 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 |
Alternate version of json_file_get_real where val
is real32
.
Type | Intent | Optional | 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 |
Alternate version of json_file_get_real_vec where vec
is real32
.
Type | Intent | Optional | 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 |
Get a real(RK) vector from a JSON file.
Type | Intent | Optional | 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 |
Get a json_value pointer to the JSON file root.
This is equivalent to calling json_file%get('$',p)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
type(json_value), | intent(out), | pointer | :: | p |
pointer to the variable |
Get a character string from a json file. The output val is an allocatable character string.
Type | Intent | Optional | 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 |
Get a string vector from a JSON file.
Type | Intent | Optional | 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 |
Load the JSON data from a string.
Load JSON from a string:
type(json_file) :: f
call f%deserialize('{ "name": "Leonidas" }')
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | str |
string to load JSON data from |
Print the JSON file to the console.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me |
Print the JSON structure to the specified filename. The file is opened, printed, and then closed.
Example loading a JSON file, changing a value, and then printing result to a new file:
type(json_file) :: f
logical :: found
call f%load('my_file.json') !open the original file
call f%update('version',4,found) !change the value of a variable
call f%print('my_file_2.json') !save file as new name
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CDK, len=*), | intent(in) | :: | filename |
filename to print to |
Prints the JSON file to the specified file unit number.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
integer(kind=IK), | intent(in) | :: | iunit |
file unit number (must not be -1) |
Remove a variable from a JSON file.
This is just a wrapper to remove_if_present.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
Rename a variable in a JSON file.
Type | Intent | Optional | 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 |
Wrapper for json_file_rename where “name” is kind=CDK).
Type | Intent | Optional | 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 |
Wrapper for json_file_rename where “path” is kind=CDK).
Type | Intent | Optional | 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 |
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.
Type | Intent | Optional | 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 |
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.
Type | Intent | Optional | 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 |
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.
Type | Intent | Optional | 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 |
Alternate version of json_file_update_real where val
is real32
.
Type | Intent | Optional | 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 |
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.
Type | Intent | Optional | 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 |
|
logical(kind=LK), | intent(in), | optional | :: | adjustl_str |
if ADJUSTL() should be called for the |
Alternate version of json_file_update_string, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
|
logical(kind=LK), | intent(in), | optional | :: | adjustl_str |
if ADJUSTL() should be called for the |
Alternate version of json_file_update_string, where “val” is kind=CDK.
Type | Intent | Optional | 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 |
|
logical(kind=LK), | intent(in), | optional | :: | adjustl_str |
if ADJUSTL() should be called for the |
Returns true if the path
is present in the JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
if the variable was found
A wrapper for json_file_valid_path for the .in.
operator
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
class(json_file), | intent(in) | :: | me |
the JSON file |
if the variable was found
Returns information about a variable in a json_file.
If found
is present, no exceptions will be thrown if an
error occurs. Otherwise, an exception will be thrown if the
variable is not found.
Type | Intent | Optional | 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 |
Returns matrix information about a variable in a json_file.
If found
is present, no exceptions will be thrown if an
error occurs. Otherwise, an exception will be thrown if the
variable is not found.
Type | Intent | Optional | 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 |
Load JSON from a file.
Load the JSON data from a file.
program main
use json_module
implicit none
type(json_file) :: f
call f%load('my_file.json')
!...
call f%destroy()
end program main
Type | Intent | Optional | 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) |
The same as load
, but only here for backward compatibility
Load the JSON data from a file.
program main
use json_module
implicit none
type(json_file) :: f
call f%load('my_file.json')
!...
call f%destroy()
end program main
Type | Intent | Optional | 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) |
The same as deserialize
, but only here for backward compatibility
Load the JSON data from a string.
Load JSON from a string:
type(json_file) :: f
call f%deserialize('{ "name": "Leonidas" }')
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | str |
string to load JSON data from |
Alternate version of json_file_load_from_string, where “str” is kind=CDK.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CDK, len=*), | intent(in) | :: | str |
Returns matrix information about a variable in a json_file.
If found
is present, no exceptions will be thrown if an
error occurs. Otherwise, an exception will be thrown if the
variable is not found.
Type | Intent | Optional | 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 |
Alternate version of json_file_variable_matrix_info, where “path” is kind=CDK.
If found
is present, no exceptions will be thrown if an
error occurs. Otherwise, an exception will be thrown if the
variable is not found.
Type | Intent | Optional | 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 |
Move the json_value pointer from one json_file to another. The “from” pointer is then nullified, but not destroyed.
If “from%p” is not associated, then an error is thrown.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | to | |||
class(json_file), | intent(inout) | :: | from |
Nullify the json_value pointer in a json_file, but do not destroy it.
This should normally only be done if the pointer is the target of another pointer outside the class that is still intended to be in scope after the json_file has gone out of scope. Otherwise, this would result in a memory leak.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me |
A wrapper for json_file_valid_path for the .in.
operator
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
||
class(json_file), | intent(in) | :: | me |
the JSON file |
if the variable was found
Alternate version of json_file_valid_path_op, where “path” is kind=CDK.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(kind=CDK, len=*), | intent(in) | :: | path |
the path to the variable |
||
class(json_file), | intent(in) | :: | me |
the JSON file |
if the variable was found
Print the JSON file to the console.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me |
Prints the JSON file to the specified file unit number.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
integer(kind=IK), | intent(in) | :: | iunit |
file unit number (must not be -1) |
Print the JSON structure to the specified filename. The file is opened, printed, and then closed.
Example loading a JSON file, changing a value, and then printing result to a new file:
type(json_file) :: f
logical :: found
call f%load('my_file.json') !open the original file
call f%update('version',4,found) !change the value of a variable
call f%print('my_file_2.json') !save file as new name
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CDK, len=*), | intent(in) | :: | filename |
filename to print to |
This is a wrapper for json_print_error_message.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
integer, | intent(in), | optional | :: | io_unit |
The same as print
, but only here for backward compatibility
Print the JSON file to the console.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me |
Prints the JSON file to the specified file unit number.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
integer(kind=IK), | intent(in) | :: | iunit |
file unit number (must not be -1) |
Print the JSON structure to the specified filename. The file is opened, printed, and then closed.
Example loading a JSON file, changing a value, and then printing result to a new file:
type(json_file) :: f
logical :: found
call f%load('my_file.json') !open the original file
call f%update('version',4,found) !change the value of a variable
call f%print('my_file_2.json') !save file as new name
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CDK, len=*), | intent(in) | :: | filename |
filename to print to |
The same as serialize
, but only here for backward compatibility
Print the JSON file to a string.
Open a JSON file, and then print the contents to a string:
type(json_file) :: f
character(kind=CK,len=:),allocatable :: str
call f%load('my_file.json')
call f%serialize(str)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=:), | intent(out), | allocatable | :: | str |
string to print JSON data to |
Remove a variable from a json_file by specifying the path.
Remove a variable from a JSON file.
This is just a wrapper to remove_if_present.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
Alternate version of json_file_remove, where “path” is kind=CDK.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CDK, len=*), | intent(in) | :: | path |
the path to the variable |
Rename a variable, specifying it by path
Rename a variable in a JSON file.
Type | Intent | Optional | 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 |
Alternate version of json_file_rename, where “path” and “name” are kind=CDK.
Type | Intent | Optional | 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 |
Wrapper for json_file_rename where “path” is kind=CDK).
Type | Intent | Optional | 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 |
Wrapper for json_file_rename where “name” is kind=CDK).
Type | Intent | Optional | 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 |
Print the json_value structure to an allocatable string
Print the JSON file to a string.
Open a JSON file, and then print the contents to a string:
type(json_file) :: f
character(kind=CK,len=:),allocatable :: str
call f%load('my_file.json')
call f%serialize(str)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=:), | intent(out), | allocatable | :: | str |
string to print JSON data to |
Set the json_core for this json_file.
This does not destroy the data in the file.
This one is used if you want to initialize the file with an already-existing json_core (presumably, this was already initialized by a call to initialize_json_core or similar).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
type(json_core), | intent(in) | :: | core |
Traverse the JSON structure in the file. This routine calls the user-specified json_traverse_callback_func for each element of the structure.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
procedure(json_traverse_callback_func) | :: | traverse_callback |
Update a scalar variable in a json_file, by specifying the path.
These have been mostly supplanted by the add
methods, which do a similar thing (and can be used for
scalars and vectors, etc.)
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.
Type | Intent | Optional | 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 |
Alternate version of json_file_update_integer, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
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.
Type | Intent | Optional | 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 |
Alternate version of json_file_update_logical, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Alternate version of json_file_update_real where val
is real32
.
Type | Intent | Optional | 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 |
Alternate version of json_file_update_real32, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
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.
Type | Intent | Optional | 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 |
Alternate version of json_file_update_real, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
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.
Type | Intent | Optional | 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 |
|
logical(kind=LK), | intent(in), | optional | :: | adjustl_str |
if ADJUSTL() should be called for the |
Alternate version of json_file_update_string, where “path” and “val” are kind=CDK.
Type | Intent | Optional | 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 |
|
logical(kind=LK), | intent(in), | optional | :: | adjustl_str |
if ADJUSTL() should be called for the |
Alternate version of json_file_update_string, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
|
logical(kind=LK), | intent(in), | optional | :: | adjustl_str |
if ADJUSTL() should be called for the |
Alternate version of json_file_update_string, where “val” is kind=CDK.
Type | Intent | Optional | 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 |
|
logical(kind=LK), | intent(in), | optional | :: | adjustl_str |
if ADJUSTL() should be called for the |
Verify that a path is valid (i.e., a variable with this path exists in the file).
Returns true if the path
is present in the JSON file.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CK, len=*), | intent(in) | :: | path |
the path to the variable |
if the variable was found
Alternate version of json_file_valid_path, where “path” is kind=CDK.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CDK, len=*), | intent(in) | :: | path |
the path to the variable |
if the variable was found
Alternate version of assign_string_to_json_file, where “str” is kind=CDK.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CDK, len=*), | intent(in) | :: | str |
Alternate version of json_file_add_integer, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Alternate version of json_file_add_integer_vec, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Alternate version of json_file_add_logical, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Alternate version of json_file_add_logical_vec, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Alternate version of json_file_add_object, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Alternate version of json_file_add_real, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Alternate version of json_file_add_real32, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Alternate version of json_file_add_real32_vec, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Alternate version of json_file_add_real_vec, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Alternate version of json_file_add_string, where “path” and “val” are kind=CDK.
Type | Intent | Optional | 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 |
|
logical(kind=LK), | intent(in), | optional | :: | adjustl_str |
if ADJUSTL() should be called for the |
Alternate version of json_file_add_string_vec, where “path” and “vec” are kind=CDK.
Type | Intent | Optional | 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 |
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) |
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.
Type | Intent | Optional | 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 |
Alternate version of json_file_get_integer, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Alternate version of json_file_get_integer_vec, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Alternate version of json_file_get_logical, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Alternate version of json_file_get_logical_vec, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Alternate version of json_file_get_object, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Alternate version of json_file_get_real, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Alternate version of json_file_get_real32, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Alternate version of json_file_get_real32_vec, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Alternate version of json_file_get_real_vec, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Alternate version of json_file_get_string, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Alternate version of json_file_get_string_vec, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Alternate version of json_file_load_from_string, where “str” is kind=CDK.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CDK, len=*), | intent(in) | :: | str |
Alternate version of json_file_remove, where “path” is kind=CDK.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CDK, len=*), | intent(in) | :: | path |
the path to the variable |
Alternate version of json_file_rename, where “path” and “name” are kind=CDK.
Type | Intent | Optional | 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 |
Alternate version of json_file_update_integer, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Alternate version of json_file_update_logical, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Alternate version of json_file_update_real, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Alternate version of json_file_update_real32, where “path” is kind=CDK.
Type | Intent | Optional | 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 |
Alternate version of json_file_update_string, where “path” and “val” are kind=CDK.
Type | Intent | Optional | 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 |
|
logical(kind=LK), | intent(in), | optional | :: | adjustl_str |
if ADJUSTL() should be called for the |
Alternate version of json_file_valid_path, where “path” is kind=CDK.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(json_file), | intent(inout) | :: | me | |||
character(kind=CDK, len=*), | intent(in) | :: | path |
the path to the variable |
if the variable was found
Alternate version of json_file_valid_path_op, where “path” is kind=CDK.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(kind=CDK, len=*), | intent(in) | :: | path |
the path to the variable |
||
class(json_file), | intent(in) | :: | me |
the JSON file |
if the variable was found
Alternate version of json_file_variable_info, where “path” is kind=CDK.
If found
is present, no exceptions will be thrown if an
error occurs. Otherwise, an exception will be thrown if the
variable is not found.
Type | Intent | Optional | 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 |
Alternate version of json_file_variable_matrix_info, where “path” is kind=CDK.
If found
is present, no exceptions will be thrown if an
error occurs. Otherwise, an exception will be thrown if the
variable is not found.
Type | Intent | Optional | 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 |
type,public :: json_file
private
type(json_core) :: core !! The instance of the [[json_core(type)]]
!! factory used for this file.
type(json_value),pointer :: p => null() !! the JSON structure read from the file
contains
generic,public :: initialize => initialize_json_core_in_file,&
set_json_core_in_file
procedure,public :: get_core => get_json_core_in_file
!>
! Load JSON from a file.
procedure,public :: load => json_file_load
!>
! The same as `load`, but only here for backward compatibility
procedure,public :: load_file => json_file_load
!>
! Load JSON from a string.
generic,public :: deserialize => MAYBEWRAP(json_file_load_from_string)
!>
! The same as `deserialize`, but only here for backward compatibility
generic,public :: load_from_string => MAYBEWRAP(json_file_load_from_string)
!>
! Print the [[json_value]] structure to an allocatable string
procedure,public :: serialize => json_file_print_to_string
!>
! The same as `serialize`, but only here for backward compatibility
procedure,public :: print_to_string => json_file_print_to_string
procedure,public :: destroy => json_file_destroy
procedure,public :: nullify => json_file_nullify
procedure,public :: move => json_file_move_pointer
generic,public :: info => MAYBEWRAP(json_file_variable_info)
generic,public :: matrix_info => MAYBEWRAP(json_file_variable_matrix_info)
!error checking:
procedure,public :: failed => json_file_failed
procedure,public :: print_error_message => json_file_print_error_message
procedure,public :: check_for_errors => json_file_check_for_errors
procedure,public :: clear_exceptions => json_file_clear_exceptions
generic,public :: print => 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
generic,public :: print_file => json_file_print_to_console, &
json_file_print_to_unit, &
json_file_print_to_filename
!>
! Rename a variable, specifying it by path
generic,public :: rename => MAYBEWRAP(json_file_rename)
#ifdef USE_UCS4
generic,public :: rename => json_file_rename_path_ascii, &
json_file_rename_name_ascii
#endif
!>
! Verify that a path is valid
! (i.e., a variable with this path exists in the file).
generic,public :: valid_path => MAYBEWRAP(json_file_valid_path)
!>
! Get a variable from a [[json_file(type)]], by specifying the path.
generic,public :: get => MAYBEWRAP(json_file_get_object), &
MAYBEWRAP(json_file_get_integer), &
#ifndef REAL32
MAYBEWRAP(json_file_get_real32), &
#endif
MAYBEWRAP(json_file_get_real), &
#ifdef REAL128
MAYBEWRAP(json_file_get_real64), &
#endif
MAYBEWRAP(json_file_get_logical), &
MAYBEWRAP(json_file_get_string), &
MAYBEWRAP(json_file_get_integer_vec), &
#ifndef REAL32
MAYBEWRAP(json_file_get_real32_vec), &
#endif
MAYBEWRAP(json_file_get_real_vec), &
#ifdef REAL128
MAYBEWRAP(json_file_get_real64_vec), &
#endif
MAYBEWRAP(json_file_get_logical_vec), &
MAYBEWRAP(json_file_get_string_vec), &
MAYBEWRAP(json_file_get_alloc_string_vec), &
json_file_get_root
!>
! Add a variable to a [[json_file(type)]], by specifying the path.
!
!### Example
!
!```fortran
! program test
! use json_module, rk=>json_rk, ik=>json_ik
! implicit none
! type(json_file) :: f
! call f%initialize() ! specify whatever init options you want.
! call f%add('inputs.t', 0.0_rk)
! call f%add('inputs.x', [1.0_rk,2.0_rk,3.0_rk])
! call f%add('inputs.flag', .true.)
! call f%print() ! print to the console
! end program test
!```
generic,public :: add => json_file_add, &
MAYBEWRAP(json_file_add_object), &
MAYBEWRAP(json_file_add_integer), &
#ifndef REAL32
MAYBEWRAP(json_file_add_real32), &
#endif
MAYBEWRAP(json_file_add_real), &
#ifdef REAL128
MAYBEWRAP(json_file_add_real64), &
#endif
MAYBEWRAP(json_file_add_logical), &
MAYBEWRAP(json_file_add_string), &
MAYBEWRAP(json_file_add_integer_vec), &
#ifndef REAL32
MAYBEWRAP(json_file_add_real32_vec), &
#endif
MAYBEWRAP(json_file_add_real_vec), &
#ifdef REAL128
MAYBEWRAP(json_file_add_real64_vec), &
#endif
MAYBEWRAP(json_file_add_logical_vec), &
MAYBEWRAP(json_file_add_string_vec)
#ifdef USE_UCS4
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
#endif
!>
! Update a scalar variable in a [[json_file(type)]],
! by specifying the path.
!
!@note These have been mostly supplanted by the `add`
! methods, which do a similar thing (and can be used for
! scalars and vectors, etc.)
generic,public :: update => MAYBEWRAP(json_file_update_integer), &
MAYBEWRAP(json_file_update_logical), &
#ifndef REAL32
MAYBEWRAP(json_file_update_real32), &
#endif
MAYBEWRAP(json_file_update_real), &
#ifdef REAL128
MAYBEWRAP(json_file_update_real64), &
#endif
MAYBEWRAP(json_file_update_string)
#ifdef USE_UCS4
generic,public :: update => json_file_update_string_name_ascii, &
json_file_update_string_val_ascii
#endif
!>
! Remove a variable from a [[json_file(type)]]
! by specifying the path.
generic,public :: remove => MAYBEWRAP(json_file_remove)
!traverse
procedure,public :: traverse => json_file_traverse
! ***************************************************
! operators
! ***************************************************
generic,public :: operator(.in.) => MAYBEWRAP(json_file_valid_path_op)
procedure,pass(me) :: MAYBEWRAP(json_file_valid_path_op)
generic,public :: assignment(=) => assign_json_file,&
assign_json_file_to_string,&
MAYBEWRAP(assign_string_to_json_file)
procedure :: assign_json_file
procedure,pass(me) :: assign_json_file_to_string
procedure :: MAYBEWRAP(assign_string_to_json_file)
! ***************************************************
! private routines
! ***************************************************
!load from string:
procedure :: MAYBEWRAP(json_file_load_from_string)
!initialize
procedure :: initialize_json_core_in_file
procedure :: set_json_core_in_file
!get info:
procedure :: MAYBEWRAP(json_file_variable_info)
procedure :: MAYBEWRAP(json_file_variable_matrix_info)
!rename:
procedure :: MAYBEWRAP(json_file_rename)
#ifdef USE_UCS4
procedure :: json_file_rename_path_ascii
procedure :: json_file_rename_name_ascii
#endif
!validate path:
procedure :: MAYBEWRAP(json_file_valid_path)
!get:
procedure :: MAYBEWRAP(json_file_get_object)
procedure :: MAYBEWRAP(json_file_get_integer)
#ifndef REAL32
procedure :: MAYBEWRAP(json_file_get_real32)
#endif
procedure :: MAYBEWRAP(json_file_get_real)
#ifdef REAL128
procedure :: MAYBEWRAP(json_file_get_real64)
#endif
procedure :: MAYBEWRAP(json_file_get_logical)
procedure :: MAYBEWRAP(json_file_get_string)
procedure :: MAYBEWRAP(json_file_get_integer_vec)
#ifndef REAL32
procedure :: MAYBEWRAP(json_file_get_real32_vec)
#endif
procedure :: MAYBEWRAP(json_file_get_real_vec)
#ifdef REAL128
procedure :: MAYBEWRAP(json_file_get_real64_vec)
#endif
procedure :: MAYBEWRAP(json_file_get_logical_vec)
procedure :: MAYBEWRAP(json_file_get_string_vec)
procedure :: MAYBEWRAP(json_file_get_alloc_string_vec)
procedure :: json_file_get_root
!add:
procedure :: json_file_add
procedure :: MAYBEWRAP(json_file_add_object)
procedure :: MAYBEWRAP(json_file_add_integer)
#ifndef REAL32
procedure :: MAYBEWRAP(json_file_add_real32)
#endif
procedure :: MAYBEWRAP(json_file_add_real)
#ifdef REAL128
procedure :: MAYBEWRAP(json_file_add_real64)
#endif
procedure :: MAYBEWRAP(json_file_add_logical)
procedure :: MAYBEWRAP(json_file_add_string)
procedure :: MAYBEWRAP(json_file_add_integer_vec)
#ifndef REAL32
procedure :: MAYBEWRAP(json_file_add_real32_vec)
#endif
procedure :: MAYBEWRAP(json_file_add_real_vec)
#ifdef REAL128
procedure :: MAYBEWRAP(json_file_add_real64_vec)
#endif
procedure :: MAYBEWRAP(json_file_add_logical_vec)
procedure :: MAYBEWRAP(json_file_add_string_vec)
#ifdef USE_UCS4
procedure :: json_file_add_string_path_ascii
procedure :: json_file_add_string_value_ascii
procedure :: json_file_add_string_vec_path_ascii
procedure :: json_file_add_string_vec_vec_ascii
#endif
!update:
procedure :: MAYBEWRAP(json_file_update_integer)
procedure :: MAYBEWRAP(json_file_update_logical)
#ifndef REAL32
procedure :: MAYBEWRAP(json_file_update_real32)
#endif
procedure :: MAYBEWRAP(json_file_update_real)
#ifdef REAL128
procedure :: MAYBEWRAP(json_file_update_real64)
#endif
procedure :: MAYBEWRAP(json_file_update_string)
#ifdef USE_UCS4
procedure :: json_file_update_string_name_ascii
procedure :: json_file_update_string_val_ascii
#endif
!remove:
procedure :: MAYBEWRAP(json_file_remove)
!print:
procedure :: json_file_print_to_console
procedure :: json_file_print_to_unit
procedure :: json_file_print_to_filename
final :: finalize_json_file
end type json_file