module CStringUpdateVariables use CIntegerEventHandlerCollection implicit none integer :: StringUpdate = 0 public type(IntegerEventHandlerCollection) :: OnStringUpdateChange enum, bind(c) enumerator STRING_UPDATE_NEUTRAL enumerator STRING_UPDATE_ADD_SINGLE enumerator STRING_UPDATE_ADD_STAND enumerator STRING_UPDATE_REMOVE_SINGLE enumerator STRING_UPDATE_REMOVE_STAND end enum private :: StringUpdate contains subroutine Set_StringUpdate(v) implicit none integer , intent(in) :: v #ifdef ExcludeExtraChanges if(StringUpdate == v) return #endif StringUpdate = v #ifdef deb !if(StringUpdate==STRING_UPDATE_NEUTRAL) then ! print*, 'StringUpdate=STRING_UPDATE_NEUTRAL' !else if(StringUpdate==STRING_UPDATE_ADD_SINGLE) then ! print*, 'StringUpdate=STRING_UPDATE_ADD_SINGLE' !else if(StringUpdate==STRING_UPDATE_ADD_STAND) then ! print*, 'StringUpdate=STRING_UPDATE_ADD_STAND' !else if(StringUpdate==STRING_UPDATE_REMOVE_SINGLE) then ! print*, 'StringUpdate=STRING_UPDATE_REMOVE_SINGLE' !else if(StringUpdate==STRING_UPDATE_REMOVE_STAND) then ! print*, 'StringUpdate=STRING_UPDATE_REMOVE_STAND' !endif !print*, 'StringUpdate=', StringUpdate #endif call OnStringUpdateChange%RunAll(v) end subroutine integer function Get_StringUpdate() implicit none Get_StringUpdate = StringUpdate end function subroutine Set_StringUpdate_WN(v) !DEC$ ATTRIBUTES DLLEXPORT :: Set_StringUpdate_WN !DEC$ ATTRIBUTES ALIAS: 'Set_StringUpdate_WN' :: Set_StringUpdate_WN implicit none integer , intent(in) :: v call Set_StringUpdate(v) end subroutine integer function Get_StringUpdate_WN() !DEC$ ATTRIBUTES DLLEXPORT :: Get_StringUpdate_WN !DEC$ ATTRIBUTES ALIAS: 'Get_StringUpdate_WN' :: Get_StringUpdate_WN implicit none Get_StringUpdate_WN = StringUpdate end function end module CStringUpdateVariables