|
- module CBoolEventHandler
- use CIActionReference
- implicit none
- public
-
- type :: BoolEventHandler
- procedure(ActionBool), pointer, nopass :: Delegate => null()
- contains
- procedure :: AssignTo => AssignTo
- procedure :: MakeNull => MakeNull
- procedure :: IsNull => IsNull
- procedure :: Run => Run
- end type BoolEventHandler
-
- contains
-
- subroutine AssignTo(this, proc)
- implicit none
- class(BoolEventHandler), intent(inout) :: this
- procedure (ActionBool), pointer, intent(in) :: proc
- this%Delegate => proc
- end subroutine
-
- subroutine MakeNull(this)
- implicit none
- class(BoolEventHandler), intent(inout) :: this
- this%Delegate => null()
- end subroutine
-
- logical function IsNull(this)
- implicit none
- class(BoolEventHandler), intent(in) :: this
- IsNull = .not.associated(this%Delegate)
- end function
-
- subroutine Run(this, arg)
- implicit none
- class(BoolEventHandler), intent(inout) :: this
- logical, intent(in) :: arg
- !if(.not.this%IsNull())
- call this%Delegate(arg)
- end subroutine
-
- end module CBoolEventHandler
|