Revert "Revert "Made use of ::= in core libraries and defined a RebindError condition...
[cslatevm.git] / src / lib / singleSet.slate
blob654d9459a33c07ac574ce94134bcc10f76e7c158
1 collections define: #SingleSet &parents: {NoDuplicatesCollection}
2   &slots: {#element -> Nil}.
3 "SingleSets are collections which are only supposed to contain exactly one
4 elements or be empty."
6 ss@(SingleSet traits) accepts: _@Nil
7 [False].
9 ss@(SingleSet traits) new
10 [ss clone `setting: #{#element} to: {Nil}].
12 ss@(SingleSet traits) do: block
14   block applyWith: ss element
17 ss@(SingleSet traits) reverseDo: block
19   block applyWith: ss element
22 ss@(SingleSet traits) isEmpty
24   ss element isNil
27 ss@(SingleSet traits) add: obj
29   ss element ifNil: [ss element := obj]
32 ss@(SingleSet traits) remove: obj
34   ss element = obj ifTrue: [ss element := Nil]