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