You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ChannelStateMap.kt 795B

123456789101112131415161718192021222324
  1. package com.dmdirc.ktirc.model
  2. import com.dmdirc.ktirc.io.CaseMapping
  3. class ChannelStateMap(private val caseMappingProvider: () -> CaseMapping) : Iterable<ChannelState> {
  4. private val channels = HashSet<ChannelState>()
  5. operator fun get(name: String) = channels.find { caseMappingProvider().areEquivalent(it.name, name) }
  6. operator fun plusAssign(state: ChannelState) {
  7. require(get(state.name) == null) { "Channel state already registered: ${state.name}"}
  8. channels.add(state)
  9. }
  10. operator fun minusAssign(state: ChannelState) {
  11. channels.removeIf { caseMappingProvider().areEquivalent(it.name, state.name) }
  12. }
  13. operator fun contains(name: String) = get(name) != null
  14. override fun iterator() = channels.iterator()
  15. }