finer_file_ini_t Module

INI file class definition.


Uses

  • module~~finer_file_ini_t~~UsesGraph module~finer_file_ini_t finer_file_ini_t iso_fortran_env iso_fortran_env module~finer_file_ini_t->iso_fortran_env penf penf module~finer_file_ini_t->penf module~finer_section_t finer_section_t module~finer_file_ini_t->module~finer_section_t module~finer_backend finer_backend module~finer_file_ini_t->module~finer_backend module~finer_option_t finer_option_t module~finer_file_ini_t->module~finer_option_t stringifor stringifor module~finer_file_ini_t->stringifor module~finer_section_t->penf module~finer_section_t->module~finer_backend module~finer_section_t->module~finer_option_t module~finer_section_t->stringifor module~finer_backend->penf module~finer_option_t->penf module~finer_option_t->module~finer_backend module~finer_option_t->stringifor

Used by

  • module~~finer_file_ini_t~~UsedByGraph module~finer_file_ini_t finer_file_ini_t module~finer finer module~finer->module~finer_file_ini_t program~finer_test_load finer_test_load program~finer_test_load->module~finer program~finer_test_update_option finer_test_update_option program~finer_test_update_option->module~finer program~finer_test_get finer_test_get program~finer_test_get->module~finer program~autotest autotest program~autotest->module~finer program~finer_test_parse finer_test_parse program~finer_test_parse->module~finer

Contents


Derived Types

type, public :: file_ini

INI file class.

Components

TypeVisibilityAttributesNameInitial
integer(kind=I4P), private :: Ns =0

Number of sections.

character(len=:), public, allocatable:: filename

File name

character(len=1), private :: opt_sep =DEF_OPT_SEP

Separator character of option name/value.

type(section), private, allocatable:: sections(:)

Sections.

Type-Bound Procedures

generic, public :: add => add_section, add_option, add_a_option

Add a section. Add an option to a section (scalar). Add an option to a section (array).

procedure, private, pass(self) :: add_a_option

Add an option to a section (array).

procedure, private, pass(self) :: add_option

Add an option to a section (scalar).

procedure, private, pass(self) :: add_section

Add a section.

procedure, private, pass(lhs) :: assign_file_ini

Assignment overloading.

generic, public :: assignment(=) => assign_file_ini

Procedure for section assignment overloading.

procedure, public, pass(self) :: count_values

Count option value(s).

generic, public :: del => free_option_of_section, free_section

Remove (freeing) an option of a section. Remove (freeing) a section.

procedure, public, pass(self) :: free

Free dynamic memory destroyng file data.

procedure, private, pass(self) :: free_option_of_section

Free an option of a section.

generic, public :: free_options => free_options_all, free_options_of_section, free_option_of_section

Free all options. Free all options of a section. Free an option of a section.

procedure, private, pass(self) :: free_options_all

Free all options of all sections.

procedure, private, pass(self) :: free_options_of_section

Free all options of a section.

procedure, private, pass(self) :: free_section

Free a section.

generic, public :: get => get_option, get_a_option

Get option value (scalar). Get option value (array).

procedure, private, pass(self) :: get_a_option

Get option value (array).

procedure, public, pass(self) :: get_items

Get list of pairs option name/value.

procedure, private, pass(self) :: get_option

Get option value (scalar).

procedure, public, pass(self) :: get_sections_list

Get sections names list.

procedure, public, pass(self) :: has_option

Inquire the presence of an option.

procedure, public, pass(self) :: has_section

Inquire the presence of a section.

generic, public :: index => index_section, index_option

Return the index of a section. Return the index of an option.

procedure, private, pass(self) :: index_option

Return the index of an option.

procedure, private, pass(self) :: index_section

Return the index of a section.

procedure, public, pass(self) :: initialize

Initialize file.

procedure, public, pass(self) :: load

Load file data.

generic, public :: loop => loop_options_section, loop_options

Loop over options of a section. Loop over all options.

procedure, private, pass(self) :: loop_options

Loop over all options.

procedure, private, pass(self) :: loop_options_section

Loop over options of a section.

procedure, private, pass(self) :: parse

Parse file data.

procedure, public, pass(self) :: print => print_file_ini

Pretty printing data.

procedure, public, pass(self) :: save => save_file_ini

Save data.

procedure, public, pass(self) :: section => section_file_ini

Get section name once provided an index.


Functions

private elemental function count_values(self, delimiter, section_name, option_name) result(Nv)

Get the number of values of option into section data.

Arguments

TypeIntentOptionalAttributesName
class(file_ini), intent(in) :: self

File data.

character, intent(in), optional :: delimiter

Delimiter used for separating values.

character, intent(in) :: section_name

Section name.

character, intent(in) :: option_name

Option name.

Return Value integer(kind=I4P)

Number of values.

private function has_option(self, option_name, section_name) result(pres)

Inquire the presence of (at least one) option with the name passed.

Read more…

Arguments

TypeIntentOptionalAttributesName
class(file_ini), intent(in) :: self

File data.

character, intent(in) :: option_name

Option name.

character, intent(inout), optional :: section_name

Section name.

Return Value logical

Inquiring flag.

private elemental function has_section(self, section_name) result(pres)

Inquire the presence of (at least one) section with the name passed.

Arguments

TypeIntentOptionalAttributesName
class(file_ini), intent(in) :: self

File data.

character, intent(in) :: section_name

Section name.

Return Value logical

Inquiring flag.

private elemental function index_option(self, back, section_name, option_name) result(ind)

Return the index of the option (inside a section) matching the name(s) passed.

Read more…

Arguments

TypeIntentOptionalAttributesName
class(file_ini), intent(in) :: self

File data.

logical, intent(in), optional :: back

If back appears with the value true, the last matching index is returned.

character, intent(in) :: section_name

Section name.

character, intent(in) :: option_name

Option name.

Return Value integer(kind=I4P)

Index of searched section.

private elemental function index_section(self, back, section_name) result(ind)

Return the index of the section matching the name passed.

Read more…

Arguments

TypeIntentOptionalAttributesName
class(file_ini), intent(in) :: self

File data.

logical, intent(in), optional :: back

If back appears with the value true, the last matching index is returned.

character, intent(in) :: section_name

Section name.

Return Value integer(kind=I4P)

Index of searched section.

private recursive function loop_options(self, option_pairs) result(again)

Loop returning option name/value defined into all sections.

Arguments

TypeIntentOptionalAttributesName
class(file_ini), intent(in) :: self

File data.

character(len=:), intent(out), allocatable:: option_pairs(:)

Pairs option name/value [1:2].

Return Value logical

Flag continuing the loop.

private function loop_options_section(self, section_name, option_pairs) result(again)

Loop returning option name/value defined into section.

Arguments

TypeIntentOptionalAttributesName
class(file_ini), intent(in) :: self

File data.

character, intent(in) :: section_name

Section name.

character(len=:), intent(out), allocatable:: option_pairs(:)

Pairs option name/value [1:2].

Return Value logical

Flag continuing the loop.

private pure function section_file_ini(self, section_index) result(sname)

Get section name once an index (valid) is provided.

Arguments

TypeIntentOptionalAttributesName
class(file_ini), intent(in) :: self

File data.

integer(kind=I4P), intent(in) :: section_index

Section index.

Return Value character(len=:),allocatable

Section name.


Subroutines

private pure subroutine add_a_option(self, error, section_name, option_name, val)

Add an option (with array value).

Read more…

Arguments

TypeIntentOptionalAttributesName
class(file_ini), intent(inout) :: self

File data.

integer(kind=I4P), intent(out), optional :: error

Error code.

character, intent(in) :: section_name

Section name.

character, intent(in) :: option_name

Option name.

class(*), intent(in) :: val(1:)

Option value.

private pure subroutine add_option(self, error, section_name, option_name, val)

Add an option (with scalar value).

Read more…

Arguments

TypeIntentOptionalAttributesName
class(file_ini), intent(inout) :: self

File data.

integer(kind=I4P), intent(out), optional :: error

Error code.

character, intent(in) :: section_name

Section name.

character, intent(in) :: option_name

Option name.

class(*), intent(in) :: val

Option value.

private pure subroutine add_section(self, error, section_name)

Add a section.

Read more…

Arguments

TypeIntentOptionalAttributesName
class(file_ini), intent(inout) :: self

File data.

integer(kind=I4P), intent(out), optional :: error

Error code.

character, intent(in) :: section_name

Section name.

private elemental subroutine assign_file_ini(lhs, rhs)

Assignment between two INI files.

Arguments

TypeIntentOptionalAttributesName
class(file_ini), intent(inout) :: lhs

Left hand side.

type(file_ini), intent(in) :: rhs

Rigth hand side.

public subroutine file_ini_autotest()

Autotest the library functionalities.

Arguments

None

private elemental subroutine free(self)

Free dynamic memory.

Arguments

TypeIntentOptionalAttributesName
class(file_ini), intent(inout) :: self

File data.

private elemental subroutine free_option_of_section(self, section_name, option_name)

Free all options of a section.

Arguments

TypeIntentOptionalAttributesName
class(file_ini), intent(inout) :: self

File data.

character, intent(in) :: section_name

Section name.

character, intent(in) :: option_name

Option name.

private elemental subroutine free_options_all(self)

Free all options of all sections.

Arguments

TypeIntentOptionalAttributesName
class(file_ini), intent(inout) :: self

File data.

private elemental subroutine free_options_of_section(self, section_name)

Free all options of a section.

Arguments

TypeIntentOptionalAttributesName
class(file_ini), intent(inout) :: self

File data.

character, intent(in) :: section_name

Section name.

private elemental subroutine free_section(self, section_name)

Free all options of a section.

Arguments

TypeIntentOptionalAttributesName
class(file_ini), intent(inout) :: self

File data.

character, intent(in) :: section_name

Section name.

private subroutine get_a_option(self, section_name, option_name, val, delimiter, error)

Get option value (array)

Arguments

TypeIntentOptionalAttributesName
class(file_ini), intent(in) :: self

File data.

character, intent(in) :: section_name

Section name.

character, intent(in) :: option_name

Option name.

class(*), intent(inout) :: val(1:)

Value.

character, intent(in), optional :: delimiter

Delimiter used for separating values.

integer(kind=I4P), intent(out), optional :: error

Error code.

private pure subroutine get_items(self, items)

Get list of pairs option name/value.

Arguments

TypeIntentOptionalAttributesName
class(file_ini), intent(in) :: self

File data.

character(len=:), intent(out), allocatable:: items(:,:)

Items, list of pairs option name/value for all options [1:No,1:2].

private subroutine get_option(self, section_name, option_name, val, error)

Get option value (scalar).

Arguments

TypeIntentOptionalAttributesName
class(file_ini), intent(in) :: self

File data.

character, intent(in) :: section_name

Section name.

character, intent(in) :: option_name

Option name.

class(*), intent(inout) :: val

Value.

integer(kind=I4P), intent(out), optional :: error

Error code.

private pure subroutine get_sections_list(self, list)

Get sections names list.

Arguments

TypeIntentOptionalAttributesName
class(file_ini), intent(in) :: self

File data.

character(len=:), intent(out), allocatable:: list(:)

Sections names list.

private elemental subroutine initialize(self, filename)

Initialize file.

Arguments

TypeIntentOptionalAttributesName
class(file_ini), intent(inout) :: self

File data.

character, intent(in), optional :: filename

File name.

private subroutine load(self, separator, filename, source, error)

Get file data from a file or a source string.

Read more…

Arguments

TypeIntentOptionalAttributesName
class(file_ini), intent(inout) :: self

File data.

character(len=1), intent(in), optional :: separator

Separator of options name/value.

character, intent(in), optional :: filename

File name.

character, intent(in), optional :: source

File source contents.

integer(kind=I4P), intent(out), optional :: error

Error code.

private subroutine parse(self, source, error)

Parse file either from the self source data or from a source string.

Arguments

TypeIntentOptionalAttributesName
class(file_ini), intent(inout) :: self

File data.

type(string), intent(in) :: source

String source.

integer(kind=I4P), intent(out), optional :: error

Error code.

private subroutine print_file_ini(self, unit, pref, retain_comments, iostat, iomsg)

Print data with a pretty format.

Arguments

TypeIntentOptionalAttributesName
class(file_ini), intent(in) :: self

File data.

integer(kind=I4P), intent(in) :: unit

Logic unit.

character, intent(in), optional :: pref

Prefixing string.

logical, intent(in), optional :: retain_comments

Flag for retaining eventual comments.

integer(kind=I4P), intent(out), optional :: iostat

IO error.

character, intent(out), optional :: iomsg

IO error message.

private subroutine save_file_ini(self, retain_comments, iostat, iomsg, filename)

Save data.

Arguments

TypeIntentOptionalAttributesName
class(file_ini), intent(inout) :: self

File data.

logical, intent(in), optional :: retain_comments

Flag for retaining eventual comments.

integer(kind=I4P), intent(out), optional :: iostat

IO error.

character, intent(out), optional :: iomsg

IO error message.

character, intent(in), optional :: filename

File name.