linalg_state_type Derived Type

type, public :: linalg_state_type

linalg_state_type defines a state return type for a linear algebra routine. State contains a status flag, a comment, and a procedure specifier that can be used to mark where the error happened


Components

Type Visibility Attributes Name Initial
character(len=MSG_LENGTH), public :: message = repeat(' ', MSG_LENGTH)

Message associated to the current state

integer(kind=ilp), public :: state = LINALG_SUCCESS

The current exit state

character(len=NAME_LENGTH), public :: where_at = repeat(' ', NAME_LENGTH)

Location of the state change


Constructor

public interface linalg_state_type

  • private pure function new_state(where_at, flag, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)

    Error creation message, with location location

    Create state with no message

    Add location

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: where_at

    Location

    integer, intent(in) :: flag

    Input error flag

    class(*), intent(in), optional, dimension(..) :: a1

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a2

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a3

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a4

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a5

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a6

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a7

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a8

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a9

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a10

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a11

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a12

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a13

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a14

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a15

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a16

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a17

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a18

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a19

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a20

    Optional rank-agnostic arguments

    Return Value type(linalg_state_type)

  • private pure function new_state_nowhere(flag, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) result(new_state)

    Error creation message, from N input variables (numeric or strings)

    Set error flag

    Set chain

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: flag

    Input error flag

    class(*), intent(in), optional, dimension(..) :: a1

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a2

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a3

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a4

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a5

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a6

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a7

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a8

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a9

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a10

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a11

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a12

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a13

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a14

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a15

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a16

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a17

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a18

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a19

    Optional rank-agnostic arguments

    class(*), intent(in), optional, dimension(..) :: a20

    Optional rank-agnostic arguments

    Return Value type(linalg_state_type)


Type-Bound Procedures

procedure, public :: destroy => state_destroy

Cleanup

  • private elemental subroutine state_destroy(this)

    Cleanup the object

    Arguments

    Type IntentOptional Attributes Name
    class(linalg_state_type), intent(inout) :: this

procedure, public :: error => state_is_error

  • private elemental function state_is_error(this)

    Check if the current state is an error state

    Arguments

    Type IntentOptional Attributes Name
    class(linalg_state_type), intent(in) :: this

    Return Value logical(kind=lk)

procedure, public :: ok => state_is_ok

State properties

  • private elemental function state_is_ok(this)

    Check if the current state is successful

    Arguments

    Type IntentOptional Attributes Name
    class(linalg_state_type), intent(in) :: this

    Return Value logical(kind=lk)

procedure, public :: print => state_print

Print error message

  • private pure function state_print(this) result(msg)

    Produce a nice error string

    Arguments

    Type IntentOptional Attributes Name
    class(linalg_state_type), intent(in) :: this

    Return Value character(len=:), allocatable

procedure, public :: print_msg => state_message

  • private pure function state_message(this) result(msg)

    Formatted message

    Arguments

    Type IntentOptional Attributes Name
    class(linalg_state_type), intent(in) :: this

    Return Value character(len=:), allocatable

Source Code

     type :: linalg_state_type

         !> The current exit state
         integer(ilp) :: state = LINALG_SUCCESS

         !> Message associated to the current state
         character(len=MSG_LENGTH) :: message = repeat(' ',MSG_LENGTH)

         !> Location of the state change
         character(len=NAME_LENGTH) :: where_at = repeat(' ',NAME_LENGTH)

         contains

            !> Cleanup
            procedure :: destroy   => state_destroy

            !> Print error message
            procedure :: print     => state_print
            procedure :: print_msg => state_message

            !> State properties
            procedure :: ok        => state_is_ok
            procedure :: error     => state_is_error

     end type linalg_state_type