linalg_state_type 派生类型

type, public :: linalg_state_type

linalg_state_type 定义了线性代数例程的状态返回类型。状态包含一个状态标志、一个注释和一个过程说明符,可用于标记错误发生的位置


组件

类型 可见性 属性 名称 初始值
character(len=MSG_LENGTH), public :: message = repeat(' ', MSG_LENGTH)

与当前状态关联的消息

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

当前退出状态

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

状态更改的位置


构造函数

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)

    错误创建消息,带位置信息

    创建无消息的状态

    添加位置

    参数

    类型 意图可选 属性 名称
    character(len=*), intent(in) :: where_at

    位置

    integer, intent(in) :: flag

    输入错误标志

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

    返回值 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)

    错误创建消息,来自 N 个输入变量(数值或字符串)

    设置错误标志

    设置链

    参数

    类型 意图可选 属性 名称
    integer, intent(in) :: flag

    输入错误标志

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

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

    可选的秩无关参数

    返回值 type(linalg_state_type)


类型绑定过程

procedure, public :: destroy => state_destroy

清理

  • private elemental subroutine state_destroy(this)

    清理对象

    参数

    类型 意图可选 属性 名称
    class(linalg_state_type), intent(inout) :: this

procedure, public :: error => state_is_error

  • private elemental function state_is_error(this)

    检查当前状态是否为错误状态

    参数

    类型 意图可选 属性 名称
    class(linalg_state_type), intent(in) :: this

    返回值 logical(kind=lk)

procedure, public :: ok => state_is_ok

状态属性

  • private elemental function state_is_ok(this)

    检查当前状态是否成功

    参数

    类型 意图可选 属性 名称
    class(linalg_state_type), intent(in) :: this

    返回值 logical(kind=lk)

procedure, public :: print => state_print

打印错误消息

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

    生成一个漂亮的错误字符串

    参数

    类型 意图可选 属性 名称
    class(linalg_state_type), intent(in) :: this

    返回值 character(len=:), allocatable

procedure, public :: print_msg => state_message

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

    格式化消息

    参数

    类型 意图可选 属性 名称
    class(linalg_state_type), intent(in) :: this

    返回值 character(len=:), allocatable

源代码

     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