option Derived Type

type, public :: option

Option data of sections.


Inherits

type~~option~~InheritsGraph type~option option string string type~option->string oname, ovals, ocomm

Inherited by

type~~option~~InheritedByGraph type~option option type~section section type~section->type~option options type~file_ini file_ini type~file_ini->type~section sections

Contents

Source Code


Components

TypeVisibilityAttributesNameInitial
type(string), private :: ocomm

Eventual option inline comment.

type(string), private :: oname

Option name.

type(string), private :: ovals

Option values.


Constructor

public interface option

Overload option name with a function returning a new (initiliazed) option instance.

  • private elemental function new_option(option_name, option_values, option_comment)

    Return a new (initiliazed) option instance.

    Arguments

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

    Option name.

    character, intent(in), optional :: option_values

    Option values.

    character, intent(in), optional :: option_comment

    Option comment.

    Return Value type(option)

    New (initiliazed) option instance.


Type-Bound Procedures

procedure, private, pass(lhs) :: assign_option

Assignment overloading.

  • private elemental subroutine assign_option(lhs, rhs)

    Assignment between two options.

    Arguments

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

    Left hand side.

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

    Rigth hand side.

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

Assignment overloading.

  • private elemental subroutine assign_option(lhs, rhs)

    Assignment between two options.

    Arguments

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

    Left hand side.

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

    Rigth hand side.

procedure, public, pass(self) :: count_values

Counting option value(s).

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

    Get the number of values of option data.

    Arguments

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

    Option data.

    character, intent(in), optional :: delimiter

    Delimiter used for separating values.

    Return Value integer(kind=I4P)

    Number of values.

procedure, public, pass(self) :: free

Free dynamic memory.

  • private elemental subroutine free(self)

    Free dynamic memory.

    Arguments

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

    Option data.

generic, public :: get => get_option, get_a_option

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

  • private subroutine get_option(self, val, error)

    for getting option data value (scalar).

    Arguments

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

    Option data.

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

    Value.

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

    Error code.

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

    Get option data values (array).

    Arguments

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

    Option data.

    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.

procedure, private, pass(self) :: get_a_option

Get option value (array).

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

    Get option data values (array).

    Arguments

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

    Option data.

    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.

procedure, private, pass(self) :: get_option

Get option value (scalar).

  • private subroutine get_option(self, val, error)

    for getting option data value (scalar).

    Arguments

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

    Option data.

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

    Value.

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

    Error code.

procedure, public, pass(self) :: get_pairs

Return option name/values pairs.

  • private pure subroutine get_pairs(self, pairs)

    Return option name/values pairs.

    Arguments

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

    Option data.

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

    Option name/values pairs.

procedure, public, pass(self) :: name_len

Return option name length.

  • private elemental function name_len(self) result(length)

    Return option name length.

    Arguments

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

    Option data.

    Return Value integer

    Option name length.

generic, public :: operator(==) => option_eq_string, option_eq_character

Equal operator overloading.

  • private elemental function option_eq_string(lhs, rhs) result(is_it)

    Equal to string logical operator.

    Arguments

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

    Left hand side.

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

    Right hand side.

    Return Value logical

    Opreator test result.

  • private elemental function option_eq_character(lhs, rhs) result(is_it)

    Equal to character logical operator.

    Arguments

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

    Left hand side.

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

    Right hand side.

    Return Value logical

    Opreator test result.

procedure, private, pass(lhs) :: option_eq_character

Equal to character logical operator.

  • private elemental function option_eq_character(lhs, rhs) result(is_it)

    Equal to character logical operator.

    Arguments

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

    Left hand side.

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

    Right hand side.

    Return Value logical

    Opreator test result.

procedure, private, pass(lhs) :: option_eq_string

Equal to string logical operator.

  • private elemental function option_eq_string(lhs, rhs) result(is_it)

    Equal to string logical operator.

    Arguments

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

    Left hand side.

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

    Right hand side.

    Return Value logical

    Opreator test result.

procedure, public, pass(self) :: parse

Parse option data.

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

    Parse option data from a source string.

    Arguments

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

    Option data.

    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.

procedure, private, pass(self) :: parse_comment

Parse option inline comment.

  • private elemental subroutine parse_comment(self)

    Parse option inline comment trimming it out from pure value string.

    Arguments

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

    Option data.

procedure, private, pass(self) :: parse_name

Parse option name.

  • private elemental subroutine parse_name(self, sep, source, error)

    Parse option name from a source string.

    Arguments

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

    Option data.

    character, intent(in) :: sep

    Separator of option name/value.

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

    String containing option data.

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

    Error code.

procedure, private, pass(self) :: parse_value

Parse option values.

  • private elemental subroutine parse_value(self, sep, source, error)

    Parse option value from a source string.

    Arguments

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

    Option data.

    character, intent(in) :: sep

    Separator of option name/value.

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

    String containing option data.

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

    Error code.

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

Pretty print data.

  • private subroutine print_option(self, unit, retain_comments, pref, iostat, iomsg)

    Print data with a pretty format.

    Arguments

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

    Option 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.

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

Save data.

  • private subroutine save_option(self, unit, retain_comments, iostat, iomsg)

    Save data.

    Arguments

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

    Option 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.

generic, public :: set => set_option, set_a_option

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

  • private pure subroutine set_option(self, val)

    Set option data value (scalar).

    Arguments

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

    Option data.

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

    Value.

  • private pure subroutine set_a_option(self, val, delimiter)

    Set option data value (array).

    Arguments

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

    Option data.

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

    Value.

    character, intent(in), optional :: delimiter

    Delimiter used for separating values.

procedure, private, pass(self) :: set_a_option

Set option value (array).

  • private pure subroutine set_a_option(self, val, delimiter)

    Set option data value (array).

    Arguments

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

    Option data.

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

    Value.

    character, intent(in), optional :: delimiter

    Delimiter used for separating values.

procedure, private, pass(self) :: set_option

Set option value (scalar).

  • private pure subroutine set_option(self, val)

    Set option data value (scalar).

    Arguments

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

    Option data.

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

    Value.

procedure, public, pass(self) :: values_len

Return option values length.

  • private elemental function values_len(self) result(length)

    Return option values length.

    Arguments

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

    Option data.

    Return Value integer

    Option values length.

Source Code

type :: option
  !< Option data of sections.
  private
  type(string) :: oname !< Option name.
  type(string) :: ovals !< Option values.
  type(string) :: ocomm !< Eventual option inline comment.
  contains
    ! public methods
    procedure, pass(self) :: count_values          !< Counting option value(s).
    procedure, pass(self) :: free                  !< Free dynamic memory.
    generic               :: get => get_option, &  !< Get option value (scalar).
                                    get_a_option   !< Get option value (array).
    procedure, pass(self) :: get_pairs             !< Return option name/values pairs.
    procedure, pass(self) :: name_len              !< Return option name length.
    procedure, pass(self) :: parse                 !< Parse option data.
    procedure, pass(self) :: print => print_option !< Pretty print data.
    procedure, pass(self) :: save  => save_option  !< Save data.
    generic               :: set => set_option, &  !< Set option value (scalar).
                                    set_a_option   !< Set option value (array).
    procedure, pass(self) :: values_len            !< Return option values length.
    ! operators overloading
    generic :: assignment(=) => assign_option      !< Assignment overloading.
    generic :: operator(==) => option_eq_string, &
                               option_eq_character !< Equal operator overloading.
    ! private methods
    procedure, private, pass(self) :: get_option      !< Get option value (scalar).
    procedure, private, pass(self) :: get_a_option    !< Get option value (array).
    procedure, private, pass(self) :: parse_comment   !< Parse option inline comment.
    procedure, private, pass(self) :: parse_name      !< Parse option name.
    procedure, private, pass(self) :: parse_value     !< Parse option values.
    procedure, private, pass(self) :: set_option      !< Set option value (scalar).
    procedure, private, pass(self) :: set_a_option    !< Set option value (array).
    ! assignments
    procedure, private, pass(lhs) :: assign_option !< Assignment overloading.
    ! logical operators
    procedure, private, pass(lhs) :: option_eq_string    !< Equal to string logical operator.
    procedure, private, pass(lhs) :: option_eq_character !< Equal to character logical operator.
endtype option