module CIActionReference implicit none abstract interface subroutine ActionVoid() end subroutine subroutine ActionBool(i) logical, intent (in) :: i end subroutine subroutine ActionInteger(i) integer, intent (in) :: i end subroutine subroutine ActionIntegerArray(arr) integer, allocatable, intent (in) :: arr(:) end subroutine subroutine ActionReal(i) real, intent (in) :: i end subroutine subroutine ActionDouble(i) real(8), intent (in) :: i end subroutine subroutine ActionDualDouble(a, b) real(8), intent (in) :: a, b end subroutine subroutine ActionString(c) character(len=*), intent(in) :: c end subroutine subroutine ActionStringInt(c, i) character(len=*), intent(in) :: c integer, intent (in) :: i end subroutine subroutine ActionStringFloat(c, f) character(len=*), intent(in) :: c real, intent (in) :: f end subroutine subroutine ActionStringDouble(c, d) character(len=*), intent(in) :: c real(8), intent (in) :: d end subroutine subroutine ActionStringBool(c, b) character(len=*), intent(in) :: c logical, intent (in) :: b end subroutine end interface end module CIActionReference