finer_section_t Module

Section class definition.


Uses

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

Used by

  • module~~finer_section_t~~UsedByGraph module~finer_section_t finer_section_t module~finer_file_ini_t finer_file_ini_t module~finer_file_ini_t->module~finer_section_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


Interfaces

public interface section

Overload section name with a function returning a new (itiliazed) section instance.

  • private elemental function new_section(section_name)

    Return a new (initiliazed) section instance.

    Arguments

    TypeIntentOptionalAttributesName
    character, intent(in), optional :: section_name

    Option name.

    Return Value type(section)

    New (initiliazed) section instance.


Derived Types

type, public :: section

Section data of file INI.

Components

TypeVisibilityAttributesNameInitial
type(option), private, allocatable:: options(:)

Section options.

character(len=:), private, allocatable:: sname

Section name.

Constructor

Overload section name with a function returning a new (itiliazed) section instance.

private elemental function new_section(section_name)

Return a new (initiliazed) section instance.

Type-Bound Procedures

generic, public :: add => add_option, add_a_option

Add an option (scalar). Add an option (array).

procedure, private, pass(self) :: add_a_option

Add an option (array).

procedure, private, pass(self) :: add_option

Add an option (scalar).

procedure, private, pass(lhs) :: assign_section

Assignment overloading.

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

Assignment overloading.

procedure, public, pass(self) :: count_values

Count option value(s).

procedure, public, pass(self) :: free

Free dynamic memory.

procedure, public, pass(self) :: free_option

Free a option.

procedure, public, pass(self) :: free_options

Free all options.

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, private, pass(self) :: get_option

Get option value (scalar).

procedure, public, pass(self) :: has_options

Inquire if section has options.

procedure, public, pass(self) :: index => index_option

Return the index of an option.

procedure, public, pass(self) :: loop

Loop over options.

procedure, public, pass(self) :: max_chars_len

Return max len of option-name/values on all options.

procedure, public, pass(self) :: name

Return section name.

generic, public :: operator(==) => section_eq_string, section_eq_character

Equal operator overloading.

procedure, public, pass(self) :: option_pairs

Return an option pairs.

procedure, public, pass(self) :: options_number

Return the options number.

procedure, public, pass(self) :: parse

Parse section data.

procedure, private, pass(self) :: parse_name

Get section name.

procedure, private, pass(self) :: parse_options

Get section options.

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

Pretty print data.

procedure, private, nopass :: sanitize_source

Sanitize source.

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

Save data.

procedure, private, pass(lhs) :: section_eq_character

Equal to character logical operator.

procedure, private, pass(lhs) :: section_eq_string

Equal to string logical operator.

generic, public :: set => set_option, set_a_option

Set option value (scalar). Set option value (array).

procedure, private, pass(self) :: set_a_option

Set option value (array).

procedure, private, pass(self) :: set_option

Set option value (scalar).


Functions

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

Get the number of values of option into section data.

Arguments

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

Section data.

character, intent(in) :: option_name

Option name.

character, intent(in), optional :: delimiter

Delimiter used for separating values.

Return Value integer(kind=I4P)

Number of values.

private elemental function has_options(self)

Inquire is section has options (at least one).

Arguments

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

Section data.

Return Value logical

Inquire result.

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

Return the index of the option matching the name passed.

Read more…

Arguments

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

Section data.

character, intent(in) :: option_name

Option name.

logical, intent(in), optional :: back

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

Return Value integer(kind=I4P)

Index of searched section.

private function loop(self, option_pairs) result(again)

Loop returning option name/value defined into section.

Arguments

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

Section data.

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

Couples option name/value [1:2].

Return Value logical

Flag continuing the loop.

private elemental function max_chars_len(self)

Return the maximum number of characters between option-name/option-values on all options.

Arguments

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

Section data.

Return Value integer(kind=I4P)

Inquire result.

private pure function name(self)

Return section name.

Arguments

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

Section data.

Return Value character(len=len)

Section data.

private elemental function new_section(section_name)

Return a new (initiliazed) section instance.

Arguments

TypeIntentOptionalAttributesName
character, intent(in), optional :: section_name

Option name.

Return Value type(section)

New (initiliazed) section instance.

private elemental function options_number(self)

Return the options number.

Arguments

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

Section data.

Return Value integer(kind=I4P)

Options number.

private elemental function section_eq_character(lhs, rhs) result(is_it)

Equal to character logical operator.

Arguments

TypeIntentOptionalAttributesName
class(section), intent(in) :: lhs

Left hand side.

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

Right hand side.

Return Value logical

Opreator test result.

private elemental function section_eq_string(lhs, rhs) result(is_it)

Equal to string logical operator.

Arguments

TypeIntentOptionalAttributesName
class(section), intent(in) :: lhs

Left hand side.

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

Right hand side.

Return Value logical

Opreator test result.


Subroutines

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

Add an option (with array value).

Read more…

Arguments

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

Section data.

character, intent(in) :: option_name

Option name.

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

Option value.

character, intent(in), optional :: delimiter

Delimiter used for separating values.

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

Error code.

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

Add an option (with scalar value).

Read more…

Arguments

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

Section data.

character, intent(in) :: option_name

Option name.

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

Option value.

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

Error code.

private elemental subroutine assign_section(lhs, rhs)

Assignment between two sections.

Arguments

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

Left hand side.

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

Rigth hand side.

private elemental subroutine free(self)

Free dynamic memory.

Arguments

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

Section data.

private elemental subroutine free_option(self, option_name)

Free an option.

Arguments

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

Section data.

character, intent(in) :: option_name

Option name.

private elemental subroutine free_options(self)

Free all options.

Arguments

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

Section data.

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

Procedure for getting option value (array).

Arguments

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

Section data.

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 subroutine get_option(self, option_name, val, error)

Get option value (scalar).

Arguments

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

Section data.

character, intent(in) :: option_name

Option name.

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

Value.

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

Error code.

private pure subroutine option_pairs(self, option_index, pairs)

Return an option pairs.

Arguments

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

Option data.

integer, intent(in) :: option_index

Option index.

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

Option name/values pairs.

private elemental subroutine parse(self, sep, source, error)

Gett section data from a source string.

Arguments

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

Section data.

character, intent(in) :: sep

Separator of option name/value.

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

String containing section data.

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

Error code.

private elemental subroutine parse_name(self, source, error)

Get section name from a source string.

Arguments

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

Section data.

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

String containing section data.

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

Error code.

private elemental subroutine parse_options(self, sep, source, error)

Get section options from a source string.

Arguments

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

Section data.

character, intent(in) :: sep

Separator of option name/value.

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

String containing section data.

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

Error code.

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

Print data with a pretty format.

Arguments

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

Section data.

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

Logic unit.

logical, intent(in) :: retain_comments

Flag for retaining eventual comments.

character, intent(in), optional :: pref

Prefixing string.

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

IO error.

character, intent(out), optional :: iomsg

IO error message.

private elemental subroutine sanitize_source(sep, source, error)

Sanitize source.

Read more…

Arguments

TypeIntentOptionalAttributesName
character, intent(in) :: sep

Separator of option name/value.

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

String containing option data.

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

Error code.

private subroutine save_section(self, unit, retain_comments, iostat, iomsg)

Save data.

Arguments

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

Section data.

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

Logic unit.

logical, intent(in) :: 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 pure subroutine set_a_option(self, option_name, val, delimiter, error)

Set option value (array).

Arguments

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

Section data.

character, intent(in) :: option_name

Option name.

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

Value.

character, intent(in), optional :: delimiter

Delimiter used for separating values.

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

Error code.

private pure subroutine set_option(self, option_name, val, error)

Set option value (scalar).

Arguments

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

Section data.

character, intent(in) :: option_name

Option name.

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

Value.

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

Error code.