module CElevatorEnumVariables use CVoidEventHandlerCollection implicit none integer :: Elevator = 0 public type(VoidEventHandlerCollection) :: OnElevatorChange enum, bind(c) enumerator ELEVATOR_NEUTRAL enumerator ELEVATOR_LATCH_STRING_BEGIN enumerator ELEVATOR_LATCH_STRING_END enumerator ELEVATOR_UNLATCH_STRING_BEGIN enumerator ELEVATOR_UNLATCH_STRING_END enumerator ELEVATOR_LATCH_STAND_BEGIN enumerator ELEVATOR_LATCH_STAND_END enumerator ELEVATOR_UNLATCH_STAND_BEGIN enumerator ELEVATOR_UNLATCH_STAND_END enumerator ELEVATOR_LATCH_SINGLE_BEGIN enumerator ELEVATOR_LATCH_SINGLE_END enumerator ELEVATOR_UNLATCH_SINGLE_BEGIN enumerator ELEVATOR_UNLATCH_SINGLE_END end enum private :: Elevator contains subroutine Set_Elevator(v) implicit none integer , intent(in) :: v #ifdef ExcludeExtraChanges if(Elevator == v) return #endif Elevator = v #ifdef deb print*, 'Elevator=', Elevator #endif call OnElevatorChange%RunAll() end subroutine integer function Get_Elevator() implicit none Get_Elevator = Elevator end function subroutine Set_Elevator_WN(v) !DEC$ ATTRIBUTES DLLEXPORT :: Set_Elevator_WN !DEC$ ATTRIBUTES ALIAS: 'Set_Elevator_WN' :: Set_Elevator_WN implicit none integer , intent(in) :: v call Set_Elevator(v) end subroutine integer function Get_Elevator_WN() !DEC$ ATTRIBUTES DLLEXPORT :: Get_Elevator_WN !DEC$ ATTRIBUTES ALIAS: 'Get_Elevator_WN' :: Get_Elevator_WN implicit none Get_Elevator_WN = Elevator end function subroutine ElevatorLatchStringEnd() !DEC$ ATTRIBUTES DLLEXPORT :: ElevatorLatchStringEnd !DEC$ ATTRIBUTES ALIAS: 'ElevatorLatchStringEnd' :: ElevatorLatchStringEnd implicit none #ifdef deb print*, 'ElevatorLatchStringEnd' #endif !if(Elevator /= ELEVATOR_LATCH_STRING_END) Elevator = ELEVATOR_LATCH_STRING_END call Set_Elevator(ELEVATOR_LATCH_STRING_END) end subroutine subroutine ElevatorUnLatchStringEnd() !DEC$ ATTRIBUTES DLLEXPORT :: ElevatorUnLatchStringEnd !DEC$ ATTRIBUTES ALIAS: 'ElevatorUnLatchStringEnd' :: ElevatorUnLatchStringEnd implicit none #ifdef deb print*, 'ElevatorUnLatchStringEnd' #endif !if(Elevator /= ELEVATOR_UNLATCH_STRING_END) Elevator = ELEVATOR_UNLATCH_STRING_END call Set_Elevator(ELEVATOR_UNLATCH_STRING_END) end subroutine subroutine ElevatorLatchStandEnd() !DEC$ ATTRIBUTES DLLEXPORT :: ElevatorLatchStandEnd !DEC$ ATTRIBUTES ALIAS: 'ElevatorLatchStandEnd' :: ElevatorLatchStandEnd !use CCommon, only: SetStandRack !use CStandRack implicit none #ifdef deb print*, 'ElevatorLatchStandEnd' #endif !if(Elevator /= ELEVATOR_LATCH_STAND_END) then ! Elevator = ELEVATOR_LATCH_STAND_END ! !call SetStandRack(Get_StandRack() - 1) !endif call Set_Elevator(ELEVATOR_LATCH_STAND_END) end subroutine subroutine ElevatorUnLatchStandEnd() !DEC$ ATTRIBUTES DLLEXPORT :: ElevatorUnLatchStandEnd !DEC$ ATTRIBUTES ALIAS: 'ElevatorUnLatchStandEnd' :: ElevatorUnLatchStandEnd !use CCommon, only: SetStandRack !use CStandRack implicit none #ifdef deb print*, 'ElevatorUnLatchStandEnd' #endif !if(Elevator /= ELEVATOR_UNLATCH_STAND_END) then ! Elevator = ELEVATOR_UNLATCH_STAND_END ! !call SetStandRack(Get_StandRack() + 1) !endif call Set_Elevator(ELEVATOR_UNLATCH_STAND_END) end subroutine subroutine ElevatorLatchSingleEnd() !DEC$ ATTRIBUTES DLLEXPORT :: ElevatorLatchSingleEnd !DEC$ ATTRIBUTES ALIAS: 'ElevatorLatchSingleEnd' :: ElevatorLatchSingleEnd implicit none #ifdef deb print*, 'ElevatorLatchSingleEnd' #endif !if(Elevator /= ELEVATOR_LATCH_SINGLE_END) Elevator = ELEVATOR_LATCH_SINGLE_END call Set_Elevator(ELEVATOR_LATCH_SINGLE_END) end subroutine subroutine ElevatorUnLatchSingleEnd() !DEC$ ATTRIBUTES DLLEXPORT :: ElevatorUnLatchSingleEnd !DEC$ ATTRIBUTES ALIAS: 'ElevatorUnLatchSingleEnd' :: ElevatorUnLatchSingleEnd implicit none #ifdef deb print*, 'ElevatorUnLatchSingleEnd' #endif !if(Elevator /= ELEVATOR_UNLATCH_SINGLE_END) Elevator = ELEVATOR_UNLATCH_SINGLE_END call Set_Elevator(ELEVATOR_UNLATCH_SINGLE_END) end subroutine logical function Get_EvelatorLatchString() !DEC$ ATTRIBUTES DLLEXPORT :: Get_EvelatorLatchString !DEC$ ATTRIBUTES ALIAS: 'Get_EvelatorLatchString' :: Get_EvelatorLatchString implicit none Get_EvelatorLatchString = .false. ! Elevator == ELEVATOR_LATCH_STRING end function logical function Get_EvelatorLatchStand() !DEC$ ATTRIBUTES DLLEXPORT :: Get_EvelatorLatchStand !DEC$ ATTRIBUTES ALIAS: 'Get_EvelatorLatchStand' :: Get_EvelatorLatchStand implicit none Get_EvelatorLatchStand = .false. ! Elevator == ELEVATOR_LATCH_STAND end function logical function Get_EvelatorLatchSingle() !DEC$ ATTRIBUTES DLLEXPORT :: Get_EvelatorLatchSingle !DEC$ ATTRIBUTES ALIAS: 'Get_EvelatorLatchSingle' :: Get_EvelatorLatchSingle implicit none Get_EvelatorLatchSingle = .false. ! Elevator == ELEVATOR_LATCH_SINGLE end function logical function Get_EvelatorUnlatchString() !DEC$ ATTRIBUTES DLLEXPORT :: Get_EvelatorUnlatchString !DEC$ ATTRIBUTES ALIAS: 'Get_EvelatorUnlatchString' :: Get_EvelatorUnlatchString implicit none Get_EvelatorUnlatchString = .false. ! Elevator == ELEVATOR_UNLATCH_STRING end function logical function Get_EvelatorUnlatchStand() !DEC$ ATTRIBUTES DLLEXPORT :: Get_EvelatorUnlatchStand !DEC$ ATTRIBUTES ALIAS: 'Get_EvelatorUnlatchStand' :: Get_EvelatorUnlatchStand implicit none Get_EvelatorUnlatchStand = .false. ! Elevator == ELEVATOR_UNLATCH_STAND end function logical function Get_EvelatorUnlatchSingle() !DEC$ ATTRIBUTES DLLEXPORT :: Get_EvelatorUnlatchSingle !DEC$ ATTRIBUTES ALIAS: 'Get_EvelatorUnlatchSingle' :: Get_EvelatorUnlatchSingle implicit none Get_EvelatorUnlatchSingle = .false. ! Elevator == ELEVATOR_UNLATCH_SINGLE end function end module CElevatorEnumVariables