Advertisement
Guest User

Mutable Set Impl

a guest
Jun 7th, 2021
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 1.13 KB | None | 0 0
  1. internal class SavableSet<T> (
  2.     private val setSource: MutableSet<T>,
  3.     private val saveAction: SavableSet<T>.() -> Unit
  4. ) : MutableSet<T> by setSource {
  5.     override fun add(element: T): Boolean = setSource.add(element).apply {
  6.         saveAction()
  7.     }
  8.  
  9.     override fun addAll(elements: Collection<T>): Boolean = setSource.addAll(elements).apply {
  10.         saveAction()
  11.     }
  12.  
  13.     override fun iterator(): MutableIterator<T> {
  14.         val iterator = setSource.iterator()
  15.  
  16.         return object : MutableIterator<T> by iterator {
  17.             override fun remove() {
  18.                 iterator.remove()
  19.                 saveAction()
  20.             }
  21.         }
  22.     }
  23.  
  24.     override fun clear() {
  25.         setSource.clear()
  26.         saveAction()
  27.     }
  28.  
  29.     override fun remove(element: T): Boolean = setSource.remove(element).apply {
  30.         saveAction()
  31.     }
  32.  
  33.     override fun removeAll(elements: Collection<T>): Boolean = setSource.removeAll(elements).apply {
  34.         saveAction()
  35.     }
  36.  
  37.     override fun retainAll(elements: Collection<T>): Boolean = setSource.retainAll(elements).apply {
  38.         saveAction()
  39.     }
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement