File tree Expand file tree Collapse file tree 1 file changed +11
-4
lines changed Expand file tree Collapse file tree 1 file changed +11
-4
lines changed Original file line number Diff line number Diff line change @@ -220,21 +220,28 @@ internal struct _HandlerToken
220220
221221internal struct _Handlers < T> : SequenceType
222222{
223+ internal typealias KeyValue = ( key: Int , value: T )
224+
223225 private var currentKey : Int = 0
224- private var elements = [ Int : T ] ( )
226+ private var elements = [ KeyValue ] ( )
225227
226228 internal mutating func append( value: T ) -> _HandlerToken
227229 {
228230 self . currentKey = self . currentKey &+ 1
229231
230- self . elements [ self . currentKey] = value
232+ self . elements += [ ( key : self . currentKey, value : value) ]
231233
232234 return _HandlerToken ( key: self . currentKey)
233235 }
234236
235237 internal mutating func remove( token: _HandlerToken ) -> T ?
236238 {
237- return self . elements. removeValueForKey ( token. key)
239+ for var i = 0 ; i < self . elements. count; i++ {
240+ if self . elements [ i] . key == token. key {
241+ return self . elements. removeAtIndex ( i) . value
242+ }
243+ }
244+ return nil
238245 }
239246
240247 internal mutating func removeAll( keepCapacity: Bool = false )
@@ -244,6 +251,6 @@ internal struct _Handlers<T>: SequenceType
244251
245252 internal func generate( ) -> GeneratorOf < T >
246253 {
247- return GeneratorOf ( self . elements. values . generate ( ) )
254+ return GeneratorOf ( self . elements. map { $0 . value } . generate ( ) )
248255 }
249256}
You can’t perform that action at this time.
0 commit comments