Last active
August 3, 2017 16:08
-
-
Save erica/aa303e92317b4213a09a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
7,9c7,9 | |
< infix operator % { | |
< associativity left | |
< precedence 150 | |
--- | |
> infix operator >= { | |
> associativity none | |
> precedence 130 | |
12c12,17 | |
< infix operator += { | |
--- | |
> infix operator != { | |
> associativity none | |
> precedence 130 | |
> } | |
> | |
> infix operator <<= { | |
18c23,28 | |
< infix operator -= { | |
--- | |
> infix operator || { | |
> associativity left | |
> precedence 110 | |
> } | |
> | |
> infix operator += { | |
24c34,44 | |
< infix operator ... { | |
--- | |
> infix operator / { | |
> associativity left | |
> precedence 150 | |
> } | |
> | |
> infix operator - { | |
> associativity left | |
> precedence 140 | |
> } | |
> | |
> infix operator << { | |
26c46 | |
< precedence 135 | |
--- | |
> precedence 160 | |
29c49 | |
< infix operator >>= { | |
--- | |
> infix operator |= { | |
35c55 | |
< infix operator /= { | |
--- | |
> infix operator >>= { | |
46,48c66,69 | |
< infix operator && { | |
< associativity left | |
< precedence 120 | |
--- | |
> infix operator -= { | |
> associativity right | |
> precedence 90 | |
> assignment | |
51,53c72,74 | |
< infix operator &* { | |
< associativity left | |
< precedence 150 | |
--- | |
> infix operator ?? { | |
> associativity right | |
> precedence 131 | |
56c77 | |
< infix operator << { | |
--- | |
> infix operator > { | |
58,63c79 | |
< precedence 160 | |
< } | |
< | |
< infix operator &+ { | |
< associativity left | |
< precedence 140 | |
--- | |
> precedence 130 | |
66c82 | |
< infix operator > { | |
--- | |
> infix operator ~= { | |
71c87 | |
< infix operator &- { | |
--- | |
> infix operator + { | |
76,78c92,94 | |
< infix operator === { | |
< associativity none | |
< precedence 130 | |
--- | |
> infix operator ^ { | |
> associativity left | |
> precedence 140 | |
81c97 | |
< infix operator ..< { | |
--- | |
> infix operator ... { | |
86,91c102 | |
< infix operator == { | |
< associativity none | |
< precedence 130 | |
< } | |
< | |
< infix operator ^= { | |
--- | |
> infix operator /= { | |
97,107c108 | |
< infix operator ?? { | |
< associativity right | |
< precedence 131 | |
< } | |
< | |
< infix operator ^ { | |
< associativity left | |
< precedence 140 | |
< } | |
< | |
< infix operator || { | |
--- | |
> infix operator * { | |
109c110 | |
< precedence 110 | |
--- | |
> precedence 150 | |
112c113 | |
< infix operator &= { | |
--- | |
> infix operator *= { | |
118c119,124 | |
< infix operator != { | |
--- | |
> infix operator & { | |
> associativity left | |
> precedence 150 | |
> } | |
> | |
> infix operator !== { | |
123,125c129,131 | |
< infix operator >> { | |
< associativity none | |
< precedence 160 | |
--- | |
> infix operator % { | |
> associativity left | |
> precedence 150 | |
128,131c134,136 | |
< infix operator |= { | |
< associativity right | |
< precedence 90 | |
< assignment | |
--- | |
> infix operator && { | |
> associativity left | |
> precedence 120 | |
134c139 | |
< infix operator & { | |
--- | |
> infix operator &* { | |
139c144 | |
< infix operator | { | |
--- | |
> infix operator &+ { | |
144c149 | |
< infix operator *= { | |
--- | |
> infix operator &= { | |
150c155 | |
< infix operator < { | |
--- | |
> infix operator >> { | |
152c157 | |
< precedence 130 | |
--- | |
> precedence 160 | |
155c160 | |
< infix operator * { | |
--- | |
> infix operator &- { | |
157c162 | |
< precedence 150 | |
--- | |
> precedence 140 | |
160c165 | |
< infix operator ~= { | |
--- | |
> infix operator === { | |
165,169d169 | |
< infix operator + { | |
< associativity left | |
< precedence 140 | |
< } | |
< | |
175c175 | |
< infix operator !== { | |
--- | |
> infix operator ..< { | |
177,182c177 | |
< precedence 130 | |
< } | |
< | |
< infix operator - { | |
< associativity left | |
< precedence 140 | |
--- | |
> precedence 135 | |
185,187c180,182 | |
< infix operator / { | |
< associativity left | |
< precedence 150 | |
--- | |
> infix operator < { | |
> associativity none | |
> precedence 130 | |
190c185 | |
< infix operator >= { | |
--- | |
> infix operator == { | |
195c190 | |
< infix operator <<= { | |
--- | |
> infix operator ^= { | |
201c196,198 | |
< prefix operator - { | |
--- | |
> infix operator | { | |
> associativity left | |
> precedence 140 | |
204c201 | |
< prefix operator + { | |
--- | |
> prefix operator ! { | |
207c204 | |
< prefix operator ++ { | |
--- | |
> prefix operator + { | |
210c207 | |
< prefix operator ! { | |
--- | |
> prefix operator ~ { | |
216c213,216 | |
< prefix operator ~ { | |
--- | |
> prefix operator - { | |
> } | |
> | |
> prefix operator ++ { | |
231a232,233 | |
> public func !=(lhs: Int32, rhs: Int32) -> Bool | |
> | |
233c235 | |
< public func !=<T>(lhs: T?, rhs: _OptionalNilComparisonType) -> Bool | |
--- | |
> public func !=<T : Equatable>(lhs: T, rhs: T) -> Bool | |
238a241 | |
> /// Returns true if the arrays do not contain the same elements. | |
240c243 | |
< public func !=<T : Equatable>(lhs: T, rhs: T) -> Bool | |
--- | |
> public func !=<Element : Equatable>(lhs: ArraySlice<Element>, rhs: ArraySlice<Element>) -> Bool | |
244a248 | |
> /// Returns true if the arrays do not contain the same elements. | |
246c250 | |
< public func !=<T : Equatable>(lhs: T?, rhs: T?) -> Bool | |
--- | |
> public func !=<Element : Equatable>(lhs: [Element], rhs: [Element]) -> Bool | |
247a252,253 | |
> /// Return `false` iff `t0` is identical to `t1`; i.e. if they are both | |
> /// `nil` or they both represent the same type. | |
249c255 | |
< public func !=<Key : Equatable, Value : Equatable>(lhs: [Key : Value], rhs: [Key : Value]) -> Bool | |
--- | |
> public func !=(t0: Any.Type?, t1: Any.Type?) -> Bool | |
250a257 | |
> /// Returns `true` iff `lhs.rawValue != rhs.rawValue`. | |
252c259 | |
< public func !=(lhs: Float80, rhs: Float80) -> Bool | |
--- | |
> public func !=<T : RawRepresentable where T.RawValue : Equatable>(lhs: T, rhs: T) -> Bool | |
253a261 | |
> /// Returns `true` iff `lhs.rawValue != rhs.rawValue`. | |
255c263,265 | |
< public func !=(lhs: Double, rhs: Double) -> Bool | |
--- | |
> public func !=<T : Equatable where T : RawRepresentable, T.RawValue : Equatable>(lhs: T, rhs: T) -> Bool | |
> | |
> public func !=(lhs: UInt8, rhs: UInt8) -> Bool | |
258c268 | |
< public func !=(lhs: Float, rhs: Float) -> Bool | |
--- | |
> public func !=<T>(lhs: T?, rhs: _OptionalNilComparisonType) -> Bool | |
260c270,271 | |
< public func !=(lhs: Int, rhs: Int) -> Bool | |
--- | |
> @warn_unused_result | |
> public func !=<T : Equatable>(lhs: T?, rhs: T?) -> Bool | |
262c273,274 | |
< public func !=(lhs: UInt, rhs: UInt) -> Bool | |
--- | |
> @warn_unused_result | |
> public func !=<Key : Equatable, Value : Equatable>(lhs: [Key : Value], rhs: [Key : Value]) -> Bool | |
264c276 | |
< public func !=(lhs: Int64, rhs: Int64) -> Bool | |
--- | |
> public func !=(lhs: Int8, rhs: Int8) -> Bool | |
266c278 | |
< public func !=(lhs: UInt64, rhs: UInt64) -> Bool | |
--- | |
> public func !=(lhs: UInt16, rhs: UInt16) -> Bool | |
268c280 | |
< public func !=(lhs: Int32, rhs: Int32) -> Bool | |
--- | |
> public func !=(lhs: Int16, rhs: Int16) -> Bool | |
272,274c284,285 | |
< public func !=(lhs: Int16, rhs: Int16) -> Bool | |
< | |
< public func !=(lhs: UInt16, rhs: UInt16) -> Bool | |
--- | |
> @warn_unused_result | |
> public func !=(lhs: Float80, rhs: Float80) -> Bool | |
276c287 | |
< public func !=(lhs: Int8, rhs: Int8) -> Bool | |
--- | |
> public func !=(lhs: UInt64, rhs: UInt64) -> Bool | |
278c289 | |
< public func !=(lhs: UInt8, rhs: UInt8) -> Bool | |
--- | |
> public func !=(lhs: Int64, rhs: Int64) -> Bool | |
280d290 | |
< /// Returns `true` iff `lhs.rawValue != rhs.rawValue`. | |
282c292 | |
< public func !=<T : Equatable where T : RawRepresentable, T.RawValue : Equatable>(lhs: T, rhs: T) -> Bool | |
--- | |
> public func !=(lhs: Double, rhs: Double) -> Bool | |
284d293 | |
< /// Returns `true` iff `lhs.rawValue != rhs.rawValue`. | |
286c295 | |
< public func !=<T : RawRepresentable where T.RawValue : Equatable>(lhs: T, rhs: T) -> Bool | |
--- | |
> public func !=(lhs: Float, rhs: Float) -> Bool | |
288,291c297 | |
< /// Return `false` iff `t0` is identical to `t1`; i.e. if they are both | |
< /// `nil` or they both represent the same type. | |
< @warn_unused_result | |
< public func !=(t0: Any.Type?, t1: Any.Type?) -> Bool | |
--- | |
> public func !=(lhs: Int, rhs: Int) -> Bool | |
293,295c299 | |
< /// Returns true if the arrays do not contain the same elements. | |
< @warn_unused_result | |
< public func !=<Element : Equatable>(lhs: [Element], rhs: [Element]) -> Bool | |
--- | |
> public func !=(lhs: UInt, rhs: UInt) -> Bool | |
297d300 | |
< /// Returns true if the arrays do not contain the same elements. | |
299c302 | |
< public func !=<Element : Equatable>(lhs: ArraySlice<Element>, rhs: ArraySlice<Element>) -> Bool | |
--- | |
> public func !==(lhs: AnyObject?, rhs: AnyObject?) -> Bool | |
305,307d307 | |
< @warn_unused_result | |
< public func !==(lhs: AnyObject?, rhs: AnyObject?) -> Bool | |
< | |
310,316c310,311 | |
< public func %(lhs: UInt8, rhs: UInt8) -> UInt8 | |
< | |
< public func %(lhs: Int8, rhs: Int8) -> Int8 | |
< | |
< public func %(lhs: UInt16, rhs: UInt16) -> UInt16 | |
< | |
< public func %(lhs: Int16, rhs: Int16) -> Int16 | |
--- | |
> @warn_unused_result | |
> public func %(lhs: Float, rhs: Float) -> Float | |
318c313,314 | |
< public func %(lhs: UInt32, rhs: UInt32) -> UInt32 | |
--- | |
> @warn_unused_result | |
> public func %(lhs: Double, rhs: Double) -> Double | |
320c316,317 | |
< public func %(lhs: Int32, rhs: Int32) -> Int32 | |
--- | |
> @warn_unused_result | |
> public func %(lhs: Float80, rhs: Float80) -> Float80 | |
322c319 | |
< public func %(lhs: UInt64, rhs: UInt64) -> UInt64 | |
--- | |
> public func %(lhs: UInt, rhs: UInt) -> UInt | |
331,332c328 | |
< @warn_unused_result | |
< public func %(lhs: Float80, rhs: Float80) -> Float80 | |
--- | |
> public func %(lhs: Int8, rhs: Int8) -> Int8 | |
334,335c330 | |
< @warn_unused_result | |
< public func %(lhs: Double, rhs: Double) -> Double | |
--- | |
> public func %(lhs: UInt64, rhs: UInt64) -> UInt64 | |
337c332 | |
< public func %(lhs: UInt, rhs: UInt) -> UInt | |
--- | |
> public func %(lhs: Int32, rhs: Int32) -> Int32 | |
339,340c334,340 | |
< @warn_unused_result | |
< public func %(lhs: Float, rhs: Float) -> Float | |
--- | |
> public func %(lhs: UInt32, rhs: UInt32) -> UInt32 | |
> | |
> public func %(lhs: Int16, rhs: Int16) -> Int16 | |
> | |
> public func %(lhs: UInt16, rhs: UInt16) -> UInt16 | |
> | |
> public func %(lhs: UInt8, rhs: UInt8) -> UInt8 | |
372,374d371 | |
< @warn_unused_result | |
< public func &&<T : BooleanType>(lhs: T, @autoclosure rhs: () throws -> Bool) rethrows -> Bool | |
< | |
379a377,379 | |
> @warn_unused_result | |
> public func &&<T : BooleanType>(lhs: T, @autoclosure rhs: () throws -> Bool) rethrows -> Bool | |
> | |
392c392,393 | |
< public func &=(inout lhs: UInt8, rhs: UInt8) | |
--- | |
> @warn_unused_result | |
> public func &=<T : BitwiseOperationsType>(inout lhs: T, rhs: T) | |
394c395 | |
< public func &=(inout lhs: Int8, rhs: Int8) | |
--- | |
> public func &=(inout lhs: Int, rhs: Int) | |
396c397 | |
< public func &=(inout lhs: UInt16, rhs: UInt16) | |
--- | |
> public func &=(inout lhs: UInt, rhs: UInt) | |
398c399 | |
< public func &=(inout lhs: Int16, rhs: Int16) | |
--- | |
> public func &=(inout lhs: Int64, rhs: Int64) | |
400c401 | |
< public func &=(inout lhs: UInt32, rhs: UInt32) | |
--- | |
> public func &=(inout lhs: UInt64, rhs: UInt64) | |
404c405 | |
< public func &=(inout lhs: UInt64, rhs: UInt64) | |
--- | |
> public func &=(inout lhs: UInt32, rhs: UInt32) | |
406c407 | |
< public func &=(inout lhs: Int64, rhs: Int64) | |
--- | |
> public func &=(inout lhs: Int16, rhs: Int16) | |
408c409 | |
< public func &=(inout lhs: UInt, rhs: UInt) | |
--- | |
> public func &=(inout lhs: UInt16, rhs: UInt16) | |
410c411 | |
< public func &=(inout lhs: Int, rhs: Int) | |
--- | |
> public func &=(inout lhs: Int8, rhs: Int8) | |
412,413c413 | |
< @warn_unused_result | |
< public func &=<T : BitwiseOperationsType>(inout lhs: T, rhs: T) | |
--- | |
> public func &=(inout lhs: UInt8, rhs: UInt8) | |
415c415,416 | |
< public func *(lhs: UInt8, rhs: UInt8) -> UInt8 | |
--- | |
> @warn_unused_result | |
> public func *(lhs: Float, rhs: Float) -> Float | |
428,429c429 | |
< @warn_unused_result | |
< public func *(lhs: Float, rhs: Float) -> Float | |
--- | |
> public func *(lhs: UInt8, rhs: UInt8) -> UInt8 | |
431c431 | |
< public func *(lhs: Int, rhs: Int) -> Int | |
--- | |
> public func *(lhs: Int8, rhs: Int8) -> Int8 | |
433c433 | |
< public func *(lhs: UInt, rhs: UInt) -> UInt | |
--- | |
> public func *(lhs: UInt16, rhs: UInt16) -> UInt16 | |
435c435 | |
< public func *(lhs: Int64, rhs: Int64) -> Int64 | |
--- | |
> public func *(lhs: Int16, rhs: Int16) -> Int16 | |
437c437 | |
< public func *(lhs: UInt64, rhs: UInt64) -> UInt64 | |
--- | |
> public func *(lhs: UInt32, rhs: UInt32) -> UInt32 | |
441c441 | |
< public func *(lhs: UInt32, rhs: UInt32) -> UInt32 | |
--- | |
> public func *(lhs: UInt64, rhs: UInt64) -> UInt64 | |
443c443 | |
< public func *(lhs: Int16, rhs: Int16) -> Int16 | |
--- | |
> public func *(lhs: Int, rhs: Int) -> Int | |
445c445 | |
< public func *(lhs: UInt16, rhs: UInt16) -> UInt16 | |
--- | |
> public func *(lhs: Int64, rhs: Int64) -> Int64 | |
447c447,449 | |
< public func *(lhs: Int8, rhs: Int8) -> Int8 | |
--- | |
> public func *(lhs: UInt, rhs: UInt) -> UInt | |
> | |
> public func *=(inout lhs: UInt8, rhs: UInt8) | |
459c461 | |
< public func *=(inout lhs: UInt8, rhs: UInt8) | |
--- | |
> public func *=(inout lhs: UInt64, rhs: UInt64) | |
477c479 | |
< public func *=(inout lhs: UInt64, rhs: UInt64) | |
--- | |
> public func +<T : UnsignedIntegerType>(lhs: T._DisallowMixedSignArithmetic, rhs: T) -> T | |
479,480c481 | |
< @warn_unused_result | |
< public func +<C : RangeReplaceableCollectionType, S : SequenceType where S.Generator.Element == C.Generator.Element>(lhs: C, rhs: S) -> C | |
--- | |
> public func +<T : UnsignedIntegerType>(lhs: T, rhs: T._DisallowMixedSignArithmetic) -> T | |
482c483 | |
< prefix public func +<T : SignedNumberType>(x: T) -> T | |
--- | |
> public func +(lhs: UInt8, rhs: UInt8) -> UInt8 | |
484,487c485 | |
< /// Add `lhs` and `rhs`, returning a result and trapping in case of | |
< /// arithmetic overflow (except in -Ounchecked builds). | |
< @warn_unused_result | |
< public func +<T : _IntegerArithmeticType>(lhs: T, rhs: T) -> T | |
--- | |
> public func +(lhs: Int8, rhs: Int8) -> Int8 | |
489,490c487,489 | |
< @warn_unused_result | |
< public func +(lhs: Float80, rhs: Float80) -> Float80 | |
--- | |
> public func +(lhs: UInt16, rhs: UInt16) -> UInt16 | |
> | |
> public func +(lhs: Int16, rhs: Int16) -> Int16 | |
494,495c493 | |
< @warn_unused_result | |
< prefix public func +(x: Float80) -> Float80 | |
--- | |
> public func +(lhs: Int32, rhs: Int32) -> Int32 | |
497,498c495 | |
< @warn_unused_result | |
< public func +(lhs: Double, rhs: Double) -> Double | |
--- | |
> public func +(lhs: UInt64, rhs: UInt64) -> UInt64 | |
500c497 | |
< public func +(lhs: UInt16, rhs: UInt16) -> UInt16 | |
--- | |
> public func +(lhs: Int64, rhs: Int64) -> Int64 | |
502c499,501 | |
< public func +(lhs: Int16, rhs: Int16) -> Int16 | |
--- | |
> public func +(lhs: UInt, rhs: UInt) -> UInt | |
> | |
> public func +(lhs: Int, rhs: Int) -> Int | |
505c504 | |
< prefix public func +(x: Double) -> Double | |
--- | |
> prefix public func +(x: Float) -> Float | |
510,515d508 | |
< public func +(lhs: Int8, rhs: Int8) -> Int8 | |
< | |
< public func +(lhs: Int32, rhs: Int32) -> Int32 | |
< | |
< public func +(lhs: UInt8, rhs: UInt8) -> UInt8 | |
< | |
517c510 | |
< public func +<Memory>(lhs: Int, rhs: UnsafePointer<Memory>) -> UnsafePointer<Memory> | |
--- | |
> prefix public func +(x: Double) -> Double | |
520,524c513 | |
< public func +<Memory>(lhs: UnsafePointer<Memory>, rhs: Int) -> UnsafePointer<Memory> | |
< | |
< public func +(lhs: UInt64, rhs: UInt64) -> UInt64 | |
< | |
< public func +(lhs: Int64, rhs: Int64) -> Int64 | |
--- | |
> public func +(lhs: Double, rhs: Double) -> Double | |
527c516 | |
< public func +<Memory>(lhs: Int, rhs: UnsafeMutablePointer<Memory>) -> UnsafeMutablePointer<Memory> | |
--- | |
> prefix public func +(x: Float80) -> Float80 | |
530c519 | |
< public func +<Memory>(lhs: UnsafeMutablePointer<Memory>, rhs: Int) -> UnsafeMutablePointer<Memory> | |
--- | |
> public func +(lhs: Float80, rhs: Float80) -> Float80 | |
531a521,522 | |
> /// Add `lhs` and `rhs`, returning a result and trapping in case of | |
> /// arithmetic overflow (except in -Ounchecked builds). | |
533c524 | |
< prefix public func +(x: Float) -> Float | |
--- | |
> public func +<T : _IntegerArithmeticType>(lhs: T, rhs: T) -> T | |
535c526 | |
< public func +(lhs: Int, rhs: Int) -> Int | |
--- | |
> prefix public func +<T : SignedNumberType>(x: T) -> T | |
540c531,532 | |
< public func +<T : UnsignedIntegerType>(lhs: T._DisallowMixedSignArithmetic, rhs: T) -> T | |
--- | |
> @warn_unused_result | |
> public func +<Memory>(lhs: UnsafeMutablePointer<Memory>, rhs: Int) -> UnsafeMutablePointer<Memory> | |
542c534,535 | |
< public func +<T : UnsignedIntegerType>(lhs: T, rhs: T._DisallowMixedSignArithmetic) -> T | |
--- | |
> @warn_unused_result | |
> public func +<Memory>(lhs: Int, rhs: UnsafeMutablePointer<Memory>) -> UnsafeMutablePointer<Memory> | |
556c549,550 | |
< public func +(lhs: UInt, rhs: UInt) -> UInt | |
--- | |
> @warn_unused_result | |
> public func +<Memory>(lhs: UnsafePointer<Memory>, rhs: Int) -> UnsafePointer<Memory> | |
561,577c555,556 | |
< postfix public func ++(inout lhs: Double) -> Double | |
< | |
< prefix public func ++(inout rhs: Float80) -> Float80 | |
< | |
< postfix public func ++(inout lhs: Float80) -> Float80 | |
< | |
< /// Replace `i` with its `successor()` and return the updated value of | |
< /// `i`. | |
< prefix public func ++<T : _Incrementable>(inout i: T) -> T | |
< | |
< /// Replace `i` with its `successor()` and return the original | |
< /// value of `i`. | |
< postfix public func ++<T : _Incrementable>(inout i: T) -> T | |
< | |
< prefix public func ++(inout rhs: Double) -> Double | |
< | |
< postfix public func ++(inout lhs: Float) -> Float | |
--- | |
> @warn_unused_result | |
> public func +<C : RangeReplaceableCollectionType, S : SequenceType where S.Generator.Element == C.Generator.Element>(lhs: C, rhs: S) -> C | |
579c558,559 | |
< prefix public func ++(inout rhs: Float) -> Float | |
--- | |
> @warn_unused_result | |
> public func +<Memory>(lhs: Int, rhs: UnsafePointer<Memory>) -> UnsafePointer<Memory> | |
605,608d584 | |
< postfix public func ++(inout x: UInt8) -> UInt8 | |
< | |
< prefix public func ++(inout x: UInt8) -> UInt8 | |
< | |
614a591,592 | |
> prefix public func ++(inout x: UInt16) -> UInt16 | |
> | |
619c597 | |
< prefix public func ++(inout x: UInt16) -> UInt16 | |
--- | |
> postfix public func ++(inout x: UInt8) -> UInt8 | |
621c599 | |
< public func +=(inout lhs: UInt32, rhs: UInt32) | |
--- | |
> prefix public func ++(inout x: UInt8) -> UInt8 | |
623c601 | |
< public func +=<Memory>(inout lhs: UnsafePointer<Memory>, rhs: Int) | |
--- | |
> postfix public func ++(inout lhs: Double) -> Double | |
625c603 | |
< public func +=(inout lhs: Int16, rhs: Int16) | |
--- | |
> postfix public func ++(inout lhs: Float) -> Float | |
627c605 | |
< public func +=(inout lhs: UInt16, rhs: UInt16) | |
--- | |
> prefix public func ++(inout rhs: Double) -> Double | |
629c607 | |
< public func +=(inout lhs: Int8, rhs: Int8) | |
--- | |
> prefix public func ++(inout rhs: Float80) -> Float80 | |
631c609 | |
< public func +=(inout lhs: UInt8, rhs: UInt8) | |
--- | |
> postfix public func ++(inout lhs: Float80) -> Float80 | |
633,634c611,613 | |
< /// Append the elements of `rhs` to `lhs`. | |
< public func +=<Element, C : CollectionType where C.Generator.Element == Element>(inout lhs: _ContiguousArrayBuffer<Element>, rhs: C) | |
--- | |
> /// Replace `i` with its `successor()` and return the updated value of | |
> /// `i`. | |
> prefix public func ++<T : _Incrementable>(inout i: T) -> T | |
636,637c615,617 | |
< /// Extend `lhs` with the elements of `rhs`. | |
< public func +=<Element, C : CollectionType where C.Generator.Element == Element>(inout lhs: [Element], rhs: C) | |
--- | |
> /// Replace `i` with its `successor()` and return the original | |
> /// value of `i`. | |
> postfix public func ++<T : _Incrementable>(inout i: T) -> T | |
639,640c619 | |
< /// Extend `lhs` with the elements of `rhs`. | |
< public func +=<Element, S : SequenceType where S.Generator.Element == Element>(inout lhs: [Element], rhs: S) | |
--- | |
> prefix public func ++(inout rhs: Float) -> Float | |
642,643c621 | |
< /// Extend `lhs` with the elements of `rhs`. | |
< public func +=<Element, C : CollectionType where C.Generator.Element == Element>(inout lhs: ArraySlice<Element>, rhs: C) | |
--- | |
> public func +=<T : Strideable>(inout lhs: T, rhs: T.Stride) | |
645,646c623,625 | |
< /// Extend `lhs` with the elements of `rhs`. | |
< public func +=<Element, S : SequenceType where S.Generator.Element == Element>(inout lhs: ArraySlice<Element>, rhs: S) | |
--- | |
> /// add `lhs` and `rhs` and store the result in `lhs`, trapping in | |
> /// case of arithmetic overflow (except in -Ounchecked builds). | |
> public func +=<T : _IntegerArithmeticType>(inout lhs: T, rhs: T) | |
648,649c627 | |
< /// Extend `lhs` with the elements of `rhs`. | |
< public func +=<Element, C : CollectionType where C.Generator.Element == Element>(inout lhs: ContiguousArray<Element>, rhs: C) | |
--- | |
> public func +=(inout lhs: Float80, rhs: Float80) | |
651,652c629 | |
< /// Extend `lhs` with the elements of `rhs`. | |
< public func +=<Element, S : SequenceType where S.Generator.Element == Element>(inout lhs: ContiguousArray<Element>, rhs: S) | |
--- | |
> public func +=<Memory>(inout lhs: UnsafePointer<Memory>, rhs: Int) | |
654c631 | |
< public func +=(inout lhs: Int32, rhs: Int32) | |
--- | |
> public func +=(inout lhs: Double, rhs: Double) | |
656c633 | |
< public func +=(inout lhs: UInt64, rhs: UInt64) | |
--- | |
> public func +=<Memory>(inout lhs: UnsafeMutablePointer<Memory>, rhs: Int) | |
658c635,637 | |
< public func +=(inout lhs: Int64, rhs: Int64) | |
--- | |
> public func +=(inout lhs: Float, rhs: Float) | |
> | |
> public func +=(inout lhs: Int, rhs: Int) | |
662c641 | |
< public func +=(inout lhs: Int, rhs: Int) | |
--- | |
> public func +=(inout lhs: Int64, rhs: Int64) | |
664c643 | |
< public func +=(inout lhs: Float, rhs: Float) | |
--- | |
> public func +=(inout lhs: UInt64, rhs: UInt64) | |
666c645 | |
< public func +=(inout lhs: Double, rhs: Double) | |
--- | |
> public func +=(inout lhs: Int32, rhs: Int32) | |
668c647 | |
< public func +=(inout lhs: Float80, rhs: Float80) | |
--- | |
> public func +=(inout lhs: UInt32, rhs: UInt32) | |
670,672c649 | |
< /// add `lhs` and `rhs` and store the result in `lhs`, trapping in | |
< /// case of arithmetic overflow (except in -Ounchecked builds). | |
< public func +=<T : _IntegerArithmeticType>(inout lhs: T, rhs: T) | |
--- | |
> public func +=(inout lhs: Int16, rhs: Int16) | |
674c651 | |
< public func +=<T : Strideable>(inout lhs: T, rhs: T.Stride) | |
--- | |
> public func +=(inout lhs: UInt16, rhs: UInt16) | |
676c653 | |
< public func +=<T : UnsignedIntegerType>(inout lhs: T, rhs: T._DisallowMixedSignArithmetic) | |
--- | |
> public func +=(inout lhs: Int8, rhs: Int8) | |
678c655,670 | |
< public func +=(inout lhs: String, rhs: String) | |
--- | |
> public func +=(inout lhs: UInt8, rhs: UInt8) | |
> | |
> /// Append the elements of `rhs` to `lhs`. | |
> public func +=<Element, C : CollectionType where C.Generator.Element == Element>(inout lhs: _ContiguousArrayBuffer<Element>, rhs: C) | |
> | |
> /// Extend `lhs` with the elements of `rhs`. | |
> public func +=<Element, C : CollectionType where C.Generator.Element == Element>(inout lhs: [Element], rhs: C) | |
> | |
> /// Extend `lhs` with the elements of `rhs`. | |
> public func +=<Element, S : SequenceType where S.Generator.Element == Element>(inout lhs: [Element], rhs: S) | |
> | |
> /// Extend `lhs` with the elements of `rhs`. | |
> public func +=<Element, C : CollectionType where C.Generator.Element == Element>(inout lhs: ArraySlice<Element>, rhs: C) | |
> | |
> /// Extend `lhs` with the elements of `rhs`. | |
> public func +=<Element, S : SequenceType where S.Generator.Element == Element>(inout lhs: ArraySlice<Element>, rhs: S) | |
680c672,673 | |
< public func +=<Memory>(inout lhs: UnsafeMutablePointer<Memory>, rhs: Int) | |
--- | |
> /// Extend `lhs` with the elements of `rhs`. | |
> public func +=<Element, C : CollectionType where C.Generator.Element == Element>(inout lhs: ContiguousArray<Element>, rhs: C) | |
682c675,676 | |
< public func -(lhs: UInt8, rhs: UInt8) -> UInt8 | |
--- | |
> /// Extend `lhs` with the elements of `rhs`. | |
> public func +=<Element, S : SequenceType where S.Generator.Element == Element>(inout lhs: ContiguousArray<Element>, rhs: S) | |
684,685c678 | |
< @warn_unused_result | |
< public func -<Memory>(lhs: UnsafeMutablePointer<Memory>, rhs: Int) -> UnsafeMutablePointer<Memory> | |
--- | |
> public func +=<T : UnsignedIntegerType>(inout lhs: T, rhs: T._DisallowMixedSignArithmetic) | |
687,688c680 | |
< @warn_unused_result | |
< public func -<Memory>(lhs: UnsafePointer<Memory>, rhs: UnsafePointer<Memory>) -> Int | |
--- | |
> public func +=(inout lhs: String, rhs: String) | |
692,693c684 | |
< @warn_unused_result | |
< public func -<Memory>(lhs: UnsafePointer<Memory>, rhs: Int) -> UnsafePointer<Memory> | |
--- | |
> public func -(lhs: UInt8, rhs: UInt8) -> UInt8 | |
738a730,731 | |
> public func -<T : _DisallowMixedSignArithmetic>(lhs: T, rhs: T) -> T._DisallowMixedSignArithmetic | |
> | |
744a738,746 | |
> public func -<Memory>(lhs: UnsafeMutablePointer<Memory>, rhs: Int) -> UnsafeMutablePointer<Memory> | |
> | |
> @warn_unused_result | |
> public func -<Memory>(lhs: UnsafePointer<Memory>, rhs: UnsafePointer<Memory>) -> Int | |
> | |
> @warn_unused_result | |
> public func -<Memory>(lhs: UnsafePointer<Memory>, rhs: Int) -> UnsafePointer<Memory> | |
> | |
> @warn_unused_result | |
747c749 | |
< public func -<T : _DisallowMixedSignArithmetic>(lhs: T, rhs: T) -> T._DisallowMixedSignArithmetic | |
--- | |
> postfix public func --(inout x: UInt32) -> UInt32 | |
749c751 | |
< prefix public func --(inout x: UInt16) -> UInt16 | |
--- | |
> prefix public func --(inout x: Int) -> Int | |
753c755,767 | |
< postfix public func --(inout x: Int8) -> Int8 | |
--- | |
> postfix public func --(inout x: UInt8) -> UInt8 | |
> | |
> /// Replace `i` with its `predecessor()` and return the original | |
> /// value of `i`. | |
> postfix public func --<T : BidirectionalIndexType>(inout i: T) -> T | |
> | |
> /// Replace `i` with its `predecessor()` and return the updated value | |
> /// of `i`. | |
> prefix public func --<T : BidirectionalIndexType>(inout i: T) -> T | |
> | |
> postfix public func --(inout lhs: Float80) -> Float80 | |
> | |
> prefix public func --(inout rhs: Float80) -> Float80 | |
757c771,777 | |
< postfix public func --(inout x: UInt8) -> UInt8 | |
--- | |
> postfix public func --(inout x: Int8) -> Int8 | |
> | |
> prefix public func --(inout x: UInt16) -> UInt16 | |
> | |
> postfix public func --(inout lhs: Double) -> Double | |
> | |
> prefix public func --(inout rhs: Double) -> Double | |
767c787 | |
< postfix public func --(inout x: UInt32) -> UInt32 | |
--- | |
> postfix public func --(inout lhs: Float) -> Float | |
770a791,792 | |
> prefix public func --(inout rhs: Float) -> Float | |
> | |
776a799,800 | |
> postfix public func --(inout x: Int) -> Int | |
> | |
785,807c809 | |
< prefix public func --(inout x: Int) -> Int | |
< | |
< postfix public func --(inout x: Int) -> Int | |
< | |
< prefix public func --(inout rhs: Float) -> Float | |
< | |
< postfix public func --(inout lhs: Float) -> Float | |
< | |
< prefix public func --(inout rhs: Double) -> Double | |
< | |
< postfix public func --(inout lhs: Double) -> Double | |
< | |
< prefix public func --(inout rhs: Float80) -> Float80 | |
< | |
< postfix public func --(inout lhs: Float80) -> Float80 | |
< | |
< /// Replace `i` with its `predecessor()` and return the updated value | |
< /// of `i`. | |
< prefix public func --<T : BidirectionalIndexType>(inout i: T) -> T | |
< | |
< /// Replace `i` with its `predecessor()` and return the original | |
< /// value of `i`. | |
< postfix public func --<T : BidirectionalIndexType>(inout i: T) -> T | |
--- | |
> public func -=(inout lhs: Float, rhs: Float) | |
811c813 | |
< public func -=(inout lhs: Float, rhs: Float) | |
--- | |
> public func -=(inout lhs: UInt16, rhs: UInt16) | |
817c819 | |
< public func -=(inout lhs: UInt32, rhs: UInt32) | |
--- | |
> public func -=(inout lhs: UInt, rhs: UInt) | |
819c821 | |
< public func -=(inout lhs: Int32, rhs: Int32) | |
--- | |
> public func -=(inout lhs: Int64, rhs: Int64) | |
823c825,827 | |
< public func -=(inout lhs: Int64, rhs: Int64) | |
--- | |
> /// subtract `lhs` and `rhs` and store the result in `lhs`, trapping in | |
> /// case of arithmetic overflow (except in -Ounchecked builds). | |
> public func -=<T : _IntegerArithmeticType>(inout lhs: T, rhs: T) | |
825c829 | |
< public func -=(inout lhs: UInt, rhs: UInt) | |
--- | |
> public func -=(inout lhs: Int32, rhs: Int32) | |
827c831 | |
< public func -=<Memory>(inout lhs: UnsafePointer<Memory>, rhs: Int) | |
--- | |
> public func -=(inout lhs: UInt32, rhs: UInt32) | |
829c833 | |
< public func -=<Memory>(inout lhs: UnsafeMutablePointer<Memory>, rhs: Int) | |
--- | |
> public func -=<T : Strideable>(inout lhs: T, rhs: T.Stride) | |
833,835c837 | |
< public func -=<T : Strideable>(inout lhs: T, rhs: T.Stride) | |
< | |
< public func -=(inout lhs: Int16, rhs: Int16) | |
--- | |
> public func -=<Memory>(inout lhs: UnsafeMutablePointer<Memory>, rhs: Int) | |
837,839c839 | |
< /// subtract `lhs` and `rhs` and store the result in `lhs`, trapping in | |
< /// case of arithmetic overflow (except in -Ounchecked builds). | |
< public func -=<T : _IntegerArithmeticType>(inout lhs: T, rhs: T) | |
--- | |
> public func -=<Memory>(inout lhs: UnsafePointer<Memory>, rhs: Int) | |
845c845 | |
< public func -=(inout lhs: UInt16, rhs: UInt16) | |
--- | |
> public func -=(inout lhs: Int16, rhs: Int16) | |
847c847,848 | |
< /// Returns a closed interval from `start` through `end`. | |
--- | |
> /// Forms a closed range that contains both `start` and `end`. | |
> /// - Requires: `start <= end`. | |
849c850 | |
< public func ...<Bound : Comparable>(start: Bound, end: Bound) -> ClosedInterval<Bound> | |
--- | |
> public func ...<Pos : ForwardIndexType where Pos : Comparable>(start: Pos, end: Pos) -> Range<Pos> | |
855,856c856 | |
< /// Forms a closed range that contains both `start` and `end`. | |
< /// - Requires: `start <= end`. | |
--- | |
> /// Returns a closed interval from `start` through `end`. | |
858c858 | |
< public func ...<Pos : ForwardIndexType where Pos : Comparable>(start: Pos, end: Pos) -> Range<Pos> | |
--- | |
> public func ...<Bound : Comparable>(start: Bound, end: Bound) -> ClosedInterval<Bound> | |
860c860,862 | |
< /// Returns a half-open interval from `start` to `end`. | |
--- | |
> /// Forms a half-open range that contains `start`, but not `end`. | |
> /// | |
> /// - Requires: `start <= end`. | |
862c864 | |
< public func ..<<Bound : Comparable>(start: Bound, end: Bound) -> HalfOpenInterval<Bound> | |
--- | |
> public func ..<<Pos : ForwardIndexType where Pos : Comparable>(start: Pos, end: Pos) -> Range<Pos> | |
869,871c871 | |
< /// Forms a half-open range that contains `start`, but not `end`. | |
< /// | |
< /// - Requires: `start <= end`. | |
--- | |
> /// Returns a half-open interval from `start` to `end`. | |
873c873 | |
< public func ..<<Pos : ForwardIndexType where Pos : Comparable>(start: Pos, end: Pos) -> Range<Pos> | |
--- | |
> public func ..<<Bound : Comparable>(start: Bound, end: Bound) -> HalfOpenInterval<Bound> | |
909,913c909 | |
< /// divide `lhs` and `rhs` and store the result in `lhs`, trapping in | |
< /// case of arithmetic overflow (except in -Ounchecked builds). | |
< public func /=<T : _IntegerArithmeticType>(inout lhs: T, rhs: T) | |
< | |
< public func /=(inout lhs: Float80, rhs: Float80) | |
--- | |
> public func /=(inout lhs: Float, rhs: Float) | |
917c913,917 | |
< public func /=(inout lhs: Float, rhs: Float) | |
--- | |
> public func /=(inout lhs: Float80, rhs: Float80) | |
> | |
> /// divide `lhs` and `rhs` and store the result in `lhs`, trapping in | |
> /// case of arithmetic overflow (except in -Ounchecked builds). | |
> public func /=<T : _IntegerArithmeticType>(inout lhs: T, rhs: T) | |
920c920 | |
< public func <(lhs: Float80, rhs: Float80) -> Bool | |
--- | |
> public func <<Element : Hashable>(lhs: SetIndex<Element>, rhs: SetIndex<Element>) -> Bool | |
923c923 | |
< public func <<Memory>(lhs: UnsafePointer<Memory>, rhs: UnsafePointer<Memory>) -> Bool | |
--- | |
> public func <(lhs: Bit, rhs: Bit) -> Bool | |
926c926 | |
< public func <(lhs: ObjectIdentifier, rhs: ObjectIdentifier) -> Bool | |
--- | |
> public func <<Memory>(lhs: UnsafePointer<Memory>, rhs: UnsafePointer<Memory>) -> Bool | |
935,937d934 | |
< public func <(lhs: Bit, rhs: Bit) -> Bool | |
< | |
< @warn_unused_result | |
947,949d943 | |
< public func <(lhs: Character, rhs: Character) -> Bool | |
< | |
< @warn_unused_result | |
953c947 | |
< public func <<T : Strideable>(x: T, y: T) -> Bool | |
--- | |
> public func <<T : _Strideable>(x: T, y: T) -> Bool | |
956c950 | |
< public func <<T : Comparable>(lhs: T?, rhs: T?) -> Bool | |
--- | |
> public func <(lhs: Character, rhs: Character) -> Bool | |
958,959c952 | |
< @warn_unused_result | |
< public func <<Key : Hashable, Value>(lhs: DictionaryIndex<Key, Value>, rhs: DictionaryIndex<Key, Value>) -> Bool | |
--- | |
> public func <(lhs: UInt8, rhs: UInt8) -> Bool | |
961,962c954 | |
< @warn_unused_result | |
< public func <<Element : Hashable>(lhs: SetIndex<Element>, rhs: SetIndex<Element>) -> Bool | |
--- | |
> public func <(lhs: Int8, rhs: Int8) -> Bool | |
964,965c956 | |
< @warn_unused_result | |
< public func <(lhs: Double, rhs: Double) -> Bool | |
--- | |
> public func <(lhs: UInt16, rhs: UInt16) -> Bool | |
968c959 | |
< public func <(lhs: Float, rhs: Float) -> Bool | |
--- | |
> public func <(lhs: ObjectIdentifier, rhs: ObjectIdentifier) -> Bool | |
970c961 | |
< public func <(lhs: UInt8, rhs: UInt8) -> Bool | |
--- | |
> public func <(lhs: Int16, rhs: Int16) -> Bool | |
972c963 | |
< public func <(lhs: Int8, rhs: Int8) -> Bool | |
--- | |
> public func <(lhs: UInt32, rhs: UInt32) -> Bool | |
974c965 | |
< public func <(lhs: UInt16, rhs: UInt16) -> Bool | |
--- | |
> public func <(lhs: Int32, rhs: Int32) -> Bool | |
976c967 | |
< public func <(lhs: Int16, rhs: Int16) -> Bool | |
--- | |
> public func <(lhs: UInt64, rhs: UInt64) -> Bool | |
978c969 | |
< public func <(lhs: Int, rhs: Int) -> Bool | |
--- | |
> public func <(lhs: Int64, rhs: Int64) -> Bool | |
982c973 | |
< public func <(lhs: Int64, rhs: Int64) -> Bool | |
--- | |
> public func <(lhs: Int, rhs: Int) -> Bool | |
984c975,976 | |
< public func <(lhs: UInt64, rhs: UInt64) -> Bool | |
--- | |
> @warn_unused_result | |
> public func <(lhs: Float, rhs: Float) -> Bool | |
986c978,979 | |
< public func <(lhs: Int32, rhs: Int32) -> Bool | |
--- | |
> @warn_unused_result | |
> public func <<T : Comparable>(lhs: T?, rhs: T?) -> Bool | |
988c981,982 | |
< public func <(lhs: UInt32, rhs: UInt32) -> Bool | |
--- | |
> @warn_unused_result | |
> public func <(lhs: Double, rhs: Double) -> Bool | |
990c984,985 | |
< public func <<(lhs: UInt32, rhs: UInt32) -> UInt32 | |
--- | |
> @warn_unused_result | |
> public func <(lhs: Float80, rhs: Float80) -> Bool | |
992c987,988 | |
< public func <<(lhs: Int32, rhs: Int32) -> Int32 | |
--- | |
> @warn_unused_result | |
> public func <<Key : Hashable, Value>(lhs: DictionaryIndex<Key, Value>, rhs: DictionaryIndex<Key, Value>) -> Bool | |
1000c996,998 | |
< public func <<(lhs: Int16, rhs: Int16) -> Int16 | |
--- | |
> public func <<(lhs: UInt8, rhs: UInt8) -> UInt8 | |
> | |
> public func <<(lhs: Int8, rhs: Int8) -> Int8 | |
1004c1002 | |
< public func <<(lhs: Int, rhs: Int) -> Int | |
--- | |
> public func <<(lhs: Int16, rhs: Int16) -> Int16 | |
1006c1004 | |
< public func <<(lhs: Int8, rhs: Int8) -> Int8 | |
--- | |
> public func <<(lhs: UInt32, rhs: UInt32) -> UInt32 | |
1008c1006 | |
< public func <<(lhs: UInt8, rhs: UInt8) -> UInt8 | |
--- | |
> public func <<(lhs: Int32, rhs: Int32) -> Int32 | |
1010c1008 | |
< public func <<=(inout lhs: Int64, rhs: Int64) | |
--- | |
> public func <<(lhs: Int, rhs: Int) -> Int | |
1012c1010 | |
< public func <<=(inout lhs: Int, rhs: Int) | |
--- | |
> public func <<=(inout lhs: UInt8, rhs: UInt8) | |
1014c1012 | |
< public func <<=(inout lhs: UInt, rhs: UInt) | |
--- | |
> public func <<=(inout lhs: Int8, rhs: Int8) | |
1016c1014 | |
< public func <<=(inout lhs: UInt64, rhs: UInt64) | |
--- | |
> public func <<=(inout lhs: UInt16, rhs: UInt16) | |
1018c1016 | |
< public func <<=(inout lhs: Int32, rhs: Int32) | |
--- | |
> public func <<=(inout lhs: Int16, rhs: Int16) | |
1022,1024c1020 | |
< public func <<=(inout lhs: Int16, rhs: Int16) | |
< | |
< public func <<=(inout lhs: UInt16, rhs: UInt16) | |
--- | |
> public func <<=(inout lhs: Int32, rhs: Int32) | |
1026c1022 | |
< public func <<=(inout lhs: Int8, rhs: Int8) | |
--- | |
> public func <<=(inout lhs: UInt64, rhs: UInt64) | |
1028c1024 | |
< public func <<=(inout lhs: UInt8, rhs: UInt8) | |
--- | |
> public func <<=(inout lhs: Int64, rhs: Int64) | |
1030c1026 | |
< public func <=(lhs: Int64, rhs: Int64) -> Bool | |
--- | |
> public func <<=(inout lhs: UInt, rhs: UInt) | |
1032c1028 | |
< public func <=(lhs: UInt, rhs: UInt) -> Bool | |
--- | |
> public func <<=(inout lhs: Int, rhs: Int) | |
1037c1033 | |
< public func <=(lhs: Float80, rhs: Float80) -> Bool | |
--- | |
> public func <=(lhs: Float, rhs: Float) -> Bool | |
1039,1040c1035,1041 | |
< @warn_unused_result | |
< public func <=<T : Comparable>(lhs: T?, rhs: T?) -> Bool | |
--- | |
> public func <=(lhs: Int8, rhs: Int8) -> Bool | |
> | |
> public func <=(lhs: Int32, rhs: Int32) -> Bool | |
> | |
> public func <=(lhs: UInt16, rhs: UInt16) -> Bool | |
> | |
> public func <=(lhs: Int16, rhs: Int16) -> Bool | |
1044c1045 | |
< public func <=(lhs: Int8, rhs: Int8) -> Bool | |
--- | |
> public func <=(lhs: Int64, rhs: Int64) -> Bool | |
1046c1047 | |
< public func <=(lhs: UInt16, rhs: UInt16) -> Bool | |
--- | |
> public func <=(lhs: UInt, rhs: UInt) -> Bool | |
1051,1053c1052 | |
< public func <=<T : Comparable>(lhs: T, rhs: T) -> Bool | |
< | |
< public func <=(lhs: Int16, rhs: Int16) -> Bool | |
--- | |
> public func <=(lhs: Double, rhs: Double) -> Bool | |
1055c1054,1055 | |
< public func <=(lhs: Int32, rhs: Int32) -> Bool | |
--- | |
> @warn_unused_result | |
> public func <=(lhs: Float80, rhs: Float80) -> Bool | |
1060c1060,1070 | |
< public func <=(lhs: Double, rhs: Double) -> Bool | |
--- | |
> public func <=<T : Comparable>(lhs: T?, rhs: T?) -> Bool | |
> | |
> @warn_unused_result | |
> public func <=<T : Comparable>(lhs: T, rhs: T) -> Bool | |
> | |
> /// Returns `true` iff `lhs` is identical to `rhs`. | |
> @warn_unused_result | |
> public func ==<Base : CollectionType>(lhs: LazyFilterIndex<Base>, rhs: LazyFilterIndex<Base>) -> Bool | |
> | |
> @warn_unused_result | |
> public func ==(lhs: Bit, rhs: Bit) -> Bool | |
1061a1072 | |
> /// Returns `true` iff `lhs.rawValue == rhs.rawValue`. | |
1063c1074 | |
< public func <=(lhs: Float, rhs: Float) -> Bool | |
--- | |
> public func ==<T : RawRepresentable where T.RawValue : Equatable>(lhs: T, rhs: T) -> Bool | |
1066c1077 | |
< public func ==<Memory>(lhs: UnsafeMutablePointer<Memory>, rhs: UnsafeMutablePointer<Memory>) -> Bool | |
--- | |
> public func ==<T : Equatable>(lhs: T?, rhs: T?) -> Bool | |
1067a1079 | |
> /// Returns true if these arrays contain the same elements. | |
1069c1081 | |
< public func ==<Memory>(lhs: UnsafePointer<Memory>, rhs: UnsafePointer<Memory>) -> Bool | |
--- | |
> public func ==<Element : Equatable>(lhs: ArraySlice<Element>, rhs: ArraySlice<Element>) -> Bool | |
1070a1083 | |
> /// Returns true if these arrays contain the same elements. | |
1072c1085,1087 | |
< public func ==(lhs: UnicodeScalar, rhs: UnicodeScalar) -> Bool | |
--- | |
> public func ==<Element : Equatable>(lhs: [Element], rhs: [Element]) -> Bool | |
> | |
> public func ==<Value, Element>(lhs: ManagedBufferPointer<Value, Element>, rhs: ManagedBufferPointer<Value, Element>) -> Bool | |
1073a1089,1093 | |
> /// Return true iff `lhs` and `rhs` wrap equal underlying | |
> /// `AnyBidirectionalIndex`s. | |
> /// | |
> /// - Requires: The types of indices wrapped by `lhs` and `rhs` are | |
> /// identical. | |
1075c1095 | |
< public func ==(left: _SwiftNSOperatingSystemVersion, right: _SwiftNSOperatingSystemVersion) -> Bool | |
--- | |
> public func ==(lhs: AnyBidirectionalIndex, rhs: AnyBidirectionalIndex) -> Bool | |
1076a1097 | |
> /// Two `HalfOpenInterval`s are equal if their `start` and `end` are equal. | |
1078c1099 | |
< public func ==(lhs: Bit, rhs: Bit) -> Bool | |
--- | |
> public func ==<Bound : Comparable>(lhs: HalfOpenInterval<Bound>, rhs: HalfOpenInterval<Bound>) -> Bool | |
1080c1101 | |
< public func ==<T : Strideable>(x: T, y: T) -> Bool | |
--- | |
> public func ==(lhs: Int64, rhs: Int64) -> Bool | |
1083c1104 | |
< public func ==(lhs: Float80, rhs: Float80) -> Bool | |
--- | |
> public func ==(left: _SwiftNSOperatingSystemVersion, right: _SwiftNSOperatingSystemVersion) -> Bool | |
1084a1106 | |
> /// Two `ClosedInterval`s are equal if their `start` and `end` are equal. | |
1086c1108 | |
< public func ==<Key : Equatable, Value : Equatable>(lhs: [Key : Value], rhs: [Key : Value]) -> Bool | |
--- | |
> public func ==<Bound : Comparable>(lhs: ClosedInterval<Bound>, rhs: ClosedInterval<Bound>) -> Bool | |
1087a1110,1114 | |
> /// Return true iff `lhs` and `rhs` wrap equal underlying | |
> /// `AnyRandomAccessIndex`s. | |
> /// | |
> /// - Requires: The types of indices wrapped by `lhs` and `rhs` are | |
> /// identical. | |
1089c1116 | |
< public func ==<Element : Hashable>(lhs: Set<Element>, rhs: Set<Element>) -> Bool | |
--- | |
> public func ==(lhs: AnyRandomAccessIndex, rhs: AnyRandomAccessIndex) -> Bool | |
1091d1117 | |
< /// Returns `true` iff `lhs.rawValue == rhs.rawValue`. | |
1093c1119 | |
< public func ==<T : RawRepresentable where T.RawValue : Equatable>(lhs: T, rhs: T) -> Bool | |
--- | |
> public func ==(x: ObjectIdentifier, y: ObjectIdentifier) -> Bool | |
1096c1122 | |
< public func ==(lhs: Character, rhs: Character) -> Bool | |
--- | |
> public func ==(lhs: Bool, rhs: Bool) -> Bool | |
1099c1125 | |
< public func ==(lhs: COpaquePointer, rhs: COpaquePointer) -> Bool | |
--- | |
> public func ==<T>(lhs: _OptionalNilComparisonType, rhs: T?) -> Bool | |
1101,1102d1126 | |
< /// Return `true` iff `t0` is identical to `t1`; i.e. if they are both | |
< /// `nil` or they both represent the same type. | |
1104c1128,1130 | |
< public func ==(t0: Any.Type?, t1: Any.Type?) -> Bool | |
--- | |
> public func ==(lhs: String.UTF16View.Index, rhs: String.UTF16View.Index) -> Bool | |
> | |
> public func ==<T : _Strideable>(x: T, y: T) -> Bool | |
1107c1133 | |
< public func ==<Memory>(lhs: AutoreleasingUnsafeMutablePointer<Memory>, rhs: AutoreleasingUnsafeMutablePointer<Memory>) -> Bool | |
--- | |
> public func ==(lhs: String, rhs: String) -> Bool | |
1110c1136 | |
< public func ==(lhs: Bool, rhs: Bool) -> Bool | |
--- | |
> public func ==(lhs: String.UTF8View.Index, rhs: String.UTF8View.Index) -> Bool | |
1112d1137 | |
< /// Returns true if these arrays contain the same elements. | |
1114c1139 | |
< public func ==<Element : Equatable>(lhs: [Element], rhs: [Element]) -> Bool | |
--- | |
> public func ==(lhs: Index, rhs: Index) -> Bool | |
1116d1140 | |
< /// Returns true if these arrays contain the same elements. | |
1118c1142 | |
< public func ==<Element : Equatable>(lhs: ArraySlice<Element>, rhs: ArraySlice<Element>) -> Bool | |
--- | |
> public func ==<Memory>(lhs: UnsafePointer<Memory>, rhs: UnsafePointer<Memory>) -> Bool | |
1120d1143 | |
< /// Returns true if these arrays contain the same elements. | |
1122c1145 | |
< public func ==<Element : Equatable>(lhs: ContiguousArray<Element>, rhs: ContiguousArray<Element>) -> Bool | |
--- | |
> public func ==(lhs: UnicodeScalar, rhs: UnicodeScalar) -> Bool | |
1125c1148 | |
< public func ==(lhs: String.UTF8View.Index, rhs: String.UTF8View.Index) -> Bool | |
--- | |
> public func ==<Memory>(lhs: UnsafeMutablePointer<Memory>, rhs: UnsafeMutablePointer<Memory>) -> Bool | |
1128c1151 | |
< public func ==<T>(lhs: _OptionalNilComparisonType, rhs: T?) -> Bool | |
--- | |
> public func ==(lhs: String.UnicodeScalarView.Index, rhs: String.UnicodeScalarView.Index) -> Bool | |
1134c1157 | |
< public func ==<Base>(lhs: ReverseIndex<Base>, rhs: ReverseIndex<Base>) -> Bool | |
--- | |
> public func ==<Memory>(lhs: AutoreleasingUnsafeMutablePointer<Memory>, rhs: AutoreleasingUnsafeMutablePointer<Memory>) -> Bool | |
1145,1162c1168 | |
< public func ==<Key : Hashable, Value>(lhs: DictionaryIndex<Key, Value>, rhs: DictionaryIndex<Key, Value>) -> Bool | |
< | |
< /// Return true iff `lhs` and `rhs` wrap equal underlying | |
< /// `AnyBidirectionalIndex`s. | |
< /// | |
< /// - Requires: The types of indices wrapped by `lhs` and `rhs` are | |
< /// identical. | |
< @warn_unused_result | |
< public func ==(lhs: AnyBidirectionalIndex, rhs: AnyBidirectionalIndex) -> Bool | |
< | |
< @warn_unused_result | |
< public func ==(lhs: String, rhs: String) -> Bool | |
< | |
< @warn_unused_result | |
< public func ==(lhs: String.UTF16View.Index, rhs: String.UTF16View.Index) -> Bool | |
< | |
< @warn_unused_result | |
< public func ==(lhs: String.UnicodeScalarView.Index, rhs: String.UnicodeScalarView.Index) -> Bool | |
--- | |
> public func ==<Value, Element>(lhs: _HeapBuffer<Value, Element>, rhs: _HeapBuffer<Value, Element>) -> Bool | |
1165,1167c1171 | |
< public func ==<T : Equatable>(lhs: T?, rhs: T?) -> Bool | |
< | |
< public func ==<Value, Element>(lhs: ManagedBufferPointer<Value, Element>, rhs: ManagedBufferPointer<Value, Element>) -> Bool | |
--- | |
> public func ==<Key : Hashable, Value>(lhs: DictionaryIndex<Key, Value>, rhs: DictionaryIndex<Key, Value>) -> Bool | |
1169d1172 | |
< /// Two `ClosedInterval`s are equal if their `start` and `end` are equal. | |
1171c1174 | |
< public func ==<Bound : Comparable>(lhs: ClosedInterval<Bound>, rhs: ClosedInterval<Bound>) -> Bool | |
--- | |
> public func ==<Element>(lhs: Range<Element>, rhs: Range<Element>) -> Bool | |
1174c1177 | |
< public func ==<Value, Element>(lhs: _HeapBuffer<Value, Element>, rhs: _HeapBuffer<Value, Element>) -> Bool | |
--- | |
> public func ==<Element : Hashable>(lhs: SetIndex<Element>, rhs: SetIndex<Element>) -> Bool | |
1176c1179,1180 | |
< /// Two `HalfOpenInterval`s are equal if their `start` and `end` are equal. | |
--- | |
> /// Return `true` iff `t0` is identical to `t1`; i.e. if they are both | |
> /// `nil` or they both represent the same type. | |
1178c1182 | |
< public func ==<Bound : Comparable>(lhs: HalfOpenInterval<Bound>, rhs: HalfOpenInterval<Bound>) -> Bool | |
--- | |
> public func ==(t0: Any.Type?, t1: Any.Type?) -> Bool | |
1180d1183 | |
< /// Returns `true` iff `lhs` is identical to `rhs`. | |
1182c1185 | |
< public func ==<Base : CollectionType>(lhs: LazyFilterIndex<Base>, rhs: LazyFilterIndex<Base>) -> Bool | |
--- | |
> public func ==<Key : Equatable, Value : Equatable>(lhs: [Key : Value], rhs: [Key : Value]) -> Bool | |
1185c1188 | |
< public func ==<Element>(lhs: Range<Element>, rhs: Range<Element>) -> Bool | |
--- | |
> public func ==<Element : Hashable>(lhs: Set<Element>, rhs: Set<Element>) -> Bool | |
1196a1200,1201 | |
> public func ==(lhs: FloatingPointClassification, rhs: FloatingPointClassification) -> Bool | |
> | |
1199c1204,1205 | |
< public func ==(lhs: UInt64, rhs: UInt64) -> Bool | |
--- | |
> @warn_unused_result | |
> public func ==(lhs: COpaquePointer, rhs: COpaquePointer) -> Bool | |
1201c1207,1208 | |
< public func ==(lhs: Int64, rhs: Int64) -> Bool | |
--- | |
> @warn_unused_result | |
> public func ==(lhs: Float80, rhs: Float80) -> Bool | |
1203c1210 | |
< public func ==(lhs: UInt, rhs: UInt) -> Bool | |
--- | |
> public func ==(lhs: UInt64, rhs: UInt64) -> Bool | |
1205c1212,1213 | |
< public func ==(lhs: Int, rhs: Int) -> Bool | |
--- | |
> @warn_unused_result | |
> public func ==(lhs: Double, rhs: Double) -> Bool | |
1208c1216 | |
< public func ==<BaseElements>(lhs: FlattenCollectionIndex<BaseElements>, rhs: FlattenCollectionIndex<BaseElements>) -> Bool | |
--- | |
> public func ==(lhs: Float, rhs: Float) -> Bool | |
1214c1222 | |
< public func ==(lhs: Index, rhs: Index) -> Bool | |
--- | |
> public func ==<BaseElements>(lhs: FlattenCollectionIndex<BaseElements>, rhs: FlattenCollectionIndex<BaseElements>) -> Bool | |
1216,1217c1224 | |
< @warn_unused_result | |
< public func ==(x: ObjectIdentifier, y: ObjectIdentifier) -> Bool | |
--- | |
> public func ==(lhs: Int, rhs: Int) -> Bool | |
1219,1220c1226 | |
< @warn_unused_result | |
< public func ==(lhs: Float, rhs: Float) -> Bool | |
--- | |
> public func ==(lhs: UInt, rhs: UInt) -> Bool | |
1221a1228 | |
> /// Returns true if these arrays contain the same elements. | |
1223c1230 | |
< public func ==(lhs: Double, rhs: Double) -> Bool | |
--- | |
> public func ==<Element : Equatable>(lhs: ContiguousArray<Element>, rhs: ContiguousArray<Element>) -> Bool | |
1226c1233 | |
< public func ==<Element : Hashable>(lhs: SetIndex<Element>, rhs: SetIndex<Element>) -> Bool | |
--- | |
> public func ==<Base>(lhs: ReverseIndex<Base>, rhs: ReverseIndex<Base>) -> Bool | |
1228,1232d1234 | |
< /// Return true iff `lhs` and `rhs` wrap equal underlying | |
< /// `AnyRandomAccessIndex`s. | |
< /// | |
< /// - Requires: The types of indices wrapped by `lhs` and `rhs` are | |
< /// identical. | |
1234,1236c1236 | |
< public func ==(lhs: AnyRandomAccessIndex, rhs: AnyRandomAccessIndex) -> Bool | |
< | |
< public func ==(lhs: FloatingPointClassification, rhs: FloatingPointClassification) -> Bool | |
--- | |
> public func ==(lhs: Character, rhs: Character) -> Bool | |
1245,1248d1244 | |
< public func >(lhs: Int64, rhs: Int64) -> Bool | |
< | |
< public func >(lhs: UInt, rhs: UInt) -> Bool | |
< | |
1251,1257c1247 | |
< @warn_unused_result | |
< public func >(lhs: Float, rhs: Float) -> Bool | |
< | |
< @warn_unused_result | |
< public func >(lhs: Double, rhs: Double) -> Bool | |
< | |
< public func >(lhs: UInt64, rhs: UInt64) -> Bool | |
--- | |
> public func >(lhs: Int8, rhs: Int8) -> Bool | |
1267a1258,1269 | |
> @warn_unused_result | |
> public func >(lhs: Double, rhs: Double) -> Bool | |
> | |
> @warn_unused_result | |
> public func >(lhs: Float, rhs: Float) -> Bool | |
> | |
> public func >(lhs: UInt, rhs: UInt) -> Bool | |
> | |
> public func >(lhs: Int64, rhs: Int64) -> Bool | |
> | |
> public func >(lhs: UInt64, rhs: UInt64) -> Bool | |
> | |
1278c1280 | |
< public func >(lhs: Int8, rhs: Int8) -> Bool | |
--- | |
> public func >=(lhs: UInt8, rhs: UInt8) -> Bool | |
1282,1286c1284 | |
< @warn_unused_result | |
< public func >=<T : Comparable>(lhs: T, rhs: T) -> Bool | |
< | |
< @warn_unused_result | |
< public func >=<T : Comparable>(lhs: T?, rhs: T?) -> Bool | |
--- | |
> public func >=(lhs: UInt16, rhs: UInt16) -> Bool | |
1288,1289c1286 | |
< @warn_unused_result | |
< public func >=(lhs: Float80, rhs: Float80) -> Bool | |
--- | |
> public func >=(lhs: Int16, rhs: Int16) -> Bool | |
1291,1292c1288 | |
< @warn_unused_result | |
< public func >=(lhs: Double, rhs: Double) -> Bool | |
--- | |
> public func >=(lhs: UInt32, rhs: UInt32) -> Bool | |
1294,1295c1290 | |
< @warn_unused_result | |
< public func >=(lhs: Float, rhs: Float) -> Bool | |
--- | |
> public func >=(lhs: Int32, rhs: Int32) -> Bool | |
1297c1292 | |
< public func >=(lhs: UInt8, rhs: UInt8) -> Bool | |
--- | |
> public func >=(lhs: UInt64, rhs: UInt64) -> Bool | |
1299c1294 | |
< public func >=(lhs: Int, rhs: Int) -> Bool | |
--- | |
> public func >=(lhs: Int64, rhs: Int64) -> Bool | |
1303c1298 | |
< public func >=(lhs: Int64, rhs: Int64) -> Bool | |
--- | |
> public func >=(lhs: Int, rhs: Int) -> Bool | |
1305c1300,1301 | |
< public func >=(lhs: UInt64, rhs: UInt64) -> Bool | |
--- | |
> @warn_unused_result | |
> public func >=(lhs: Float, rhs: Float) -> Bool | |
1307c1303,1304 | |
< public func >=(lhs: UInt16, rhs: UInt16) -> Bool | |
--- | |
> @warn_unused_result | |
> public func >=(lhs: Double, rhs: Double) -> Bool | |
1309c1306,1307 | |
< public func >=(lhs: Int16, rhs: Int16) -> Bool | |
--- | |
> @warn_unused_result | |
> public func >=(lhs: Float80, rhs: Float80) -> Bool | |
1311c1309,1310 | |
< public func >=(lhs: UInt32, rhs: UInt32) -> Bool | |
--- | |
> @warn_unused_result | |
> public func >=<T : Comparable>(lhs: T?, rhs: T?) -> Bool | |
1313c1312,1315 | |
< public func >=(lhs: Int32, rhs: Int32) -> Bool | |
--- | |
> @warn_unused_result | |
> public func >=<T : Comparable>(lhs: T, rhs: T) -> Bool | |
> | |
> public func >>(lhs: Int8, rhs: Int8) -> Int8 | |
1323c1325 | |
< public func >>(lhs: Int32, rhs: Int32) -> Int32 | |
--- | |
> public func >>(lhs: UInt8, rhs: UInt8) -> UInt8 | |
1325c1327 | |
< public func >>(lhs: UInt32, rhs: UInt32) -> UInt32 | |
--- | |
> public func >>(lhs: UInt16, rhs: UInt16) -> UInt16 | |
1329c1331 | |
< public func >>(lhs: UInt16, rhs: UInt16) -> UInt16 | |
--- | |
> public func >>(lhs: Int32, rhs: Int32) -> Int32 | |
1331c1333 | |
< public func >>(lhs: Int8, rhs: Int8) -> Int8 | |
--- | |
> public func >>(lhs: UInt32, rhs: UInt32) -> UInt32 | |
1333c1335 | |
< public func >>(lhs: UInt8, rhs: UInt8) -> UInt8 | |
--- | |
> public func >>=(inout lhs: UInt8, rhs: UInt8) | |
1353,1354d1354 | |
< public func >>=(inout lhs: UInt8, rhs: UInt8) | |
< | |
1356c1356 | |
< public func ??<T>(optional: T?, @autoclosure defaultValue: () throws -> T) rethrows -> T | |
--- | |
> public func ??<T>(optional: T?, @autoclosure defaultValue: () throws -> T?) rethrows -> T? | |
1359c1359 | |
< public func ??<T>(optional: T?, @autoclosure defaultValue: () throws -> T?) rethrows -> T? | |
--- | |
> public func ??<T>(optional: T?, @autoclosure defaultValue: () throws -> T) rethrows -> T | |
1570c1570 | |
< /// A type-erased generator of `Element`. | |
--- | |
> /// An abstract `GeneratorType` base class over `Element` elements. | |
1572,1574c1572,1576 | |
< /// This generator forwards its `next()` method to an arbitrary underlying | |
< /// generator having the same `Element` type, hiding the specifics of the | |
< /// underlying `GeneratorType`. | |
--- | |
> /// Use this as a `Sequence`'s associated `Generator` type when you | |
> /// don't want to expose details of the concrete generator, a subclass. | |
> /// | |
> /// It is an error to create instances of `AnyGenerator` that are not | |
> /// also instances of an `AnyGenerator` subclass. | |
1578,1602c1580,1585 | |
< public struct AnyGenerator<Element> : GeneratorType { | |
< /// Create a `GeneratorType` instance that wraps `base` but whose type | |
< /// depends only on the type of `G.Element`. | |
< /// | |
< /// Example: | |
< /// | |
< /// func countStrings() -> AnyGenerator<String> { | |
< /// let lazyStrings = (0..<10).lazy.map { String($0) } | |
< /// | |
< /// // This is a really complicated type of no interest to our | |
< /// // clients. | |
< /// let g: MapSequenceGenerator<RangeGenerator<Int>, String> | |
< /// = lazyStrings.generate() | |
< /// return AnyGenerator(g) | |
< /// } | |
< public init<G : GeneratorType where G.Element == Element>(_ base: G) | |
< /// Create a `GeneratorType` instance whose `next` method invokes | |
< /// `body` and returns the result. | |
< /// | |
< /// Example: | |
< /// | |
< /// var x = 7 | |
< /// let g = AnyGenerator { x < 15 ? x++ : nil } | |
< /// let a = Array(g) // [ 7, 8, 9, 10, 11, 12, 13, 14 ] | |
< public init(body: () -> Element?) | |
--- | |
> /// - `func anyGenerator<G : GeneratorType>(base: G) -> AnyGenerator<G.Element>` | |
> /// - `func anyGenerator<Element>(body: ()->Element?) -> AnyGenerator<Element>` | |
> public class AnyGenerator<Element> : GeneratorType { | |
> /// Initialize the instance. May only be called from a subclass | |
> /// initializer. | |
> public init() | |
1604a1588,1589 | |
> /// | |
> /// - Note: Subclasses must override this method. | |
1915a1901,1902 | |
> | |
> | |
1947a1935,1936 | |
> | |
> | |
2059a2049,2050 | |
> | |
> | |
2570c2561 | |
< /// - Note: This associated type appears as a requirement in | |
--- | |
> /// - Note: this associated type appears as a requirement in | |
2758,2786c2749,2751 | |
< | |
< extension CollectionType where SubSequence == Self { | |
< /// Remove the element at `startIndex` and return it. | |
< /// | |
< /// - Complexity: O(1) | |
< /// - Requires: `!self.isEmpty`. | |
< public mutating func removeFirst() -> Self.Generator.Element | |
< /// Remove the first `n` elements. | |
< /// | |
< /// - Complexity: | |
< /// - O(1) if `Index` conforms to `RandomAccessIndexType` | |
< /// - O(n) otherwise | |
< /// - Requires: `n >= 0 && self.count >= n`. | |
< public mutating func removeFirst(n: Int) | |
< } | |
< | |
< extension CollectionType where SubSequence == Self, Index : BidirectionalIndexType { | |
< /// Remove an element from the end. | |
< /// | |
< /// - Complexity: O(1) | |
< /// - Requires: `!self.isEmpty` | |
< public mutating func removeLast() -> Self.Generator.Element | |
< /// Remove the last `n` elements. | |
< /// | |
< /// - Complexity: | |
< /// - O(1) if `Index` conforms to `RandomAccessIndexType` | |
< /// - O(n) otherwise | |
< /// - Requires: `n >= 0 && self.count >= n`. | |
< public mutating func removeLast(n: Int) | |
--- | |
> | |
> extension CollectionType where SubSequence == Self { | |
> public mutating func removeFirst() -> Self.Generator.Element | |
2788a2754,2755 | |
> | |
> | |
2819a2787,2788 | |
> | |
> | |
2997a2967,2968 | |
> | |
> | |
3218a3190,3191 | |
> | |
> | |
3298a3272 | |
> public var value: Builtin.FPIEEE64 | |
3599c3573 | |
< /// - Requires: The next value is representable. | |
--- | |
> /// - Requires: the next value is representable. | |
3650c3624 | |
< /// - Requires: The next value is representable. | |
--- | |
> /// - Requires: the next value is representable. | |
3659c3633 | |
< /// - Note: This is the `GeneratorType` used by `FlattenSequence`, | |
--- | |
> /// - Note: this is the `GeneratorType` used by `FlattenSequence`, | |
3698a3673 | |
> public var value: Builtin.FPIEEE32 | |
3836a3812 | |
> public var value: Builtin.FPIEEE80 | |
4262a4239 | |
> public var value: Builtin.Int64 | |
4412a4390 | |
> public var value: Builtin.Int16 | |
4578a4557 | |
> public var value: Builtin.Int32 | |
4734a4714 | |
> public var value: Builtin.Int64 | |
4873a4854 | |
> public var value: Builtin.Int8 | |
5368c5349 | |
< /// - Note: This operation may not satisfy the expected complexity | |
--- | |
> /// - Note: this operation may not satisfy the expected complexity | |
5567c5548 | |
< /// - Note: The explicit permission to implement further operations | |
--- | |
> /// - Note: the explicit permission to implement further operations | |
6002c5983 | |
< /// var d = Mirror(reflecting: x).descendant(1, "two", 3) | |
--- | |
> /// var d = Mirror(reflecting: x).descendant(1, "two", 3) | |
6031a6013,6014 | |
> | |
> | |
6040a6024,6025 | |
> | |
> | |
6063c6048 | |
< typealias SubSequence : CollectionType = MutableSlice<Self> | |
--- | |
> typealias SubSequence = MutableSlice<Self> | |
6076c6061 | |
< /// - Postcondition: For all *i* in `range.startIndex..<`\ *p*, and *j* | |
--- | |
> /// - Postcondition: for all *i* in `range.startIndex..<`\ *p*, and *j* | |
6091c6076 | |
< /// - Postcondition: For all *i* in `range.startIndex..<`\ *p*, and *j* | |
--- | |
> /// - Postcondition: for all *i* in `range.startIndex..<`\ *p*, and *j* | |
6355a6341,6342 | |
> | |
> | |
6413c6400 | |
< case Range(Int64, Int64) | |
--- | |
> case Range(UInt64, UInt64) | |
6563,6564d6549 | |
< /// Creates a collection instance that contains `elements`. | |
< public init<S : SequenceType where S.Generator.Element == Generator.Element>(_ elements: S) | |
6602c6587 | |
< /// - Requires: `n >= 0 && self.count >= n`. | |
--- | |
> /// - Requires: `self.count >= n`. | |
6623d6607 | |
< public convenience init<S : SequenceType where S.Generator.Element == Generator.Element>(_ elements: S) | |
6636,6647c6620 | |
< extension RangeReplaceableCollectionType where SubSequence == Self { | |
< /// Remove the element at `startIndex` and return it. | |
< /// | |
< /// - Complexity: O(1) | |
< /// - Requires: `!self.isEmpty`. | |
< public mutating func removeFirst() -> Self.Generator.Element | |
< /// Remove the first `n` elements. | |
< /// | |
< /// - Complexity: O(1) | |
< /// - Requires: `self.count >= n`. | |
< public mutating func removeFirst(n: Int) | |
< } | |
--- | |
> | |
6655,6659d6627 | |
< /// Remove the last `n` elements. | |
< /// | |
< /// - Complexity: O(`self.count`) | |
< /// - Requires: `n >= 0 && self.count >= n`. | |
< public mutating func removeLast(n: Int) | |
6661a6630,6631 | |
> | |
> | |
6676c6646 | |
< /// that do not correspond to a value of `Self`. | |
--- | |
> /// that do not correspond to an value of `Self`. | |
6883c6853 | |
< public func forEach(@noescape body: (Self.Generator.Element) throws -> Void) rethrows | |
--- | |
> public func forEach(@noescape body: (Self.Generator.Element) throws -> ()) rethrows | |
6934a6905,6906 | |
> | |
> | |
6962a6935,6936 | |
> | |
> | |
7067c7041 | |
< public func forEach(@noescape body: (Self.Generator.Element) throws -> Void) rethrows | |
--- | |
> public func forEach(@noescape body: (Self.Generator.Element) throws -> ()) rethrows | |
7105a7080,7081 | |
> | |
> | |
7425a7402,7403 | |
> | |
> | |
7774c7752 | |
< public protocol Strideable : Comparable { | |
--- | |
> public protocol Strideable : Comparable, _Strideable { | |
8117a8096,8097 | |
> | |
> | |
8153a8134,8135 | |
> | |
> | |
8159a8142,8143 | |
> | |
> | |
8179a8164,8165 | |
> | |
> | |
8191a8178,8179 | |
> | |
> | |
8245a8234,8237 | |
> | |
> | |
> | |
> | |
8279a8272,8273 | |
> | |
> | |
8303a8298,8301 | |
> | |
> | |
> | |
> | |
8308a8307,8312 | |
> | |
> | |
> | |
> | |
> | |
> | |
8624a8629 | |
> public var value: Builtin.Int64 | |
8770a8776 | |
> public var value: Builtin.Int16 | |
8938a8945 | |
> public var value: Builtin.Int32 | |
9100a9108 | |
> public var value: Builtin.Int64 | |
9242a9251 | |
> public var value: Builtin.Int8 | |
9435c9444 | |
< public static func encode(input: UnicodeScalar, output put: (CodeUnit) -> Void) | |
--- | |
> public static func encode(input: UnicodeScalar, output put: (CodeUnit) -> ()) | |
9490c9499 | |
< public static func encode(input: UnicodeScalar, output put: (CodeUnit) -> Void) | |
--- | |
> public static func encode(input: UnicodeScalar, output put: (CodeUnit) -> ()) | |
9514c9523 | |
< public static func encode(input: UnicodeScalar, output put: (CodeUnit) -> Void) | |
--- | |
> public static func encode(input: UnicodeScalar, output put: (CodeUnit) -> ()) | |
9545c9554 | |
< public static func encode(input: UnicodeScalar, output: (Self.CodeUnit) -> Void) | |
--- | |
> public static func encode(input: UnicodeScalar, output: (Self.CodeUnit) -> ()) | |
9630a9640,9644 | |
> | |
> | |
> extension UnicodeScalar.UTF16View : CollectionType { | |
> } | |
> | |
10066,10067d10079 | |
< public func ^(lhs: Int, rhs: Int) -> Int | |
< | |
10070c10082 | |
< public func ^(lhs: Int64, rhs: Int64) -> Int64 | |
--- | |
> public func ^(lhs: UInt8, rhs: UInt8) -> UInt8 | |
10072c10084 | |
< public func ^(lhs: UInt64, rhs: UInt64) -> UInt64 | |
--- | |
> public func ^(lhs: Int8, rhs: Int8) -> Int8 | |
10074c10086,10088 | |
< public func ^(lhs: Int32, rhs: Int32) -> Int32 | |
--- | |
> public func ^(lhs: UInt16, rhs: UInt16) -> UInt16 | |
> | |
> public func ^(lhs: Int16, rhs: Int16) -> Int16 | |
10078c10092 | |
< public func ^(lhs: UInt16, rhs: UInt16) -> UInt16 | |
--- | |
> public func ^(lhs: Int32, rhs: Int32) -> Int32 | |
10080c10094 | |
< public func ^(lhs: Int16, rhs: Int16) -> Int16 | |
--- | |
> public func ^(lhs: UInt64, rhs: UInt64) -> UInt64 | |
10082c10096 | |
< public func ^(lhs: Int8, rhs: Int8) -> Int8 | |
--- | |
> public func ^(lhs: Int64, rhs: Int64) -> Int64 | |
10084c10098 | |
< public func ^(lhs: UInt8, rhs: UInt8) -> UInt8 | |
--- | |
> public func ^(lhs: Int, rhs: Int) -> Int | |
10086c10100 | |
< public func ^=(inout lhs: Int64, rhs: Int64) | |
--- | |
> public func ^=(inout lhs: Int, rhs: Int) | |
10090c10104,10108 | |
< public func ^=(inout lhs: Int32, rhs: Int32) | |
--- | |
> public func ^=(inout lhs: UInt16, rhs: UInt16) | |
> | |
> public func ^=(inout lhs: Int8, rhs: Int8) | |
> | |
> public func ^=(inout lhs: UInt8, rhs: UInt8) | |
10095,10096d10112 | |
< public func ^=(inout lhs: Int, rhs: Int) | |
< | |
10099,10101c10115 | |
< public func ^=(inout lhs: Int16, rhs: Int16) | |
< | |
< public func ^=(inout lhs: UInt, rhs: UInt) | |
--- | |
> public func ^=(inout lhs: Int64, rhs: Int64) | |
10103c10117 | |
< public func ^=(inout lhs: UInt16, rhs: UInt16) | |
--- | |
> public func ^=(inout lhs: Int32, rhs: Int32) | |
10105c10119 | |
< public func ^=(inout lhs: Int8, rhs: Int8) | |
--- | |
> public func ^=(inout lhs: UInt, rhs: UInt) | |
10107c10121 | |
< public func ^=(inout lhs: UInt8, rhs: UInt8) | |
--- | |
> public func ^=(inout lhs: Int16, rhs: Int16) | |
10231a10246,10251 | |
> /// Effectively a proxy for NSString that doesn't mention it by | |
> /// name. NSString's conformance to this protocol is declared in | |
> /// Foundation. | |
> @objc public protocol _CocoaStringType { | |
> } | |
> | |
10236a10257,10262 | |
> /// Conforming types can be initialized with color literals (e.g. | |
> /// `[#Color(colorLiteralRed: 1, blue: 0, green: 0, alpha: 1)#]`). | |
> public protocol _ColorLiteralConvertible { | |
> public init(colorLiteralRed: Float, green: Float, blue: Float, alpha: Float) | |
> } | |
> | |
10252a10279,10290 | |
> /// Conforming types can be initialized with strings (e.g. | |
> /// `[#FileReference(fileReferenceLiteral: "resource.txt")#]`). | |
> public protocol _FileReferenceLiteralConvertible { | |
> public init(fileReferenceLiteral: String) | |
> } | |
> | |
> /// Conforming types can be initialized with image literals (e.g. | |
> /// `[#Image(imageLiteral: "hi.png")#]`). | |
> public protocol _ImageLiteralConvertible { | |
> public init(imageLiteral: String) | |
> } | |
> | |
10266a10305,10306 | |
> | |
> | |
10315a10356,10357 | |
> | |
> | |
10462a10505,10529 | |
> /// This protocol is an implementation detail of `Strideable`; do | |
> /// not use it directly. | |
> public protocol _Strideable { | |
> /// A type that can represent the distance between two values of `Self`. | |
> typealias Stride : SignedNumberType | |
> /// Returns a stride `x` such that `self.advancedBy(x)` approximates | |
> /// `other`. | |
> /// | |
> /// - Complexity: O(1). | |
> /// | |
> /// - SeeAlso: `RandomAccessIndexType`'s `distanceTo`, which provides a | |
> /// stronger semantic guarantee. | |
> @warn_unused_result | |
> public func distanceTo(other: Self) -> Self.Stride | |
> /// Returns a `Self` `x` such that `self.distanceTo(x)` approximates | |
> /// `n`. | |
> /// | |
> /// - Complexity: O(1). | |
> /// | |
> /// - SeeAlso: `RandomAccessIndexType`'s `advancedBy`, which | |
> /// provides a stronger semantic guarantee. | |
> @warn_unused_result | |
> public func advancedBy(n: Self.Stride) -> Self | |
> } | |
> | |
10481a10549,10575 | |
> /// Return a `GeneratorType` instance that wraps `base` but whose type | |
> /// depends only on the type of `G.Element`. | |
> /// | |
> /// Example: | |
> /// | |
> /// func countStrings() -> AnyGenerator<String> { | |
> /// let lazyStrings = (0..<10).lazy.map { String($0) } | |
> /// | |
> /// // This is a really complicated type of no interest to our | |
> /// // clients. | |
> /// let g: MapSequenceGenerator<RangeGenerator<Int>, String> | |
> /// = lazyStrings.generate() | |
> /// return anyGenerator(g) | |
> /// } | |
> public func anyGenerator<G : GeneratorType>(base: G) -> AnyGenerator<G.Element> | |
> | |
> /// Return a `GeneratorType` instance whose `next` method invokes | |
> /// `body` and returns the result. | |
> /// | |
> /// Example: | |
> /// | |
> /// var x = 7 | |
> /// let g = anyGenerator { x < 15 ? x++ : nil } | |
> /// let a = Array(g) // [ 7, 8, 9, 10, 11, 12, 13, 14 ] | |
> @warn_unused_result | |
> public func anyGenerator<Element>(body: () -> Element?) -> AnyGenerator<Element> | |
> | |
10523c10617 | |
< /// `terminator`, into `output`. | |
--- | |
> /// `terminator`, into the standard output. | |
10528c10622 | |
< /// - Note: To print without a trailing newline, pass `terminator: ""` | |
--- | |
> /// - Note: to print without a trailing newline, pass `terminator: ""` | |
10532c10626 | |
< public func debugPrint<Target : OutputStreamType>(items: Any..., separator: String = default, terminator: String = default, inout toStream output: Target) | |
--- | |
> public func debugPrint(items: Any..., separator: String = default, terminator: String = default) | |
10536c10630 | |
< /// `terminator`, into the standard output. | |
--- | |
> /// `terminator`, into `output`. | |
10541c10635 | |
< /// - Note: To print without a trailing newline, pass `terminator: ""` | |
--- | |
> /// - Note: to print without a trailing newline, pass `terminator: ""` | |
10545,10548c10639 | |
< public func debugPrint(items: Any..., separator: String = default, terminator: String = default) | |
< | |
< /// Dump an object's contents using its mirror to the specified output stream. | |
< public func dump<T, TargetStream : OutputStreamType>(x: T, inout _ targetStream: TargetStream, name: String? = default, indent: Int = default, maxDepth: Int = default, maxItems: Int = default) -> T | |
--- | |
> public func debugPrint<Target : OutputStreamType>(items: Any..., separator: String = default, terminator: String = default, inout toStream output: Target) | |
10552a10644,10646 | |
> /// Dump an object's contents using its mirror to the specified output stream. | |
> public func dump<T, TargetStream : OutputStreamType>(x: T, inout _ targetStream: TargetStream, name: String? = default, indent: Int = default, maxDepth: Int = default, maxItems: Int = default) -> T | |
> | |
10613c10707 | |
< public func isUniquelyReferencedNonObjC<T : AnyObject>(inout object: T?) -> Bool | |
--- | |
> public func isUniquelyReferencedNonObjC<T : AnyObject>(inout object: T) -> Bool | |
10638c10732 | |
< public func isUniquelyReferencedNonObjC<T : AnyObject>(inout object: T) -> Bool | |
--- | |
> public func isUniquelyReferencedNonObjC<T : AnyObject>(inout object: T?) -> Bool | |
10663c10757 | |
< /// func g(x: UInt64) { f(numericCast(x)) } | |
--- | |
> /// func g(x: Int64) { f(numericCast(x)) } | |
10665c10759 | |
< public func numericCast<T : UnsignedIntegerType, U : _SignedIntegerType>(x: T) -> U | |
--- | |
> public func numericCast<T : _SignedIntegerType, U : _SignedIntegerType>(x: T) -> U | |
10674c10768 | |
< /// func g(x: Int64) { f(numericCast(x)) } | |
--- | |
> /// func g(x: UInt64) { f(numericCast(x)) } | |
10676c10770 | |
< public func numericCast<T : _SignedIntegerType, U : UnsignedIntegerType>(x: T) -> U | |
--- | |
> public func numericCast<T : UnsignedIntegerType, U : UnsignedIntegerType>(x: T) -> U | |
10685c10779 | |
< /// func g(x: UInt64) { f(numericCast(x)) } | |
--- | |
> /// func g(x: Int64) { f(numericCast(x)) } | |
10687c10781 | |
< public func numericCast<T : UnsignedIntegerType, U : UnsignedIntegerType>(x: T) -> U | |
--- | |
> public func numericCast<T : _SignedIntegerType, U : UnsignedIntegerType>(x: T) -> U | |
10696c10790 | |
< /// func g(x: Int64) { f(numericCast(x)) } | |
--- | |
> /// func g(x: UInt64) { f(numericCast(x)) } | |
10698c10792 | |
< public func numericCast<T : _SignedIntegerType, U : _SignedIntegerType>(x: T) -> U | |
--- | |
> public func numericCast<T : UnsignedIntegerType, U : _SignedIntegerType>(x: T) -> U | |
10736c10830,10831 | |
< /// `separator` and terminated by `terminator`, into `output`. | |
--- | |
> /// `separator` and terminated by `terminator`, into the standard | |
> /// output. | |
10741c10836 | |
< /// - Note: To print without a trailing newline, pass `terminator: ""` | |
--- | |
> /// - Note: to print without a trailing newline, pass `terminator: ""` | |
10745c10840 | |
< public func print<Target : OutputStreamType>(items: Any..., separator: String = default, terminator: String = default, inout toStream output: Target) | |
--- | |
> public func print(items: Any..., separator: String = default, terminator: String = default) | |
10748,10749c10843 | |
< /// `separator` and terminated by `terminator`, into the standard | |
< /// output. | |
--- | |
> /// `separator` and terminated by `terminator`, into `output`. | |
10754c10848 | |
< /// - Note: To print without a trailing newline, pass `terminator: ""` | |
--- | |
> /// - Note: to print without a trailing newline, pass `terminator: ""` | |
10758c10852 | |
< public func print(items: Any..., separator: String = default, terminator: String = default) | |
--- | |
> public func print<Target : OutputStreamType>(items: Any..., separator: String = default, terminator: String = default, inout toStream output: Target) | |
10807c10901 | |
< public func transcode<Input : GeneratorType, InputEncoding : UnicodeCodecType, OutputEncoding : UnicodeCodecType where InputEncoding.CodeUnit == Input.Element>(inputEncoding: InputEncoding.Type, _ outputEncoding: OutputEncoding.Type, _ input: Input, _ output: (OutputEncoding.CodeUnit) -> Void, stopOnError: Bool) -> Bool | |
--- | |
> public func transcode<Input : GeneratorType, InputEncoding : UnicodeCodecType, OutputEncoding : UnicodeCodecType where InputEncoding.CodeUnit == Input.Element>(inputEncoding: InputEncoding.Type, _ outputEncoding: OutputEncoding.Type, _ input: Input, _ output: (OutputEncoding.CodeUnit) -> (), stopOnError: Bool) -> Bool | |
10850,10853d10943 | |
< /// Evaluate `f()` and return its result, ensuring that `x` is not | |
< /// destroyed before f returns. | |
< public func withExtendedLifetime<T, Result>(x: T, @noescape _ f: () throws -> Result) rethrows -> Result | |
< | |
10857a10948,10951 | |
> /// Evaluate `f()` and return its result, ensuring that `x` is not | |
> /// destroyed before f returns. | |
> public func withExtendedLifetime<T, Result>(x: T, @noescape _ f: () throws -> Result) rethrows -> Result | |
> | |
10863,10865d10956 | |
< /// Like `withUnsafeMutablePointer`, but passes pointers to `arg0` and `arg1`. | |
< public func withUnsafeMutablePointers<A0, A1, Result>(inout arg0: A0, inout _ arg1: A1, @noescape _ body: (UnsafeMutablePointer<A0>, UnsafeMutablePointer<A1>) throws -> Result) rethrows -> Result | |
< | |
10869a10961,10963 | |
> /// Like `withUnsafeMutablePointer`, but passes pointers to `arg0` and `arg1`. | |
> public func withUnsafeMutablePointers<A0, A1, Result>(inout arg0: A0, inout _ arg1: A1, @noescape _ body: (UnsafeMutablePointer<A0>, UnsafeMutablePointer<A1>) throws -> Result) rethrows -> Result | |
> | |
10874a10969,10971 | |
> /// Like `withUnsafePointer`, but passes pointers to `arg0` and `arg1`. | |
> public func withUnsafePointers<A0, A1, Result>(inout arg0: A0, inout _ arg1: A1, @noescape _ body: (UnsafePointer<A0>, UnsafePointer<A1>) throws -> Result) rethrows -> Result | |
> | |
10879,10880c10976,10977 | |
< /// Like `withUnsafePointer`, but passes pointers to `arg0` and `arg1`. | |
< public func withUnsafePointers<A0, A1, Result>(inout arg0: A0, inout _ arg1: A1, @noescape _ body: (UnsafePointer<A0>, UnsafePointer<A1>) throws -> Result) rethrows -> Result | |
--- | |
> /// Invoke `f` with a C `va_list` argument derived from `args`. | |
> public func withVaList<R>(args: [CVarArgType], @noescape _ f: CVaListPointer -> R) -> R | |
10885,10887d10981 | |
< /// Invoke `f` with a C `va_list` argument derived from `args`. | |
< public func withVaList<R>(args: [CVarArgType], @noescape _ f: CVaListPointer -> R) -> R | |
< | |
10897,10898d10990 | |
< public func |(lhs: UInt16, rhs: UInt16) -> UInt16 | |
< | |
10912a11005,11010 | |
> public func |(lhs: UInt16, rhs: UInt16) -> UInt16 | |
> | |
> public func |=(inout lhs: Int8, rhs: Int8) | |
> | |
> public func |=(inout lhs: UInt8, rhs: UInt8) | |
> | |
10932,10935d11029 | |
< public func |=(inout lhs: Int8, rhs: Int8) | |
< | |
< public func |=(inout lhs: UInt8, rhs: UInt8) | |
< | |
10944,10946c11038 | |
< prefix public func ~(rhs: UInt8) -> UInt8 | |
< | |
< prefix public func ~(rhs: Int8) -> Int8 | |
--- | |
> prefix public func ~(rhs: Int) -> Int | |
10948c11040 | |
< prefix public func ~(rhs: UInt16) -> UInt16 | |
--- | |
> prefix public func ~(rhs: UInt) -> UInt | |
10950c11042 | |
< prefix public func ~(rhs: Int16) -> Int16 | |
--- | |
> prefix public func ~(rhs: Int64) -> Int64 | |
10952c11044 | |
< prefix public func ~(rhs: UInt32) -> UInt32 | |
--- | |
> prefix public func ~(rhs: UInt64) -> UInt64 | |
10956c11048 | |
< prefix public func ~(rhs: UInt) -> UInt | |
--- | |
> prefix public func ~(rhs: Int16) -> Int16 | |
10958c11050 | |
< prefix public func ~(rhs: UInt64) -> UInt64 | |
--- | |
> prefix public func ~(rhs: UInt16) -> UInt16 | |
10960c11052 | |
< prefix public func ~(rhs: Int64) -> Int64 | |
--- | |
> prefix public func ~(rhs: Int8) -> Int8 | |
10962c11054,11056 | |
< prefix public func ~(rhs: Int) -> Int | |
--- | |
> prefix public func ~(rhs: UInt8) -> UInt8 | |
> | |
> prefix public func ~(rhs: UInt32) -> UInt32 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
infix operator %= { | |
associativity right | |
precedence 90 | |
assignment | |
} | |
infix operator % { | |
associativity left | |
precedence 150 | |
} | |
infix operator += { | |
associativity right | |
precedence 90 | |
assignment | |
} | |
infix operator -= { | |
associativity right | |
precedence 90 | |
assignment | |
} | |
infix operator ... { | |
associativity none | |
precedence 135 | |
} | |
infix operator >>= { | |
associativity right | |
precedence 90 | |
assignment | |
} | |
infix operator /= { | |
associativity right | |
precedence 90 | |
assignment | |
} | |
infix operator <= { | |
associativity none | |
precedence 130 | |
} | |
infix operator && { | |
associativity left | |
precedence 120 | |
} | |
infix operator &* { | |
associativity left | |
precedence 150 | |
} | |
infix operator << { | |
associativity none | |
precedence 160 | |
} | |
infix operator &+ { | |
associativity left | |
precedence 140 | |
} | |
infix operator > { | |
associativity none | |
precedence 130 | |
} | |
infix operator &- { | |
associativity left | |
precedence 140 | |
} | |
infix operator === { | |
associativity none | |
precedence 130 | |
} | |
infix operator ..< { | |
associativity none | |
precedence 135 | |
} | |
infix operator == { | |
associativity none | |
precedence 130 | |
} | |
infix operator ^= { | |
associativity right | |
precedence 90 | |
assignment | |
} | |
infix operator ?? { | |
associativity right | |
precedence 131 | |
} | |
infix operator ^ { | |
associativity left | |
precedence 140 | |
} | |
infix operator || { | |
associativity left | |
precedence 110 | |
} | |
infix operator &= { | |
associativity right | |
precedence 90 | |
assignment | |
} | |
infix operator != { | |
associativity none | |
precedence 130 | |
} | |
infix operator >> { | |
associativity none | |
precedence 160 | |
} | |
infix operator |= { | |
associativity right | |
precedence 90 | |
assignment | |
} | |
infix operator & { | |
associativity left | |
precedence 150 | |
} | |
infix operator | { | |
associativity left | |
precedence 140 | |
} | |
infix operator *= { | |
associativity right | |
precedence 90 | |
assignment | |
} | |
infix operator < { | |
associativity none | |
precedence 130 | |
} | |
infix operator * { | |
associativity left | |
precedence 150 | |
} | |
infix operator ~= { | |
associativity none | |
precedence 130 | |
} | |
infix operator + { | |
associativity left | |
precedence 140 | |
} | |
infix operator ~> { | |
associativity left | |
precedence 255 | |
} | |
infix operator !== { | |
associativity none | |
precedence 130 | |
} | |
infix operator - { | |
associativity left | |
precedence 140 | |
} | |
infix operator / { | |
associativity left | |
precedence 150 | |
} | |
infix operator >= { | |
associativity none | |
precedence 130 | |
} | |
infix operator <<= { | |
associativity right | |
precedence 90 | |
assignment | |
} | |
prefix operator - { | |
} | |
prefix operator + { | |
} | |
prefix operator ++ { | |
} | |
prefix operator ! { | |
} | |
prefix operator -- { | |
} | |
prefix operator ~ { | |
} | |
postfix operator ++ { | |
} | |
postfix operator -- { | |
} | |
/// Return the result of inverting `a`'s logic value. | |
@warn_unused_result | |
prefix public func !<T : BooleanType>(a: T) -> Bool | |
@warn_unused_result | |
prefix public func !(a: Bool) -> Bool | |
@warn_unused_result | |
public func !=<T>(lhs: T?, rhs: _OptionalNilComparisonType) -> Bool | |
/// Returns true if the arrays do not contain the same elements. | |
@warn_unused_result | |
public func !=<Element : Equatable>(lhs: ContiguousArray<Element>, rhs: ContiguousArray<Element>) -> Bool | |
@warn_unused_result | |
public func !=<T : Equatable>(lhs: T, rhs: T) -> Bool | |
@warn_unused_result | |
public func !=<T>(lhs: _OptionalNilComparisonType, rhs: T?) -> Bool | |
@warn_unused_result | |
public func !=<T : Equatable>(lhs: T?, rhs: T?) -> Bool | |
@warn_unused_result | |
public func !=<Key : Equatable, Value : Equatable>(lhs: [Key : Value], rhs: [Key : Value]) -> Bool | |
@warn_unused_result | |
public func !=(lhs: Float80, rhs: Float80) -> Bool | |
@warn_unused_result | |
public func !=(lhs: Double, rhs: Double) -> Bool | |
@warn_unused_result | |
public func !=(lhs: Float, rhs: Float) -> Bool | |
public func !=(lhs: Int, rhs: Int) -> Bool | |
public func !=(lhs: UInt, rhs: UInt) -> Bool | |
public func !=(lhs: Int64, rhs: Int64) -> Bool | |
public func !=(lhs: UInt64, rhs: UInt64) -> Bool | |
public func !=(lhs: Int32, rhs: Int32) -> Bool | |
public func !=(lhs: UInt32, rhs: UInt32) -> Bool | |
public func !=(lhs: Int16, rhs: Int16) -> Bool | |
public func !=(lhs: UInt16, rhs: UInt16) -> Bool | |
public func !=(lhs: Int8, rhs: Int8) -> Bool | |
public func !=(lhs: UInt8, rhs: UInt8) -> Bool | |
/// Returns `true` iff `lhs.rawValue != rhs.rawValue`. | |
@warn_unused_result | |
public func !=<T : Equatable where T : RawRepresentable, T.RawValue : Equatable>(lhs: T, rhs: T) -> Bool | |
/// Returns `true` iff `lhs.rawValue != rhs.rawValue`. | |
@warn_unused_result | |
public func !=<T : RawRepresentable where T.RawValue : Equatable>(lhs: T, rhs: T) -> Bool | |
/// Return `false` iff `t0` is identical to `t1`; i.e. if they are both | |
/// `nil` or they both represent the same type. | |
@warn_unused_result | |
public func !=(t0: Any.Type?, t1: Any.Type?) -> Bool | |
/// Returns true if the arrays do not contain the same elements. | |
@warn_unused_result | |
public func !=<Element : Equatable>(lhs: [Element], rhs: [Element]) -> Bool | |
/// Returns true if the arrays do not contain the same elements. | |
@warn_unused_result | |
public func !=<Element : Equatable>(lhs: ArraySlice<Element>, rhs: ArraySlice<Element>) -> Bool | |
/// Returns false iff `lhs` and `rhs` store the same underlying collection. | |
@warn_unused_result | |
public func !==<L : AnyCollectionType, R : AnyCollectionType>(lhs: L, rhs: R) -> Bool | |
@warn_unused_result | |
public func !==(lhs: AnyObject?, rhs: AnyObject?) -> Bool | |
public func %(lhs: Int, rhs: Int) -> Int | |
public func %(lhs: UInt8, rhs: UInt8) -> UInt8 | |
public func %(lhs: Int8, rhs: Int8) -> Int8 | |
public func %(lhs: UInt16, rhs: UInt16) -> UInt16 | |
public func %(lhs: Int16, rhs: Int16) -> Int16 | |
public func %(lhs: UInt32, rhs: UInt32) -> UInt32 | |
public func %(lhs: Int32, rhs: Int32) -> Int32 | |
public func %(lhs: UInt64, rhs: UInt64) -> UInt64 | |
/// Divide `lhs` and `rhs`, returning the remainder and trapping in case of | |
/// arithmetic overflow (except in -Ounchecked builds). | |
@warn_unused_result | |
public func %<T : _IntegerArithmeticType>(lhs: T, rhs: T) -> T | |
public func %(lhs: Int64, rhs: Int64) -> Int64 | |
@warn_unused_result | |
public func %(lhs: Float80, rhs: Float80) -> Float80 | |
@warn_unused_result | |
public func %(lhs: Double, rhs: Double) -> Double | |
public func %(lhs: UInt, rhs: UInt) -> UInt | |
@warn_unused_result | |
public func %(lhs: Float, rhs: Float) -> Float | |
public func %=(inout lhs: Float, rhs: Float) | |
public func %=(inout lhs: Double, rhs: Double) | |
public func %=(inout lhs: Float80, rhs: Float80) | |
/// remainder `lhs` and `rhs` and store the result in `lhs`, trapping in | |
/// case of arithmetic overflow (except in -Ounchecked builds). | |
public func %=<T : _IntegerArithmeticType>(inout lhs: T, rhs: T) | |
public func &(lhs: Int, rhs: Int) -> Int | |
public func &(lhs: UInt, rhs: UInt) -> UInt | |
public func &(lhs: Int64, rhs: Int64) -> Int64 | |
public func &(lhs: UInt64, rhs: UInt64) -> UInt64 | |
public func &(lhs: Int32, rhs: Int32) -> Int32 | |
public func &(lhs: UInt32, rhs: UInt32) -> UInt32 | |
public func &(lhs: Int16, rhs: Int16) -> Int16 | |
public func &(lhs: UInt16, rhs: UInt16) -> UInt16 | |
public func &(lhs: Int8, rhs: Int8) -> Int8 | |
public func &(lhs: UInt8, rhs: UInt8) -> UInt8 | |
@warn_unused_result | |
public func &&<T : BooleanType>(lhs: T, @autoclosure rhs: () throws -> Bool) rethrows -> Bool | |
/// If `lhs` is `false`, return it. Otherwise, evaluate `rhs` and | |
/// return its `boolValue`. | |
@warn_unused_result | |
public func &&<T : BooleanType, U : BooleanType>(lhs: T, @autoclosure rhs: () throws -> U) rethrows -> Bool | |
/// multiply `lhs` and `rhs`, silently discarding any overflow. | |
@warn_unused_result | |
public func &*<T : _IntegerArithmeticType>(lhs: T, rhs: T) -> T | |
/// add `lhs` and `rhs`, silently discarding any overflow. | |
@warn_unused_result | |
public func &+<T : _IntegerArithmeticType>(lhs: T, rhs: T) -> T | |
/// subtract `lhs` and `rhs`, silently discarding any overflow. | |
@warn_unused_result | |
public func &-<T : _IntegerArithmeticType>(lhs: T, rhs: T) -> T | |
public func &=(inout lhs: UInt8, rhs: UInt8) | |
public func &=(inout lhs: Int8, rhs: Int8) | |
public func &=(inout lhs: UInt16, rhs: UInt16) | |
public func &=(inout lhs: Int16, rhs: Int16) | |
public func &=(inout lhs: UInt32, rhs: UInt32) | |
public func &=(inout lhs: Int32, rhs: Int32) | |
public func &=(inout lhs: UInt64, rhs: UInt64) | |
public func &=(inout lhs: Int64, rhs: Int64) | |
public func &=(inout lhs: UInt, rhs: UInt) | |
public func &=(inout lhs: Int, rhs: Int) | |
@warn_unused_result | |
public func &=<T : BitwiseOperationsType>(inout lhs: T, rhs: T) | |
public func *(lhs: UInt8, rhs: UInt8) -> UInt8 | |
/// Multiply `lhs` and `rhs`, returning a result and trapping in case of | |
/// arithmetic overflow (except in -Ounchecked builds). | |
@warn_unused_result | |
public func *<T : _IntegerArithmeticType>(lhs: T, rhs: T) -> T | |
@warn_unused_result | |
public func *(lhs: Float80, rhs: Float80) -> Float80 | |
@warn_unused_result | |
public func *(lhs: Double, rhs: Double) -> Double | |
@warn_unused_result | |
public func *(lhs: Float, rhs: Float) -> Float | |
public func *(lhs: Int, rhs: Int) -> Int | |
public func *(lhs: UInt, rhs: UInt) -> UInt | |
public func *(lhs: Int64, rhs: Int64) -> Int64 | |
public func *(lhs: UInt64, rhs: UInt64) -> UInt64 | |
public func *(lhs: Int32, rhs: Int32) -> Int32 | |
public func *(lhs: UInt32, rhs: UInt32) -> UInt32 | |
public func *(lhs: Int16, rhs: Int16) -> Int16 | |
public func *(lhs: UInt16, rhs: UInt16) -> UInt16 | |
public func *(lhs: Int8, rhs: Int8) -> Int8 | |
public func *=(inout lhs: Int8, rhs: Int8) | |
public func *=(inout lhs: UInt16, rhs: UInt16) | |
public func *=(inout lhs: Int16, rhs: Int16) | |
public func *=(inout lhs: UInt32, rhs: UInt32) | |
public func *=(inout lhs: Int32, rhs: Int32) | |
public func *=(inout lhs: UInt8, rhs: UInt8) | |
public func *=(inout lhs: Int64, rhs: Int64) | |
public func *=(inout lhs: UInt, rhs: UInt) | |
public func *=(inout lhs: Int, rhs: Int) | |
public func *=(inout lhs: Float, rhs: Float) | |
public func *=(inout lhs: Double, rhs: Double) | |
public func *=(inout lhs: Float80, rhs: Float80) | |
/// multiply `lhs` and `rhs` and store the result in `lhs`, trapping in | |
/// case of arithmetic overflow (except in -Ounchecked builds). | |
public func *=<T : _IntegerArithmeticType>(inout lhs: T, rhs: T) | |
public func *=(inout lhs: UInt64, rhs: UInt64) | |
@warn_unused_result | |
public func +<C : RangeReplaceableCollectionType, S : SequenceType where S.Generator.Element == C.Generator.Element>(lhs: C, rhs: S) -> C | |
prefix public func +<T : SignedNumberType>(x: T) -> T | |
/// Add `lhs` and `rhs`, returning a result and trapping in case of | |
/// arithmetic overflow (except in -Ounchecked builds). | |
@warn_unused_result | |
public func +<T : _IntegerArithmeticType>(lhs: T, rhs: T) -> T | |
@warn_unused_result | |
public func +(lhs: Float80, rhs: Float80) -> Float80 | |
public func +(lhs: UInt32, rhs: UInt32) -> UInt32 | |
@warn_unused_result | |
prefix public func +(x: Float80) -> Float80 | |
@warn_unused_result | |
public func +(lhs: Double, rhs: Double) -> Double | |
public func +(lhs: UInt16, rhs: UInt16) -> UInt16 | |
public func +(lhs: Int16, rhs: Int16) -> Int16 | |
@warn_unused_result | |
prefix public func +(x: Double) -> Double | |
@warn_unused_result | |
public func +(lhs: Float, rhs: Float) -> Float | |
public func +(lhs: Int8, rhs: Int8) -> Int8 | |
public func +(lhs: Int32, rhs: Int32) -> Int32 | |
public func +(lhs: UInt8, rhs: UInt8) -> UInt8 | |
@warn_unused_result | |
public func +<Memory>(lhs: Int, rhs: UnsafePointer<Memory>) -> UnsafePointer<Memory> | |
@warn_unused_result | |
public func +<Memory>(lhs: UnsafePointer<Memory>, rhs: Int) -> UnsafePointer<Memory> | |
public func +(lhs: UInt64, rhs: UInt64) -> UInt64 | |
public func +(lhs: Int64, rhs: Int64) -> Int64 | |
@warn_unused_result | |
public func +<Memory>(lhs: Int, rhs: UnsafeMutablePointer<Memory>) -> UnsafeMutablePointer<Memory> | |
@warn_unused_result | |
public func +<Memory>(lhs: UnsafeMutablePointer<Memory>, rhs: Int) -> UnsafeMutablePointer<Memory> | |
@warn_unused_result | |
prefix public func +(x: Float) -> Float | |
public func +(lhs: Int, rhs: Int) -> Int | |
@warn_unused_result | |
public func +(lhs: String, rhs: String) -> String | |
public func +<T : UnsignedIntegerType>(lhs: T._DisallowMixedSignArithmetic, rhs: T) -> T | |
public func +<T : UnsignedIntegerType>(lhs: T, rhs: T._DisallowMixedSignArithmetic) -> T | |
@warn_unused_result | |
public func +<T : Strideable>(lhs: T.Stride, rhs: T) -> T | |
@warn_unused_result | |
public func +<T : Strideable>(lhs: T, rhs: T.Stride) -> T | |
@warn_unused_result | |
public func +<RRC1 : RangeReplaceableCollectionType, RRC2 : RangeReplaceableCollectionType where RRC1.Generator.Element == RRC2.Generator.Element>(lhs: RRC1, rhs: RRC2) -> RRC1 | |
@warn_unused_result | |
public func +<C : RangeReplaceableCollectionType, S : CollectionType where S.Generator.Element == C.Generator.Element>(lhs: C, rhs: S) -> C | |
public func +(lhs: UInt, rhs: UInt) -> UInt | |
@warn_unused_result | |
public func +<C : RangeReplaceableCollectionType, S : SequenceType where S.Generator.Element == C.Generator.Element>(lhs: S, rhs: C) -> C | |
postfix public func ++(inout lhs: Double) -> Double | |
prefix public func ++(inout rhs: Float80) -> Float80 | |
postfix public func ++(inout lhs: Float80) -> Float80 | |
/// Replace `i` with its `successor()` and return the updated value of | |
/// `i`. | |
prefix public func ++<T : _Incrementable>(inout i: T) -> T | |
/// Replace `i` with its `successor()` and return the original | |
/// value of `i`. | |
postfix public func ++<T : _Incrementable>(inout i: T) -> T | |
prefix public func ++(inout rhs: Double) -> Double | |
postfix public func ++(inout lhs: Float) -> Float | |
prefix public func ++(inout rhs: Float) -> Float | |
postfix public func ++(inout x: Int) -> Int | |
prefix public func ++(inout x: Int) -> Int | |
postfix public func ++(inout x: UInt) -> UInt | |
prefix public func ++(inout x: UInt) -> UInt | |
postfix public func ++(inout x: Int64) -> Int64 | |
prefix public func ++(inout x: Int64) -> Int64 | |
postfix public func ++(inout x: UInt64) -> UInt64 | |
prefix public func ++(inout x: UInt64) -> UInt64 | |
postfix public func ++(inout x: Int32) -> Int32 | |
prefix public func ++(inout x: Int32) -> Int32 | |
postfix public func ++(inout x: UInt32) -> UInt32 | |
prefix public func ++(inout x: UInt32) -> UInt32 | |
postfix public func ++(inout x: UInt8) -> UInt8 | |
prefix public func ++(inout x: UInt8) -> UInt8 | |
postfix public func ++(inout x: Int16) -> Int16 | |
prefix public func ++(inout x: Int16) -> Int16 | |
postfix public func ++(inout x: UInt16) -> UInt16 | |
postfix public func ++(inout x: Int8) -> Int8 | |
prefix public func ++(inout x: Int8) -> Int8 | |
prefix public func ++(inout x: UInt16) -> UInt16 | |
public func +=(inout lhs: UInt32, rhs: UInt32) | |
public func +=<Memory>(inout lhs: UnsafePointer<Memory>, rhs: Int) | |
public func +=(inout lhs: Int16, rhs: Int16) | |
public func +=(inout lhs: UInt16, rhs: UInt16) | |
public func +=(inout lhs: Int8, rhs: Int8) | |
public func +=(inout lhs: UInt8, rhs: UInt8) | |
/// Append the elements of `rhs` to `lhs`. | |
public func +=<Element, C : CollectionType where C.Generator.Element == Element>(inout lhs: _ContiguousArrayBuffer<Element>, rhs: C) | |
/// Extend `lhs` with the elements of `rhs`. | |
public func +=<Element, C : CollectionType where C.Generator.Element == Element>(inout lhs: [Element], rhs: C) | |
/// Extend `lhs` with the elements of `rhs`. | |
public func +=<Element, S : SequenceType where S.Generator.Element == Element>(inout lhs: [Element], rhs: S) | |
/// Extend `lhs` with the elements of `rhs`. | |
public func +=<Element, C : CollectionType where C.Generator.Element == Element>(inout lhs: ArraySlice<Element>, rhs: C) | |
/// Extend `lhs` with the elements of `rhs`. | |
public func +=<Element, S : SequenceType where S.Generator.Element == Element>(inout lhs: ArraySlice<Element>, rhs: S) | |
/// Extend `lhs` with the elements of `rhs`. | |
public func +=<Element, C : CollectionType where C.Generator.Element == Element>(inout lhs: ContiguousArray<Element>, rhs: C) | |
/// Extend `lhs` with the elements of `rhs`. | |
public func +=<Element, S : SequenceType where S.Generator.Element == Element>(inout lhs: ContiguousArray<Element>, rhs: S) | |
public func +=(inout lhs: Int32, rhs: Int32) | |
public func +=(inout lhs: UInt64, rhs: UInt64) | |
public func +=(inout lhs: Int64, rhs: Int64) | |
public func +=(inout lhs: UInt, rhs: UInt) | |
public func +=(inout lhs: Int, rhs: Int) | |
public func +=(inout lhs: Float, rhs: Float) | |
public func +=(inout lhs: Double, rhs: Double) | |
public func +=(inout lhs: Float80, rhs: Float80) | |
/// add `lhs` and `rhs` and store the result in `lhs`, trapping in | |
/// case of arithmetic overflow (except in -Ounchecked builds). | |
public func +=<T : _IntegerArithmeticType>(inout lhs: T, rhs: T) | |
public func +=<T : Strideable>(inout lhs: T, rhs: T.Stride) | |
public func +=<T : UnsignedIntegerType>(inout lhs: T, rhs: T._DisallowMixedSignArithmetic) | |
public func +=(inout lhs: String, rhs: String) | |
public func +=<Memory>(inout lhs: UnsafeMutablePointer<Memory>, rhs: Int) | |
public func -(lhs: UInt8, rhs: UInt8) -> UInt8 | |
@warn_unused_result | |
public func -<Memory>(lhs: UnsafeMutablePointer<Memory>, rhs: Int) -> UnsafeMutablePointer<Memory> | |
@warn_unused_result | |
public func -<Memory>(lhs: UnsafePointer<Memory>, rhs: UnsafePointer<Memory>) -> Int | |
public func -(lhs: Int8, rhs: Int8) -> Int8 | |
@warn_unused_result | |
public func -<Memory>(lhs: UnsafePointer<Memory>, rhs: Int) -> UnsafePointer<Memory> | |
public func -(lhs: UInt16, rhs: UInt16) -> UInt16 | |
public func -(lhs: Int16, rhs: Int16) -> Int16 | |
public func -(lhs: UInt32, rhs: UInt32) -> UInt32 | |
public func -(lhs: Int32, rhs: Int32) -> Int32 | |
public func -(lhs: UInt64, rhs: UInt64) -> UInt64 | |
public func -(lhs: Int64, rhs: Int64) -> Int64 | |
public func -(lhs: UInt, rhs: UInt) -> UInt | |
public func -(lhs: Int, rhs: Int) -> Int | |
@warn_unused_result | |
prefix public func -(x: Float) -> Float | |
@warn_unused_result | |
public func -(lhs: Float, rhs: Float) -> Float | |
@warn_unused_result | |
prefix public func -(x: Double) -> Double | |
@warn_unused_result | |
public func -(lhs: Double, rhs: Double) -> Double | |
@warn_unused_result | |
prefix public func -(x: Float80) -> Float80 | |
@warn_unused_result | |
public func -(lhs: Float80, rhs: Float80) -> Float80 | |
/// Subtract `lhs` and `rhs`, returning a result and trapping in case of | |
/// arithmetic overflow (except in -Ounchecked builds). | |
@warn_unused_result | |
public func -<T : _IntegerArithmeticType>(lhs: T, rhs: T) -> T | |
prefix public func -<T : SignedNumberType>(x: T) -> T | |
@warn_unused_result | |
public func -<T : Strideable>(lhs: T, rhs: T.Stride) -> T | |
@warn_unused_result | |
public func -<T : Strideable>(lhs: T, rhs: T) -> T.Stride | |
public func -<T : _DisallowMixedSignArithmetic>(lhs: T, rhs: T._DisallowMixedSignArithmetic) -> T | |
@warn_unused_result | |
public func -<Memory>(lhs: UnsafeMutablePointer<Memory>, rhs: UnsafeMutablePointer<Memory>) -> Int | |
public func -<T : _DisallowMixedSignArithmetic>(lhs: T, rhs: T) -> T._DisallowMixedSignArithmetic | |
prefix public func --(inout x: UInt16) -> UInt16 | |
prefix public func --(inout x: UInt8) -> UInt8 | |
postfix public func --(inout x: Int8) -> Int8 | |
prefix public func --(inout x: Int8) -> Int8 | |
postfix public func --(inout x: UInt8) -> UInt8 | |
postfix public func --(inout x: UInt16) -> UInt16 | |
prefix public func --(inout x: Int16) -> Int16 | |
postfix public func --(inout x: Int16) -> Int16 | |
prefix public func --(inout x: UInt32) -> UInt32 | |
postfix public func --(inout x: UInt32) -> UInt32 | |
prefix public func --(inout x: Int32) -> Int32 | |
postfix public func --(inout x: Int32) -> Int32 | |
prefix public func --(inout x: UInt64) -> UInt64 | |
postfix public func --(inout x: UInt64) -> UInt64 | |
prefix public func --(inout x: Int64) -> Int64 | |
postfix public func --(inout x: Int64) -> Int64 | |
prefix public func --(inout x: UInt) -> UInt | |
postfix public func --(inout x: UInt) -> UInt | |
prefix public func --(inout x: Int) -> Int | |
postfix public func --(inout x: Int) -> Int | |
prefix public func --(inout rhs: Float) -> Float | |
postfix public func --(inout lhs: Float) -> Float | |
prefix public func --(inout rhs: Double) -> Double | |
postfix public func --(inout lhs: Double) -> Double | |
prefix public func --(inout rhs: Float80) -> Float80 | |
postfix public func --(inout lhs: Float80) -> Float80 | |
/// Replace `i` with its `predecessor()` and return the updated value | |
/// of `i`. | |
prefix public func --<T : BidirectionalIndexType>(inout i: T) -> T | |
/// Replace `i` with its `predecessor()` and return the original | |
/// value of `i`. | |
postfix public func --<T : BidirectionalIndexType>(inout i: T) -> T | |
public func -=(inout lhs: Int, rhs: Int) | |
public func -=(inout lhs: Float, rhs: Float) | |
public func -=(inout lhs: Double, rhs: Double) | |
public func -=(inout lhs: Float80, rhs: Float80) | |
public func -=(inout lhs: UInt32, rhs: UInt32) | |
public func -=(inout lhs: Int32, rhs: Int32) | |
public func -=(inout lhs: UInt64, rhs: UInt64) | |
public func -=(inout lhs: Int64, rhs: Int64) | |
public func -=(inout lhs: UInt, rhs: UInt) | |
public func -=<Memory>(inout lhs: UnsafePointer<Memory>, rhs: Int) | |
public func -=<Memory>(inout lhs: UnsafeMutablePointer<Memory>, rhs: Int) | |
public func -=<T : UnsignedIntegerType>(inout lhs: T, rhs: T._DisallowMixedSignArithmetic) | |
public func -=<T : Strideable>(inout lhs: T, rhs: T.Stride) | |
public func -=(inout lhs: Int16, rhs: Int16) | |
/// subtract `lhs` and `rhs` and store the result in `lhs`, trapping in | |
/// case of arithmetic overflow (except in -Ounchecked builds). | |
public func -=<T : _IntegerArithmeticType>(inout lhs: T, rhs: T) | |
public func -=(inout lhs: UInt8, rhs: UInt8) | |
public func -=(inout lhs: Int8, rhs: Int8) | |
public func -=(inout lhs: UInt16, rhs: UInt16) | |
/// Returns a closed interval from `start` through `end`. | |
@warn_unused_result | |
public func ...<Bound : Comparable>(start: Bound, end: Bound) -> ClosedInterval<Bound> | |
/// Forms a closed range that contains both `minimum` and `maximum`. | |
@warn_unused_result | |
public func ...<Pos : ForwardIndexType>(minimum: Pos, maximum: Pos) -> Range<Pos> | |
/// Forms a closed range that contains both `start` and `end`. | |
/// - Requires: `start <= end`. | |
@warn_unused_result | |
public func ...<Pos : ForwardIndexType where Pos : Comparable>(start: Pos, end: Pos) -> Range<Pos> | |
/// Returns a half-open interval from `start` to `end`. | |
@warn_unused_result | |
public func ..<<Bound : Comparable>(start: Bound, end: Bound) -> HalfOpenInterval<Bound> | |
/// Forms a half-open range that contains `minimum`, but not | |
/// `maximum`. | |
@warn_unused_result | |
public func ..<<Pos : ForwardIndexType>(minimum: Pos, maximum: Pos) -> Range<Pos> | |
/// Forms a half-open range that contains `start`, but not `end`. | |
/// | |
/// - Requires: `start <= end`. | |
@warn_unused_result | |
public func ..<<Pos : ForwardIndexType where Pos : Comparable>(start: Pos, end: Pos) -> Range<Pos> | |
/// Divide `lhs` and `rhs`, returning a result and trapping in case of | |
/// arithmetic overflow (except in -Ounchecked builds). | |
@warn_unused_result | |
public func /<T : _IntegerArithmeticType>(lhs: T, rhs: T) -> T | |
@warn_unused_result | |
public func /(lhs: Float80, rhs: Float80) -> Float80 | |
@warn_unused_result | |
public func /(lhs: Double, rhs: Double) -> Double | |
@warn_unused_result | |
public func /(lhs: Float, rhs: Float) -> Float | |
public func /(lhs: Int, rhs: Int) -> Int | |
public func /(lhs: UInt, rhs: UInt) -> UInt | |
public func /(lhs: Int64, rhs: Int64) -> Int64 | |
public func /(lhs: UInt64, rhs: UInt64) -> UInt64 | |
public func /(lhs: Int32, rhs: Int32) -> Int32 | |
public func /(lhs: UInt32, rhs: UInt32) -> UInt32 | |
public func /(lhs: Int16, rhs: Int16) -> Int16 | |
public func /(lhs: UInt16, rhs: UInt16) -> UInt16 | |
public func /(lhs: Int8, rhs: Int8) -> Int8 | |
public func /(lhs: UInt8, rhs: UInt8) -> UInt8 | |
/// divide `lhs` and `rhs` and store the result in `lhs`, trapping in | |
/// case of arithmetic overflow (except in -Ounchecked builds). | |
public func /=<T : _IntegerArithmeticType>(inout lhs: T, rhs: T) | |
public func /=(inout lhs: Float80, rhs: Float80) | |
public func /=(inout lhs: Double, rhs: Double) | |
public func /=(inout lhs: Float, rhs: Float) | |
@warn_unused_result | |
public func <(lhs: Float80, rhs: Float80) -> Bool | |
@warn_unused_result | |
public func <<Memory>(lhs: UnsafePointer<Memory>, rhs: UnsafePointer<Memory>) -> Bool | |
@warn_unused_result | |
public func <(lhs: ObjectIdentifier, rhs: ObjectIdentifier) -> Bool | |
@warn_unused_result | |
public func <<Memory>(lhs: UnsafeMutablePointer<Memory>, rhs: UnsafeMutablePointer<Memory>) -> Bool | |
@warn_unused_result | |
public func <(lhs: UnicodeScalar, rhs: UnicodeScalar) -> Bool | |
@warn_unused_result | |
public func <(lhs: Bit, rhs: Bit) -> Bool | |
@warn_unused_result | |
public func <(lhs: String.UTF16View.Index, rhs: String.UTF16View.Index) -> Bool | |
@warn_unused_result | |
public func <(lhs: String.UnicodeScalarView.Index, rhs: String.UnicodeScalarView.Index) -> Bool | |
@warn_unused_result | |
public func <(lhs: Index, rhs: Index) -> Bool | |
@warn_unused_result | |
public func <(lhs: Character, rhs: Character) -> Bool | |
@warn_unused_result | |
public func <(lhs: String, rhs: String) -> Bool | |
/// Compare two `Strideable`s. | |
public func <<T : Strideable>(x: T, y: T) -> Bool | |
@warn_unused_result | |
public func <<T : Comparable>(lhs: T?, rhs: T?) -> Bool | |
@warn_unused_result | |
public func <<Key : Hashable, Value>(lhs: DictionaryIndex<Key, Value>, rhs: DictionaryIndex<Key, Value>) -> Bool | |
@warn_unused_result | |
public func <<Element : Hashable>(lhs: SetIndex<Element>, rhs: SetIndex<Element>) -> Bool | |
@warn_unused_result | |
public func <(lhs: Double, rhs: Double) -> Bool | |
@warn_unused_result | |
public func <(lhs: Float, rhs: Float) -> Bool | |
public func <(lhs: UInt8, rhs: UInt8) -> Bool | |
public func <(lhs: Int8, rhs: Int8) -> Bool | |
public func <(lhs: UInt16, rhs: UInt16) -> Bool | |
public func <(lhs: Int16, rhs: Int16) -> Bool | |
public func <(lhs: Int, rhs: Int) -> Bool | |
public func <(lhs: UInt, rhs: UInt) -> Bool | |
public func <(lhs: Int64, rhs: Int64) -> Bool | |
public func <(lhs: UInt64, rhs: UInt64) -> Bool | |
public func <(lhs: Int32, rhs: Int32) -> Bool | |
public func <(lhs: UInt32, rhs: UInt32) -> Bool | |
public func <<(lhs: UInt32, rhs: UInt32) -> UInt32 | |
public func <<(lhs: Int32, rhs: Int32) -> Int32 | |
public func <<(lhs: UInt64, rhs: UInt64) -> UInt64 | |
public func <<(lhs: Int64, rhs: Int64) -> Int64 | |
public func <<(lhs: UInt, rhs: UInt) -> UInt | |
public func <<(lhs: Int16, rhs: Int16) -> Int16 | |
public func <<(lhs: UInt16, rhs: UInt16) -> UInt16 | |
public func <<(lhs: Int, rhs: Int) -> Int | |
public func <<(lhs: Int8, rhs: Int8) -> Int8 | |
public func <<(lhs: UInt8, rhs: UInt8) -> UInt8 | |
public func <<=(inout lhs: Int64, rhs: Int64) | |
public func <<=(inout lhs: Int, rhs: Int) | |
public func <<=(inout lhs: UInt, rhs: UInt) | |
public func <<=(inout lhs: UInt64, rhs: UInt64) | |
public func <<=(inout lhs: Int32, rhs: Int32) | |
public func <<=(inout lhs: UInt32, rhs: UInt32) | |
public func <<=(inout lhs: Int16, rhs: Int16) | |
public func <<=(inout lhs: UInt16, rhs: UInt16) | |
public func <<=(inout lhs: Int8, rhs: Int8) | |
public func <<=(inout lhs: UInt8, rhs: UInt8) | |
public func <=(lhs: Int64, rhs: Int64) -> Bool | |
public func <=(lhs: UInt, rhs: UInt) -> Bool | |
public func <=(lhs: UInt8, rhs: UInt8) -> Bool | |
@warn_unused_result | |
public func <=(lhs: Float80, rhs: Float80) -> Bool | |
@warn_unused_result | |
public func <=<T : Comparable>(lhs: T?, rhs: T?) -> Bool | |
public func <=(lhs: UInt64, rhs: UInt64) -> Bool | |
public func <=(lhs: Int8, rhs: Int8) -> Bool | |
public func <=(lhs: UInt16, rhs: UInt16) -> Bool | |
public func <=(lhs: Int, rhs: Int) -> Bool | |
@warn_unused_result | |
public func <=<T : Comparable>(lhs: T, rhs: T) -> Bool | |
public func <=(lhs: Int16, rhs: Int16) -> Bool | |
public func <=(lhs: Int32, rhs: Int32) -> Bool | |
public func <=(lhs: UInt32, rhs: UInt32) -> Bool | |
@warn_unused_result | |
public func <=(lhs: Double, rhs: Double) -> Bool | |
@warn_unused_result | |
public func <=(lhs: Float, rhs: Float) -> Bool | |
@warn_unused_result | |
public func ==<Memory>(lhs: UnsafeMutablePointer<Memory>, rhs: UnsafeMutablePointer<Memory>) -> Bool | |
@warn_unused_result | |
public func ==<Memory>(lhs: UnsafePointer<Memory>, rhs: UnsafePointer<Memory>) -> Bool | |
@warn_unused_result | |
public func ==(lhs: UnicodeScalar, rhs: UnicodeScalar) -> Bool | |
@warn_unused_result | |
public func ==(left: _SwiftNSOperatingSystemVersion, right: _SwiftNSOperatingSystemVersion) -> Bool | |
@warn_unused_result | |
public func ==(lhs: Bit, rhs: Bit) -> Bool | |
public func ==<T : Strideable>(x: T, y: T) -> Bool | |
@warn_unused_result | |
public func ==(lhs: Float80, rhs: Float80) -> Bool | |
@warn_unused_result | |
public func ==<Key : Equatable, Value : Equatable>(lhs: [Key : Value], rhs: [Key : Value]) -> Bool | |
@warn_unused_result | |
public func ==<Element : Hashable>(lhs: Set<Element>, rhs: Set<Element>) -> Bool | |
/// Returns `true` iff `lhs.rawValue == rhs.rawValue`. | |
@warn_unused_result | |
public func ==<T : RawRepresentable where T.RawValue : Equatable>(lhs: T, rhs: T) -> Bool | |
@warn_unused_result | |
public func ==(lhs: Character, rhs: Character) -> Bool | |
@warn_unused_result | |
public func ==(lhs: COpaquePointer, rhs: COpaquePointer) -> Bool | |
/// Return `true` iff `t0` is identical to `t1`; i.e. if they are both | |
/// `nil` or they both represent the same type. | |
@warn_unused_result | |
public func ==(t0: Any.Type?, t1: Any.Type?) -> Bool | |
@warn_unused_result | |
public func ==<Memory>(lhs: AutoreleasingUnsafeMutablePointer<Memory>, rhs: AutoreleasingUnsafeMutablePointer<Memory>) -> Bool | |
@warn_unused_result | |
public func ==(lhs: Bool, rhs: Bool) -> Bool | |
/// Returns true if these arrays contain the same elements. | |
@warn_unused_result | |
public func ==<Element : Equatable>(lhs: [Element], rhs: [Element]) -> Bool | |
/// Returns true if these arrays contain the same elements. | |
@warn_unused_result | |
public func ==<Element : Equatable>(lhs: ArraySlice<Element>, rhs: ArraySlice<Element>) -> Bool | |
/// Returns true if these arrays contain the same elements. | |
@warn_unused_result | |
public func ==<Element : Equatable>(lhs: ContiguousArray<Element>, rhs: ContiguousArray<Element>) -> Bool | |
@warn_unused_result | |
public func ==(lhs: String.UTF8View.Index, rhs: String.UTF8View.Index) -> Bool | |
@warn_unused_result | |
public func ==<T>(lhs: _OptionalNilComparisonType, rhs: T?) -> Bool | |
@warn_unused_result | |
public func ==<T>(lhs: T?, rhs: _OptionalNilComparisonType) -> Bool | |
@warn_unused_result | |
public func ==<Base>(lhs: ReverseIndex<Base>, rhs: ReverseIndex<Base>) -> Bool | |
/// Return true iff `lhs` and `rhs` wrap equal underlying | |
/// `AnyForwardIndex`s. | |
/// | |
/// - Requires: The types of indices wrapped by `lhs` and `rhs` are | |
/// identical. | |
@warn_unused_result | |
public func ==(lhs: AnyForwardIndex, rhs: AnyForwardIndex) -> Bool | |
@warn_unused_result | |
public func ==<Key : Hashable, Value>(lhs: DictionaryIndex<Key, Value>, rhs: DictionaryIndex<Key, Value>) -> Bool | |
/// Return true iff `lhs` and `rhs` wrap equal underlying | |
/// `AnyBidirectionalIndex`s. | |
/// | |
/// - Requires: The types of indices wrapped by `lhs` and `rhs` are | |
/// identical. | |
@warn_unused_result | |
public func ==(lhs: AnyBidirectionalIndex, rhs: AnyBidirectionalIndex) -> Bool | |
@warn_unused_result | |
public func ==(lhs: String, rhs: String) -> Bool | |
@warn_unused_result | |
public func ==(lhs: String.UTF16View.Index, rhs: String.UTF16View.Index) -> Bool | |
@warn_unused_result | |
public func ==(lhs: String.UnicodeScalarView.Index, rhs: String.UnicodeScalarView.Index) -> Bool | |
@warn_unused_result | |
public func ==<T : Equatable>(lhs: T?, rhs: T?) -> Bool | |
public func ==<Value, Element>(lhs: ManagedBufferPointer<Value, Element>, rhs: ManagedBufferPointer<Value, Element>) -> Bool | |
/// Two `ClosedInterval`s are equal if their `start` and `end` are equal. | |
@warn_unused_result | |
public func ==<Bound : Comparable>(lhs: ClosedInterval<Bound>, rhs: ClosedInterval<Bound>) -> Bool | |
@warn_unused_result | |
public func ==<Value, Element>(lhs: _HeapBuffer<Value, Element>, rhs: _HeapBuffer<Value, Element>) -> Bool | |
/// Two `HalfOpenInterval`s are equal if their `start` and `end` are equal. | |
@warn_unused_result | |
public func ==<Bound : Comparable>(lhs: HalfOpenInterval<Bound>, rhs: HalfOpenInterval<Bound>) -> Bool | |
/// Returns `true` iff `lhs` is identical to `rhs`. | |
@warn_unused_result | |
public func ==<Base : CollectionType>(lhs: LazyFilterIndex<Base>, rhs: LazyFilterIndex<Base>) -> Bool | |
@warn_unused_result | |
public func ==<Element>(lhs: Range<Element>, rhs: Range<Element>) -> Bool | |
public func ==(lhs: UInt8, rhs: UInt8) -> Bool | |
public func ==(lhs: Int8, rhs: Int8) -> Bool | |
public func ==(lhs: UInt16, rhs: UInt16) -> Bool | |
public func ==(lhs: Int16, rhs: Int16) -> Bool | |
public func ==(lhs: UInt32, rhs: UInt32) -> Bool | |
public func ==(lhs: Int32, rhs: Int32) -> Bool | |
public func ==(lhs: UInt64, rhs: UInt64) -> Bool | |
public func ==(lhs: Int64, rhs: Int64) -> Bool | |
public func ==(lhs: UInt, rhs: UInt) -> Bool | |
public func ==(lhs: Int, rhs: Int) -> Bool | |
@warn_unused_result | |
public func ==<BaseElements>(lhs: FlattenCollectionIndex<BaseElements>, rhs: FlattenCollectionIndex<BaseElements>) -> Bool | |
@warn_unused_result | |
public func ==<BaseElements>(lhs: FlattenBidirectionalCollectionIndex<BaseElements>, rhs: FlattenBidirectionalCollectionIndex<BaseElements>) -> Bool | |
@warn_unused_result | |
public func ==(lhs: Index, rhs: Index) -> Bool | |
@warn_unused_result | |
public func ==(x: ObjectIdentifier, y: ObjectIdentifier) -> Bool | |
@warn_unused_result | |
public func ==(lhs: Float, rhs: Float) -> Bool | |
@warn_unused_result | |
public func ==(lhs: Double, rhs: Double) -> Bool | |
@warn_unused_result | |
public func ==<Element : Hashable>(lhs: SetIndex<Element>, rhs: SetIndex<Element>) -> Bool | |
/// Return true iff `lhs` and `rhs` wrap equal underlying | |
/// `AnyRandomAccessIndex`s. | |
/// | |
/// - Requires: The types of indices wrapped by `lhs` and `rhs` are | |
/// identical. | |
@warn_unused_result | |
public func ==(lhs: AnyRandomAccessIndex, rhs: AnyRandomAccessIndex) -> Bool | |
public func ==(lhs: FloatingPointClassification, rhs: FloatingPointClassification) -> Bool | |
@warn_unused_result | |
public func ===(lhs: AnyObject?, rhs: AnyObject?) -> Bool | |
/// Return true iff `lhs` and `rhs` store the same underlying collection. | |
@warn_unused_result | |
public func ===<L : AnyCollectionType, R : AnyCollectionType>(lhs: L, rhs: R) -> Bool | |
public func >(lhs: Int64, rhs: Int64) -> Bool | |
public func >(lhs: UInt, rhs: UInt) -> Bool | |
public func >(lhs: Int, rhs: Int) -> Bool | |
@warn_unused_result | |
public func >(lhs: Float, rhs: Float) -> Bool | |
@warn_unused_result | |
public func >(lhs: Double, rhs: Double) -> Bool | |
public func >(lhs: UInt64, rhs: UInt64) -> Bool | |
@warn_unused_result | |
public func ><T : Comparable>(lhs: T, rhs: T) -> Bool | |
@warn_unused_result | |
public func ><T : Comparable>(lhs: T?, rhs: T?) -> Bool | |
@warn_unused_result | |
public func >(lhs: Float80, rhs: Float80) -> Bool | |
public func >(lhs: Int32, rhs: Int32) -> Bool | |
public func >(lhs: UInt32, rhs: UInt32) -> Bool | |
public func >(lhs: Int16, rhs: Int16) -> Bool | |
public func >(lhs: UInt16, rhs: UInt16) -> Bool | |
public func >(lhs: UInt8, rhs: UInt8) -> Bool | |
public func >(lhs: Int8, rhs: Int8) -> Bool | |
public func >=(lhs: Int8, rhs: Int8) -> Bool | |
@warn_unused_result | |
public func >=<T : Comparable>(lhs: T, rhs: T) -> Bool | |
@warn_unused_result | |
public func >=<T : Comparable>(lhs: T?, rhs: T?) -> Bool | |
@warn_unused_result | |
public func >=(lhs: Float80, rhs: Float80) -> Bool | |
@warn_unused_result | |
public func >=(lhs: Double, rhs: Double) -> Bool | |
@warn_unused_result | |
public func >=(lhs: Float, rhs: Float) -> Bool | |
public func >=(lhs: UInt8, rhs: UInt8) -> Bool | |
public func >=(lhs: Int, rhs: Int) -> Bool | |
public func >=(lhs: UInt, rhs: UInt) -> Bool | |
public func >=(lhs: Int64, rhs: Int64) -> Bool | |
public func >=(lhs: UInt64, rhs: UInt64) -> Bool | |
public func >=(lhs: UInt16, rhs: UInt16) -> Bool | |
public func >=(lhs: Int16, rhs: Int16) -> Bool | |
public func >=(lhs: UInt32, rhs: UInt32) -> Bool | |
public func >=(lhs: Int32, rhs: Int32) -> Bool | |
public func >>(lhs: Int, rhs: Int) -> Int | |
public func >>(lhs: UInt, rhs: UInt) -> UInt | |
public func >>(lhs: Int64, rhs: Int64) -> Int64 | |
public func >>(lhs: UInt64, rhs: UInt64) -> UInt64 | |
public func >>(lhs: Int32, rhs: Int32) -> Int32 | |
public func >>(lhs: UInt32, rhs: UInt32) -> UInt32 | |
public func >>(lhs: Int16, rhs: Int16) -> Int16 | |
public func >>(lhs: UInt16, rhs: UInt16) -> UInt16 | |
public func >>(lhs: Int8, rhs: Int8) -> Int8 | |
public func >>(lhs: UInt8, rhs: UInt8) -> UInt8 | |
public func >>=(inout lhs: Int8, rhs: Int8) | |
public func >>=(inout lhs: UInt16, rhs: UInt16) | |
public func >>=(inout lhs: Int16, rhs: Int16) | |
public func >>=(inout lhs: UInt32, rhs: UInt32) | |
public func >>=(inout lhs: Int32, rhs: Int32) | |
public func >>=(inout lhs: UInt64, rhs: UInt64) | |
public func >>=(inout lhs: Int64, rhs: Int64) | |
public func >>=(inout lhs: UInt, rhs: UInt) | |
public func >>=(inout lhs: Int, rhs: Int) | |
public func >>=(inout lhs: UInt8, rhs: UInt8) | |
@warn_unused_result | |
public func ??<T>(optional: T?, @autoclosure defaultValue: () throws -> T) rethrows -> T | |
@warn_unused_result | |
public func ??<T>(optional: T?, @autoclosure defaultValue: () throws -> T?) rethrows -> T? | |
/// A type that supports an "absolute value" function. | |
public protocol AbsoluteValuable : SignedNumberType { | |
/// Returns the absolute value of `x`. | |
@warn_unused_result | |
public static func abs(x: Self) -> Self | |
} | |
/// The protocol to which all types implicitly conform. | |
public typealias Any = protocol<> | |
/// A type-erased wrapper over any collection with indices that | |
/// support bidirectional traversal. | |
/// | |
/// Forwards operations to an arbitrary underlying collection having the | |
/// same `Element` type, hiding the specifics of the underlying | |
/// `CollectionType`. | |
/// | |
/// - SeeAlso: `AnyRandomAccessType`, `AnyForwardType` | |
public struct AnyBidirectionalCollection<Element> : AnyCollectionType { | |
/// Create an `AnyBidirectionalCollection` that stores `base` as its | |
/// underlying collection. | |
/// | |
/// - Complexity: O(1). | |
public init<C : CollectionType where C.Index : BidirectionalIndexType, C.Generator.Element == Element>(_ base: C) | |
/// Create an `AnyBidirectionalCollection` having the same underlying | |
/// collection as `other`. | |
/// | |
/// - Postcondition: The result is `===` to `other`. | |
/// | |
/// - Complexity: O(1). | |
public init(_ other: AnyBidirectionalCollection<Element>) | |
/// Create an `AnyBidirectionalCollection` that stores `base` as its | |
/// underlying collection. | |
/// | |
/// - Complexity: O(1). | |
public init<C : CollectionType where C.Index : RandomAccessIndexType, C.Generator.Element == Element>(_ base: C) | |
/// Create an `AnyBidirectionalCollection` having the same underlying | |
/// collection as `other`. | |
/// | |
/// - Postcondition: The result is `===` to `other`. | |
/// | |
/// - Complexity: O(1). | |
public init(_ other: AnyRandomAccessCollection<Element>) | |
/// If the indices of the underlying collection stored by `other` | |
/// satisfy `BidirectionalIndexType`, create an | |
/// `AnyBidirectionalCollection` having the same underlying | |
/// collection as `other`. Otherwise, the result is `nil`. | |
/// | |
/// - Complexity: O(1). | |
public init?(_ other: AnyForwardCollection<Element>) | |
/// Returns a *generator* over the elements of this *collection*. | |
/// | |
/// - Complexity: O(1). | |
public func generate() -> AnyGenerator<Element> | |
/// The position of the first element in a non-empty collection. | |
/// | |
/// In an empty collection, `startIndex == endIndex`. | |
public var startIndex: AnyBidirectionalIndex { get } | |
/// The collection's "past the end" position. | |
/// | |
/// `endIndex` is not a valid argument to `subscript`, and is always | |
/// reachable from `startIndex` by zero or more applications of | |
/// `successor()`. | |
public var endIndex: AnyBidirectionalIndex { get } | |
public subscript (position: AnyBidirectionalIndex) -> Element { get } | |
/// Return the number of elements. | |
/// | |
/// - Complexity: O(N). | |
public var count: IntMax { get } | |
} | |
extension AnyBidirectionalCollection { | |
public func underestimateCount() -> Int | |
} | |
/// A wrapper over an underlying `BidirectionalIndexType` that hides | |
/// the specific underlying type. | |
/// | |
/// - SeeAlso: `AnyBidirectionalCollection` | |
public struct AnyBidirectionalIndex : BidirectionalIndexType { | |
public typealias Distance = IntMax | |
/// Wrap and forward operations to `base`. | |
public init<BaseIndex : BidirectionalIndexType>(_ base: BaseIndex) | |
/// Return the next consecutive value in a discrete sequence of | |
/// `AnyBidirectionalIndex` values. | |
/// | |
/// - Requires: `self` has a well-defined successor. | |
public func successor() -> AnyBidirectionalIndex | |
/// Return the previous consecutive value in a discrete sequence of | |
/// `AnyBidirectionalIndex` values. | |
/// | |
/// - Requires: `self` has a well-defined predecessor. | |
public func predecessor() -> AnyBidirectionalIndex | |
} | |
/// The protocol to which all class types implicitly conform. | |
/// | |
/// When used as a concrete type, all known `@objc` `class` methods and | |
/// properties are available, as implicitly-unwrapped-optional methods | |
/// and properties respectively, on each instance of `AnyClass`. For | |
/// example: | |
/// | |
/// class C { | |
/// @objc class var cValue: Int { return 42 } | |
/// } | |
/// | |
/// // If x has an @objc cValue: Int, return its value. | |
/// // Otherwise, return nil. | |
/// func getCValue(x: AnyClass) -> Int? { | |
/// return x.cValue // <=== | |
/// } | |
/// | |
/// - SeeAlso: `AnyObject` | |
public typealias AnyClass = AnyObject.Type | |
/// A protocol for `AnyForwardCollection<Element>`, | |
/// `AnyBidirectionalCollection<Element>`, and | |
/// `AnyRandomAccessCollection<Element>`. | |
/// | |
/// This protocol can be considered an implementation detail of the | |
/// `===` and `!==` implementations for these types. | |
public protocol AnyCollectionType : CollectionType { | |
} | |
/// A type-erased wrapper over any collection with indices that | |
/// support forward traversal. | |
/// | |
/// Forwards operations to an arbitrary underlying collection having the | |
/// same `Element` type, hiding the specifics of the underlying | |
/// `CollectionType`. | |
/// | |
/// - SeeAlso: `AnyBidirectionalType`, `AnyRandomAccessType` | |
public struct AnyForwardCollection<Element> : AnyCollectionType { | |
/// Create an `AnyForwardCollection` that stores `base` as its | |
/// underlying collection. | |
/// | |
/// - Complexity: O(1). | |
public init<C : CollectionType where C.Index : ForwardIndexType, C.Generator.Element == Element>(_ base: C) | |
/// Create an `AnyForwardCollection` having the same underlying | |
/// collection as `other`. | |
/// | |
/// - Postcondition: The result is `===` to `other`. | |
/// | |
/// - Complexity: O(1). | |
public init(_ other: AnyForwardCollection<Element>) | |
/// Create an `AnyForwardCollection` that stores `base` as its | |
/// underlying collection. | |
/// | |
/// - Complexity: O(1). | |
public init<C : CollectionType where C.Index : BidirectionalIndexType, C.Generator.Element == Element>(_ base: C) | |
/// Create an `AnyForwardCollection` having the same underlying | |
/// collection as `other`. | |
/// | |
/// - Postcondition: The result is `===` to `other`. | |
/// | |
/// - Complexity: O(1). | |
public init(_ other: AnyBidirectionalCollection<Element>) | |
/// Create an `AnyForwardCollection` that stores `base` as its | |
/// underlying collection. | |
/// | |
/// - Complexity: O(1). | |
public init<C : CollectionType where C.Index : RandomAccessIndexType, C.Generator.Element == Element>(_ base: C) | |
/// Create an `AnyForwardCollection` having the same underlying | |
/// collection as `other`. | |
/// | |
/// - Postcondition: The result is `===` to `other`. | |
/// | |
/// - Complexity: O(1). | |
public init(_ other: AnyRandomAccessCollection<Element>) | |
/// Returns a *generator* over the elements of this *collection*. | |
/// | |
/// - Complexity: O(1). | |
public func generate() -> AnyGenerator<Element> | |
/// The position of the first element in a non-empty collection. | |
/// | |
/// In an empty collection, `startIndex == endIndex`. | |
public var startIndex: AnyForwardIndex { get } | |
/// The collection's "past the end" position. | |
/// | |
/// `endIndex` is not a valid argument to `subscript`, and is always | |
/// reachable from `startIndex` by zero or more applications of | |
/// `successor()`. | |
public var endIndex: AnyForwardIndex { get } | |
public subscript (position: AnyForwardIndex) -> Element { get } | |
/// Return the number of elements. | |
/// | |
/// - Complexity: O(N). | |
public var count: IntMax { get } | |
} | |
extension AnyForwardCollection { | |
public func underestimateCount() -> Int | |
} | |
/// A wrapper over an underlying `ForwardIndexType` that hides | |
/// the specific underlying type. | |
/// | |
/// - SeeAlso: `AnyForwardCollection` | |
public struct AnyForwardIndex : ForwardIndexType { | |
public typealias Distance = IntMax | |
/// Wrap and forward operations to `base`. | |
public init<BaseIndex : ForwardIndexType>(_ base: BaseIndex) | |
/// Return the next consecutive value in a discrete sequence of | |
/// `AnyForwardIndex` values. | |
/// | |
/// - Requires: `self` has a well-defined successor. | |
public func successor() -> AnyForwardIndex | |
} | |
/// A type-erased generator of `Element`. | |
/// | |
/// This generator forwards its `next()` method to an arbitrary underlying | |
/// generator having the same `Element` type, hiding the specifics of the | |
/// underlying `GeneratorType`. | |
/// | |
/// - seealso: | |
/// - `struct AnySequence<S : SequenceType>` | |
public struct AnyGenerator<Element> : GeneratorType { | |
/// Create a `GeneratorType` instance that wraps `base` but whose type | |
/// depends only on the type of `G.Element`. | |
/// | |
/// Example: | |
/// | |
/// func countStrings() -> AnyGenerator<String> { | |
/// let lazyStrings = (0..<10).lazy.map { String($0) } | |
/// | |
/// // This is a really complicated type of no interest to our | |
/// // clients. | |
/// let g: MapSequenceGenerator<RangeGenerator<Int>, String> | |
/// = lazyStrings.generate() | |
/// return AnyGenerator(g) | |
/// } | |
public init<G : GeneratorType where G.Element == Element>(_ base: G) | |
/// Create a `GeneratorType` instance whose `next` method invokes | |
/// `body` and returns the result. | |
/// | |
/// Example: | |
/// | |
/// var x = 7 | |
/// let g = AnyGenerator { x < 15 ? x++ : nil } | |
/// let a = Array(g) // [ 7, 8, 9, 10, 11, 12, 13, 14 ] | |
public init(body: () -> Element?) | |
/// Advance to the next element and return it, or `nil` if no next | |
/// element exists. | |
public func next() -> Element? | |
} | |
extension AnyGenerator : SequenceType { | |
} | |
/// The protocol to which all classes implicitly conform. | |
/// | |
/// When used as a concrete type, all known `@objc` methods and | |
/// properties are available, as implicitly-unwrapped-optional methods | |
/// and properties respectively, on each instance of `AnyObject`. For | |
/// example: | |
/// | |
/// class C { | |
/// @objc func getCValue() -> Int { return 42 } | |
/// } | |
/// | |
/// // If x has a method @objc getValue()->Int, call it and | |
/// // return the result. Otherwise, return nil. | |
/// func getCValue1(x: AnyObject) -> Int? { | |
/// if let f: ()->Int = x.getCValue { // <=== | |
/// return f() | |
/// } | |
/// return nil | |
/// } | |
/// | |
/// // A more idiomatic implementation using "optional chaining" | |
/// func getCValue2(x: AnyObject) -> Int? { | |
/// return x.getCValue?() // <=== | |
/// } | |
/// | |
/// // An implementation that assumes the required method is present | |
/// func getCValue3(x: AnyObject) -> Int { // <=== | |
/// return x.getCValue() // x.getCValue is implicitly unwrapped. // <=== | |
/// } | |
/// | |
/// - SeeAlso: `AnyClass` | |
@objc public protocol AnyObject { | |
} | |
/// A type-erased wrapper over any collection with indices that | |
/// support random access traversal. | |
/// | |
/// Forwards operations to an arbitrary underlying collection having the | |
/// same `Element` type, hiding the specifics of the underlying | |
/// `CollectionType`. | |
/// | |
/// - SeeAlso: `AnyForwardType`, `AnyBidirectionalType` | |
public struct AnyRandomAccessCollection<Element> : AnyCollectionType { | |
/// Create an `AnyRandomAccessCollection` that stores `base` as its | |
/// underlying collection. | |
/// | |
/// - Complexity: O(1). | |
public init<C : CollectionType where C.Index : RandomAccessIndexType, C.Generator.Element == Element>(_ base: C) | |
/// Create an `AnyRandomAccessCollection` having the same underlying | |
/// collection as `other`. | |
/// | |
/// - Postcondition: The result is `===` to `other`. | |
/// | |
/// - Complexity: O(1). | |
public init(_ other: AnyRandomAccessCollection<Element>) | |
/// If the indices of the underlying collection stored by `other` | |
/// satisfy `RandomAccessIndexType`, create an | |
/// `AnyRandomAccessCollection` having the same underlying | |
/// collection as `other`. Otherwise, the result is `nil`. | |
/// | |
/// - Complexity: O(1). | |
public init?(_ other: AnyForwardCollection<Element>) | |
/// If the indices of the underlying collection stored by `other` | |
/// satisfy `RandomAccessIndexType`, create an | |
/// `AnyRandomAccessCollection` having the same underlying | |
/// collection as `other`. Otherwise, the result is `nil`. | |
/// | |
/// - Complexity: O(1). | |
public init?(_ other: AnyBidirectionalCollection<Element>) | |
/// Returns a *generator* over the elements of this *collection*. | |
/// | |
/// - Complexity: O(1). | |
public func generate() -> AnyGenerator<Element> | |
/// The position of the first element in a non-empty collection. | |
/// | |
/// In an empty collection, `startIndex == endIndex`. | |
public var startIndex: AnyRandomAccessIndex { get } | |
/// The collection's "past the end" position. | |
/// | |
/// `endIndex` is not a valid argument to `subscript`, and is always | |
/// reachable from `startIndex` by zero or more applications of | |
/// `successor()`. | |
public var endIndex: AnyRandomAccessIndex { get } | |
public subscript (position: AnyRandomAccessIndex) -> Element { get } | |
/// Return the number of elements. | |
/// | |
/// - Complexity: O(1). | |
public var count: IntMax { get } | |
} | |
extension AnyRandomAccessCollection { | |
public func underestimateCount() -> Int | |
} | |
/// A wrapper over an underlying `RandomAccessIndexType` that hides | |
/// the specific underlying type. | |
/// | |
/// - SeeAlso: `AnyRandomAccessCollection` | |
public struct AnyRandomAccessIndex : RandomAccessIndexType { | |
public typealias Distance = IntMax | |
/// Wrap and forward operations to `base`. | |
public init<BaseIndex : RandomAccessIndexType>(_ base: BaseIndex) | |
/// Return the next consecutive value in a discrete sequence of | |
/// `AnyRandomAccessIndex` values. | |
/// | |
/// - Requires: `self` has a well-defined successor. | |
public func successor() -> AnyRandomAccessIndex | |
/// Return the previous consecutive value in a discrete sequence of | |
/// `AnyRandomAccessIndex` values. | |
/// | |
/// - Requires: `self` has a well-defined predecessor. | |
public func predecessor() -> AnyRandomAccessIndex | |
public func distanceTo(other: AnyRandomAccessIndex) -> Distance | |
public func advancedBy(amount: Distance) -> AnyRandomAccessIndex | |
public func advancedBy(amount: Distance, limit: AnyRandomAccessIndex) -> AnyRandomAccessIndex | |
} | |
/// A type-erased sequence. | |
/// | |
/// Forwards operations to an arbitrary underlying sequence having the | |
/// same `Element` type, hiding the specifics of the underlying | |
/// `SequenceType`. | |
/// | |
/// - SeeAlso: `AnyGenerator<Element>`. | |
public struct AnySequence<Element> : SequenceType { | |
/// Wrap and forward operations to to `base`. | |
public init<S : SequenceType where S.Generator.Element == Element>(_ base: S) | |
/// Create a sequence whose `generate()` method forwards to | |
/// `makeUnderlyingGenerator`. | |
public init<G : GeneratorType where G.Element == Element>(_ makeUnderlyingGenerator: () -> G) | |
/// Return a *generator* over the elements of this *sequence*. | |
/// | |
/// - Complexity: O(1). | |
public func generate() -> AnyGenerator<Element> | |
} | |
extension AnySequence { | |
public func underestimateCount() -> Int | |
} | |
/// `Array` is an efficient, tail-growable random-access | |
/// collection of arbitrary elements. | |
/// | |
/// Common Properties of Array Types | |
/// ================================ | |
/// | |
/// The information in this section applies to all three of Swift's | |
/// array types, `Array<Element>`, `ContiguousArray<Element>`, and | |
/// `ArraySlice<Element>`. When you read the word "array" here in | |
/// a normal typeface, it applies to all three of them. | |
/// | |
/// Value Semantics | |
/// --------------- | |
/// | |
/// Each array variable, `let` binding, or stored property has an | |
/// independent value that includes the values of all of its elements. | |
/// Therefore, mutations to the array are not observable through its | |
/// copies: | |
/// | |
/// var a = [1, 2, 3] | |
/// var b = a | |
/// b[0] = 4 | |
/// print("a=\(a), b=\(b)") // a=[1, 2, 3], b=[4, 2, 3] | |
/// | |
/// (Of course, if the array stores `class` references, the objects | |
/// are shared; only the values of the references are independent.) | |
/// | |
/// Arrays use Copy-on-Write so that their storage and elements are | |
/// only copied lazily, upon mutation, when more than one array | |
/// instance is using the same buffer. Therefore, the first in any | |
/// sequence of mutating operations may cost `O(N)` time and space, | |
/// where `N` is the length of the array. | |
/// | |
/// Growth and Capacity | |
/// ------------------- | |
/// | |
/// When an array's contiguous storage fills up, new storage must be | |
/// allocated and elements must be moved to the new storage. `Array`, | |
/// `ContiguousArray`, and `ArraySlice` share an exponential growth | |
/// strategy that makes `append` a constant time operation *when | |
/// amortized over many invocations*. In addition to a `count` | |
/// property, these array types have a `capacity` that reflects their | |
/// potential to store elements without reallocation, and when you | |
/// know how many elements you'll store, you can call | |
/// `reserveCapacity` to pre-emptively reallocate and prevent | |
/// intermediate reallocations. | |
/// | |
/// Objective-C Bridge | |
/// ================== | |
/// | |
/// The main distinction between `Array` and the other array types is | |
/// that it interoperates seamlessly and efficiently with Objective-C. | |
/// | |
/// `Array<Element>` is considered bridged to Objective-C iff `Element` | |
/// is bridged to Objective-C. | |
/// | |
/// When `Element` is a `class` or `@objc` protocol type, `Array` may | |
/// store its elements in an `NSArray`. Since any arbitrary subclass | |
/// of `NSArray` can become an `Array`, there are no guarantees about | |
/// representation or efficiency in this case (see also | |
/// `ContiguousArray`). Since `NSArray` is immutable, it is just as | |
/// though the storage was shared by some copy: the first in any | |
/// sequence of mutating operations causes elements to be copied into | |
/// unique, contiguous storage which may cost `O(N)` time and space, | |
/// where `N` is the length of the array (or more, if the underlying | |
/// `NSArray` is has unusual performance characteristics). | |
/// | |
/// Bridging to Objective-C | |
/// ----------------------- | |
/// | |
/// Any bridged `Array` can be implicitly converted to an `NSArray`. | |
/// When `Element` is a `class` or `@objc` protocol, bridging takes O(1) | |
/// time and O(1) space. Other `Array`s must be bridged | |
/// element-by-element, allocating a new object for each element, at a | |
/// cost of at least O(`count`) time and space. | |
/// | |
/// Bridging from Objective-C | |
/// ------------------------- | |
/// | |
/// An `NSArray` can be implicitly or explicitly converted to any | |
/// bridged `Array<Element>`. This conversion calls `copyWithZone` | |
/// on the `NSArray`, to ensure it won't be modified, and stores the | |
/// result in the `Array`. Type-checking, to ensure the `NSArray`'s | |
/// elements match or can be bridged to `Element`, is deferred until the | |
/// first element access. | |
public struct Array<Element> : CollectionType, MutableCollectionType, _DestructorSafeContainer { | |
/// Always zero, which is the index of the first element when non-empty. | |
public var startIndex: Int { get } | |
/// A "past-the-end" element index; the successor of the last valid | |
/// subscript argument. | |
public var endIndex: Int { get } | |
public subscript (index: Int) -> Element | |
public subscript (subRange: Range<Int>) -> ArraySlice<Element> | |
} | |
extension Array : ArrayLiteralConvertible { | |
/// Create an instance containing `elements`. | |
public init(arrayLiteral elements: Element...) | |
} | |
extension Array : _ArrayType { | |
/// Construct an empty Array. | |
public init() | |
/// Construct from an arbitrary sequence with elements of type `Element`. | |
public init<S : SequenceType where S.Generator.Element == _Buffer.Element>(_ s: S) | |
/// Construct a Array of `count` elements, each initialized to | |
/// `repeatedValue`. | |
public init(count: Int, repeatedValue: Element) | |
/// The number of elements the Array stores. | |
public var count: Int { get } | |
/// The number of elements the `Array` can store without reallocation. | |
public var capacity: Int { get } | |
/// Reserve enough space to store `minimumCapacity` elements. | |
/// | |
/// - Postcondition: `capacity >= minimumCapacity` and the array has | |
/// mutable contiguous storage. | |
/// | |
/// - Complexity: O(`count`). | |
public mutating func reserveCapacity(minimumCapacity: Int) | |
/// Append `newElement` to the Array. | |
/// | |
/// - Complexity: Amortized O(1) unless `self`'s storage is shared with another live array; O(`count`) if `self` does not wrap a bridged `NSArray`; otherwise the efficiency is unspecified.. | |
public mutating func append(newElement: Element) | |
/// Append the elements of `newElements` to `self`. | |
/// | |
/// - Complexity: O(*length of result*). | |
public mutating func appendContentsOf<S : SequenceType where S.Generator.Element == Element>(newElements: S) | |
/// Append the elements of `newElements` to `self`. | |
/// | |
/// - Complexity: O(*length of result*). | |
public mutating func appendContentsOf<C : CollectionType where C.Generator.Element == Element>(newElements: C) | |
/// Remove an element from the end of the Array in O(1). | |
/// | |
/// - Requires: `count > 0`. | |
public mutating func removeLast() -> Element | |
/// Insert `newElement` at index `i`. | |
/// | |
/// - Requires: `i <= count`. | |
/// | |
/// - Complexity: O(`count`). | |
public mutating func insert(newElement: Element, atIndex i: Int) | |
/// Remove and return the element at index `i`. | |
/// | |
/// Invalidates all indices with respect to `self`. | |
/// | |
/// - Complexity: O(`count`). | |
public mutating func removeAtIndex(index: Int) -> Element | |
/// Remove all elements. | |
/// | |
/// - Postcondition: `capacity == 0` iff `keepCapacity` is `false`. | |
/// | |
/// - Complexity: O(`self.count`). | |
public mutating func removeAll(keepCapacity keepCapacity: Bool = default) | |
} | |
extension Array : _Reflectable { | |
} | |
extension Array : CustomStringConvertible, CustomDebugStringConvertible { | |
/// A textual representation of `self`. | |
public var description: String { get } | |
/// A textual representation of `self`, suitable for debugging. | |
public var debugDescription: String { get } | |
} | |
extension Array { | |
/// Call `body(p)`, where `p` is a pointer to the `Array`'s | |
/// contiguous storage. If no such storage exists, it is first created. | |
/// | |
/// Often, the optimizer can eliminate bounds checks within an | |
/// array algorithm, but when that fails, invoking the | |
/// same algorithm on `body`'s argument lets you trade safety for | |
/// speed. | |
public func withUnsafeBufferPointer<R>(@noescape body: (UnsafeBufferPointer<Element>) throws -> R) rethrows -> R | |
/// Call `body(p)`, where `p` is a pointer to the `Array`'s | |
/// mutable contiguous storage. If no such storage exists, it is first created. | |
/// | |
/// Often, the optimizer can eliminate bounds- and uniqueness-checks | |
/// within an array algorithm, but when that fails, invoking the | |
/// same algorithm on `body`'s argument lets you trade safety for | |
/// speed. | |
/// | |
/// - Warning: Do not rely on anything about `self` (the `Array` | |
/// that is the target of this method) during the execution of | |
/// `body`: it may not appear to have its correct value. Instead, | |
/// use only the `UnsafeMutableBufferPointer` argument to `body`. | |
public mutating func withUnsafeMutableBufferPointer<R>(@noescape body: (inout UnsafeMutableBufferPointer<Element>) throws -> R) rethrows -> R | |
} | |
extension Array { | |
/// Replace the given `subRange` of elements with `newElements`. | |
/// | |
/// - Complexity: O(`subRange.count`) if `subRange.endIndex | |
/// == self.endIndex` and `newElements.isEmpty`, O(N) otherwise. | |
public mutating func replaceRange<C : CollectionType where C.Generator.Element == _Buffer.Element>(subRange: Range<Int>, with newElements: C) | |
} | |
extension Array { | |
/// If `!self.isEmpty`, remove the last element and return it, otherwise | |
/// return `nil`. | |
/// | |
/// - Complexity: O(`self.count`) if the array is bridged, | |
/// otherwise O(1). | |
public mutating func popLast() -> Element? | |
} | |
/// Conforming types can be initialized with array literals. | |
public protocol ArrayLiteralConvertible { | |
typealias Element | |
/// Create an instance initialized with `elements`. | |
public init(arrayLiteral elements: Self.Element...) | |
} | |
/// The `Array`-like type that represents a sub-sequence of any | |
/// `Array`, `ContiguousArray`, or other `ArraySlice`. | |
/// | |
/// `ArraySlice` always uses contiguous storage and does not bridge to | |
/// Objective-C. | |
/// | |
/// - Warning: Long-term storage of `ArraySlice` instances is discouraged. | |
/// | |
/// Because a `ArraySlice` presents a *view* onto the storage of some | |
/// larger array even after the original array's lifetime ends, | |
/// storing the slice may prolong the lifetime of elements that are | |
/// no longer accessible, which can manifest as apparent memory and | |
/// object leakage. To prevent this effect, use `ArraySlice` only for | |
/// transient computation. | |
public struct ArraySlice<Element> : CollectionType, MutableCollectionType, _DestructorSafeContainer { | |
/// The position of the first element in a non-empty collection. | |
/// | |
/// In an empty collection, `startIndex == endIndex`. | |
public var startIndex: Int { get } | |
/// A "past-the-end" element index; the successor of the last valid | |
/// subscript argument. | |
public var endIndex: Int { get } | |
public subscript (index: Int) -> Element | |
public subscript (subRange: Range<Int>) -> ArraySlice<Element> | |
} | |
extension ArraySlice : ArrayLiteralConvertible { | |
/// Create an instance containing `elements`. | |
public init(arrayLiteral elements: Element...) | |
} | |
extension ArraySlice : _ArrayType { | |
/// Construct an empty ArraySlice. | |
public init() | |
/// Construct from an arbitrary sequence with elements of type `Element`. | |
public init<S : SequenceType where S.Generator.Element == _Buffer.Element>(_ s: S) | |
/// Construct a ArraySlice of `count` elements, each initialized to | |
/// `repeatedValue`. | |
public init(count: Int, repeatedValue: Element) | |
/// The number of elements the ArraySlice stores. | |
public var count: Int { get } | |
/// The number of elements the `ArraySlice` can store without reallocation. | |
public var capacity: Int { get } | |
/// Reserve enough space to store `minimumCapacity` elements. | |
/// | |
/// - Postcondition: `capacity >= minimumCapacity` and the array has | |
/// mutable contiguous storage. | |
/// | |
/// - Complexity: O(`count`). | |
public mutating func reserveCapacity(minimumCapacity: Int) | |
/// Append `newElement` to the ArraySlice. | |
/// | |
/// - Complexity: Amortized O(1) unless `self`'s storage is shared with another live array; O(`count`) otherwise.. | |
public mutating func append(newElement: Element) | |
/// Append the elements of `newElements` to `self`. | |
/// | |
/// - Complexity: O(*length of result*). | |
public mutating func appendContentsOf<S : SequenceType where S.Generator.Element == Element>(newElements: S) | |
/// Append the elements of `newElements` to `self`. | |
/// | |
/// - Complexity: O(*length of result*). | |
public mutating func appendContentsOf<C : CollectionType where C.Generator.Element == Element>(newElements: C) | |
/// Remove an element from the end of the ArraySlice in O(1). | |
/// | |
/// - Requires: `count > 0`. | |
public mutating func removeLast() -> Element | |
/// Insert `newElement` at index `i`. | |
/// | |
/// - Requires: `i <= count`. | |
/// | |
/// - Complexity: O(`count`). | |
public mutating func insert(newElement: Element, atIndex i: Int) | |
/// Remove and return the element at index `i`. | |
/// | |
/// Invalidates all indices with respect to `self`. | |
/// | |
/// - Complexity: O(`count`). | |
public mutating func removeAtIndex(index: Int) -> Element | |
/// Remove all elements. | |
/// | |
/// - Postcondition: `capacity == 0` iff `keepCapacity` is `false`. | |
/// | |
/// - Complexity: O(`self.count`). | |
public mutating func removeAll(keepCapacity keepCapacity: Bool = default) | |
} | |
extension ArraySlice : _Reflectable { | |
} | |
extension ArraySlice : CustomStringConvertible, CustomDebugStringConvertible { | |
/// A textual representation of `self`. | |
public var description: String { get } | |
/// A textual representation of `self`, suitable for debugging. | |
public var debugDescription: String { get } | |
} | |
extension ArraySlice { | |
/// Call `body(p)`, where `p` is a pointer to the `ArraySlice`'s | |
/// contiguous storage. | |
/// | |
/// Often, the optimizer can eliminate bounds checks within an | |
/// array algorithm, but when that fails, invoking the | |
/// same algorithm on `body`'s argument lets you trade safety for | |
/// speed. | |
public func withUnsafeBufferPointer<R>(@noescape body: (UnsafeBufferPointer<Element>) throws -> R) rethrows -> R | |
/// Call `body(p)`, where `p` is a pointer to the `ArraySlice`'s | |
/// mutable contiguous storage. | |
/// | |
/// Often, the optimizer can eliminate bounds- and uniqueness-checks | |
/// within an array algorithm, but when that fails, invoking the | |
/// same algorithm on `body`'s argument lets you trade safety for | |
/// speed. | |
/// | |
/// - Warning: Do not rely on anything about `self` (the `ArraySlice` | |
/// that is the target of this method) during the execution of | |
/// `body`: it may not appear to have its correct value. Instead, | |
/// use only the `UnsafeMutableBufferPointer` argument to `body`. | |
public mutating func withUnsafeMutableBufferPointer<R>(@noescape body: (inout UnsafeMutableBufferPointer<Element>) throws -> R) rethrows -> R | |
} | |
extension ArraySlice { | |
/// Replace the given `subRange` of elements with `newElements`. | |
/// | |
/// - Complexity: O(`subRange.count`) if `subRange.endIndex | |
/// == self.endIndex` and `newElements.isEmpty`, O(N) otherwise. | |
public mutating func replaceRange<C : CollectionType where C.Generator.Element == _Buffer.Element>(subRange: Range<Int>, with newElements: C) | |
} | |
/// A mutable pointer-to-ObjC-pointer argument. | |
/// | |
/// This type has implicit conversions to allow passing any of the following | |
/// to a C or ObjC API: | |
/// | |
/// - `nil`, which gets passed as a null pointer, | |
/// - an inout argument of the referenced type, which gets passed as a pointer | |
/// to a writeback temporary with autoreleasing ownership semantics, | |
/// - an `UnsafeMutablePointer<Memory>`, which is passed as-is. | |
/// | |
/// Passing pointers to mutable arrays of ObjC class pointers is not | |
/// directly supported. Unlike `UnsafeMutablePointer<Memory>`, | |
/// `AutoreleasingUnsafeMutablePointer<Memory>` must reference storage that | |
/// does not own a reference count to the referenced | |
/// value. UnsafeMutablePointer's operations, by contrast, assume that | |
/// the referenced storage owns values loaded from or stored to it. | |
/// | |
/// This type does not carry an owner pointer unlike the other C*Pointer types | |
/// because it only needs to reference the results of inout conversions, which | |
/// already have writeback-scoped lifetime. | |
public struct AutoreleasingUnsafeMutablePointer<Memory> : Equatable, NilLiteralConvertible, _PointerType { | |
/// Access the underlying raw memory, getting and | |
/// setting values. | |
public var memory: Memory { get nonmutating set } | |
public subscript (i: Int) -> Memory { get } | |
/// Create an instance initialized with `nil`. | |
public init(nilLiteral: ()) | |
/// Initialize to a null pointer. | |
public init() | |
/// Explicit construction from an UnsafeMutablePointer. | |
/// | |
/// This is inherently unsafe; UnsafeMutablePointer assumes the | |
/// referenced memory has +1 strong ownership semantics, whereas | |
/// AutoreleasingUnsafeMutablePointer implies +0 semantics. | |
public init<U>(_ ptr: UnsafeMutablePointer<U>) | |
} | |
extension AutoreleasingUnsafeMutablePointer : CustomDebugStringConvertible { | |
/// A textual representation of `self`, suitable for debugging. | |
public var debugDescription: String { get } | |
} | |
extension AutoreleasingUnsafeMutablePointer : CVarArgType { | |
} | |
/// An *index* that can step backwards via application of its | |
/// `predecessor()` method. | |
public protocol BidirectionalIndexType : ForwardIndexType { | |
/// Return the previous consecutive value in a discrete sequence. | |
/// | |
/// If `self` has a well-defined successor, | |
/// `self.successor().predecessor() == self`. If `self` has a | |
/// well-defined predecessor, `self.predecessor().successor() == | |
/// self`. | |
/// | |
/// - Requires: `self` has a well-defined predecessor. | |
@warn_unused_result | |
public func predecessor() -> Self | |
} | |
extension BidirectionalIndexType { | |
@warn_unused_result | |
public func advancedBy(n: Self.Distance) -> Self | |
@warn_unused_result | |
public func advancedBy(n: Self.Distance, limit: Self) -> Self | |
} | |
extension BidirectionalIndexType where Self : ReverseIndexType { | |
/// Returns the next consecutive value after `self`. | |
/// | |
/// - Requires: The next value is representable. | |
public func successor() -> Self | |
/// Returns the previous consecutive value before `self`. | |
/// | |
/// - Requires: The previous value is representable. | |
public func predecessor() -> Self | |
} | |
/// A `RandomAccessIndexType` that has two possible values. Used as | |
/// the `Index` type for `CollectionOfOne<T>`. | |
public enum Bit : Int, Comparable, RandomAccessIndexType, _Reflectable { | |
public typealias Distance = Int | |
case Zero | |
case One | |
/// Returns the next consecutive value after `self`. | |
/// | |
/// - Requires: `self == .Zero`. | |
public func successor() -> Bit | |
/// Returns the previous consecutive value before `self`. | |
/// | |
/// - Requires: `self != .Zero`. | |
public func predecessor() -> Bit | |
public func distanceTo(other: Bit) -> Int | |
public func advancedBy(n: Distance) -> Bit | |
} | |
extension Bit : IntegerArithmeticType { | |
/// Add `lhs` and `rhs`, returning a result and a `Bool` that is | |
/// true iff the operation caused an arithmetic overflow. | |
public static func addWithOverflow(lhs: Bit, _ rhs: Bit) -> (Bit, overflow: Bool) | |
/// Subtract `lhs` and `rhs`, returning a result and a `Bool` that is | |
/// true iff the operation caused an arithmetic overflow. | |
public static func subtractWithOverflow(lhs: Bit, _ rhs: Bit) -> (Bit, overflow: Bool) | |
/// Multiply `lhs` and `rhs`, returning a result and a `Bool` that is | |
/// true iff the operation caused an arithmetic overflow. | |
public static func multiplyWithOverflow(lhs: Bit, _ rhs: Bit) -> (Bit, overflow: Bool) | |
/// Divide `lhs` and `rhs`, returning a result and a `Bool` that is | |
/// true iff the operation caused an arithmetic overflow. | |
public static func divideWithOverflow(lhs: Bit, _ rhs: Bit) -> (Bit, overflow: Bool) | |
/// Divide `lhs` and `rhs`, returning the remainder and a `Bool` that is | |
/// true iff the operation caused an arithmetic overflow. | |
public static func remainderWithOverflow(lhs: Bit, _ rhs: Bit) -> (Bit, overflow: Bool) | |
/// Represent this number using Swift's widest native signed integer | |
/// type. | |
public func toIntMax() -> IntMax | |
} | |
/// A set type with O(1) standard bitwise operators. | |
/// | |
/// Each instance is a subset of `~Self.allZeros`. | |
/// | |
/// **Axioms**, where `x` is an instance of `Self`: | |
/// | |
/// - `x | Self.allZeros == x` | |
/// - `x ^ Self.allZeros == x` | |
/// - `x & Self.allZeros == .allZeros` | |
/// - `x & ~Self.allZeros == x` | |
/// - `~x == x ^ ~Self.allZeros` | |
public protocol BitwiseOperationsType { | |
/// Returns the intersection of bits set in `lhs` and `rhs`. | |
/// | |
/// - Complexity: O(1). | |
@warn_unused_result | |
public func &(lhs: Self, rhs: Self) -> Self | |
/// Returns the union of bits set in `lhs` and `rhs`. | |
/// | |
/// - Complexity: O(1). | |
@warn_unused_result | |
public func |(lhs: Self, rhs: Self) -> Self | |
/// Returns the bits that are set in exactly one of `lhs` and `rhs`. | |
/// | |
/// - Complexity: O(1). | |
@warn_unused_result | |
public func ^(lhs: Self, rhs: Self) -> Self | |
/// Returns `x ^ ~Self.allZeros`. | |
/// | |
/// - Complexity: O(1). | |
@warn_unused_result | |
prefix public func ~(x: Self) -> Self | |
/// The empty bitset. | |
/// | |
/// Also the [identity element](http://en.wikipedia.org/wiki/Identity_element) for `|` and | |
/// `^`, and the [fixed point](http://en.wikipedia.org/wiki/Fixed_point_(mathematics)) for | |
/// `&`. | |
public static var allZeros: Self { get } | |
} | |
/// A value type whose instances are either `true` or `false`. | |
public struct Bool { | |
/// Default-initialize Boolean value to `false`. | |
public init() | |
} | |
extension Bool : BooleanLiteralConvertible { | |
public init(_builtinBooleanLiteral value: Builtin.Int1) | |
/// Create an instance initialized to `value`. | |
public init(booleanLiteral value: Bool) | |
} | |
extension Bool : BooleanType { | |
/// Identical to `self`. | |
public var boolValue: Bool { get } | |
/// Construct an instance representing the same logical value as | |
/// `value`. | |
public init<T : BooleanType>(_ value: T) | |
} | |
extension Bool : CustomStringConvertible { | |
/// A textual representation of `self`. | |
public var description: String { get } | |
} | |
extension Bool : Equatable, Hashable { | |
/// The hash value. | |
/// | |
/// **Axiom:** `x == y` implies `x.hashValue == y.hashValue`. | |
/// | |
/// - Note: the hash value is not guaranteed to be stable across | |
/// different invocations of the same program. Do not persist the | |
/// hash value across program runs. | |
public var hashValue: Int { get } | |
} | |
extension Bool : _Reflectable { | |
} | |
/// Conforming types can be initialized with the Boolean literals | |
/// `true` and `false`. | |
public protocol BooleanLiteralConvertible { | |
typealias BooleanLiteralType | |
/// Create an instance initialized to `value`. | |
public init(booleanLiteral value: Self.BooleanLiteralType) | |
} | |
/// The default type for an otherwise-unconstrained Boolean literal. | |
public typealias BooleanLiteralType = Bool | |
/// A type that represents a Boolean value. | |
/// | |
/// Types that conform to the `BooleanType` protocol can be used as | |
/// the condition in control statements (`if`, `while`, C-style `for`) | |
/// and other logical value contexts (e.g., `case` statement guards). | |
/// | |
/// Only three types provided by Swift, `Bool`, `DarwinBoolean`, and `ObjCBool`, | |
/// conform to `BooleanType`. Expanding this set to include types that | |
/// represent more than simple boolean values is discouraged. | |
public protocol BooleanType { | |
/// The value of `self`, expressed as a `Bool`. | |
public var boolValue: Bool { get } | |
} | |
/// The C '_Bool' and C++ 'bool' type. | |
public typealias CBool = Bool | |
/// The C 'char' type. | |
/// | |
/// This will be the same as either `CSignedChar` (in the common | |
/// case) or `CUnsignedChar`, depending on the platform. | |
public typealias CChar = Int8 | |
/// The C++11 'char16_t' type, which has UTF-16 encoding. | |
public typealias CChar16 = UInt16 | |
/// The C++11 'char32_t' type, which has UTF-32 encoding. | |
public typealias CChar32 = UnicodeScalar | |
/// The C 'double' type. | |
public typealias CDouble = Double | |
/// The C 'float' type. | |
public typealias CFloat = Float | |
/// The C 'int' type. | |
public typealias CInt = Int32 | |
/// The C 'long' type. | |
public typealias CLong = Int | |
/// The C 'long long' type. | |
public typealias CLongLong = Int64 | |
/// A wrapper around an opaque C pointer. | |
/// | |
/// Opaque pointers are used to represent C pointers to types that | |
/// cannot be represented in Swift, such as incomplete struct types. | |
public struct COpaquePointer : Equatable, Hashable, NilLiteralConvertible { | |
/// Construct a `nil` instance. | |
public init() | |
/// Construct a `COpaquePointer` from a given address in memory. | |
/// | |
/// This is a fundamentally unsafe conversion. | |
public init(bitPattern: Int) | |
/// Construct a `COpaquePointer` from a given address in memory. | |
/// | |
/// This is a fundamentally unsafe conversion. | |
public init(bitPattern: UInt) | |
/// Convert a typed `UnsafePointer` to an opaque C pointer. | |
public init<T>(_ source: UnsafePointer<T>) | |
/// Convert a typed `UnsafeMutablePointer` to an opaque C pointer. | |
public init<T>(_ source: UnsafeMutablePointer<T>) | |
/// The hash value. | |
/// | |
/// **Axiom:** `x == y` implies `x.hashValue == y.hashValue`. | |
/// | |
/// - Note: The hash value is not guaranteed to be stable across | |
/// different invocations of the same program. Do not persist the | |
/// hash value across program runs. | |
public var hashValue: Int { get } | |
/// Create an instance initialized with `nil`. | |
public init(nilLiteral: ()) | |
} | |
extension COpaquePointer : CustomDebugStringConvertible { | |
/// A textual representation of `self`, suitable for debugging. | |
public var debugDescription: String { get } | |
} | |
extension COpaquePointer : CVarArgType { | |
} | |
/// The C 'short' type. | |
public typealias CShort = Int16 | |
/// The C 'signed char' type. | |
public typealias CSignedChar = Int8 | |
/// The C 'unsigned char' type. | |
public typealias CUnsignedChar = UInt8 | |
/// The C 'unsigned int' type. | |
public typealias CUnsignedInt = UInt32 | |
/// The C 'unsigned long' type. | |
public typealias CUnsignedLong = UInt | |
/// The C 'unsigned long long' type. | |
public typealias CUnsignedLongLong = UInt64 | |
/// The C 'unsigned short' type. | |
public typealias CUnsignedShort = UInt16 | |
/// The corresponding Swift type to `va_list` in imported C APIs. | |
public struct CVaListPointer { | |
public init(_fromUnsafeMutablePointer from: UnsafeMutablePointer<Void>) | |
} | |
extension CVaListPointer : CustomDebugStringConvertible { | |
/// A textual representation of `self`, suitable for debugging. | |
public var debugDescription: String { get } | |
} | |
/// Instances of conforming types can be encoded, and appropriately | |
/// passed, as elements of a C `va_list`. | |
/// | |
/// This protocol is useful in presenting C "varargs" APIs natively in | |
/// Swift. It only works for APIs that have a `va_list` variant, so | |
/// for example, it isn't much use if all you have is: | |
/// | |
/// int f(int n, ...) | |
/// | |
/// Given a version like this, though, | |
/// | |
/// int f(int, va_list arguments) | |
/// | |
/// you can write: | |
/// | |
/// func swiftF(x: Int, arguments: CVarArgType...) -> Int { | |
/// return withVaList(arguments) { f(x, $0) } | |
/// } | |
public protocol CVarArgType { | |
} | |
/// The C++ 'wchar_t' type. | |
public typealias CWideChar = UnicodeScalar | |
/// `Character` represents some Unicode grapheme cluster as | |
/// defined by a canonical, localized, or otherwise tailored | |
/// segmentation algorithm. | |
public struct Character : ExtendedGraphemeClusterLiteralConvertible, Equatable, Hashable, Comparable { | |
/// Construct a `Character` containing just the given `scalar`. | |
public init(_ scalar: UnicodeScalar) | |
public init(_builtinUnicodeScalarLiteral value: Builtin.Int32) | |
/// Create an instance initialized to `value`. | |
public init(unicodeScalarLiteral value: Character) | |
public init(_builtinExtendedGraphemeClusterLiteral start: Builtin.RawPointer, byteSize: Builtin.Word, isASCII: Builtin.Int1) | |
/// Create an instance initialized to `value`. | |
public init(extendedGraphemeClusterLiteral value: Character) | |
/// Create an instance from a single-character `String`. | |
/// | |
/// - Requires: `s` contains exactly one extended grapheme cluster. | |
public init(_ s: String) | |
/// The hash value. | |
/// | |
/// **Axiom:** `x == y` implies `x.hashValue == y.hashValue`. | |
/// | |
/// - Note: The hash value is not guaranteed to be stable across | |
/// different invocations of the same program. Do not persist the | |
/// hash value across program runs. | |
public var hashValue: Int { get } | |
} | |
extension Character : CustomDebugStringConvertible { | |
/// A textual representation of `self`, suitable for debugging. | |
public var debugDescription: String { get } | |
} | |
extension Character : _Reflectable { | |
} | |
extension Character : Streamable { | |
/// Write a textual representation of `self` into `target`. | |
public func writeTo<Target : OutputStreamType>(inout target: Target) | |
} | |
/// A closed `IntervalType`, which contains both its `start` and its | |
/// `end`. Cannot represent an empty interval. | |
/// | |
/// - parameter Bound: The type of the endpoints. | |
public struct ClosedInterval<Bound : Comparable> : IntervalType, Equatable, CustomStringConvertible, CustomDebugStringConvertible, _Reflectable { | |
/// Construct a copy of `x`. | |
public init(_ x: ClosedInterval<Bound>) | |
/// Construct an interval with the given bounds. | |
/// | |
/// - Requires: `start <= end`. | |
public init(_ start: Bound, _ end: Bound) | |
/// The `Interval`'s lower bound. | |
/// | |
/// Invariant: `start` <= `end`. | |
public var start: Bound { get } | |
/// The `Interval`'s upper bound. | |
/// | |
/// Invariant: `start` <= `end`. | |
public var end: Bound { get } | |
/// A textual representation of `self`. | |
public var description: String { get } | |
/// A textual representation of `self`, suitable for debugging. | |
public var debugDescription: String { get } | |
/// Returns `true` iff the `Interval` contains `x`. | |
@warn_unused_result | |
public func contains(x: Bound) -> Bool | |
/// Returns `intervalToClamp` clamped to `self`. | |
/// | |
/// The bounds of the result, even if it is empty, are always limited to the bounds of | |
/// `self`. | |
@warn_unused_result | |
public func clamp(intervalToClamp: ClosedInterval<Bound>) -> ClosedInterval<Bound> | |
} | |
extension ClosedInterval { | |
/// `true` iff the `Interval` is empty. In the case of | |
/// `ClosedInterval`, always returns `false`. | |
public var isEmpty: Bool { get } | |
} | |
/// A collection containing a single element of type `Element`. | |
public struct CollectionOfOne<Element> : CollectionType { | |
/// A type that represents a valid position in the collection. | |
/// | |
/// Valid indices consist of the position of every element and a | |
/// "past the end" position that's not valid for use as a subscript. | |
public typealias Index = Bit | |
/// Construct an instance containing just `element`. | |
public init(_ element: Element) | |
/// The position of the first element. | |
public var startIndex: Index { get } | |
/// The "past the end" position; always identical to | |
/// `startIndex.successor()`. | |
/// | |
/// - Note: `endIndex` is not a valid argument to `subscript`. | |
public var endIndex: Index { get } | |
/// Return a *generator* over the elements of this *sequence*. | |
/// | |
/// - Complexity: O(1). | |
public func generate() -> GeneratorOfOne<Element> | |
public subscript (position: Index) -> Element { get } | |
/// Return the number of elements (always one). | |
public var count: Int { get } | |
} | |
extension CollectionOfOne : _Reflectable { | |
} | |
/// A multi-pass *sequence* with addressable positions. | |
/// | |
/// Positions are represented by an associated `Index` type. Whereas | |
/// an arbitrary *sequence* may be consumed as it is traversed, a | |
/// *collection* is multi-pass: any element may be revisited merely by | |
/// saving its index. | |
/// | |
/// The sequence view of the elements is identical to the collection | |
/// view. In other words, the following code binds the same series of | |
/// values to `x` as does `for x in self {}`: | |
/// | |
/// for i in startIndex..<endIndex { | |
/// let x = self[i] | |
/// } | |
public protocol CollectionType : Indexable, SequenceType { | |
/// A type that provides the *sequence*'s iteration interface and | |
/// encapsulates its iteration state. | |
/// | |
/// By default, a `CollectionType` satisfies `SequenceType` by | |
/// supplying an `IndexingGenerator` as its associated `Generator` | |
/// type. | |
typealias Generator : GeneratorType = IndexingGenerator<Self> | |
public func generate() -> Self.Generator | |
/// A `SequenceType` that can represent a contiguous subrange of `self`'s | |
/// elements. | |
/// | |
/// - Note: This associated type appears as a requirement in | |
/// `SequenceType`, but is restated here with stricter | |
/// constraints: in a `CollectionType`, the `SubSequence` should | |
/// also be a `CollectionType`. | |
typealias SubSequence : Indexable, SequenceType = Slice<Self> | |
public subscript (position: Self.Index) -> Self.Generator.Element { get } | |
public subscript (bounds: Range<Self.Index>) -> Self.SubSequence { get } | |
/// Returns `self[startIndex..<end]` | |
/// | |
/// - Complexity: O(1) | |
@warn_unused_result | |
public func prefixUpTo(end: Self.Index) -> Self.SubSequence | |
/// Returns `self[start..<endIndex]` | |
/// | |
/// - Complexity: O(1) | |
@warn_unused_result | |
public func suffixFrom(start: Self.Index) -> Self.SubSequence | |
/// Returns `prefixUpTo(position.successor())` | |
/// | |
/// - Complexity: O(1) | |
@warn_unused_result | |
public func prefixThrough(position: Self.Index) -> Self.SubSequence | |
/// Returns `true` iff `self` is empty. | |
public var isEmpty: Bool { get } | |
/// Returns the number of elements. | |
/// | |
/// - Complexity: O(1) if `Index` conforms to `RandomAccessIndexType`; | |
/// O(N) otherwise. | |
public var count: Self.Index.Distance { get } | |
/// Returns the first element of `self`, or `nil` if `self` is empty. | |
public var first: Self.Generator.Element? { get } | |
} | |
extension CollectionType where Generator == IndexingGenerator<Self> { | |
public func generate() -> IndexingGenerator<Self> | |
} | |
extension CollectionType where SubSequence == Slice<Self> { | |
public subscript (bounds: Range<Self.Index>) -> Slice<Self> { get } | |
} | |
extension CollectionType where SubSequence == Self { | |
/// If `!self.isEmpty`, remove the first element and return it, otherwise | |
/// return `nil`. | |
/// | |
/// - Complexity: O(`self.count`) | |
@warn_unused_result | |
public mutating func popFirst() -> Self.Generator.Element? | |
/// If `!self.isEmpty`, remove the last element and return it, otherwise | |
/// return `nil`. | |
/// | |
/// - Complexity: O(`self.count`) | |
@warn_unused_result | |
public mutating func popLast() -> Self.Generator.Element? | |
} | |
extension CollectionType { | |
/// Returns `true` iff `self` is empty. | |
/// | |
/// - Complexity: O(1) | |
public var isEmpty: Bool { get } | |
/// Returns the first element of `self`, or `nil` if `self` is empty. | |
/// | |
/// - Complexity: O(1) | |
public var first: Self.Generator.Element? { get } | |
/// Returns a value less than or equal to the number of elements in | |
/// `self`, *nondestructively*. | |
/// | |
/// - Complexity: O(N). | |
public func underestimateCount() -> Int | |
/// Returns the number of elements. | |
/// | |
/// - Complexity: O(1) if `Index` conforms to `RandomAccessIndexType`; | |
/// O(N) otherwise. | |
public var count: Self.Index.Distance { get } | |
} | |
extension CollectionType { | |
/// Return an `Array` containing the results of mapping `transform` | |
/// over `self`. | |
/// | |
/// - Complexity: O(N). | |
@warn_unused_result | |
public func map<T>(@noescape transform: (Self.Generator.Element) throws -> T) rethrows -> [T] | |
/// Returns a subsequence containing all but the first `n` elements. | |
/// | |
/// - Requires: `n >= 0` | |
/// - Complexity: O(`n`) | |
@warn_unused_result | |
public func dropFirst(n: Int) -> Self.SubSequence | |
/// Returns a subsequence containing all but the last `n` elements. | |
/// | |
/// - Requires: `n >= 0` | |
/// - Complexity: O(`self.count`) | |
@warn_unused_result | |
public func dropLast(n: Int) -> Self.SubSequence | |
/// Returns a subsequence, up to `maxLength` in length, containing the | |
/// initial elements. | |
/// | |
/// If `maxLength` exceeds `self.count`, the result contains all | |
/// the elements of `self`. | |
/// | |
/// - Requires: `maxLength >= 0` | |
/// - Complexity: O(`maxLength`) | |
@warn_unused_result | |
public func prefix(maxLength: Int) -> Self.SubSequence | |
/// Returns a slice, up to `maxLength` in length, containing the | |
/// final elements of `s`. | |
/// | |
/// If `maxLength` exceeds `s.count`, the result contains all | |
/// the elements of `s`. | |
/// | |
/// - Requires: `maxLength >= 0` | |
/// - Complexity: O(`self.count`) | |
@warn_unused_result | |
public func suffix(maxLength: Int) -> Self.SubSequence | |
/// Returns `self[startIndex..<end]` | |
/// | |
/// - Complexity: O(1) | |
@warn_unused_result | |
public func prefixUpTo(end: Self.Index) -> Self.SubSequence | |
/// Returns `self[start..<endIndex]` | |
/// | |
/// - Complexity: O(1) | |
@warn_unused_result | |
public func suffixFrom(start: Self.Index) -> Self.SubSequence | |
/// Returns `prefixUpTo(position.successor())` | |
/// | |
/// - Complexity: O(1) | |
@warn_unused_result | |
public func prefixThrough(position: Self.Index) -> Self.SubSequence | |
/// Returns the maximal `SubSequence`s of `self`, in order, that | |
/// don't contain elements satisfying the predicate `isSeparator`. | |
/// | |
/// - Parameter maxSplit: The maximum number of `SubSequence`s to | |
/// return, minus 1. | |
/// If `maxSplit + 1` `SubSequence`s are returned, the last one is | |
/// a suffix of `self` containing the remaining elements. | |
/// The default value is `Int.max`. | |
/// | |
/// - Parameter allowEmptySubsequences: If `true`, an empty `SubSequence` | |
/// is produced in the result for each pair of consecutive elements | |
/// satisfying `isSeparator`. | |
/// The default value is `false`. | |
/// | |
/// - Requires: `maxSplit >= 0` | |
@warn_unused_result | |
public func split(maxSplit: Int = default, allowEmptySlices: Bool = default, @noescape isSeparator: (Self.Generator.Element) throws -> Bool) rethrows -> [Self.SubSequence] | |
} | |
extension CollectionType where Generator.Element : Equatable { | |
/// Returns the maximal `SubSequence`s of `self`, in order, around a | |
/// `separator` element. | |
/// | |
/// - Parameter maxSplit: The maximum number of `SubSequence`s to | |
/// return, minus 1. | |
/// If `maxSplit + 1` `SubSequence`s are returned, the last one is | |
/// a suffix of `self` containing the remaining elements. | |
/// The default value is `Int.max`. | |
/// | |
/// - Parameter allowEmptySubsequences: If `true`, an empty `SubSequence` | |
/// is produced in the result for each pair of consecutive elements | |
/// satisfying `isSeparator`. | |
/// The default value is `false`. | |
/// | |
/// - Requires: `maxSplit >= 0` | |
@warn_unused_result | |
public func split(separator: Self.Generator.Element, maxSplit: Int = default, allowEmptySlices: Bool = default) -> [Self.SubSequence] | |
} | |
extension CollectionType where Index : BidirectionalIndexType { | |
/// Returns a subsequence containing all but the last `n` elements. | |
/// | |
/// - Requires: `n >= 0` | |
/// - Complexity: O(`n`) | |
@warn_unused_result | |
public func dropLast(n: Int) -> Self.SubSequence | |
/// Returns a slice, up to `maxLength` in length, containing the | |
/// final elements of `s`. | |
/// | |
/// If `maxLength` exceeds `s.count`, the result contains all | |
/// the elements of `s`. | |
/// | |
/// - Requires: `maxLength >= 0` | |
/// - Complexity: O(`maxLength`) | |
@warn_unused_result | |
public func suffix(maxLength: Int) -> Self.SubSequence | |
} | |
extension CollectionType where SubSequence == Self { | |
/// Remove the element at `startIndex` and return it. | |
/// | |
/// - Complexity: O(1) | |
/// - Requires: `!self.isEmpty`. | |
public mutating func removeFirst() -> Self.Generator.Element | |
/// Remove the first `n` elements. | |
/// | |
/// - Complexity: | |
/// - O(1) if `Index` conforms to `RandomAccessIndexType` | |
/// - O(n) otherwise | |
/// - Requires: `n >= 0 && self.count >= n`. | |
public mutating func removeFirst(n: Int) | |
} | |
extension CollectionType where SubSequence == Self, Index : BidirectionalIndexType { | |
/// Remove an element from the end. | |
/// | |
/// - Complexity: O(1) | |
/// - Requires: `!self.isEmpty` | |
public mutating func removeLast() -> Self.Generator.Element | |
/// Remove the last `n` elements. | |
/// | |
/// - Complexity: | |
/// - O(1) if `Index` conforms to `RandomAccessIndexType` | |
/// - O(n) otherwise | |
/// - Requires: `n >= 0 && self.count >= n`. | |
public mutating func removeLast(n: Int) | |
} | |
extension CollectionType where Index : BidirectionalIndexType { | |
public var last: Self.Generator.Element? { get } | |
} | |
extension CollectionType where Generator.Element : Equatable { | |
/// Returns the first index where `value` appears in `self` or `nil` if | |
/// `value` is not found. | |
/// | |
/// - Complexity: O(`self.count`). | |
@warn_unused_result | |
public func indexOf(element: Self.Generator.Element) -> Self.Index? | |
} | |
extension CollectionType { | |
/// Returns the first index where `predicate` returns `true` for the | |
/// corresponding value, or `nil` if such value is not found. | |
/// | |
/// - Complexity: O(`self.count`). | |
@warn_unused_result | |
public func indexOf(@noescape predicate: (Self.Generator.Element) throws -> Bool) rethrows -> Self.Index? | |
} | |
extension CollectionType { | |
/// Return the range of valid index values. | |
/// | |
/// The result's `endIndex` is the same as that of `self`. Because | |
/// `Range` is half-open, iterating the values of the result produces | |
/// all valid subscript arguments for `self`, omitting its `endIndex`. | |
public var indices: Range<Self.Index> { get } | |
} | |
extension CollectionType where Generator.Element : CollectionType { | |
/// A concatenation of the elements of `self`. | |
@warn_unused_result | |
public func flatten() -> FlattenCollection<Self> | |
} | |
extension CollectionType where Generator.Element : CollectionType, Index : BidirectionalIndexType, Generator.Element.Index : BidirectionalIndexType { | |
/// A concatenation of the elements of `self`. | |
@warn_unused_result | |
public func flatten() -> FlattenBidirectionalCollection<Self> | |
} | |
extension CollectionType { | |
/// A collection with contents identical to `self`, but on which | |
/// normally-eager operations such as `map` and `filter` are | |
/// implemented lazily. | |
/// | |
/// - See Also: `LazySequenceType`, `LazyCollectionType`. | |
public var lazy: LazyCollection<Self> { get } | |
} | |
extension CollectionType where Self : _ReverseCollectionType, Self.Base.Index : RandomAccessIndexType { | |
public var startIndex: ReverseRandomAccessIndex<Self.Base.Index> { get } | |
} | |
extension CollectionType where Index : BidirectionalIndexType { | |
/// Return the elements of `self` in reverse order. | |
/// | |
/// - Complexity: O(1) | |
@warn_unused_result | |
public func reverse() -> ReverseCollection<Self> | |
} | |
extension CollectionType where Index : RandomAccessIndexType { | |
/// Return the elements of `self` in reverse order. | |
/// | |
/// - Complexity: O(1) | |
@warn_unused_result | |
public func reverse() -> ReverseRandomAccessCollection<Self> | |
} | |
extension CollectionType where Self : _CollectionWrapperType, Self.Index == Self.Base.Index { | |
/// The position of the first element in a non-empty collection. | |
/// | |
/// In an empty collection, `startIndex == endIndex`. | |
public var startIndex: Self.Index { get } | |
/// The collection's "past the end" position. | |
/// | |
/// `endIndex` is not a valid argument to `subscript`, and is always | |
/// reachable from `startIndex` by zero or more applications of | |
/// `successor()`. | |
public var endIndex: Self.Index { get } | |
public subscript (position: Self.Index) -> Self.Base.Generator.Element { get } | |
@warn_unused_result | |
public func map<T>(@noescape transform: (Self.Base.Generator.Element) -> T) -> [T] | |
@warn_unused_result | |
public func filter(@noescape includeElement: (Self.Base.Generator.Element) -> Bool) -> [Self.Base.Generator.Element] | |
} | |
/// Instances of conforming types can be compared using relational | |
/// operators, which define a [strict total order](http://en.wikipedia.org/wiki/Total_order#Strict_total_order). | |
/// | |
/// A type conforming to `Comparable` need only supply the `<` and | |
/// `==` operators; default implementations of `<=`, `>`, `>=`, and | |
/// `!=` are supplied by the standard library: | |
/// | |
/// struct Singular : Comparable {} | |
/// func ==(x: Singular, y: Singular) -> Bool { return true } | |
/// func <(x: Singular, y: Singular) -> Bool { return false } | |
/// | |
/// **Axioms**, in addition to those of `Equatable`: | |
/// | |
/// - `x == y` implies `x <= y`, `x >= y`, `!(x < y)`, and `!(x > y)` | |
/// - `x < y` implies `x <= y` and `y > x` | |
/// - `x > y` implies `x >= y` and `y < x` | |
/// - `x <= y` implies `y >= x` | |
/// - `x >= y` implies `y <= x` | |
public protocol Comparable : Equatable { | |
/// A [strict total order](http://en.wikipedia.org/wiki/Total_order#Strict_total_order) | |
/// over instances of `Self`. | |
@warn_unused_result | |
public func <(lhs: Self, rhs: Self) -> Bool | |
@warn_unused_result | |
public func <=(lhs: Self, rhs: Self) -> Bool | |
@warn_unused_result | |
public func >=(lhs: Self, rhs: Self) -> Bool | |
@warn_unused_result | |
public func >(lhs: Self, rhs: Self) -> Bool | |
} | |
/// A fast, contiguously-stored array of `Element`. | |
/// | |
/// Efficiency is equivalent to that of `Array`, unless `Element` is a | |
/// `class` or `@objc` `protocol` type, in which case using | |
/// `ContiguousArray` may be more efficient. Note, however, that | |
/// `ContiguousArray` does not bridge to Objective-C. See `Array`, | |
/// with which `ContiguousArray` shares most properties, for more | |
/// detail. | |
public struct ContiguousArray<Element> : CollectionType, MutableCollectionType, _DestructorSafeContainer { | |
/// Always zero, which is the index of the first element when non-empty. | |
public var startIndex: Int { get } | |
/// A "past-the-end" element index; the successor of the last valid | |
/// subscript argument. | |
public var endIndex: Int { get } | |
public subscript (index: Int) -> Element | |
public subscript (subRange: Range<Int>) -> ArraySlice<Element> | |
} | |
extension ContiguousArray : ArrayLiteralConvertible { | |
/// Create an instance containing `elements`. | |
public init(arrayLiteral elements: Element...) | |
} | |
extension ContiguousArray : _ArrayType { | |
/// Construct an empty ContiguousArray. | |
public init() | |
/// Construct from an arbitrary sequence with elements of type `Element`. | |
public init<S : SequenceType where S.Generator.Element == _Buffer.Element>(_ s: S) | |
/// Construct a ContiguousArray of `count` elements, each initialized to | |
/// `repeatedValue`. | |
public init(count: Int, repeatedValue: Element) | |
/// The number of elements the ContiguousArray stores. | |
public var count: Int { get } | |
/// The number of elements the `ContiguousArray` can store without reallocation. | |
public var capacity: Int { get } | |
/// Reserve enough space to store `minimumCapacity` elements. | |
/// | |
/// - Postcondition: `capacity >= minimumCapacity` and the array has | |
/// mutable contiguous storage. | |
/// | |
/// - Complexity: O(`count`). | |
public mutating func reserveCapacity(minimumCapacity: Int) | |
/// Append `newElement` to the ContiguousArray. | |
/// | |
/// - Complexity: Amortized O(1) unless `self`'s storage is shared with another live array; O(`count`) otherwise.. | |
public mutating func append(newElement: Element) | |
/// Append the elements of `newElements` to `self`. | |
/// | |
/// - Complexity: O(*length of result*). | |
public mutating func appendContentsOf<S : SequenceType where S.Generator.Element == Element>(newElements: S) | |
/// Append the elements of `newElements` to `self`. | |
/// | |
/// - Complexity: O(*length of result*). | |
public mutating func appendContentsOf<C : CollectionType where C.Generator.Element == Element>(newElements: C) | |
/// Remove an element from the end of the ContiguousArray in O(1). | |
/// | |
/// - Requires: `count > 0`. | |
public mutating func removeLast() -> Element | |
/// Insert `newElement` at index `i`. | |
/// | |
/// - Requires: `i <= count`. | |
/// | |
/// - Complexity: O(`count`). | |
public mutating func insert(newElement: Element, atIndex i: Int) | |
/// Remove and return the element at index `i`. | |
/// | |
/// Invalidates all indices with respect to `self`. | |
/// | |
/// - Complexity: O(`count`). | |
public mutating func removeAtIndex(index: Int) -> Element | |
/// Remove all elements. | |
/// | |
/// - Postcondition: `capacity == 0` iff `keepCapacity` is `false`. | |
/// | |
/// - Complexity: O(`self.count`). | |
public mutating func removeAll(keepCapacity keepCapacity: Bool = default) | |
} | |
extension ContiguousArray : _Reflectable { | |
} | |
extension ContiguousArray : CustomStringConvertible, CustomDebugStringConvertible { | |
/// A textual representation of `self`. | |
public var description: String { get } | |
/// A textual representation of `self`, suitable for debugging. | |
public var debugDescription: String { get } | |
} | |
extension ContiguousArray { | |
/// Call `body(p)`, where `p` is a pointer to the `ContiguousArray`'s | |
/// contiguous storage. | |
/// | |
/// Often, the optimizer can eliminate bounds checks within an | |
/// array algorithm, but when that fails, invoking the | |
/// same algorithm on `body`'s argument lets you trade safety for | |
/// speed. | |
public func withUnsafeBufferPointer<R>(@noescape body: (UnsafeBufferPointer<Element>) throws -> R) rethrows -> R | |
/// Call `body(p)`, where `p` is a pointer to the `ContiguousArray`'s | |
/// mutable contiguous storage. | |
/// | |
/// Often, the optimizer can eliminate bounds- and uniqueness-checks | |
/// within an array algorithm, but when that fails, invoking the | |
/// same algorithm on `body`'s argument lets you trade safety for | |
/// speed. | |
/// | |
/// - Warning: Do not rely on anything about `self` (the `ContiguousArray` | |
/// that is the target of this method) during the execution of | |
/// `body`: it may not appear to have its correct value. Instead, | |
/// use only the `UnsafeMutableBufferPointer` argument to `body`. | |
public mutating func withUnsafeMutableBufferPointer<R>(@noescape body: (inout UnsafeMutableBufferPointer<Element>) throws -> R) rethrows -> R | |
} | |
extension ContiguousArray { | |
/// Replace the given `subRange` of elements with `newElements`. | |
/// | |
/// - Complexity: O(`subRange.count`) if `subRange.endIndex | |
/// == self.endIndex` and `newElements.isEmpty`, O(N) otherwise. | |
public mutating func replaceRange<C : CollectionType where C.Generator.Element == _Buffer.Element>(subRange: Range<Int>, with newElements: C) | |
} | |
extension ContiguousArray { | |
/// If `!self.isEmpty`, remove the last element and return it, otherwise | |
/// return `nil`. | |
/// | |
/// - Complexity: O(1) | |
public mutating func popLast() -> Element? | |
} | |
/// A type with a customized textual representation suitable for | |
/// debugging purposes. | |
/// | |
/// This textual representation is used when values are written to an | |
/// *output stream* by `debugPrint`, and is | |
/// typically more verbose than the text provided by a | |
/// `CustomStringConvertible`'s `description` property. | |
/// | |
/// - Note: `String(reflecting: instance)` will work for an `instance` | |
/// of *any* type, returning its `debugDescription` if the `instance` | |
/// happens to be `CustomDebugStringConvertible`. Using | |
/// `CustomDebugStringConvertible` as a generic constraint, or | |
/// accessing a conforming type's `debugDescription` directly, is | |
/// therefore discouraged. | |
/// | |
/// - SeeAlso: `String.init<T>(reflecting: T)`, | |
/// `CustomStringConvertible` | |
public protocol CustomDebugStringConvertible { | |
/// A textual representation of `self`, suitable for debugging. | |
public var debugDescription: String { get } | |
} | |
/// A type that explicitly supplies its own Mirror but whose | |
/// descendant classes are not represented in the Mirror unless they | |
/// also override `customMirror()`. | |
public protocol CustomLeafReflectable : CustomReflectable { | |
} | |
/// A type that explicitly supplies its own PlaygroundQuickLook. | |
/// | |
/// Instances of any type can be `PlaygroundQuickLook(reflect:)`'ed | |
/// upon, but if you are not satisfied with the `PlaygroundQuickLook` | |
/// supplied for your type by default, you can make it conform to | |
/// `CustomPlaygroundQuickLookable` and return a custom | |
/// `PlaygroundQuickLook`. | |
public protocol CustomPlaygroundQuickLookable { | |
/// Return the `Mirror` for `self`. | |
/// | |
/// - Note: If `Self` has value semantics, the `Mirror` should be | |
/// unaffected by subsequent mutations of `self`. | |
@warn_unused_result | |
public func customPlaygroundQuickLook() -> PlaygroundQuickLook | |
} | |
/// A type that explicitly supplies its own Mirror. | |
/// | |
/// Instances of any type can be `Mirror(reflect:)`'ed upon, but if you are | |
/// not satisfied with the `Mirror` supplied for your type by default, | |
/// you can make it conform to `CustomReflectable` and return a custom | |
/// `Mirror`. | |
public protocol CustomReflectable { | |
/// Return the `Mirror` for `self`. | |
/// | |
/// - Note: If `Self` has value semantics, the `Mirror` should be | |
/// unaffected by subsequent mutations of `self`. | |
@warn_unused_result | |
public func customMirror() -> Mirror | |
} | |
/// A type with a customized textual representation. | |
/// | |
/// This textual representation is used when values are written to an | |
/// *output stream*, for example, by `print`. | |
/// | |
/// - Note: `String(instance)` will work for an `instance` of *any* | |
/// type, returning its `description` if the `instance` happens to be | |
/// `CustomStringConvertible`. Using `CustomStringConvertible` as a | |
/// generic constraint, or accessing a conforming type's `description` | |
/// directly, is therefore discouraged. | |
/// | |
/// - SeeAlso: `String.init<T>(T)`, `CustomDebugStringConvertible` | |
public protocol CustomStringConvertible { | |
/// A textual representation of `self`. | |
public var description: String { get } | |
} | |
/// A hash-based mapping from `Key` to `Value` instances. Also a | |
/// collection of key-value pairs with no defined ordering. | |
public struct Dictionary<Key : Hashable, Value> : CollectionType, DictionaryLiteralConvertible { | |
public typealias Element = (Key, Value) | |
public typealias Index = DictionaryIndex<Key, Value> | |
/// Create an empty dictionary. | |
public init() | |
/// Create a dictionary with at least the given number of | |
/// elements worth of storage. The actual capacity will be the | |
/// smallest power of 2 that's >= `minimumCapacity`. | |
public init(minimumCapacity: Int) | |
/// The position of the first element in a non-empty dictionary. | |
/// | |
/// Identical to `endIndex` in an empty dictionary. | |
/// | |
/// - Complexity: Amortized O(1) if `self` does not wrap a bridged | |
/// `NSDictionary`, O(N) otherwise. | |
public var startIndex: DictionaryIndex<Key, Value> { get } | |
/// The collection's "past the end" position. | |
/// | |
/// `endIndex` is not a valid argument to `subscript`, and is always | |
/// reachable from `startIndex` by zero or more applications of | |
/// `successor()`. | |
/// | |
/// - Complexity: Amortized O(1) if `self` does not wrap a bridged | |
/// `NSDictionary`, O(N) otherwise. | |
public var endIndex: DictionaryIndex<Key, Value> { get } | |
/// Returns the `Index` for the given key, or `nil` if the key is not | |
/// present in the dictionary. | |
@warn_unused_result | |
public func indexForKey(key: Key) -> DictionaryIndex<Key, Value>? | |
public subscript (position: DictionaryIndex<Key, Value>) -> (Key, Value) { get } | |
public subscript (key: Key) -> Value? | |
/// Update the value stored in the dictionary for the given key, or, if they | |
/// key does not exist, add a new key-value pair to the dictionary. | |
/// | |
/// Returns the value that was replaced, or `nil` if a new key-value pair | |
/// was added. | |
public mutating func updateValue(value: Value, forKey key: Key) -> Value? | |
/// Remove the key-value pair at `index`. | |
/// | |
/// Invalidates all indices with respect to `self`. | |
/// | |
/// - Complexity: O(`count`). | |
public mutating func removeAtIndex(index: DictionaryIndex<Key, Value>) -> (Key, Value) | |
/// Remove a given key and the associated value from the dictionary. | |
/// Returns the value that was removed, or `nil` if the key was not present | |
/// in the dictionary. | |
public mutating func removeValueForKey(key: Key) -> Value? | |
/// Remove all elements. | |
/// | |
/// - Postcondition: `capacity == 0` if `keepCapacity` is `false`, otherwise | |
/// the capacity will not be decreased. | |
/// | |
/// Invalidates all indices with respect to `self`. | |
/// | |
/// - parameter keepCapacity: If `true`, the operation preserves the | |
/// storage capacity that the collection has, otherwise the underlying | |
/// storage is released. The default is `false`. | |
/// | |
/// Complexity: O(`count`). | |
public mutating func removeAll(keepCapacity keepCapacity: Bool = default) | |
/// The number of entries in the dictionary. | |
/// | |
/// - Complexity: O(1). | |
public var count: Int { get } | |
/// Return a *generator* over the (key, value) pairs. | |
/// | |
/// - Complexity: O(1). | |
public func generate() -> DictionaryGenerator<Key, Value> | |
/// Create an instance initialized with `elements`. | |
public init(dictionaryLiteral elements: (Key, Value)...) | |
/// A collection containing just the keys of `self`. | |
/// | |
/// Keys appear in the same order as they occur as the `.0` member | |
/// of key-value pairs in `self`. Each key in the result has a | |
/// unique value. | |
public var keys: LazyMapCollection<[Key : Value], Key> { get } | |
/// A collection containing just the values of `self`. | |
/// | |
/// Values appear in the same order as they occur as the `.1` member | |
/// of key-value pairs in `self`. | |
public var values: LazyMapCollection<[Key : Value], Value> { get } | |
/// `true` iff `count == 0`. | |
public var isEmpty: Bool { get } | |
} | |
extension Dictionary : CustomStringConvertible, CustomDebugStringConvertible { | |
/// A textual representation of `self`. | |
public var description: String { get } | |
/// A textual representation of `self`, suitable for debugging. | |
public var debugDescription: String { get } | |
} | |
extension Dictionary : _Reflectable { | |
} | |
extension Dictionary { | |
/// If `!self.isEmpty`, return the first key-value pair in the sequence of | |
/// elements, otherwise return `nil`. | |
/// | |
/// - Complexity: Amortized O(1) | |
public mutating func popFirst() -> (Key, Value)? | |
} | |
/// A generator over the members of a `Dictionary<Key, Value>`. | |
public struct DictionaryGenerator<Key : Hashable, Value> : GeneratorType { | |
/// Advance to the next element and return it, or `nil` if no next | |
/// element exists. | |
/// | |
/// - Requires: No preceding call to `self.next()` has returned `nil`. | |
public mutating func next() -> (Key, Value)? | |
} | |
/// Used to access the key-value pairs in an instance of | |
/// `Dictionary<Key, Value>`. | |
/// | |
/// Dictionary has two subscripting interfaces: | |
/// | |
/// 1. Subscripting with a key, yielding an optional value: | |
/// | |
/// v = d[k]! | |
/// | |
/// 2. Subscripting with an index, yielding a key-value pair: | |
/// | |
/// (k,v) = d[i] | |
public struct DictionaryIndex<Key : Hashable, Value> : ForwardIndexType, Comparable { | |
/// Returns the next consecutive value after `self`. | |
/// | |
/// - Requires: The next value is representable. | |
public func successor() -> DictionaryIndex<Key, Value> | |
} | |
/// Represent the ability to pass a dictionary literal in function | |
/// signatures. | |
/// | |
/// A function with a `DictionaryLiteral` parameter can be passed a | |
/// Swift dictionary literal without causing a `Dictionary` to be | |
/// created. This capability can be especially important when the | |
/// order of elements in the literal is significant. | |
/// | |
/// For example: | |
/// | |
/// struct IntPairs { | |
/// var elements: [(Int, Int)] | |
/// init(_ pairs: DictionaryLiteral<Int,Int>) { | |
/// elements = Array(pairs) | |
/// } | |
/// } | |
/// | |
/// let x = IntPairs([1:2, 1:1, 3:4, 2:1]) | |
/// print(x.elements) // [(1, 2), (1, 1), (3, 4), (2, 1)] | |
public struct DictionaryLiteral<Key, Value> : DictionaryLiteralConvertible { | |
/// Store `elements`. | |
public init(dictionaryLiteral elements: (Key, Value)...) | |
} | |
extension DictionaryLiteral : CollectionType { | |
/// The position of the first element in a non-empty `DictionaryLiteral`. | |
/// | |
/// Identical to `endIndex` in an empty `DictionaryLiteral`. | |
/// | |
/// - Complexity: O(1). | |
public var startIndex: Int { get } | |
/// The `DictionaryLiteral`'s "past the end" position. | |
/// | |
/// `endIndex` is not a valid argument to `subscript`, and is always | |
/// reachable from `startIndex` by zero or more applications of | |
/// `successor()`. | |
/// | |
/// - Complexity: O(1). | |
public var endIndex: Int { get } | |
public typealias Element = (Key, Value) | |
public subscript (position: Int) -> (Key, Value) { get } | |
} | |
/// Conforming types can be initialized with dictionary literals. | |
public protocol DictionaryLiteralConvertible { | |
typealias Key | |
typealias Value | |
/// Create an instance initialized with `elements`. | |
public init(dictionaryLiteral elements: (Self.Key, Self.Value)...) | |
} | |
public struct Double { | |
/// Create an instance initialized to zero. | |
public init() | |
public init(_bits v: Builtin.FPIEEE64) | |
/// Create an instance initialized to `value`. | |
public init(_ value: Double) | |
} | |
extension Double : CustomStringConvertible { | |
/// A textual representation of `self`. | |
public var description: String { get } | |
} | |
extension Double : FloatingPointType { | |
/// The positive infinity. | |
public static var infinity: Double { get } | |
/// A quiet NaN. | |
public static var NaN: Double { get } | |
/// A quiet NaN. | |
public static var quietNaN: Double { get } | |
/// `true` iff `self` is negative. | |
public var isSignMinus: Bool { get } | |
/// `true` iff `self` is normal (not zero, subnormal, infinity, or | |
/// NaN). | |
public var isNormal: Bool { get } | |
/// `true` iff `self` is zero, subnormal, or normal (not infinity | |
/// or NaN). | |
public var isFinite: Bool { get } | |
/// `true` iff `self` is +0.0 or -0.0. | |
public var isZero: Bool { get } | |
/// `true` iff `self` is subnormal. | |
public var isSubnormal: Bool { get } | |
/// `true` iff `self` is infinity. | |
public var isInfinite: Bool { get } | |
/// `true` iff `self` is NaN. | |
public var isNaN: Bool { get } | |
/// `true` iff `self` is a signaling NaN. | |
public var isSignaling: Bool { get } | |
} | |
extension Double { | |
/// The IEEE 754 "class" of this type. | |
public var floatingPointClass: FloatingPointClassification { get } | |
} | |
extension Double : IntegerLiteralConvertible { | |
public init(_builtinIntegerLiteral value: Builtin.Int2048) | |
/// Create an instance initialized to `value`. | |
public init(integerLiteral value: Int64) | |
} | |
extension Double { | |
public init(_builtinFloatLiteral value: Builtin.FPIEEE80) | |
} | |
extension Double : FloatLiteralConvertible { | |
/// Create an instance initialized to `value`. | |
public init(floatLiteral value: Double) | |
} | |
extension Double : Comparable, Equatable { | |
} | |
extension Double : Hashable { | |
/// The hash value. | |
/// | |
/// **Axiom:** `x == y` implies `x.hashValue == y.hashValue`. | |
/// | |
/// - Note: The hash value is not guaranteed to be stable across | |
/// different invocations of the same program. Do not persist the | |
/// hash value across program runs. | |
public var hashValue: Int { get } | |
} | |
extension Double : AbsoluteValuable { | |
/// Returns the absolute value of `x`. | |
@warn_unused_result | |
public static func abs(x: Double) -> Double | |
} | |
extension Double { | |
public init(_ v: UInt8) | |
public init(_ v: Int8) | |
public init(_ v: UInt16) | |
public init(_ v: Int16) | |
public init(_ v: UInt32) | |
public init(_ v: Int32) | |
public init(_ v: UInt64) | |
public init(_ v: Int64) | |
public init(_ v: UInt) | |
public init(_ v: Int) | |
} | |
extension Double { | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Float) | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Float80) | |
} | |
extension Double : Strideable { | |
/// Returns a stride `x` such that `self.advancedBy(x)` approximates | |
/// `other`. | |
/// | |
/// - Complexity: O(1). | |
public func distanceTo(other: Double) -> Double | |
/// Returns a `Self` `x` such that `self.distanceTo(x)` approximates | |
/// `n`. | |
/// | |
/// - Complexity: O(1). | |
public func advancedBy(amount: Double) -> Double | |
} | |
extension Double { | |
/// Construct from an ASCII representation. | |
/// | |
/// Returns the result of calling the POSIX function | |
/// `strtod_l` using the "C" locale, unless | |
/// `text` contains non-ASCII text or whitespace, or is not | |
/// completely consumed by the call. Otherwise, returns `nil`. | |
/// | |
/// See the `strtod (3)` man page for details of | |
/// the exact format accepted. | |
public init?(_ text: String) | |
} | |
extension Double : _Reflectable { | |
} | |
extension Double : _CVarArgPassedAsDouble, _CVarArgAlignedType { | |
} | |
/// A collection whose element type is `Element` but that is always empty. | |
public struct EmptyCollection<Element> : CollectionType { | |
/// A type that represents a valid position in the collection. | |
/// | |
/// Valid indices consist of the position of every element and a | |
/// "past the end" position that's not valid for use as a subscript. | |
public typealias Index = Int | |
/// Construct an instance. | |
public init() | |
/// Always zero, just like `endIndex`. | |
public var startIndex: Index { get } | |
/// Always zero, just like `startIndex`. | |
public var endIndex: Index { get } | |
/// Returns an empty *generator*. | |
/// | |
/// - Complexity: O(1). | |
public func generate() -> EmptyGenerator<Element> | |
public subscript (position: Index) -> Element { get } | |
/// Return the number of elements (always zero). | |
public var count: Int { get } | |
} | |
extension EmptyCollection : _Reflectable { | |
} | |
/// A generator that never produces an element. | |
/// | |
/// - SeeAlso: `EmptyCollection<Element>`. | |
public struct EmptyGenerator<Element> : GeneratorType, SequenceType { | |
/// Construct an instance. | |
public init() | |
/// Return `nil`, indicating that there are no more elements. | |
public mutating func next() -> Element? | |
} | |
/// The `GeneratorType` for `EnumerateSequence`. `EnumerateGenerator` | |
/// wraps a `Base` `GeneratorType` and yields successive `Int` values, | |
/// starting at zero, along with the elements of the underlying | |
/// `Base`: | |
/// | |
/// var g = EnumerateGenerator(["foo", "bar"].generate()) | |
/// g.next() // (0, "foo") | |
/// g.next() // (1, "bar") | |
/// g.next() // nil | |
/// | |
/// - Note: Idiomatic usage is to call `enumerate` instead of | |
/// constructing an `EnumerateGenerator` directly. | |
public struct EnumerateGenerator<Base : GeneratorType> : GeneratorType, SequenceType { | |
/// The type of element returned by `next()`. | |
public typealias Element = (index: Int, element: Base.Element) | |
/// Construct from a `Base` generator. | |
public init(_ base: Base) | |
/// Advance to the next element and return it, or `nil` if no next | |
/// element exists. | |
/// | |
/// - Requires: No preceding call to `self.next()` has returned `nil`. | |
public mutating func next() -> (index: Int, element: Base.Element)? | |
} | |
/// The `SequenceType` returned by `enumerate()`. `EnumerateSequence` | |
/// is a sequence of pairs (*n*, *x*), where *n*s are consecutive | |
/// `Int`s starting at zero, and *x*s are the elements of a `Base` | |
/// `SequenceType`: | |
/// | |
/// var s = EnumerateSequence(["foo", "bar"]) | |
/// Array(s) // [(0, "foo"), (1, "bar")] | |
/// | |
/// - Note: Idiomatic usage is to call `enumerate` instead of | |
/// constructing an `EnumerateSequence` directly. | |
public struct EnumerateSequence<Base : SequenceType> : SequenceType { | |
/// Construct from a `Base` sequence. | |
public init(_ base: Base) | |
/// Returns a *generator* over the elements of this *sequence*. | |
/// | |
/// - Complexity: O(1). | |
public func generate() -> EnumerateGenerator<Base.Generator> | |
} | |
/// Instances of conforming types can be compared for value equality | |
/// using operators `==` and `!=`. | |
/// | |
/// When adopting `Equatable`, only the `==` operator is required to be | |
/// implemented. The standard library provides an implementation for `!=`. | |
public protocol Equatable { | |
/// Return true if `lhs` is equal to `rhs`. | |
/// | |
/// **Equality implies substitutability**. When `x == y`, `x` and | |
/// `y` are interchangeable in any code that only depends on their | |
/// values. | |
/// | |
/// Class instance identity as distinguished by triple-equals `===` | |
/// is notably not part of an instance's value. Exposing other | |
/// non-value aspects of `Equatable` types is discouraged, and any | |
/// that *are* exposed should be explicitly pointed out in | |
/// documentation. | |
/// | |
/// **Equality is an equivalence relation** | |
/// | |
/// - `x == x` is `true` | |
/// - `x == y` implies `y == x` | |
/// - `x == y` and `y == z` implies `x == z` | |
/// | |
/// **Inequality is the inverse of equality**, i.e. `!(x == y)` iff | |
/// `x != y`. | |
@warn_unused_result | |
public func ==(lhs: Self, rhs: Self) -> Bool | |
} | |
public protocol ErrorType { | |
} | |
extension ErrorType { | |
} | |
/// Conforming types can be initialized with string literals | |
/// containing a single [Unicode extended grapheme cluster](http://www.unicode.org/glossary/#extended_grapheme_cluster). | |
public protocol ExtendedGraphemeClusterLiteralConvertible : UnicodeScalarLiteralConvertible { | |
typealias ExtendedGraphemeClusterLiteralType | |
/// Create an instance initialized to `value`. | |
public init(extendedGraphemeClusterLiteral value: Self.ExtendedGraphemeClusterLiteralType) | |
} | |
/// The default type for an otherwise-unconstrained Unicode extended | |
/// grapheme cluster literal. | |
public typealias ExtendedGraphemeClusterType = String | |
/// A flattened view of a base collection-of-collections. | |
/// | |
/// The elements of this view are a concatenation of the elements of | |
/// each collection in the base. | |
/// | |
/// The `flatten` property is always lazy, but does not implicitly | |
/// confer laziness on algorithms applied to its result. In other | |
/// words, for ordinary collections `c`: | |
/// | |
/// * `c.flatten()` does not create new storage | |
/// * `c.flatten().map(f)` maps eagerly and returns a new array | |
/// * `c.lazy.flatten().map(f)` maps lazily and returns a `LazyMapCollection` | |
/// | |
/// - See also: `FlattenSequence` | |
public struct FlattenBidirectionalCollection<Base : CollectionType where Base.Generator.Element : CollectionType, Base.Index : BidirectionalIndexType, Base.Generator.Element.Index : BidirectionalIndexType> : CollectionType { | |
/// A type that represents a valid position in the collection. | |
/// | |
/// Valid indices consist of the position of every element and a | |
/// "past the end" position that's not valid for use as a subscript. | |
public typealias Index = FlattenBidirectionalCollectionIndex<Base> | |
/// Creates a flattened view of `base`. | |
public init(_ base: Base) | |
/// Return a *generator* over the elements of this *sequence*. | |
/// | |
/// - Complexity: O(1). | |
public func generate() -> FlattenGenerator<Base.Generator> | |
/// The position of the first element in a non-empty collection. | |
/// | |
/// In an empty collection, `startIndex == endIndex`. | |
public var startIndex: FlattenBidirectionalCollectionIndex<Base> { get } | |
/// The collection's "past the end" position. | |
/// | |
/// `endIndex` is not a valid argument to `subscript`, and is always | |
/// reachable from `startIndex` by zero or more applications of | |
/// `successor()`. | |
public var endIndex: FlattenBidirectionalCollectionIndex<Base> { get } | |
public subscript (position: FlattenBidirectionalCollectionIndex<Base>) -> Base.Generator.Element.Generator.Element { get } | |
public func underestimateCount() -> Int | |
} | |
public struct FlattenBidirectionalCollectionIndex<BaseElements : CollectionType where BaseElements.Generator.Element : CollectionType, BaseElements.Index : BidirectionalIndexType, BaseElements.Generator.Element.Index : BidirectionalIndexType> : BidirectionalIndexType { | |
/// Returns the next consecutive value after `self`. | |
/// | |
/// - Requires: The next value is representable. | |
public func successor() -> FlattenBidirectionalCollectionIndex<BaseElements> | |
/// Returns the previous consecutive value before `self`. | |
/// | |
/// - Requires: The previous value is representable. | |
public func predecessor() -> FlattenBidirectionalCollectionIndex<BaseElements> | |
} | |
/// A flattened view of a base collection-of-collections. | |
/// | |
/// The elements of this view are a concatenation of the elements of | |
/// each collection in the base. | |
/// | |
/// The `flatten` property is always lazy, but does not implicitly | |
/// confer laziness on algorithms applied to its result. In other | |
/// words, for ordinary collections `c`: | |
/// | |
/// * `c.flatten()` does not create new storage | |
/// * `c.flatten().map(f)` maps eagerly and returns a new array | |
/// * `c.lazy.flatten().map(f)` maps lazily and returns a `LazyMapCollection` | |
/// | |
/// - See also: `FlattenSequence` | |
public struct FlattenCollection<Base : CollectionType where Base.Generator.Element : CollectionType> : CollectionType { | |
/// A type that represents a valid position in the collection. | |
/// | |
/// Valid indices consist of the position of every element and a | |
/// "past the end" position that's not valid for use as a subscript. | |
public typealias Index = FlattenCollectionIndex<Base> | |
/// Creates a flattened view of `base`. | |
public init(_ base: Base) | |
/// Return a *generator* over the elements of this *sequence*. | |
/// | |
/// - Complexity: O(1). | |
public func generate() -> FlattenGenerator<Base.Generator> | |
/// The position of the first element in a non-empty collection. | |
/// | |
/// In an empty collection, `startIndex == endIndex`. | |
public var startIndex: FlattenCollectionIndex<Base> { get } | |
/// The collection's "past the end" position. | |
/// | |
/// `endIndex` is not a valid argument to `subscript`, and is always | |
/// reachable from `startIndex` by zero or more applications of | |
/// `successor()`. | |
public var endIndex: FlattenCollectionIndex<Base> { get } | |
public subscript (position: FlattenCollectionIndex<Base>) -> Base.Generator.Element.Generator.Element { get } | |
public func underestimateCount() -> Int | |
} | |
public struct FlattenCollectionIndex<BaseElements : CollectionType where BaseElements.Generator.Element : CollectionType> : ForwardIndexType { | |
/// Returns the next consecutive value after `self`. | |
/// | |
/// - Requires: The next value is representable. | |
public func successor() -> FlattenCollectionIndex<BaseElements> | |
} | |
/// A flattened view of a base generator-of-sequences. | |
/// | |
/// The elements generated are the concatenation of those in each | |
/// sequence generated by the base generator. | |
/// | |
/// - Note: This is the `GeneratorType` used by `FlattenSequence`, | |
/// `FlattenCollection`, and `BidirectionalFlattenCollection`. | |
public struct FlattenGenerator<Base : GeneratorType where Base.Element : SequenceType> : GeneratorType, SequenceType { | |
/// Construct around a generator for the `base` sequence. | |
public init(_ base: Base) | |
/// Advance to the next element and return it, or `nil` if no next | |
/// element exists. | |
/// | |
/// - Requires: `next()` has not been applied to a copy of `self` | |
/// since the copy was made, and no preceding call to `self.next()` | |
/// has returned `nil`. | |
public mutating func next() -> Base.Element.Generator.Element? | |
} | |
/// A flattened view of a base sequence-of-sequences. | |
/// | |
/// The elements of this view are a concatenation of the elements of | |
/// each sequence in the base. | |
/// | |
/// The `flatten` property is always lazy, but does not implicitly | |
/// confer laziness on algorithms applied to its result. In other | |
/// words, for ordinary sequences `s`: | |
/// | |
/// * `s.flatten()` does not create new storage | |
/// * `s.flatten().map(f)` maps eagerly and returns a new array | |
/// * `s.lazy.flatten().map(f)` maps lazily and returns a `LazyMapSequence` | |
/// | |
/// - See also: `FlattenCollection` | |
public struct FlattenSequence<Base : SequenceType where Base.Generator.Element : SequenceType> : SequenceType { | |
/// Creates a concatenation of the elements of the elements of `base`. | |
/// | |
/// - Complexity: O(1) | |
public init(_ base: Base) | |
/// Return a *generator* over the elements of this *sequence*. | |
/// | |
/// - Complexity: O(1). | |
public func generate() -> FlattenGenerator<Base.Generator> | |
} | |
public struct Float { | |
/// Create an instance initialized to zero. | |
public init() | |
public init(_bits v: Builtin.FPIEEE32) | |
/// Create an instance initialized to `value`. | |
public init(_ value: Float) | |
} | |
extension Float : CustomStringConvertible { | |
/// A textual representation of `self`. | |
public var description: String { get } | |
} | |
extension Float : FloatingPointType { | |
/// The positive infinity. | |
public static var infinity: Float { get } | |
/// A quiet NaN. | |
public static var NaN: Float { get } | |
/// A quiet NaN. | |
public static var quietNaN: Float { get } | |
/// `true` iff `self` is negative. | |
public var isSignMinus: Bool { get } | |
/// `true` iff `self` is normal (not zero, subnormal, infinity, or | |
/// NaN). | |
public var isNormal: Bool { get } | |
/// `true` iff `self` is zero, subnormal, or normal (not infinity | |
/// or NaN). | |
public var isFinite: Bool { get } | |
/// `true` iff `self` is +0.0 or -0.0. | |
public var isZero: Bool { get } | |
/// `true` iff `self` is subnormal. | |
public var isSubnormal: Bool { get } | |
/// `true` iff `self` is infinity. | |
public var isInfinite: Bool { get } | |
/// `true` iff `self` is NaN. | |
public var isNaN: Bool { get } | |
/// `true` iff `self` is a signaling NaN. | |
public var isSignaling: Bool { get } | |
} | |
extension Float { | |
/// The IEEE 754 "class" of this type. | |
public var floatingPointClass: FloatingPointClassification { get } | |
} | |
extension Float : IntegerLiteralConvertible { | |
public init(_builtinIntegerLiteral value: Builtin.Int2048) | |
/// Create an instance initialized to `value`. | |
public init(integerLiteral value: Int64) | |
} | |
extension Float { | |
public init(_builtinFloatLiteral value: Builtin.FPIEEE80) | |
} | |
extension Float : FloatLiteralConvertible { | |
/// Create an instance initialized to `value`. | |
public init(floatLiteral value: Float) | |
} | |
extension Float : Comparable, Equatable { | |
} | |
extension Float : Hashable { | |
/// The hash value. | |
/// | |
/// **Axiom:** `x == y` implies `x.hashValue == y.hashValue`. | |
/// | |
/// - Note: The hash value is not guaranteed to be stable across | |
/// different invocations of the same program. Do not persist the | |
/// hash value across program runs. | |
public var hashValue: Int { get } | |
} | |
extension Float : AbsoluteValuable { | |
/// Returns the absolute value of `x`. | |
@warn_unused_result | |
public static func abs(x: Float) -> Float | |
} | |
extension Float { | |
public init(_ v: UInt8) | |
public init(_ v: Int8) | |
public init(_ v: UInt16) | |
public init(_ v: Int16) | |
public init(_ v: UInt32) | |
public init(_ v: Int32) | |
public init(_ v: UInt64) | |
public init(_ v: Int64) | |
public init(_ v: UInt) | |
public init(_ v: Int) | |
} | |
extension Float { | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Double) | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Float80) | |
} | |
extension Float : Strideable { | |
/// Returns a stride `x` such that `self.advancedBy(x)` approximates | |
/// `other`. | |
/// | |
/// - Complexity: O(1). | |
public func distanceTo(other: Float) -> Float | |
/// Returns a `Self` `x` such that `self.distanceTo(x)` approximates | |
/// `n`. | |
/// | |
/// - Complexity: O(1). | |
public func advancedBy(amount: Float) -> Float | |
} | |
extension Float { | |
/// Construct from an ASCII representation. | |
/// | |
/// Returns the result of calling the POSIX function | |
/// `strtof_l` using the "C" locale, unless | |
/// `text` contains non-ASCII text or whitespace, or is not | |
/// completely consumed by the call. Otherwise, returns `nil`. | |
/// | |
/// See the `strtof (3)` man page for details of | |
/// the exact format accepted. | |
public init?(_ text: String) | |
} | |
extension Float : _Reflectable { | |
} | |
extension Float : _CVarArgPassedAsDouble, _CVarArgAlignedType { | |
} | |
/// A 32-bit floating point type. | |
public typealias Float32 = Float | |
/// A 64-bit floating point type. | |
public typealias Float64 = Double | |
public struct Float80 { | |
/// Create an instance initialized to zero. | |
public init() | |
public init(_bits v: Builtin.FPIEEE80) | |
/// Create an instance initialized to `value`. | |
public init(_ value: Float80) | |
} | |
extension Float80 : CustomStringConvertible { | |
/// A textual representation of `self`. | |
public var description: String { get } | |
} | |
extension Float80 : IntegerLiteralConvertible { | |
public init(_builtinIntegerLiteral value: Builtin.Int2048) | |
/// Create an instance initialized to `value`. | |
public init(integerLiteral value: Int64) | |
} | |
extension Float80 { | |
public init(_builtinFloatLiteral value: Builtin.FPIEEE80) | |
} | |
extension Float80 : FloatLiteralConvertible { | |
/// Create an instance initialized to `value`. | |
public init(floatLiteral value: Float80) | |
} | |
extension Float80 : Comparable, Equatable { | |
} | |
extension Float80 : Hashable { | |
/// The hash value. | |
/// | |
/// **Axiom:** `x == y` implies `x.hashValue == y.hashValue`. | |
/// | |
/// - Note: The hash value is not guaranteed to be stable across | |
/// different invocations of the same program. Do not persist the | |
/// hash value across program runs. | |
public var hashValue: Int { get } | |
} | |
extension Float80 : AbsoluteValuable { | |
/// Returns the absolute value of `x`. | |
@warn_unused_result | |
public static func abs(x: Float80) -> Float80 | |
} | |
extension Float80 { | |
public init(_ v: UInt8) | |
public init(_ v: Int8) | |
public init(_ v: UInt16) | |
public init(_ v: Int16) | |
public init(_ v: UInt32) | |
public init(_ v: Int32) | |
public init(_ v: UInt64) | |
public init(_ v: Int64) | |
public init(_ v: UInt) | |
public init(_ v: Int) | |
} | |
extension Float80 { | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Float) | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Double) | |
} | |
extension Float80 : Strideable { | |
/// Returns a stride `x` such that `self.advancedBy(x)` approximates | |
/// `other`. | |
/// | |
/// - Complexity: O(1). | |
public func distanceTo(other: Float80) -> Float80 | |
/// Returns a `Self` `x` such that `self.distanceTo(x)` approximates | |
/// `n`. | |
/// | |
/// - Complexity: O(1). | |
public func advancedBy(amount: Float80) -> Float80 | |
} | |
extension Float80 { | |
/// Construct from an ASCII representation. | |
/// | |
/// Returns the result of calling the POSIX function | |
/// `strtold_l` using the "C" locale, unless | |
/// `text` contains non-ASCII text or whitespace, or is not | |
/// completely consumed by the call. Otherwise, returns `nil`. | |
/// | |
/// See the `strtold (3)` man page for details of | |
/// the exact format accepted. | |
public init?(_ text: String) | |
} | |
/// Conforming types can be initialized with floating point literals. | |
public protocol FloatLiteralConvertible { | |
typealias FloatLiteralType | |
/// Create an instance initialized to `value`. | |
public init(floatLiteral value: Self.FloatLiteralType) | |
} | |
/// The default type for an otherwise-unconstrained floating point literal. | |
public typealias FloatLiteralType = Double | |
/// The set of possible IEEE 754 "classes" | |
public enum FloatingPointClassification { | |
case SignalingNaN | |
case QuietNaN | |
case NegativeInfinity | |
case NegativeNormal | |
case NegativeSubnormal | |
case NegativeZero | |
case PositiveZero | |
case PositiveSubnormal | |
case PositiveNormal | |
case PositiveInfinity | |
} | |
extension FloatingPointClassification : Equatable { | |
} | |
/// A set of common requirements for Swift's floating point types. | |
public protocol FloatingPointType : Strideable { | |
/// Create an instance initialized to `value`. | |
public init(_ value: UInt8) | |
/// Create an instance initialized to `value`. | |
public init(_ value: Int8) | |
/// Create an instance initialized to `value`. | |
public init(_ value: UInt16) | |
/// Create an instance initialized to `value`. | |
public init(_ value: Int16) | |
/// Create an instance initialized to `value`. | |
public init(_ value: UInt32) | |
/// Create an instance initialized to `value`. | |
public init(_ value: Int32) | |
/// Create an instance initialized to `value`. | |
public init(_ value: UInt64) | |
/// Create an instance initialized to `value`. | |
public init(_ value: Int64) | |
/// Create an instance initialized to `value`. | |
public init(_ value: UInt) | |
/// Create an instance initialized to `value`. | |
public init(_ value: Int) | |
/// The positive infinity. | |
public static var infinity: Self { get } | |
/// A quiet NaN. | |
public static var NaN: Self { get } | |
/// A quiet NaN. | |
public static var quietNaN: Self { get } | |
/// The IEEE 754 "class" of this type. | |
public var floatingPointClass: FloatingPointClassification { get } | |
/// `true` iff `self` is negative. | |
public var isSignMinus: Bool { get } | |
/// `true` iff `self` is normal (not zero, subnormal, infinity, or | |
/// NaN). | |
public var isNormal: Bool { get } | |
/// `true` iff `self` is zero, subnormal, or normal (not infinity | |
/// or NaN). | |
public var isFinite: Bool { get } | |
/// `true` iff `self` is +0.0 or -0.0. | |
public var isZero: Bool { get } | |
/// `true` iff `self` is subnormal. | |
public var isSubnormal: Bool { get } | |
/// `true` iff `self` is infinity. | |
public var isInfinite: Bool { get } | |
/// `true` iff `self` is NaN. | |
public var isNaN: Bool { get } | |
/// `true` iff `self` is a signaling NaN. | |
public var isSignaling: Bool { get } | |
} | |
/// Represents a discrete value in a series, where a value's | |
/// successor, if any, is reachable by applying the value's | |
/// `successor()` method. | |
public protocol ForwardIndexType : _Incrementable { | |
/// A type that can represent the number of steps between pairs of | |
/// `Self` values where one value is reachable from the other. | |
/// | |
/// Reachability is defined by the ability to produce one value from | |
/// the other via zero or more applications of `successor`. | |
typealias Distance : _SignedIntegerType = Int | |
/// Return the result of advancing `self` by `n` positions. | |
/// | |
/// - Returns: | |
/// - If `n > 0`, the result of applying `successor` to `self` `n` times. | |
/// - If `n < 0`, the result of applying `predecessor` to `self` `-n` times. | |
/// - Otherwise, `self`. | |
/// | |
/// - Requires: `n >= 0` if only conforming to `ForwardIndexType` | |
/// - Complexity: | |
/// - O(1) if conforming to `RandomAccessIndexType` | |
/// - O(`abs(n)`) otherwise | |
@warn_unused_result | |
public func advancedBy(n: Self.Distance) -> Self | |
/// Return the result of advancing `self` by `n` positions, or until it | |
/// equals `limit`. | |
/// | |
/// - Returns: | |
/// - If `n > 0`, the result of applying `successor` to `self` `n` times | |
/// but not past `limit`. | |
/// - If `n < 0`, the result of applying `predecessor` to `self` `-n` times | |
/// but not past `limit`. | |
/// - Otherwise, `self`. | |
/// | |
/// - Requires: `n >= 0` if only conforming to `ForwardIndexType`. | |
/// | |
/// - Complexity: | |
/// - O(1) if conforming to `RandomAccessIndexType` | |
/// - O(`abs(n)`) otherwise | |
@warn_unused_result | |
public func advancedBy(n: Self.Distance, limit: Self) -> Self | |
/// Measure the distance between `self` and `end`. | |
/// | |
/// - Requires: | |
/// - `start` and `end` are part of the same sequence when conforming to | |
/// `RandomAccessSequenceType`. | |
/// - `end` is reachable from `self` by incrementation otherwise. | |
/// | |
/// - Complexity: | |
/// - O(1) if conforming to `RandomAccessIndexType` | |
/// - O(`n`) otherwise, where `n` is the function's result. | |
@warn_unused_result | |
public func distanceTo(end: Self) -> Self.Distance | |
} | |
extension ForwardIndexType { | |
@warn_unused_result | |
public func advancedBy(n: Self.Distance) -> Self | |
@warn_unused_result | |
public func advancedBy(n: Self.Distance, limit: Self) -> Self | |
@warn_unused_result | |
public func distanceTo(end: Self) -> Self.Distance | |
} | |
/// A generator that produces one or fewer instances of `Element`. | |
public struct GeneratorOfOne<Element> : GeneratorType, SequenceType { | |
/// Construct an instance that generates `element!`, or an empty | |
/// sequence if `element == nil`. | |
public init(_ element: Element?) | |
/// Advance to the next element and return it, or `nil` if no next | |
/// element exists. | |
/// | |
/// - Requires: `next()` has not been applied to a copy of `self` | |
/// since the copy was made, and no preceding call to `self.next()` | |
/// has returned `nil`. | |
public mutating func next() -> Element? | |
} | |
/// A sequence built around a generator of type `G`. | |
/// | |
/// Useful mostly to recover the ability to use `for`...`in`, | |
/// given just a generator `g`: | |
/// | |
/// for x in GeneratorSequence(g) { ... } | |
public struct GeneratorSequence<Base : GeneratorType> : GeneratorType, SequenceType { | |
/// Construct an instance whose generator is a copy of `base`. | |
public init(_ base: Base) | |
/// Advance to the next element and return it, or `nil` if no next | |
/// element exists. | |
/// | |
/// - Requires: `next()` has not been applied to a copy of `self` | |
/// since the copy was made, and no preceding call to `self.next()` | |
/// has returned `nil`. | |
public mutating func next() -> Base.Element? | |
} | |
/// Encapsulates iteration state and interface for iteration over a | |
/// *sequence*. | |
/// | |
/// - Note: While it is safe to copy a *generator*, advancing one | |
/// copy may invalidate the others. | |
/// | |
/// Any code that uses multiple generators (or `for`...`in` loops) | |
/// over a single *sequence* should have static knowledge that the | |
/// specific *sequence* is multi-pass, either because its concrete | |
/// type is known or because it is constrained to `CollectionType`. | |
/// Also, the generators must be obtained by distinct calls to the | |
/// *sequence's* `generate()` method, rather than by copying. | |
public protocol GeneratorType { | |
/// The type of element generated by `self`. | |
typealias Element | |
/// Advance to the next element and return it, or `nil` if no next | |
/// element exists. | |
/// | |
/// - Requires: `next()` has not been applied to a copy of `self` | |
/// since the copy was made, and no preceding call to `self.next()` | |
/// has returned `nil`. Specific implementations of this protocol | |
/// are encouraged to respond to violations of this requirement by | |
/// calling `preconditionFailure("...")`. | |
@warn_unused_result | |
public mutating func next() -> Self.Element? | |
} | |
/// A half-open `IntervalType`, which contains its `start` but not its | |
/// `end`. Can represent an empty interval. | |
/// | |
/// - parameter Bound: The type of the endpoints. | |
public struct HalfOpenInterval<Bound : Comparable> : IntervalType, Equatable, CustomStringConvertible, CustomDebugStringConvertible, _Reflectable { | |
/// Construct a copy of `x`. | |
public init(_ x: HalfOpenInterval<Bound>) | |
/// Construct an interval with the given bounds. | |
/// | |
/// - Requires: `start <= end`. | |
public init(_ start: Bound, _ end: Bound) | |
/// The `Interval`'s lower bound. | |
/// | |
/// Invariant: `start` <= `end`. | |
public var start: Bound { get } | |
/// The `Interval`'s upper bound. | |
/// | |
/// Invariant: `start` <= `end`. | |
public var end: Bound { get } | |
/// A textual representation of `self`. | |
public var description: String { get } | |
/// A textual representation of `self`, suitable for debugging. | |
public var debugDescription: String { get } | |
/// Returns `true` iff the `Interval` contains `x`. | |
@warn_unused_result | |
public func contains(x: Bound) -> Bool | |
/// Returns `intervalToClamp` clamped to `self`. | |
/// | |
/// The bounds of the result, even if it is empty, are always limited to the bounds of | |
/// `self`. | |
@warn_unused_result | |
public func clamp(intervalToClamp: HalfOpenInterval<Bound>) -> HalfOpenInterval<Bound> | |
} | |
extension HalfOpenInterval { | |
/// `true` iff the `Interval` is empty. | |
public var isEmpty: Bool { get } | |
} | |
/// Instances of conforming types provide an integer `hashValue` and | |
/// can be used as `Dictionary` keys. | |
public protocol Hashable : Equatable { | |
/// The hash value. | |
/// | |
/// **Axiom:** `x == y` implies `x.hashValue == y.hashValue`. | |
/// | |
/// - Note: The hash value is not guaranteed to be stable across | |
/// different invocations of the same program. Do not persist the | |
/// hash value across program runs. | |
public var hashValue: Int { get } | |
} | |
/// An optional type that allows implicit member access (via compiler | |
/// magic). | |
/// | |
/// The compiler has special knowledge of the existence of | |
/// `ImplicitlyUnwrappedOptional<Wrapped>`, but always interacts with it using | |
/// the library intrinsics below. | |
public enum ImplicitlyUnwrappedOptional<Wrapped> : _Reflectable, NilLiteralConvertible { | |
case None | |
case Some(Wrapped) | |
/// Construct a `nil` instance. | |
public init() | |
/// Construct a non-`nil` instance that stores `some`. | |
public init(_ some: Wrapped) | |
/// Construct an instance from an explicitly unwrapped optional | |
/// (`Wrapped?`). | |
public init(_ v: Wrapped?) | |
/// Create an instance initialized with `nil`. | |
public init(nilLiteral: ()) | |
/// If `self == nil`, returns `nil`. Otherwise, returns `f(self!)`. | |
@warn_unused_result | |
public func map<U>(@noescape f: (Wrapped) throws -> U) rethrows -> U! | |
/// Returns `nil` if `self` is nil, `f(self!)` otherwise. | |
@warn_unused_result | |
public func flatMap<U>(@noescape f: (Wrapped) throws -> U!) rethrows -> U! | |
} | |
extension ImplicitlyUnwrappedOptional : CustomStringConvertible { | |
/// A textual representation of `self`. | |
public var description: String { get } | |
} | |
extension ImplicitlyUnwrappedOptional : _ObjectiveCBridgeable { | |
} | |
public protocol Indexable { | |
/// A type that represents a valid position in the collection. | |
/// | |
/// Valid indices consist of the position of every element and a | |
/// "past the end" position that's not valid for use as a subscript. | |
typealias Index : ForwardIndexType | |
/// The position of the first element in a non-empty collection. | |
/// | |
/// In an empty collection, `startIndex == endIndex`. | |
/// | |
/// - Complexity: O(1) | |
public var startIndex: Self.Index { get } | |
/// The collection's "past the end" position. | |
/// | |
/// `endIndex` is not a valid argument to `subscript`, and is always | |
/// reachable from `startIndex` by zero or more applications of | |
/// `successor()`. | |
/// | |
/// - Complexity: O(1) | |
public var endIndex: Self.Index { get } | |
public subscript (position: Self.Index) -> Self._Element { get } | |
} | |
/// A *generator* for an arbitrary *collection*. Provided `C` | |
/// conforms to the other requirements of `Indexable`, | |
/// `IndexingGenerator<C>` can be used as the result of `C`'s | |
/// `generate()` method. For example: | |
/// | |
/// struct MyCollection : CollectionType { | |
/// struct Index : ForwardIndexType { /* implementation hidden */ } | |
/// subscript(i: Index) -> MyElement { /* implementation hidden */ } | |
/// func generate() -> IndexingGenerator<MyCollection> { // <=== | |
/// return IndexingGenerator(self) | |
/// } | |
/// } | |
public struct IndexingGenerator<Elements : Indexable> : GeneratorType, SequenceType { | |
/// Create a *generator* over the given collection. | |
public init(_ elements: Elements) | |
/// Advance to the next element and return it, or `nil` if no next | |
/// element exists. | |
/// | |
/// - Requires: No preceding call to `self.next()` has returned `nil`. | |
public mutating func next() -> Elements._Element? | |
} | |
/// A 64-bit signed integer value | |
/// type. | |
public struct Int : SignedIntegerType, Comparable, Equatable { | |
/// A type that can represent the number of steps between pairs of | |
/// values. | |
public typealias Distance = Int | |
/// Create an instance initialized to zero. | |
public init() | |
public init(_ v: Builtin.Word) | |
/// Create an instance initialized to `value`. | |
public init(_ value: Int) | |
/// Creates an integer from its big-endian representation, changing the | |
/// byte order if necessary. | |
public init(bigEndian value: Int) | |
/// Creates an integer from its little-endian representation, changing the | |
/// byte order if necessary. | |
public init(littleEndian value: Int) | |
public init(_builtinIntegerLiteral value: Builtin.Int2048) | |
/// Create an instance initialized to `value`. | |
public init(integerLiteral value: Int) | |
/// Returns the big-endian representation of the integer, changing the | |
/// byte order if necessary. | |
public var bigEndian: Int { get } | |
/// Returns the little-endian representation of the integer, changing the | |
/// byte order if necessary. | |
public var littleEndian: Int { get } | |
/// Returns the current integer with the byte order swapped. | |
public var byteSwapped: Int { get } | |
public static var max: Int { get } | |
public static var min: Int { get } | |
} | |
extension Int : RandomAccessIndexType { | |
/// Returns the next consecutive value after `self`. | |
/// | |
/// - Requires: The next value is representable. | |
public func successor() -> Int | |
/// Returns the previous consecutive value before `self`. | |
/// | |
/// - Requires: The previous value is representable. | |
public func predecessor() -> Int | |
public func distanceTo(other: Int) -> Distance | |
public func advancedBy(n: Distance) -> Int | |
} | |
extension Int : Hashable { | |
/// The hash value. | |
/// | |
/// **Axiom:** `x == y` implies `x.hashValue == y.hashValue`. | |
/// | |
/// - Note: The hash value is not guaranteed to be stable across | |
/// different invocations of the same program. Do not persist the | |
/// hash value across program runs. | |
public var hashValue: Int { get } | |
} | |
extension Int : CustomStringConvertible { | |
/// A textual representation of `self`. | |
public var description: String { get } | |
} | |
extension Int { | |
/// Add `lhs` and `rhs`, returning a result and a | |
/// `Bool` that is true iff the operation caused an arithmetic | |
/// overflow. | |
public static func addWithOverflow(lhs: Int, _ rhs: Int) -> (Int, overflow: Bool) | |
/// Subtract `lhs` and `rhs`, returning a result and a | |
/// `Bool` that is true iff the operation caused an arithmetic | |
/// overflow. | |
public static func subtractWithOverflow(lhs: Int, _ rhs: Int) -> (Int, overflow: Bool) | |
/// Multiply `lhs` and `rhs`, returning a result and a | |
/// `Bool` that is true iff the operation caused an arithmetic | |
/// overflow. | |
public static func multiplyWithOverflow(lhs: Int, _ rhs: Int) -> (Int, overflow: Bool) | |
/// Divide `lhs` and `rhs`, returning | |
/// a result and a `Bool` | |
/// that is true iff the operation caused an arithmetic overflow. | |
public static func divideWithOverflow(lhs: Int, _ rhs: Int) -> (Int, overflow: Bool) | |
/// Divide `lhs` and `rhs`, returning | |
/// the remainder and a `Bool` | |
/// that is true iff the operation caused an arithmetic overflow. | |
public static func remainderWithOverflow(lhs: Int, _ rhs: Int) -> (Int, overflow: Bool) | |
/// Represent this number using Swift's widest native signed | |
/// integer type. | |
public func toIntMax() -> IntMax | |
} | |
extension Int : SignedNumberType { | |
} | |
extension Int { | |
public init(_ v: UInt8) | |
public init(_ v: Int8) | |
public init(_ v: UInt16) | |
public init(_ v: Int16) | |
public init(_ v: UInt32) | |
public init(_ v: Int32) | |
public init(_ v: UInt64) | |
/// Construct a `Int` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: UInt64) | |
public init(_ v: Int64) | |
/// Construct a `Int` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: Int64) | |
public init(_ v: UInt) | |
/// Construct a `Int` having the same memory representation as | |
/// the `UInt` `bitPattern`. No range or overflow checking | |
/// occurs, and the resulting `Int` may not have the same numeric | |
/// value as `bitPattern`--it is only guaranteed to use the same | |
/// pattern of bits. | |
public init(bitPattern: UInt) | |
} | |
extension Int : BitwiseOperationsType { | |
/// The empty bitset of type Int. | |
public static var allZeros: Int { get } | |
} | |
extension Int { | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Float) | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Double) | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Float80) | |
} | |
extension Int { | |
/// Construct from an ASCII representation in the given `radix`. | |
/// | |
/// If `text` does not match the regular expression | |
/// "[+-][0-9a-zA-Z]+", or the value it denotes in the given `radix` | |
/// is not representable, the result is `nil`. | |
public init?(_ text: String, radix: Int = default) | |
} | |
extension Int : _Reflectable { | |
} | |
extension Int : MirrorPathType { | |
} | |
extension Int : CVarArgType { | |
} | |
/// A 16-bit signed integer value | |
/// type. | |
public struct Int16 : SignedIntegerType, Comparable, Equatable { | |
/// A type that can represent the number of steps between pairs of | |
/// values. | |
public typealias Distance = Int | |
/// Create an instance initialized to zero. | |
public init() | |
/// Create an instance initialized to `value`. | |
public init(_ value: Int16) | |
/// Creates an integer from its big-endian representation, changing the | |
/// byte order if necessary. | |
public init(bigEndian value: Int16) | |
/// Creates an integer from its little-endian representation, changing the | |
/// byte order if necessary. | |
public init(littleEndian value: Int16) | |
public init(_builtinIntegerLiteral value: Builtin.Int2048) | |
/// Create an instance initialized to `value`. | |
public init(integerLiteral value: Int16) | |
/// Returns the big-endian representation of the integer, changing the | |
/// byte order if necessary. | |
public var bigEndian: Int16 { get } | |
/// Returns the little-endian representation of the integer, changing the | |
/// byte order if necessary. | |
public var littleEndian: Int16 { get } | |
/// Returns the current integer with the byte order swapped. | |
public var byteSwapped: Int16 { get } | |
public static var max: Int16 { get } | |
public static var min: Int16 { get } | |
} | |
extension Int16 : Hashable { | |
/// The hash value. | |
/// | |
/// **Axiom:** `x == y` implies `x.hashValue == y.hashValue`. | |
/// | |
/// - Note: The hash value is not guaranteed to be stable across | |
/// different invocations of the same program. Do not persist the | |
/// hash value across program runs. | |
public var hashValue: Int { get } | |
} | |
extension Int16 : CustomStringConvertible { | |
/// A textual representation of `self`. | |
public var description: String { get } | |
} | |
extension Int16 : RandomAccessIndexType { | |
/// Returns the next consecutive value after `self`. | |
/// | |
/// - Requires: The next value is representable. | |
public func successor() -> Int16 | |
/// Returns the previous consecutive value before `self`. | |
/// | |
/// - Requires: The previous value is representable. | |
public func predecessor() -> Int16 | |
public func distanceTo(other: Int16) -> Distance | |
public func advancedBy(n: Distance) -> Int16 | |
} | |
extension Int16 { | |
/// Add `lhs` and `rhs`, returning a result and a | |
/// `Bool` that is true iff the operation caused an arithmetic | |
/// overflow. | |
public static func addWithOverflow(lhs: Int16, _ rhs: Int16) -> (Int16, overflow: Bool) | |
/// Subtract `lhs` and `rhs`, returning a result and a | |
/// `Bool` that is true iff the operation caused an arithmetic | |
/// overflow. | |
public static func subtractWithOverflow(lhs: Int16, _ rhs: Int16) -> (Int16, overflow: Bool) | |
/// Multiply `lhs` and `rhs`, returning a result and a | |
/// `Bool` that is true iff the operation caused an arithmetic | |
/// overflow. | |
public static func multiplyWithOverflow(lhs: Int16, _ rhs: Int16) -> (Int16, overflow: Bool) | |
/// Divide `lhs` and `rhs`, returning | |
/// a result and a `Bool` | |
/// that is true iff the operation caused an arithmetic overflow. | |
public static func divideWithOverflow(lhs: Int16, _ rhs: Int16) -> (Int16, overflow: Bool) | |
/// Divide `lhs` and `rhs`, returning | |
/// the remainder and a `Bool` | |
/// that is true iff the operation caused an arithmetic overflow. | |
public static func remainderWithOverflow(lhs: Int16, _ rhs: Int16) -> (Int16, overflow: Bool) | |
/// Represent this number using Swift's widest native signed | |
/// integer type. | |
public func toIntMax() -> IntMax | |
} | |
extension Int16 : SignedNumberType { | |
} | |
extension Int16 { | |
public init(_ v: UInt8) | |
public init(_ v: Int8) | |
public init(_ v: UInt16) | |
public init(_ v: UInt32) | |
/// Construct a `Int16` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: UInt32) | |
public init(_ v: Int32) | |
/// Construct a `Int16` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: Int32) | |
public init(_ v: UInt64) | |
/// Construct a `Int16` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: UInt64) | |
public init(_ v: Int64) | |
/// Construct a `Int16` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: Int64) | |
public init(_ v: UInt) | |
/// Construct a `Int16` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: UInt) | |
public init(_ v: Int) | |
/// Construct a `Int16` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: Int) | |
/// Construct a `Int16` having the same memory representation as | |
/// the `UInt16` `bitPattern`. No range or overflow checking | |
/// occurs, and the resulting `Int16` may not have the same numeric | |
/// value as `bitPattern`--it is only guaranteed to use the same | |
/// pattern of bits. | |
public init(bitPattern: UInt16) | |
} | |
extension Int16 : BitwiseOperationsType { | |
/// The empty bitset of type Int16. | |
public static var allZeros: Int16 { get } | |
} | |
extension Int16 { | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Float) | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Double) | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Float80) | |
} | |
extension Int16 { | |
/// Construct from an ASCII representation in the given `radix`. | |
/// | |
/// If `text` does not match the regular expression | |
/// "[+-][0-9a-zA-Z]+", or the value it denotes in the given `radix` | |
/// is not representable, the result is `nil`. | |
public init?(_ text: String, radix: Int = default) | |
} | |
extension Int16 : _Reflectable { | |
} | |
extension Int16 : CVarArgType { | |
} | |
/// A 32-bit signed integer value | |
/// type. | |
public struct Int32 : SignedIntegerType, Comparable, Equatable { | |
/// A type that can represent the number of steps between pairs of | |
/// values. | |
public typealias Distance = Int | |
/// Create an instance initialized to zero. | |
public init() | |
/// Create an instance initialized to `value`. | |
public init(_ value: Int32) | |
/// Creates an integer from its big-endian representation, changing the | |
/// byte order if necessary. | |
public init(bigEndian value: Int32) | |
/// Creates an integer from its little-endian representation, changing the | |
/// byte order if necessary. | |
public init(littleEndian value: Int32) | |
public init(_builtinIntegerLiteral value: Builtin.Int2048) | |
/// Create an instance initialized to `value`. | |
public init(integerLiteral value: Int32) | |
/// Returns the big-endian representation of the integer, changing the | |
/// byte order if necessary. | |
public var bigEndian: Int32 { get } | |
/// Returns the little-endian representation of the integer, changing the | |
/// byte order if necessary. | |
public var littleEndian: Int32 { get } | |
/// Returns the current integer with the byte order swapped. | |
public var byteSwapped: Int32 { get } | |
public static var max: Int32 { get } | |
public static var min: Int32 { get } | |
} | |
extension Int32 : Hashable { | |
/// The hash value. | |
/// | |
/// **Axiom:** `x == y` implies `x.hashValue == y.hashValue`. | |
/// | |
/// - Note: The hash value is not guaranteed to be stable across | |
/// different invocations of the same program. Do not persist the | |
/// hash value across program runs. | |
public var hashValue: Int { get } | |
} | |
extension Int32 : CustomStringConvertible { | |
/// A textual representation of `self`. | |
public var description: String { get } | |
} | |
extension Int32 : RandomAccessIndexType { | |
/// Returns the next consecutive value after `self`. | |
/// | |
/// - Requires: The next value is representable. | |
public func successor() -> Int32 | |
/// Returns the previous consecutive value before `self`. | |
/// | |
/// - Requires: The previous value is representable. | |
public func predecessor() -> Int32 | |
public func distanceTo(other: Int32) -> Distance | |
public func advancedBy(n: Distance) -> Int32 | |
} | |
extension Int32 { | |
/// Add `lhs` and `rhs`, returning a result and a | |
/// `Bool` that is true iff the operation caused an arithmetic | |
/// overflow. | |
public static func addWithOverflow(lhs: Int32, _ rhs: Int32) -> (Int32, overflow: Bool) | |
/// Subtract `lhs` and `rhs`, returning a result and a | |
/// `Bool` that is true iff the operation caused an arithmetic | |
/// overflow. | |
public static func subtractWithOverflow(lhs: Int32, _ rhs: Int32) -> (Int32, overflow: Bool) | |
/// Multiply `lhs` and `rhs`, returning a result and a | |
/// `Bool` that is true iff the operation caused an arithmetic | |
/// overflow. | |
public static func multiplyWithOverflow(lhs: Int32, _ rhs: Int32) -> (Int32, overflow: Bool) | |
/// Divide `lhs` and `rhs`, returning | |
/// a result and a `Bool` | |
/// that is true iff the operation caused an arithmetic overflow. | |
public static func divideWithOverflow(lhs: Int32, _ rhs: Int32) -> (Int32, overflow: Bool) | |
/// Divide `lhs` and `rhs`, returning | |
/// the remainder and a `Bool` | |
/// that is true iff the operation caused an arithmetic overflow. | |
public static func remainderWithOverflow(lhs: Int32, _ rhs: Int32) -> (Int32, overflow: Bool) | |
/// Represent this number using Swift's widest native signed | |
/// integer type. | |
public func toIntMax() -> IntMax | |
} | |
extension Int32 : SignedNumberType { | |
} | |
extension Int32 { | |
public init(_ v: UInt8) | |
public init(_ v: Int8) | |
public init(_ v: UInt16) | |
public init(_ v: Int16) | |
public init(_ v: UInt32) | |
public init(_ v: UInt64) | |
/// Construct a `Int32` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: UInt64) | |
public init(_ v: Int64) | |
/// Construct a `Int32` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: Int64) | |
public init(_ v: UInt) | |
/// Construct a `Int32` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: UInt) | |
public init(_ v: Int) | |
/// Construct a `Int32` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: Int) | |
/// Construct a `Int32` having the same memory representation as | |
/// the `UInt32` `bitPattern`. No range or overflow checking | |
/// occurs, and the resulting `Int32` may not have the same numeric | |
/// value as `bitPattern`--it is only guaranteed to use the same | |
/// pattern of bits. | |
public init(bitPattern: UInt32) | |
} | |
extension Int32 : BitwiseOperationsType { | |
/// The empty bitset of type Int32. | |
public static var allZeros: Int32 { get } | |
} | |
extension Int32 { | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Float) | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Double) | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Float80) | |
} | |
extension Int32 { | |
/// Construct from an ASCII representation in the given `radix`. | |
/// | |
/// If `text` does not match the regular expression | |
/// "[+-][0-9a-zA-Z]+", or the value it denotes in the given `radix` | |
/// is not representable, the result is `nil`. | |
public init?(_ text: String, radix: Int = default) | |
} | |
extension Int32 : _Reflectable { | |
} | |
extension Int32 : CVarArgType { | |
} | |
/// A 64-bit signed integer value | |
/// type. | |
public struct Int64 : SignedIntegerType, Comparable, Equatable { | |
/// A type that can represent the number of steps between pairs of | |
/// values. | |
public typealias Distance = Int | |
/// Create an instance initialized to zero. | |
public init() | |
/// Create an instance initialized to `value`. | |
public init(_ value: Int64) | |
/// Creates an integer from its big-endian representation, changing the | |
/// byte order if necessary. | |
public init(bigEndian value: Int64) | |
/// Creates an integer from its little-endian representation, changing the | |
/// byte order if necessary. | |
public init(littleEndian value: Int64) | |
public init(_builtinIntegerLiteral value: Builtin.Int2048) | |
/// Create an instance initialized to `value`. | |
public init(integerLiteral value: Int64) | |
/// Returns the big-endian representation of the integer, changing the | |
/// byte order if necessary. | |
public var bigEndian: Int64 { get } | |
/// Returns the little-endian representation of the integer, changing the | |
/// byte order if necessary. | |
public var littleEndian: Int64 { get } | |
/// Returns the current integer with the byte order swapped. | |
public var byteSwapped: Int64 { get } | |
public static var max: Int64 { get } | |
public static var min: Int64 { get } | |
} | |
extension Int64 : Hashable { | |
/// The hash value. | |
/// | |
/// **Axiom:** `x == y` implies `x.hashValue == y.hashValue`. | |
/// | |
/// - Note: The hash value is not guaranteed to be stable across | |
/// different invocations of the same program. Do not persist the | |
/// hash value across program runs. | |
public var hashValue: Int { get } | |
} | |
extension Int64 : CustomStringConvertible { | |
/// A textual representation of `self`. | |
public var description: String { get } | |
} | |
extension Int64 : RandomAccessIndexType { | |
/// Returns the next consecutive value after `self`. | |
/// | |
/// - Requires: The next value is representable. | |
public func successor() -> Int64 | |
/// Returns the previous consecutive value before `self`. | |
/// | |
/// - Requires: The previous value is representable. | |
public func predecessor() -> Int64 | |
public func distanceTo(other: Int64) -> Distance | |
public func advancedBy(n: Distance) -> Int64 | |
} | |
extension Int64 { | |
/// Add `lhs` and `rhs`, returning a result and a | |
/// `Bool` that is true iff the operation caused an arithmetic | |
/// overflow. | |
public static func addWithOverflow(lhs: Int64, _ rhs: Int64) -> (Int64, overflow: Bool) | |
/// Subtract `lhs` and `rhs`, returning a result and a | |
/// `Bool` that is true iff the operation caused an arithmetic | |
/// overflow. | |
public static func subtractWithOverflow(lhs: Int64, _ rhs: Int64) -> (Int64, overflow: Bool) | |
/// Multiply `lhs` and `rhs`, returning a result and a | |
/// `Bool` that is true iff the operation caused an arithmetic | |
/// overflow. | |
public static func multiplyWithOverflow(lhs: Int64, _ rhs: Int64) -> (Int64, overflow: Bool) | |
/// Divide `lhs` and `rhs`, returning | |
/// a result and a `Bool` | |
/// that is true iff the operation caused an arithmetic overflow. | |
public static func divideWithOverflow(lhs: Int64, _ rhs: Int64) -> (Int64, overflow: Bool) | |
/// Divide `lhs` and `rhs`, returning | |
/// the remainder and a `Bool` | |
/// that is true iff the operation caused an arithmetic overflow. | |
public static func remainderWithOverflow(lhs: Int64, _ rhs: Int64) -> (Int64, overflow: Bool) | |
/// Represent this number using Swift's widest native signed | |
/// integer type. | |
public func toIntMax() -> IntMax | |
} | |
extension Int64 : SignedNumberType { | |
} | |
extension Int64 { | |
public init(_ v: UInt8) | |
public init(_ v: Int8) | |
public init(_ v: UInt16) | |
public init(_ v: Int16) | |
public init(_ v: UInt32) | |
public init(_ v: Int32) | |
public init(_ v: UInt64) | |
public init(_ v: UInt) | |
public init(_ v: Int) | |
/// Construct a `Int64` having the same memory representation as | |
/// the `UInt64` `bitPattern`. No range or overflow checking | |
/// occurs, and the resulting `Int64` may not have the same numeric | |
/// value as `bitPattern`--it is only guaranteed to use the same | |
/// pattern of bits. | |
public init(bitPattern: UInt64) | |
} | |
extension Int64 : BitwiseOperationsType { | |
/// The empty bitset of type Int64. | |
public static var allZeros: Int64 { get } | |
} | |
extension Int64 { | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Float) | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Double) | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Float80) | |
} | |
extension Int64 { | |
/// Construct from an ASCII representation in the given `radix`. | |
/// | |
/// If `text` does not match the regular expression | |
/// "[+-][0-9a-zA-Z]+", or the value it denotes in the given `radix` | |
/// is not representable, the result is `nil`. | |
public init?(_ text: String, radix: Int = default) | |
} | |
extension Int64 : _Reflectable { | |
} | |
extension Int64 : MirrorPathType { | |
} | |
extension Int64 : CVarArgType, _CVarArgAlignedType { | |
} | |
/// A 8-bit signed integer value | |
/// type. | |
public struct Int8 : SignedIntegerType, Comparable, Equatable { | |
/// A type that can represent the number of steps between pairs of | |
/// values. | |
public typealias Distance = Int | |
/// Create an instance initialized to zero. | |
public init() | |
/// Create an instance initialized to `value`. | |
public init(_ value: Int8) | |
public init(_builtinIntegerLiteral value: Builtin.Int2048) | |
/// Create an instance initialized to `value`. | |
public init(integerLiteral value: Int8) | |
public static var max: Int8 { get } | |
public static var min: Int8 { get } | |
} | |
extension Int8 : Hashable { | |
/// The hash value. | |
/// | |
/// **Axiom:** `x == y` implies `x.hashValue == y.hashValue`. | |
/// | |
/// - Note: The hash value is not guaranteed to be stable across | |
/// different invocations of the same program. Do not persist the | |
/// hash value across program runs. | |
public var hashValue: Int { get } | |
} | |
extension Int8 : CustomStringConvertible { | |
/// A textual representation of `self`. | |
public var description: String { get } | |
} | |
extension Int8 : RandomAccessIndexType { | |
/// Returns the next consecutive value after `self`. | |
/// | |
/// - Requires: The next value is representable. | |
public func successor() -> Int8 | |
/// Returns the previous consecutive value before `self`. | |
/// | |
/// - Requires: The previous value is representable. | |
public func predecessor() -> Int8 | |
public func distanceTo(other: Int8) -> Distance | |
public func advancedBy(n: Distance) -> Int8 | |
} | |
extension Int8 { | |
/// Add `lhs` and `rhs`, returning a result and a | |
/// `Bool` that is true iff the operation caused an arithmetic | |
/// overflow. | |
public static func addWithOverflow(lhs: Int8, _ rhs: Int8) -> (Int8, overflow: Bool) | |
/// Subtract `lhs` and `rhs`, returning a result and a | |
/// `Bool` that is true iff the operation caused an arithmetic | |
/// overflow. | |
public static func subtractWithOverflow(lhs: Int8, _ rhs: Int8) -> (Int8, overflow: Bool) | |
/// Multiply `lhs` and `rhs`, returning a result and a | |
/// `Bool` that is true iff the operation caused an arithmetic | |
/// overflow. | |
public static func multiplyWithOverflow(lhs: Int8, _ rhs: Int8) -> (Int8, overflow: Bool) | |
/// Divide `lhs` and `rhs`, returning | |
/// a result and a `Bool` | |
/// that is true iff the operation caused an arithmetic overflow. | |
public static func divideWithOverflow(lhs: Int8, _ rhs: Int8) -> (Int8, overflow: Bool) | |
/// Divide `lhs` and `rhs`, returning | |
/// the remainder and a `Bool` | |
/// that is true iff the operation caused an arithmetic overflow. | |
public static func remainderWithOverflow(lhs: Int8, _ rhs: Int8) -> (Int8, overflow: Bool) | |
/// Represent this number using Swift's widest native signed | |
/// integer type. | |
public func toIntMax() -> IntMax | |
} | |
extension Int8 : SignedNumberType { | |
} | |
extension Int8 { | |
public init(_ v: UInt8) | |
public init(_ v: UInt16) | |
/// Construct a `Int8` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: UInt16) | |
public init(_ v: Int16) | |
/// Construct a `Int8` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: Int16) | |
public init(_ v: UInt32) | |
/// Construct a `Int8` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: UInt32) | |
public init(_ v: Int32) | |
/// Construct a `Int8` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: Int32) | |
public init(_ v: UInt64) | |
/// Construct a `Int8` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: UInt64) | |
public init(_ v: Int64) | |
/// Construct a `Int8` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: Int64) | |
public init(_ v: UInt) | |
/// Construct a `Int8` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: UInt) | |
public init(_ v: Int) | |
/// Construct a `Int8` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: Int) | |
/// Construct a `Int8` having the same memory representation as | |
/// the `UInt8` `bitPattern`. No range or overflow checking | |
/// occurs, and the resulting `Int8` may not have the same numeric | |
/// value as `bitPattern`--it is only guaranteed to use the same | |
/// pattern of bits. | |
public init(bitPattern: UInt8) | |
} | |
extension Int8 : BitwiseOperationsType { | |
/// The empty bitset of type Int8. | |
public static var allZeros: Int8 { get } | |
} | |
extension Int8 { | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Float) | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Double) | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Float80) | |
} | |
extension Int8 { | |
/// Construct from an ASCII representation in the given `radix`. | |
/// | |
/// If `text` does not match the regular expression | |
/// "[+-][0-9a-zA-Z]+", or the value it denotes in the given `radix` | |
/// is not representable, the result is `nil`. | |
public init?(_ text: String, radix: Int = default) | |
} | |
extension Int8 : _Reflectable { | |
} | |
extension Int8 : CVarArgType { | |
} | |
/// The largest native signed integer type. | |
public typealias IntMax = Int64 | |
/// The common requirements for types that support integer arithmetic. | |
public protocol IntegerArithmeticType : _IntegerArithmeticType, Comparable { | |
/// Add `lhs` and `rhs`, returning a result and trapping in case of | |
/// arithmetic overflow (except in -Ounchecked builds). | |
@warn_unused_result | |
public func +(lhs: Self, rhs: Self) -> Self | |
/// Subtract `lhs` and `rhs`, returning a result and trapping in case of | |
/// arithmetic overflow (except in -Ounchecked builds). | |
@warn_unused_result | |
public func -(lhs: Self, rhs: Self) -> Self | |
/// Multiply `lhs` and `rhs`, returning a result and trapping in case of | |
/// arithmetic overflow (except in -Ounchecked builds). | |
@warn_unused_result | |
public func *(lhs: Self, rhs: Self) -> Self | |
/// Divide `lhs` and `rhs`, returning a result and trapping in case of | |
/// arithmetic overflow (except in -Ounchecked builds). | |
@warn_unused_result | |
public func /(lhs: Self, rhs: Self) -> Self | |
/// Divide `lhs` and `rhs`, returning the remainder and trapping in case of | |
/// arithmetic overflow (except in -Ounchecked builds). | |
@warn_unused_result | |
public func %(lhs: Self, rhs: Self) -> Self | |
/// Explicitly convert to `IntMax`, trapping on overflow (except in | |
/// -Ounchecked builds). | |
@warn_unused_result | |
public func toIntMax() -> IntMax | |
} | |
/// Conforming types can be initialized with integer literals. | |
public protocol IntegerLiteralConvertible { | |
typealias IntegerLiteralType | |
/// Create an instance initialized to `value`. | |
public init(integerLiteral value: Self.IntegerLiteralType) | |
} | |
/// The default type for an otherwise-unconstrained integer literal. | |
public typealias IntegerLiteralType = Int | |
/// A set of common requirements for Swift's integer types. | |
public protocol IntegerType : _IntegerType, RandomAccessIndexType { | |
} | |
/// An interval over a `Comparable` type. | |
public protocol IntervalType { | |
/// The type of the `Interval`'s endpoints. | |
typealias Bound : Comparable | |
/// Returns `true` iff the interval contains `value`. | |
@warn_unused_result | |
public func contains(value: Self.Bound) -> Bool | |
/// Return `rhs` clamped to `self`. The bounds of the result, even | |
/// if it is empty, are always within the bounds of `self`. | |
@warn_unused_result | |
public func clamp(intervalToClamp: Self) -> Self | |
/// `true` iff `self` is empty. | |
public var isEmpty: Bool { get } | |
/// The `Interval`'s lower bound. | |
/// | |
/// Invariant: `start` <= `end`. | |
public var start: Self.Bound { get } | |
/// The `Interval`'s upper bound. | |
/// | |
/// Invariant: `start` <= `end`. | |
public var end: Self.Bound { get } | |
} | |
extension IntervalType { | |
/// Returns `true` if `lhs` and `rhs` have a non-empty intersection. | |
@warn_unused_result | |
public func overlaps<I : IntervalType where I.Bound == Bound>(other: I) -> Bool | |
} | |
/// A generator that presents the elements of the sequences generated | |
/// by `Base`, concatenated using a given separator. | |
public struct JoinGenerator<Base : GeneratorType where Base.Element : SequenceType> : GeneratorType { | |
/// Creates a generator that presents the elements of the sequences | |
/// generated by `base`, concatenated using `separator`. | |
/// | |
/// - Complexity: O(`separator.count`). | |
public init<Separator : SequenceType where Separator.Generator.Element == Base.Element.Generator.Element>(base: Base, separator: Separator) | |
/// Advance to the next element and return it, or `nil` if no next | |
/// element exists. | |
public mutating func next() -> Base.Element.Generator.Element? | |
} | |
/// A sequence that presents the elements of the `Base` sequences | |
/// concatenated using a given separator. | |
public struct JoinSequence<Base : SequenceType where Base.Generator.Element : SequenceType> : SequenceType { | |
/// Creates a sequence that presents the elements of `base` sequences | |
/// concatenated using `separator`. | |
/// | |
/// - Complexity: O(`separator.count`). | |
public init<Separator : SequenceType where Separator.Generator.Element == Base.Generator.Element.Generator.Element>(base: Base, separator: Separator) | |
/// Return a *generator* over the elements of this *sequence*. | |
/// | |
/// - Complexity: O(1). | |
public func generate() -> JoinGenerator<Base.Generator> | |
} | |
/// A collection containing the same elements as a `Base` collection, | |
/// but on which some operations such as `map` and `filter` are | |
/// implemented lazily. | |
/// | |
/// - See also: `LazySequenceType`, `LazyCollection` | |
public struct LazyCollection<Base : CollectionType> : LazyCollectionType { | |
/// The type of the underlying collection | |
public typealias Elements = Base | |
/// The underlying collection | |
public var elements: Base { get } | |
/// A type that represents a valid position in the collection. | |
/// | |
/// Valid indices consist of the position of every element and a | |
/// "past the end" position that's not valid for use as a subscript. | |
public typealias Index = Base.Index | |
/// Construct an instance with `base` as its underlying Collection | |
/// instance. | |
public init(_ base: Base) | |
} | |
extension LazyCollection : SequenceType { | |
/// Return a *generator* over the elements of this *sequence*. | |
/// | |
/// - Complexity: O(1). | |
public func generate() -> Base.Generator | |
/// Return a value less than or equal to the number of elements in | |
/// `self`, **nondestructively**. | |
/// | |
/// - Complexity: O(N). | |
public func underestimateCount() -> Int | |
} | |
extension LazyCollection : CollectionType { | |
/// The position of the first element in a non-empty collection. | |
/// | |
/// In an empty collection, `startIndex == endIndex`. | |
public var startIndex: Base.Index { get } | |
/// The collection's "past the end" position. | |
/// | |
/// `endIndex` is not a valid argument to `subscript`, and is always | |
/// reachable from `startIndex` by zero or more applications of | |
/// `successor()`. | |
public var endIndex: Base.Index { get } | |
public subscript (position: Base.Index) -> Base.Generator.Element { get } | |
public subscript (bounds: Range<Base.Index>) -> LazyCollection<Slice<Base>> { get } | |
/// Returns `true` iff `self` is empty. | |
public var isEmpty: Bool { get } | |
/// Returns the number of elements. | |
/// | |
/// - Complexity: O(1) if `Index` conforms to `RandomAccessIndexType`; | |
/// O(N) otherwise. | |
public var count: Base.Index.Distance { get } | |
/// Returns the first element of `self`, or `nil` if `self` is empty. | |
public var first: Base.Generator.Element? { get } | |
} | |
/// A collection on which normally-eager operations such as `map` and | |
/// `filter` are implemented lazily. | |
/// | |
/// Please see `LazySequenceType` for background; `LazyCollectionType` | |
/// is an analogous component, but for collections. | |
/// | |
/// To add new lazy collection operations, extend this protocol with | |
/// methods that return lazy wrappers that are themselves | |
/// `LazyCollectionType`s. | |
/// | |
/// - See Also: `LazySequenceType`, `LazyCollection` | |
public protocol LazyCollectionType : CollectionType, LazySequenceType { | |
/// A `CollectionType` that can contain the same elements as this one, | |
/// possibly with a simpler type. | |
/// | |
/// - See also: `elements` | |
typealias Elements : CollectionType = Self | |
} | |
extension LazyCollectionType { | |
/// Return the elements of `self` that satisfy `predicate`. | |
/// | |
/// - Note: The elements of the result are computed on-demand, as | |
/// the result is used. No buffering storage is allocated and each | |
/// traversal step invokes `predicate` on one or more underlying | |
/// elements. | |
@warn_unused_result | |
public func filter(predicate: (Self.Elements.Generator.Element) -> Bool) -> LazyFilterCollection<Self.Elements> | |
} | |
extension LazyCollectionType where Generator.Element : CollectionType, Elements.Generator.Element : CollectionType, Generator.Element == Elements.Generator.Element { | |
/// A concatenation of the elements of `self`. | |
@warn_unused_result | |
public func flatten() -> LazyCollection<FlattenCollection<Self.Elements>> | |
} | |
extension LazyCollectionType where Generator.Element : CollectionType, Index : BidirectionalIndexType, Generator.Element.Index : BidirectionalIndexType, Elements.Generator.Element : CollectionType, Elements.Index : BidirectionalIndexType, Elements.Generator.Element.Index : BidirectionalIndexType, Generator.Element == Elements.Generator.Element { | |
/// A concatenation of the elements of `self`. | |
@warn_unused_result | |
public func flatten() -> LazyCollection<FlattenBidirectionalCollection<Self.Elements>> | |
} | |
extension LazyCollectionType { | |
/// Returns the concatenated results of mapping `transform` over | |
/// `self`. Equivalent to | |
/// | |
/// self.map(transform).flatten() | |
/// | |
/// - Complexity: O(1) | |
@warn_unused_result | |
public func flatMap<Intermediate : CollectionType>(transform: (Self.Elements.Generator.Element) -> Intermediate) -> LazyCollection<FlattenCollection<LazyMapCollection<Self.Elements, Intermediate>>> | |
} | |
extension LazyCollectionType where Elements.Index : BidirectionalIndexType { | |
/// Returns the concatenated results of mapping `transform` over | |
/// `self`. Equivalent to | |
/// | |
/// self.map(transform).flatten() | |
/// | |
/// - Complexity: O(1) | |
@warn_unused_result | |
public func flatMap<Intermediate : CollectionType where Intermediate.Index : BidirectionalIndexType>(transform: (Self.Elements.Generator.Element) -> Intermediate) -> LazyCollection<FlattenBidirectionalCollection<LazyMapCollection<Self.Elements, Intermediate>>> | |
} | |
extension LazyCollectionType where Elements == Self { | |
/// Identical to `self`. | |
public var elements: Self { get } | |
} | |
extension LazyCollectionType { | |
/// Identical to `self`. | |
public var lazy: Self { get } | |
} | |
extension LazyCollectionType { | |
/// Return a `LazyMapCollection` over this `Collection`. The elements of | |
/// the result are computed lazily, each time they are read, by | |
/// calling `transform` function on a base element. | |
@warn_unused_result | |
public func map<U>(transform: (Self.Elements.Generator.Element) -> U) -> LazyMapCollection<Self.Elements, U> | |
} | |
extension LazyCollectionType where Index : BidirectionalIndexType, Elements.Index : BidirectionalIndexType { | |
/// Return the elements of `self` in reverse order. | |
/// | |
/// - Complexity: O(1) | |
@warn_unused_result | |
public func reverse() -> LazyCollection<ReverseCollection<Self.Elements>> | |
} | |
extension LazyCollectionType where Index : RandomAccessIndexType, Elements.Index : RandomAccessIndexType { | |
/// Return the elements of `self` in reverse order. | |
/// | |
/// - Complexity: O(1) | |
@warn_unused_result | |
public func reverse() -> LazyCollection<ReverseRandomAccessCollection<Self.Elements>> | |
} | |
/// A lazy `CollectionType` wrapper that includes the elements of an | |
/// underlying collection that satisfy a predicate. | |
/// | |
/// - Note: The performance of advancing a `LazyFilterIndex` | |
/// depends on how sparsely the filtering predicate is satisfied, | |
/// and may not offer the usual performance given by models of | |
/// `ForwardIndexType`. Be aware, therefore, that general operations | |
/// on `LazyFilterCollection` instances may not have the | |
/// documented complexity. | |
public struct LazyFilterCollection<Base : CollectionType> : LazyCollectionType { | |
/// A type that represents a valid position in the collection. | |
/// | |
/// Valid indices consist of the position of every element and a | |
/// "past the end" position that's not valid for use as a subscript. | |
public typealias Index = LazyFilterIndex<Base> | |
/// Construct an instance containing the elements of `base` that | |
/// satisfy `predicate`. | |
public init(_ base: Base, whereElementsSatisfy predicate: (Base.Generator.Element) -> Bool) | |
/// The position of the first element in a non-empty collection. | |
/// | |
/// In an empty collection, `startIndex == endIndex`. | |
/// | |
/// - Complexity: O(N), where N is the ratio between unfiltered and | |
/// filtered collection counts. | |
public var startIndex: LazyFilterIndex<Base> { get } | |
/// The collection's "past the end" position. | |
/// | |
/// `endIndex` is not a valid argument to `subscript`, and is always | |
/// reachable from `startIndex` by zero or more applications of | |
/// `successor()`. | |
/// | |
/// - Complexity: O(1). | |
public var endIndex: LazyFilterIndex<Base> { get } | |
public subscript (position: LazyFilterIndex<Base>) -> Base.Generator.Element { get } | |
/// Return a *generator* over the elements of this *sequence*. | |
/// | |
/// - Complexity: O(1). | |
public func generate() -> LazyFilterGenerator<Base.Generator> | |
} | |
/// A generator that produces the elements produced by some base | |
/// generator that also satisfy a given predicate. | |
/// | |
/// - Note: This is the associated `Generator` of `LazyFilterSequence` | |
/// and `LazyFilterCollection`. | |
public struct LazyFilterGenerator<Base : GeneratorType> : GeneratorType, SequenceType { | |
/// Advances to the next element and returns it, or `nil` if no next | |
/// element exists. | |
/// | |
/// - Requires: `next()` has not been applied to a copy of `self` | |
/// since the copy was made, and no preceding call to `self.next()` | |
/// has returned `nil`. | |
public mutating func next() -> Base.Element? | |
/// Creates an instance that produces the elements `x` of `base` | |
/// for which `predicate(x) == true`. | |
public init(_ base: Base, whereElementsSatisfy predicate: (Base.Element) -> Bool) | |
/// The underlying generator whose elements are being filtered | |
public var base: Base { get } | |
} | |
/// The `Index` used for subscripting a `LazyFilterCollection`. | |
/// | |
/// The positions of a `LazyFilterIndex` correspond to those positions | |
/// `p` in its underlying collection `c` such that `c[p]` | |
/// satisfies the predicate with which the `LazyFilterIndex` was | |
/// initialized. | |
/// | |
/// - Note: The performance of advancing a `LazyFilterIndex` | |
/// depends on how sparsely the filtering predicate is satisfied, | |
/// and may not offer the usual performance given by models of | |
/// `ForwardIndexType`. | |
public struct LazyFilterIndex<BaseElements : CollectionType> : ForwardIndexType { | |
/// Returns the next consecutive value after `self`. | |
/// | |
/// - Requires: The next value is representable. | |
/// | |
/// - Complexity: Amortized O(M), where M is the average distance in | |
/// the base collection between elements that satisfy the | |
/// predicate. | |
/// | |
/// - Note: This operation may not satisfy the expected complexity | |
/// for models of `ForwardIndexType`. | |
public func successor() -> LazyFilterIndex<BaseElements> | |
/// The position corresponding to `self` in the underlying collection. | |
public let base: BaseElements.Index | |
} | |
/// A sequence whose elements consist of the elements of some base | |
/// sequence that also satisfy a given predicate. | |
/// | |
/// - Note: `s.lazy.filter { ... }`, for an arbitrary sequence `s`, | |
/// is a `LazyFilterSequence`. | |
public struct LazyFilterSequence<Base : SequenceType> : LazySequenceType { | |
/// Return a *generator* over the elements of this *sequence*. | |
/// | |
/// - Complexity: O(1). | |
public func generate() -> LazyFilterGenerator<Base.Generator> | |
/// Creates an instance consisting of the elements `x` of `base` for | |
/// which `predicate(x) == true`. | |
public init(_ base: Base, whereElementsSatisfy predicate: (Base.Generator.Element) -> Bool) | |
/// The underlying sequence whose elements are being filtered | |
public let base: Base | |
} | |
/// A `CollectionType` whose elements consist of those in a `Base` | |
/// `CollectionType` passed through a transform function returning `Element`. | |
/// These elements are computed lazily, each time they're read, by | |
/// calling the transform function on a base element. | |
public struct LazyMapCollection<Base : CollectionType, Element> : LazyCollectionType { | |
public typealias Index = Base.Index | |
public var startIndex: Base.Index { get } | |
public var endIndex: Base.Index { get } | |
public subscript (position: Base.Index) -> Element { get } | |
/// Returns `true` iff `self` is empty. | |
public var isEmpty: Bool { get } | |
public var first: Element? { get } | |
/// Returns a *generator* over the elements of this *sequence*. | |
/// | |
/// - Complexity: O(1). | |
public func generate() -> LazyMapGenerator<Base.Generator, Element> | |
public func underestimateCount() -> Int | |
/// Returns the number of elements. | |
/// | |
/// - Complexity: O(1) if `Index` conforms to `RandomAccessIndexType`; | |
/// O(N) otherwise. | |
public var count: Base.Index.Distance { get } | |
/// Create an instance with elements `transform(x)` for each element | |
/// `x` of base. | |
public init(_ base: Base, transform: (Base.Generator.Element) -> Element) | |
} | |
/// The `GeneratorType` used by `MapSequence` and `MapCollection`. | |
/// Produces each element by passing the output of the `Base` | |
/// `GeneratorType` through a transform function returning `Element`. | |
public struct LazyMapGenerator<Base : GeneratorType, Element> : GeneratorType, SequenceType { | |
/// Advance to the next element and return it, or `nil` if no next | |
/// element exists. | |
/// | |
/// - Requires: `next()` has not been applied to a copy of `self` | |
/// since the copy was made, and no preceding call to `self.next()` | |
/// has returned `nil`. | |
public mutating func next() -> Element? | |
public var base: Base { get } | |
} | |
/// A `SequenceType` whose elements consist of those in a `Base` | |
/// `SequenceType` passed through a transform function returning `Element`. | |
/// These elements are computed lazily, each time they're read, by | |
/// calling the transform function on a base element. | |
public struct LazyMapSequence<Base : SequenceType, Element> : LazySequenceType { | |
public typealias Elements = LazyMapSequence<Base, Element> | |
/// Return a *generator* over the elements of this *sequence*. | |
/// | |
/// - Complexity: O(1). | |
public func generate() -> LazyMapGenerator<Base.Generator, Element> | |
/// Return a value less than or equal to the number of elements in | |
/// `self`, **nondestructively**. | |
/// | |
/// - Complexity: O(N). | |
public func underestimateCount() -> Int | |
/// Create an instance with elements `transform(x)` for each element | |
/// `x` of base. | |
public init(_ base: Base, transform: (Base.Generator.Element) -> Element) | |
} | |
/// A sequence containing the same elements as a `Base` sequence, but | |
/// on which some operations such as `map` and `filter` are | |
/// implemented lazily. | |
/// | |
/// - See also: `LazySequenceType` | |
public struct LazySequence<Base : SequenceType> : LazySequenceType, _SequenceWrapperType { | |
/// Creates a sequence that has the same elements as `base`, but on | |
/// which some operations such as `map` and `filter` are implemented | |
/// lazily. | |
public init(_ base: Base) | |
/// The `Base` (presumably non-lazy) sequence from which `self` was created. | |
public var elements: Base { get } | |
} | |
/// A sequence on which normally-eager operations such as `map` and | |
/// `filter` are implemented lazily. | |
/// | |
/// Lazy sequences can be used to avoid needless storage allocation | |
/// and computation, because they use an underlying sequence for | |
/// storage and compute their elements on demand. For example, | |
/// | |
/// [1, 2, 3].lazy.map { $0 * 2 } | |
/// | |
/// is a sequence containing { `2`, `4`, `6` }. Each time an element | |
/// of the lazy sequence is accessed, an element of the underlying | |
/// array is accessed and transformed by the closure. | |
/// | |
/// Sequence operations taking closure arguments, such as `map` and | |
/// `filter`, are normally eager: they use the closure immediately and | |
/// return a new array. Using the `lazy` property gives the standard | |
/// library explicit permission to store the closure and the sequence | |
/// in the result, and defer computation until it is needed. | |
/// | |
/// To add new lazy sequence operations, extend this protocol with | |
/// methods that return lazy wrappers that are themselves | |
/// `LazySequenceType`s. For example, given an eager `scan` | |
/// method defined as follows | |
/// | |
/// extension SequenceType { | |
/// /// Returns an array containing the results of | |
/// /// | |
/// /// p.reduce(initial, combine: combine) | |
/// /// | |
/// /// for each prefix `p` of `self`, in order from shortest to | |
/// /// longest. For example: | |
/// /// | |
/// /// (1..<6).scan(0, combine: +) // [0, 1, 3, 6, 10, 15] | |
/// /// | |
/// /// - Complexity: O(N) | |
/// func scan<ResultElement>( | |
/// initial: ResultElement, | |
/// @noescape combine: (ResultElement, Generator.Element)->ResultElement | |
/// ) -> [ResultElement] { | |
/// var result = [initial] | |
/// for x in self { | |
/// result.append(combine(result.last!, x)) | |
/// } | |
/// return result | |
/// } | |
/// } | |
/// | |
/// we can build a sequence that lazily computes the elements in the | |
/// result of `scan`: | |
/// | |
/// struct LazyScanGenerator<Base: GeneratorType, ResultElement> | |
/// : GeneratorType { | |
/// mutating func next() -> ResultElement? { | |
/// return nextElement.map { result in | |
/// nextElement = base.next().map { combine(result, $0) } | |
/// return result | |
/// } | |
/// } | |
/// private var nextElement: ResultElement? // The next result of next(). | |
/// private var base: Base // The underlying generator. | |
/// private let combine: (ResultElement, Base.Element)->ResultElement | |
/// } | |
/// | |
/// struct LazyScanSequence<Base: SequenceType, ResultElement> | |
/// : LazySequenceType // Chained operations on self are lazy, too | |
/// { | |
/// func generate() -> LazyScanGenerator<Base.Generator, ResultElement> { | |
/// return LazyScanGenerator( | |
/// nextElement: initial, base: base.generate(), combine: combine) | |
/// } | |
/// private let initial: ResultElement | |
/// private let base: Base | |
/// private let combine: | |
/// (ResultElement, Base.Generator.Element)->ResultElement | |
/// } | |
/// | |
/// and finally, we can give all lazy sequences a lazy `scan` method: | |
/// | |
/// extension LazySequenceType { | |
/// /// Returns a sequence containing the results of | |
/// /// | |
/// /// p.reduce(initial, combine: combine) | |
/// /// | |
/// /// for each prefix `p` of `self`, in order from shortest to | |
/// /// longest. For example: | |
/// /// | |
/// /// Array((1..<6).lazy.scan(0, combine: +)) // [0, 1, 3, 6, 10, 15] | |
/// /// | |
/// /// - Complexity: O(1) | |
/// func scan<ResultElement>( | |
/// initial: ResultElement, | |
/// combine: (ResultElement, Generator.Element)->ResultElement | |
/// ) -> LazyScanSequence<Self, ResultElement> { | |
/// return LazyScanSequence( | |
/// initial: initial, base: self, combine: combine) | |
/// } | |
/// } | |
/// | |
/// - See also: `LazySequence`, `LazyCollectionType`, `LazyCollection` | |
/// | |
/// - Note: The explicit permission to implement further operations | |
/// lazily applies only in contexts where the sequence is statically | |
/// known to conform to `LazySequenceType`. Thus, side-effects such | |
/// as the accumulation of `result` below are never unexpectedly | |
/// dropped or deferred: | |
/// | |
/// extension SequenceType where Generator.Element == Int { | |
/// func sum() -> Int { | |
/// var result = 0 | |
/// _ = self.map { result += $0 } | |
/// return result | |
/// } | |
/// } | |
/// | |
/// [We don't recommend that you use `map` this way, because it | |
/// creates and discards an array. `sum` would be better implemented | |
/// using `reduce`]. | |
public protocol LazySequenceType : SequenceType { | |
/// A `SequenceType` that can contain the same elements as this one, | |
/// possibly with a simpler type. | |
/// | |
/// - See also: `elements` | |
typealias Elements : SequenceType = Self | |
/// A sequence containing the same elements as this one, possibly with | |
/// a simpler type. | |
/// | |
/// When implementing lazy operations, wrapping `elements` instead | |
/// of `self` can prevent result types from growing an extra | |
/// `LazySequence` layer. For example, | |
/// | |
/// _prext_ example neeeded | |
/// | |
/// Note: this property need not be implemented by conforming types, | |
/// it has a default implementation in a protocol extension that | |
/// just returns `self`. | |
public var elements: Self.Elements { get } | |
public var array: [Self.Generator.Element] { get } | |
} | |
extension LazySequenceType { | |
/// Return the elements of `self` that satisfy `predicate`. | |
/// | |
/// - Note: The elements of the result are computed on-demand, as | |
/// the result is used. No buffering storage is allocated and each | |
/// traversal step invokes `predicate` on one or more underlying | |
/// elements. | |
@warn_unused_result | |
public func filter(predicate: (Self.Elements.Generator.Element) -> Bool) -> LazyFilterSequence<Self.Elements> | |
} | |
extension LazySequenceType where Elements.Generator.Element == Generator.Element, Generator.Element : SequenceType { | |
/// A concatenation of the elements of `self`. | |
@warn_unused_result | |
public func flatten() -> LazySequence<FlattenSequence<Self.Elements>> | |
} | |
extension LazySequenceType { | |
/// Returns the concatenated results of mapping `transform` over | |
/// `self`. Equivalent to | |
/// | |
/// self.map(transform).flatten() | |
/// | |
/// - Complexity: O(1) | |
@warn_unused_result | |
public func flatMap<Intermediate : SequenceType>(transform: (Self.Elements.Generator.Element) -> Intermediate) -> LazySequence<FlattenSequence<LazyMapSequence<Self.Elements, Intermediate>>> | |
} | |
extension LazySequenceType { | |
} | |
extension LazySequenceType where Elements == Self { | |
/// Identical to `self`. | |
public var elements: Self { get } | |
} | |
extension LazySequenceType { | |
/// Identical to `self`. | |
public var lazy: Self { get } | |
} | |
extension LazySequenceType { | |
/// Return a `LazyMapSequence` over this `Sequence`. The elements of | |
/// the result are computed lazily, each time they are read, by | |
/// calling `transform` function on a base element. | |
@warn_unused_result | |
public func map<U>(transform: (Self.Elements.Generator.Element) -> U) -> LazyMapSequence<Self.Elements, U> | |
} | |
/// A class whose instances contain a property of type `Value` and raw | |
/// storage for an array of `Element`, whose size is determined at | |
/// instance creation. | |
/// | |
/// Note that the `Element` array is suitably-aligned **raw memory**. | |
/// You are expected to construct and---if necessary---destroy objects | |
/// there yourself, using the APIs on `UnsafeMutablePointer<Element>`. | |
/// Typical usage stores a count and capacity in `Value` and destroys | |
/// any live elements in the `deinit` of a subclass. | |
/// - Note: Subclasses must not have any stored properties; any storage | |
/// needed should be included in `Value`. | |
public class ManagedBuffer<Value, Element> : ManagedProtoBuffer<Value, Element> { | |
/// Create a new instance of the most-derived class, calling | |
/// `initializeValue` on the partially-constructed object to | |
/// generate an initial `Value`. | |
final public class func create(minimumCapacity: Int, initialValue: (ManagedProtoBuffer<Value, Element>) -> Value) -> ManagedBuffer<Value, Element> | |
/// The stored `Value` instance. | |
final public var value: Value | |
} | |
/// Contains a buffer object, and provides access to an instance of | |
/// `Value` and contiguous storage for an arbitrary number of | |
/// `Element` instances stored in that buffer. | |
/// | |
/// For most purposes, the `ManagedBuffer` class works fine for this | |
/// purpose, and can simply be used on its own. However, in cases | |
/// where objects of various different classes must serve as storage, | |
/// `ManagedBufferPointer` is needed. | |
/// | |
/// A valid buffer class is non-`@objc`, with no declared stored | |
/// properties. Its `deinit` must destroy its | |
/// stored `Value` and any constructed `Element`s. | |
/// | |
/// Example Buffer Class | |
/// -------------------- | |
/// | |
/// class MyBuffer<Element> { // non-@objc | |
/// typealias Manager = ManagedBufferPointer<(Int,String), Element> | |
/// deinit { | |
/// Manager(unsafeBufferObject: self).withUnsafeMutablePointers { | |
/// (pointerToValue, pointerToElements)->Void in | |
/// pointerToElements.destroy(self.count) | |
/// pointerToValue.destroy() | |
/// } | |
/// } | |
/// | |
/// // All properties are *computed* based on members of the Value | |
/// var count: Int { | |
/// return Manager(unsafeBufferObject: self).value.0 | |
/// } | |
/// var name: String { | |
/// return Manager(unsafeBufferObject: self).value.1 | |
/// } | |
/// } | |
/// | |
public struct ManagedBufferPointer<Value, Element> : Equatable { | |
/// Create with new storage containing an initial `Value` and space | |
/// for at least `minimumCapacity` `element`s. | |
/// | |
/// - parameter bufferClass: The class of the object used for storage. | |
/// - parameter minimumCapacity: The minimum number of `Element`s that | |
/// must be able to be stored in the new buffer. | |
/// - parameter initialValue: A function that produces the initial | |
/// `Value` instance stored in the buffer, given the `buffer` | |
/// object and a function that can be called on it to get the actual | |
/// number of allocated elements. | |
/// | |
/// - Requires: `minimumCapacity >= 0`, and the type indicated by | |
/// `bufferClass` is a non-`@objc` class with no declared stored | |
/// properties. The `deinit` of `bufferClass` must destroy its | |
/// stored `Value` and any constructed `Element`s. | |
public init(bufferClass: AnyClass, minimumCapacity: Int, initialValue: (buffer: AnyObject, allocatedCount: (AnyObject) -> Int) -> Value) | |
/// Manage the given `buffer`. | |
/// | |
/// - Requires: `buffer` is an instance of a non-`@objc` class whose | |
/// `deinit` destroys its stored `Value` and any constructed | |
/// `Element`s. | |
public init(unsafeBufferObject buffer: AnyObject) | |
/// The stored `Value` instance. | |
public var value: Value | |
/// Return the object instance being used for storage. | |
public var buffer: AnyObject { get } | |
/// The actual number of elements that can be stored in this object. | |
/// | |
/// This value may be nontrivial to compute; it is usually a good | |
/// idea to store this information in the "value" area when | |
/// an instance is created. | |
public var allocatedElementCount: Int { get } | |
/// Call `body` with an `UnsafeMutablePointer` to the stored | |
/// `Value`. | |
/// | |
/// - Note: This pointer is only valid | |
/// for the duration of the call to `body`. | |
public func withUnsafeMutablePointerToValue<R>(body: (UnsafeMutablePointer<Value>) -> R) -> R | |
/// Call `body` with an `UnsafeMutablePointer` to the `Element` | |
/// storage. | |
/// | |
/// - Note: This pointer is only valid for the duration of the | |
/// call to `body`. | |
public func withUnsafeMutablePointerToElements<R>(body: (UnsafeMutablePointer<Element>) -> R) -> R | |
/// Call `body` with `UnsafeMutablePointer`s to the stored `Value` | |
/// and raw `Element` storage. | |
/// | |
/// - Note: These pointers are only valid for the duration of the | |
/// call to `body`. | |
public func withUnsafeMutablePointers<R>(body: (UnsafeMutablePointer<Value>, UnsafeMutablePointer<Element>) -> R) -> R | |
/// Returns true iff `self` holds the only strong reference to its buffer. | |
/// | |
/// See `isUniquelyReferenced` for details. | |
public mutating func holdsUniqueReference() -> Bool | |
/// Returns true iff either `self` holds the only strong reference | |
/// to its buffer or the pinned has been 'pinned'. | |
/// | |
/// See `isUniquelyReferenced` for details. | |
public mutating func holdsUniqueOrPinnedReference() -> Bool | |
} | |
/// A base class of `ManagedBuffer<Value,Element>`, used during | |
/// instance creation. | |
/// | |
/// During instance creation, in particular during | |
/// `ManagedBuffer.create`'s call to initialize, `ManagedBuffer`'s | |
/// `value` property is as-yet uninitialized, and therefore | |
/// `ManagedProtoBuffer` does not offer access to the as-yet | |
/// uninitialized `value` property of `ManagedBuffer`. | |
public class ManagedProtoBuffer<Value, Element> : NonObjectiveCBase { | |
/// The actual number of elements that can be stored in this object. | |
/// | |
/// This value may be nontrivial to compute; it is usually a good | |
/// idea to store this information in the "value" area when | |
/// an instance is created. | |
final public var allocatedElementCount: Int { get } | |
/// Call `body` with an `UnsafeMutablePointer` to the stored | |
/// `Value`. | |
/// | |
/// - Note: This pointer is only valid for the duration of the | |
/// call to `body`. | |
final public func withUnsafeMutablePointerToValue<R>(body: (UnsafeMutablePointer<Value>) -> R) -> R | |
/// Call `body` with an `UnsafeMutablePointer` to the `Element` | |
/// storage. | |
/// | |
/// - Note: This pointer is only valid for the duration of the | |
/// call to `body`. | |
final public func withUnsafeMutablePointerToElements<R>(body: (UnsafeMutablePointer<Element>) -> R) -> R | |
/// Call `body` with `UnsafeMutablePointer`s to the stored `Value` | |
/// and raw `Element` storage. | |
/// | |
/// - Note: These pointers are only valid for the duration of the | |
/// call to `body`. | |
final public func withUnsafeMutablePointers<R>(body: (UnsafeMutablePointer<Value>, UnsafeMutablePointer<Element>) -> R) -> R | |
} | |
/// Representation of the sub-structure and optional "display style" | |
/// of any arbitrary subject instance. | |
/// | |
/// Describes the parts---such as stored properties, collection | |
/// elements, tuple elements, or the active enumeration case---that | |
/// make up a particular instance. May also supply a "display style" | |
/// property that suggests how this structure might be rendered. | |
/// | |
/// Mirrors are used by playgrounds and the debugger. | |
public struct Mirror { | |
/// Representation of ancestor classes. | |
/// | |
/// A `CustomReflectable` class can control how its mirror will | |
/// represent ancestor classes by initializing the mirror with a | |
/// `AncestorRepresentation`. This setting has no effect on mirrors | |
/// reflecting value type instances. | |
public enum AncestorRepresentation { | |
/// Generate a default mirror for all ancestor classes. This is the | |
/// default behavior. | |
/// | |
/// - Note: This option bypasses any implementation of `customMirror` | |
/// that may be supplied by a `CustomReflectable` ancestor, so this | |
/// is typically not the right option for a `customMirror`implementation | |
/// Generate a default mirror for all ancestor classes. | |
/// | |
/// This case is the default. | |
/// | |
/// - Note: This option generates default mirrors even for | |
/// ancestor classes that may implement `CustomReflectable`'s | |
/// `customMirror` requirement. To avoid dropping an ancestor class | |
/// customization, an override of `customMirror()` should pass | |
/// `ancestorRepresentation: .Customized(super.customMirror)` when | |
/// initializing its `Mirror`. | |
case Generated | |
/// Use the nearest ancestor's implementation of `customMirror()` to | |
/// create a mirror for that ancestor. Other classes derived from | |
/// such an ancestor are given a default mirror. | |
/// | |
/// The payload for this option should always be | |
/// "`super.customMirror`": | |
/// | |
/// func customMirror() -> Mirror { | |
/// return Mirror( | |
/// self, | |
/// children: ["someProperty": self.someProperty], | |
/// ancestorRepresentation: .Customized(super.customMirror)) // <== | |
/// } | |
case Customized(() -> Mirror) | |
/// Suppress the representation of all ancestor classes. The | |
/// resulting `Mirror`'s `superclassMirror()` is `nil`. | |
case Suppressed | |
} | |
/// Reflect upon the given `subject`. | |
/// | |
/// If the dynamic type of `subject` conforms to `CustomReflectable`, | |
/// the resulting mirror is determined by its `customMirror` method. | |
/// Otherwise, the result is generated by the language. | |
/// | |
/// - Note: If the dynamic type of `subject` has value semantics, | |
/// subsequent mutations of `subject` will not observable in | |
/// `Mirror`. In general, though, the observability of such | |
/// mutations is unspecified. | |
public init(reflecting subject: Any) | |
/// An element of the reflected instance's structure. The optional | |
/// `label` may be used when appropriate, e.g. to represent the name | |
/// of a stored property or of an active `enum` case, and will be | |
/// used for lookup when `String`s are passed to the `descendant` | |
/// method. | |
public typealias Child = (label: String?, value: Any) | |
/// The type used to represent sub-structure. | |
/// | |
/// Depending on your needs, you may find it useful to "upgrade" | |
/// instances of this type to `AnyBidirectionalCollection` or | |
/// `AnyRandomAccessCollection`. For example, to display the last | |
/// 20 children of a mirror if they can be accessed efficiently, you | |
/// might write: | |
/// | |
/// if let b = AnyBidirectionalCollection(someMirror.children) { | |
/// for i in b.endIndex.advancedBy(-20, limit: b.startIndex)..<b.endIndex { | |
/// print(b[i]) | |
/// } | |
/// } | |
public typealias Children = AnyForwardCollection<Child> | |
/// A suggestion of how a `Mirror`'s is to be interpreted. | |
/// | |
/// Playgrounds and the debugger will show a representation similar | |
/// to the one used for instances of the kind indicated by the | |
/// `DisplayStyle` case name when the `Mirror` is used for display. | |
public enum DisplayStyle { | |
case Struct | |
case Class | |
case Enum | |
case Tuple | |
case Optional | |
case Collection | |
case Dictionary | |
case Set | |
} | |
/// Represent `subject` with structure described by `children`, | |
/// using an optional `displayStyle`. | |
/// | |
/// If `subject` is not a class instance, `ancestorRepresentation` | |
/// is ignored. Otherwise, `ancestorRepresentation` determines | |
/// whether ancestor classes will be represented and whether their | |
/// `customMirror` implementations will be used. By default, a | |
/// representation is automatically generated and any `customMirror` | |
/// implementation is bypassed. To prevent bypassing customized | |
/// ancestors, `customMirror` overrides should initialize the | |
/// `Mirror` with: | |
/// | |
/// ancestorRepresentation: .Customized(super.customMirror) | |
/// | |
/// - Note: The traversal protocol modeled by `children`'s indices | |
/// (`ForwardIndexType`, `BidirectionalIndexType`, or | |
/// `RandomAccessIndexType`) is captured so that the resulting | |
/// `Mirror`'s `children` may be upgraded later. See the failable | |
/// initializers of `AnyBidirectionalCollection` and | |
/// `AnyRandomAccessCollection` for details. | |
public init<T, C : CollectionType where C.Generator.Element == Child>(_ subject: T, children: C, displayStyle: Mirror.DisplayStyle? = default, ancestorRepresentation: Mirror.AncestorRepresentation = default) | |
/// Represent `subject` with child values given by | |
/// `unlabeledChildren`, using an optional `displayStyle`. The | |
/// result's child labels will all be `nil`. | |
/// | |
/// This initializer is especially useful for the mirrors of | |
/// collections, e.g.: | |
/// | |
/// extension MyArray : CustomReflectable { | |
/// func customMirror() -> Mirror { | |
/// return Mirror(self, unlabeledChildren: self, displayStyle: .Collection) | |
/// } | |
/// } | |
/// | |
/// If `subject` is not a class instance, `ancestorRepresentation` | |
/// is ignored. Otherwise, `ancestorRepresentation` determines | |
/// whether ancestor classes will be represented and whether their | |
/// `customMirror` implementations will be used. By default, a | |
/// representation is automatically generated and any `customMirror` | |
/// implementation is bypassed. To prevent bypassing customized | |
/// ancestors, `customMirror` overrides should initialize the | |
/// `Mirror` with: | |
/// | |
/// ancestorRepresentation: .Customized(super.customMirror) | |
/// | |
/// - Note: The traversal protocol modeled by `children`'s indices | |
/// (`ForwardIndexType`, `BidirectionalIndexType`, or | |
/// `RandomAccessIndexType`) is captured so that the resulting | |
/// `Mirror`'s `children` may be upgraded later. See the failable | |
/// initializers of `AnyBidirectionalCollection` and | |
/// `AnyRandomAccessCollection` for details. | |
public init<T, C : CollectionType>(_ subject: T, unlabeledChildren: C, displayStyle: Mirror.DisplayStyle? = default, ancestorRepresentation: Mirror.AncestorRepresentation = default) | |
/// Represent `subject` with labeled structure described by | |
/// `children`, using an optional `displayStyle`. | |
/// | |
/// Pass a dictionary literal with `String` keys as `children`. Be | |
/// aware that although an *actual* `Dictionary` is | |
/// arbitrarily-ordered, the ordering of the `Mirror`'s `children` | |
/// will exactly match that of the literal you pass. | |
/// | |
/// If `subject` is not a class instance, `ancestorRepresentation` | |
/// is ignored. Otherwise, `ancestorRepresentation` determines | |
/// whether ancestor classes will be represented and whether their | |
/// `customMirror` implementations will be used. By default, a | |
/// representation is automatically generated and any `customMirror` | |
/// implementation is bypassed. To prevent bypassing customized | |
/// ancestors, `customMirror` overrides should initialize the | |
/// `Mirror` with: | |
/// | |
/// ancestorRepresentation: .Customized(super.customMirror) | |
/// | |
/// - Note: The resulting `Mirror`'s `children` may be upgraded to | |
/// `AnyRandomAccessCollection` later. See the failable | |
/// initializers of `AnyBidirectionalCollection` and | |
/// `AnyRandomAccessCollection` for details. | |
public init<T>(_ subject: T, children: DictionaryLiteral<String, Any>, displayStyle: Mirror.DisplayStyle? = default, ancestorRepresentation: Mirror.AncestorRepresentation = default) | |
/// The static type of the subject being reflected. | |
/// | |
/// This type may differ from the subject's dynamic type when `self` | |
/// is the `superclassMirror()` of another mirror. | |
public let subjectType: Any.Type | |
/// A collection of `Child` elements describing the structure of the | |
/// reflected subject. | |
public let children: Children | |
/// Suggests a display style for the reflected subject. | |
public let displayStyle: Mirror.DisplayStyle? | |
@warn_unused_result | |
public func superclassMirror() -> Mirror? | |
} | |
extension Mirror { | |
/// Return a specific descendant of the reflected subject, or `nil` | |
/// if no such descendant exists. | |
/// | |
/// A `String` argument selects the first `Child` with a matching label. | |
/// An integer argument *n* select the *n*th `Child`. For example: | |
/// | |
/// var d = Mirror(reflecting: x).descendant(1, "two", 3) | |
/// | |
/// is equivalent to: | |
/// | |
/// var d = nil | |
/// let children = Mirror(reflecting: x).children | |
/// let p0 = children.startIndex.advancedBy(1, limit: children.endIndex) | |
/// if p0 != children.endIndex { | |
/// let grandChildren = Mirror(reflecting: children[p0].value).children | |
/// SeekTwo: for g in grandChildren { | |
/// if g.label == "two" { | |
/// let greatGrandChildren = Mirror(reflecting: g.value).children | |
/// let p1 = greatGrandChildren.startIndex.advancedBy(3, | |
/// limit: greatGrandChildren.endIndex) | |
/// if p1 != endIndex { d = greatGrandChildren[p1].value } | |
/// break SeekTwo | |
/// } | |
/// } | |
/// | |
/// As you can see, complexity for each element of the argument list | |
/// depends on the argument type and capabilities of the collection | |
/// used to initialize the corresponding subject's parent's mirror. | |
/// Each `String` argument results in a linear search. In short, | |
/// this function is suitable for exploring the structure of a | |
/// `Mirror` in a REPL or playground, but don't expect it to be | |
/// efficient. | |
@warn_unused_result | |
public func descendant(first: MirrorPathType, _ rest: MirrorPathType...) -> Any? | |
} | |
extension Mirror : CustomStringConvertible { | |
public var description: String { get } | |
} | |
extension Mirror : CustomReflectable { | |
@warn_unused_result | |
public func customMirror() -> Mirror | |
} | |
/// A protocol for legitimate arguments to `Mirror`'s `descendant` | |
/// method. | |
/// | |
/// Do not declare new conformances to this protocol; they will not | |
/// work as expected. | |
public protocol MirrorPathType { | |
} | |
/// A *collection* that supports subscript assignment. | |
/// | |
/// For any instance `a` of a type conforming to | |
/// `MutableCollectionType`, : | |
/// | |
/// a[i] = x | |
/// let y = a[i] | |
/// | |
/// is equivalent to: | |
/// | |
/// a[i] = x | |
/// let y = x | |
/// | |
public protocol MutableCollectionType : MutableIndexable, CollectionType { | |
typealias SubSequence : CollectionType = MutableSlice<Self> | |
public subscript (position: Self.Index) -> Self.Generator.Element { get set } | |
public subscript (bounds: Range<Self.Index>) -> Self.SubSequence { get set } | |
} | |
extension MutableCollectionType { | |
public subscript (bounds: Range<Self.Index>) -> MutableSlice<Self> | |
} | |
extension MutableCollectionType where Index : RandomAccessIndexType { | |
/// Re-order the given `range` of elements in `self` and return | |
/// a pivot index *p*. | |
/// | |
/// - Postcondition: For all *i* in `range.startIndex..<`\ *p*, and *j* | |
/// in *p*\ `..<range.endIndex`, `less(self[`\ *i*\ `], | |
/// self[`\ *j*\ `]) && !less(self[`\ *j*\ `], self[`\ *p*\ `])`. | |
/// Only returns `range.endIndex` when `self` is empty. | |
/// | |
/// - Requires: `isOrderedBefore` is a | |
/// [strict weak ordering](http://en.wikipedia.org/wiki/Strict_weak_order#Strict_weak_orderings) | |
/// over the elements in `self`. | |
public mutating func partition(range: Range<Self.Index>, isOrderedBefore: (Self.Generator.Element, Self.Generator.Element) -> Bool) -> Self.Index | |
} | |
extension MutableCollectionType where Index : RandomAccessIndexType, Generator.Element : Comparable { | |
/// Re-order the given `range` of elements in `self` and return | |
/// a pivot index *p*. | |
/// | |
/// - Postcondition: For all *i* in `range.startIndex..<`\ *p*, and *j* | |
/// in *p*\ `..<range.endIndex`, `less(self[`\ *i*\ `], | |
/// self[`\ *j*\ `]) && !less(self[`\ *j*\ `], self[`\ *p*\ `])`. | |
/// Only returns `range.endIndex` when `self` is empty. | |
/// | |
/// - Requires: The less-than operator (`func <`) defined in | |
/// the `Comparable` conformance is a | |
/// [strict weak ordering](http://en.wikipedia.org/wiki/Strict_weak_order#Strict_weak_orderings) | |
/// over the elements in `self`. | |
public mutating func partition(range: Range<Self.Index>) -> Self.Index | |
} | |
extension MutableCollectionType where Self.Generator.Element : Comparable { | |
/// Return an `Array` containing the sorted elements of `source`. | |
/// | |
/// The sorting algorithm is not stable (can change the relative order of | |
/// elements that compare equal). | |
/// | |
/// - Requires: The less-than operator (`func <`) defined in | |
/// the `Comparable` conformance is a | |
/// [strict weak ordering](http://en.wikipedia.org/wiki/Strict_weak_order#Strict_weak_orderings) | |
/// over the elements in `self`. | |
@warn_unused_result(mutable_variant="sortInPlace") | |
public func sort() -> [Self.Generator.Element] | |
} | |
extension MutableCollectionType { | |
/// Return an `Array` containing the sorted elements of `source` | |
/// according to `isOrderedBefore`. | |
/// | |
/// The sorting algorithm is not stable (can change the relative order of | |
/// elements for which `isOrderedBefore` does not establish an order). | |
/// | |
/// - Requires: `isOrderedBefore` is a | |
/// [strict weak ordering](http://en.wikipedia.org/wiki/Strict_weak_order#Strict_weak_orderings) | |
/// over the elements in `self`. | |
@warn_unused_result(mutable_variant="sortInPlace") | |
public func sort(@noescape isOrderedBefore: (Self.Generator.Element, Self.Generator.Element) -> Bool) -> [Self.Generator.Element] | |
} | |
extension MutableCollectionType where Self.Index : RandomAccessIndexType, Self.Generator.Element : Comparable { | |
/// Sort `self` in-place. | |
/// | |
/// The sorting algorithm is not stable (can change the relative order of | |
/// elements that compare equal). | |
/// | |
/// - Requires: The less-than operator (`func <`) defined in | |
/// the `Comparable` conformance is a | |
/// [strict weak ordering](http://en.wikipedia.org/wiki/Strict_weak_order#Strict_weak_orderings) | |
/// over the elements in `self`. | |
public mutating func sortInPlace() | |
} | |
extension MutableCollectionType where Self.Index : RandomAccessIndexType { | |
/// Sort `self` in-place according to `isOrderedBefore`. | |
/// | |
/// The sorting algorithm is not stable (can change the relative order of | |
/// elements for which `isOrderedBefore` does not establish an order). | |
/// | |
/// - Requires: `isOrderedBefore` is a | |
/// [strict weak ordering](http://en.wikipedia.org/wiki/Strict_weak_order#Strict_weak_orderings) | |
/// over the elements in `self`. | |
public mutating func sortInPlace(@noescape isOrderedBefore: (Self.Generator.Element, Self.Generator.Element) -> Bool) | |
} | |
public protocol MutableIndexable { | |
typealias Index : ForwardIndexType | |
public var startIndex: Self.Index { get } | |
public var endIndex: Self.Index { get } | |
public subscript (position: Self.Index) -> Self._Element { get set } | |
} | |
/// A view into a sub-sequence of elements of another collection. | |
/// | |
/// A `MutableSlice` instance stores the base collection, the start and end indices of | |
/// the view. It does not copy the elements from the collection into separate | |
/// storage. Thus, creating a slice has `O(1)` complexity. | |
/// | |
/// A `MutableSlice` instance inherits the value or reference semantics of the base | |
/// collection. That is, if a `MutableSlice` instance is wrapped around a mutable | |
/// colection that has value semantics (for example, `Array`), mutating the | |
/// original collection would not affect the copy stored inside of the slice. | |
/// | |
/// An element of a slice is located under the same index in the slice and in | |
/// the base collection, as long as neither the collection or the slice were | |
/// mutated. Thus, indices of a slice can be used interchangibly with indices | |
/// of the base collection. | |
/// | |
/// - Warning: Long-term storage of `MutableSlice` instances is discouraged. | |
/// | |
/// Because a `MutableSlice` presents a *view* onto the storage of some larger | |
/// collection even after the original collection goes out of scope, storing | |
/// the slice may prolong the lifetime of elements that are no longer | |
/// accessible, which can manifest as apparent memory and object leakage. To | |
/// prevent this effect, use slices only for transient computation. | |
/// | |
/// - Warning: `MutableSlice` requires the setter of `Base.subscript(_: Index)` | |
/// to not invalidate indices. If you are writing a collection and mutations | |
/// need to invalidate indices, don't use `MutableSlice`, use `Slice` or | |
/// define your own `Base.SubSequence` type that takes that into account. | |
public struct MutableSlice<Base : MutableIndexable> : MutableCollectionType { | |
public typealias Index = Base.Index | |
public var startIndex: Base.Index { get } | |
public var endIndex: Base.Index { get } | |
public subscript (index: Base.Index) -> Base._Element | |
public subscript (bounds: Range<Base.Index>) -> MutableSlice<Base> | |
public init(base: Base, bounds: Range<Base.Index>) | |
} | |
/// A *collection* with mutable slices. | |
/// | |
/// For example, | |
/// | |
/// x[i..<j] = someExpression | |
/// x[i..<j].mutatingMethod() | |
public protocol MutableSliceable : CollectionType, MutableCollectionType { | |
public subscript (_: Range<Self.Index>) -> Self.SubSequence { get set } | |
} | |
/// Conforming types can be initialized with `nil`. | |
public protocol NilLiteralConvertible { | |
/// Create an instance initialized with `nil`. | |
public init(nilLiteral: ()) | |
} | |
/// A common base class for classes that need to be non-`@objc`, | |
/// recognizably in the type system. | |
/// | |
/// - SeeAlso: `isUniquelyReferenced` | |
public class NonObjectiveCBase { | |
public init() | |
} | |
/// A unique identifier for a class instance or metatype. This can be used by | |
/// reflection clients to recognize cycles in the object graph. | |
/// | |
/// In Swift, only class instances and metatypes have unique identities. There | |
/// is no notion of identity for structs, enums, functions, or tuples. | |
public struct ObjectIdentifier : Hashable, Comparable { | |
/// Convert to a `UInt` that captures the full value of `self`. | |
/// | |
/// Axiom: `a.uintValue == b.uintValue` iff `a == b`. | |
public var uintValue: UInt { get } | |
/// The hash value. | |
/// | |
/// **Axiom:** `x == y` implies `x.hashValue == y.hashValue`. | |
/// | |
/// - Note: The hash value is not guaranteed to be stable across | |
/// different invocations of the same program. Do not persist the | |
/// hash value across program runs. | |
public var hashValue: Int { get } | |
/// Construct an instance that uniquely identifies the class instance `x`. | |
public init(_ x: AnyObject) | |
/// Construct an instance that uniquely identifies the metatype `x`. | |
public init(_ x: Any.Type) | |
} | |
/// Supplies convenient conformance to `SetAlgebraType` for any type | |
/// whose `RawValue` is a `BitwiseOperationsType`. For example: | |
/// | |
/// struct PackagingOptions : OptionSetType { | |
/// let rawValue: Int | |
/// init(rawValue: Int) { self.rawValue = rawValue } | |
/// | |
/// static let Box = PackagingOptions(rawValue: 1) | |
/// static let Carton = PackagingOptions(rawValue: 2) | |
/// static let Bag = PackagingOptions(rawValue: 4) | |
/// static let Satchel = PackagingOptions(rawValue: 8) | |
/// static let BoxOrBag: PackagingOptions = [Box, Bag] | |
/// static let BoxOrCartonOrBag: PackagingOptions = [Box, Carton, Bag] | |
/// } | |
/// | |
/// In the example above, `PackagingOptions.Element` is the same type | |
/// as `PackagingOptions`, and instance `a` subsumes instance `b` if | |
/// and only if `a.rawValue & b.rawValue == b.rawValue`. | |
public protocol OptionSetType : SetAlgebraType, RawRepresentable { | |
/// An `OptionSet`'s `Element` type is normally `Self`. | |
typealias Element = Self | |
/// Convert from a value of `RawValue`, succeeding unconditionally. | |
public init(rawValue: Self.RawValue) | |
} | |
extension OptionSetType { | |
/// Returns the set of elements contained in `self`, in `other`, or in | |
/// both `self` and `other`. | |
@warn_unused_result | |
public func union(other: Self) -> Self | |
/// Returns the set of elements contained in both `self` and `other`. | |
@warn_unused_result | |
public func intersect(other: Self) -> Self | |
/// Returns the set of elements contained in `self` or in `other`, | |
/// but not in both `self` and `other`. | |
@warn_unused_result | |
public func exclusiveOr(other: Self) -> Self | |
} | |
extension OptionSetType where Element == Self { | |
/// Returns `true` if `self` contains `member`. | |
/// | |
/// - Equivalent to `self.intersect([member]) == [member]` | |
@warn_unused_result | |
public func contains(member: Self) -> Bool | |
/// If `member` is not already contained in `self`, insert it. | |
/// | |
/// - Equivalent to `self.unionInPlace([member])` | |
/// - Postcondition: `self.contains(member)` | |
public mutating func insert(member: Self) | |
/// If `member` is contained in `self`, remove and return it. | |
/// Otherwise, return `nil`. | |
/// | |
/// - Postcondition: `self.intersect([member]).isEmpty` | |
public mutating func remove(member: Self) -> Self? | |
} | |
extension OptionSetType where RawValue : BitwiseOperationsType { | |
/// Create an empty instance. | |
/// | |
/// - Equivalent to `[] as Self` | |
public convenience init() | |
/// Insert all elements of `other` into `self`. | |
/// | |
/// - Equivalent to replacing `self` with `self.union(other)`. | |
/// - Postcondition: `self.isSupersetOf(other)` | |
public mutating func unionInPlace(other: Self) | |
/// Remove all elements of `self` that are not also present in | |
/// `other`. | |
/// | |
/// - Equivalent to replacing `self` with `self.intersect(other)` | |
/// - Postcondition: `self.isSubsetOf(other)` | |
public mutating func intersectInPlace(other: Self) | |
/// Replace `self` with a set containing all elements contained in | |
/// either `self` or `other`, but not both. | |
/// | |
/// - Equivalent to replacing `self` with `self.exclusiveOr(other)` | |
public mutating func exclusiveOrInPlace(other: Self) | |
} | |
public enum Optional<Wrapped> : _Reflectable, NilLiteralConvertible { | |
case None | |
case Some(Wrapped) | |
/// Construct a `nil` instance. | |
public init() | |
/// Construct a non-`nil` instance that stores `some`. | |
public init(_ some: Wrapped) | |
/// If `self == nil`, returns `nil`. Otherwise, returns `f(self!)`. | |
@warn_unused_result | |
public func map<U>(@noescape f: (Wrapped) throws -> U) rethrows -> U? | |
/// Returns `nil` if `self` is nil, `f(self!)` otherwise. | |
@warn_unused_result | |
public func flatMap<U>(@noescape f: (Wrapped) throws -> U?) rethrows -> U? | |
/// Create an instance initialized with `nil`. | |
public init(nilLiteral: ()) | |
} | |
extension Optional : CustomDebugStringConvertible { | |
/// A textual representation of `self`, suitable for debugging. | |
public var debugDescription: String { get } | |
} | |
/// A target of text streaming operations. | |
public protocol OutputStreamType { | |
/// Append the given `string` to this stream. | |
public mutating func write(string: String) | |
} | |
/// A *generator* that adapts a *collection* `C` and any *sequence* of | |
/// its `Index` type to present the collection's elements in a | |
/// permuted order. | |
public struct PermutationGenerator<C : CollectionType, Indices : SequenceType where C.Index == Indices.Generator.Element> : GeneratorType, SequenceType { | |
/// The type of element returned by `next()`. | |
public typealias Element = C.Generator.Element | |
/// Advance to the next element and return it, or `nil` if no next | |
/// element exists. | |
/// | |
/// - Requires: No preceding call to `self.next()` has returned `nil`. | |
public mutating func next() -> C.Generator.Element? | |
/// Construct a *generator* over a permutation of `elements` given | |
/// by `indices`. | |
/// | |
/// - Requires: `elements[i]` is valid for every `i` in `indices`. | |
public init(elements: C, indices: Indices) | |
} | |
/// The sum of types that can be used as a quick look representation. | |
public enum PlaygroundQuickLook { | |
/// Plain text. | |
case Text(String) | |
/// An integer numeric value. | |
case Int(Int64) | |
/// An unsigned integer numeric value. | |
case UInt(UInt64) | |
/// A single precision floating-point numeric value. | |
case Float(Float32) | |
/// A double precision floating-point numeric value. | |
case Double(Float64) | |
/// An image. | |
case Image(Any) | |
/// A sound. | |
case Sound(Any) | |
/// A color. | |
case Color(Any) | |
/// A bezier path. | |
case BezierPath(Any) | |
/// An attributed string. | |
case AttributedString(Any) | |
/// A rectangle. | |
/// | |
/// Uses explicit coordinates to avoid coupling a particular Cocoa type. | |
case Rectangle(Float64, Float64, Float64, Float64) | |
/// A point. | |
/// | |
/// Uses explicit coordinates to avoid coupling a particular Cocoa type. | |
case Point(Float64, Float64) | |
/// A size. | |
/// | |
/// Uses explicit coordinates to avoid coupling a particular Cocoa type. | |
case Size(Float64, Float64) | |
/// A logical value. | |
case Logical(Bool) | |
/// A range. | |
/// | |
/// Uses explicit values to avoid coupling a particular Cocoa type. | |
case Range(Int64, Int64) | |
/// A GUI view. | |
/// | |
/// Uses an Any to avoid coupling a particular Cocoa type. | |
case View(Any) | |
/// A graphical sprite. | |
/// | |
/// Uses an Any to avoid coupling a particular Cocoa type. | |
case Sprite(Any) | |
/// A Uniform Resource Locator. | |
case URL(String) | |
} | |
extension PlaygroundQuickLook { | |
/// Initialize for the given `subject`. | |
/// | |
/// If the dynamic type of `subject` conforms to | |
/// `CustomPlaygroundQuickLookable`, returns the result of calling | |
/// its `customPlaygroundQuickLook` method. Otherwise, returns | |
/// a `PlaygroundQuickLook` synthesized for `subject` by the | |
/// language. Note that in some cases the result may be | |
/// `.Text(String(reflecting: subject))`. | |
/// | |
/// - Note: If the dynamic type of `subject` has value semantics, | |
/// subsequent mutations of `subject` will not observable in | |
/// `Mirror`. In general, though, the observability of such | |
/// mutations is unspecified. | |
public init(reflecting subject: Any) | |
} | |
public enum Process { | |
/// The list of command-line arguments with which the current | |
/// process was invoked. | |
public static let arguments: [String] | |
/// Access to the raw argc value from C. | |
public static var argc: CInt { get } | |
/// Access to the raw argv value from C. Accessing the argument vector | |
/// through this pointer is unsafe. | |
public static var unsafeArgv: UnsafeMutablePointer<UnsafeMutablePointer<Int8>> { get } | |
} | |
/// An *index* that can be offset by an arbitrary number of positions, | |
/// and can measure the distance to any reachable value, in O(1). | |
public protocol RandomAccessIndexType : BidirectionalIndexType, Strideable, _RandomAccessAmbiguity { | |
@warn_unused_result | |
public func distanceTo(other: Self) -> Self.Distance | |
@warn_unused_result | |
public func advancedBy(n: Self.Distance) -> Self | |
@warn_unused_result | |
public func advancedBy(n: Self.Distance, limit: Self) -> Self | |
} | |
extension RandomAccessIndexType { | |
@warn_unused_result | |
public func advancedBy(n: Self.Distance, limit: Self) -> Self | |
} | |
/// A collection of consecutive discrete index values. | |
/// | |
/// - parameter Element: Is both the element type and the index type of the | |
/// collection. | |
/// | |
/// Like other collections, a range containing one element has an | |
/// `endIndex` that is the successor of its `startIndex`; and an empty | |
/// range has `startIndex == endIndex`. | |
/// | |
/// Axiom: for any `Range` `r`, `r[i] == i`. | |
/// | |
/// Therefore, if `Element` has a maximal value, it can serve as an | |
/// `endIndex`, but can never be contained in a `Range<Element>`. | |
/// | |
/// It also follows from the axiom above that `(-99..<100)[0] == 0`. | |
/// To prevent confusion (because some expect the result to be `-99`), | |
/// in a context where `Element` is known to be an integer type, | |
/// subscripting with `Element` is a compile-time error: | |
/// | |
/// // error: could not find an overload for 'subscript'... | |
/// print(Range<Int>(start: -99, end: 100)[0]) | |
/// | |
/// However, subscripting that range still works in a generic context: | |
/// | |
/// func brackets<Element : ForwardIndexType>(x: Range<Element>, i: Element) -> Element { | |
/// return x[i] // Just forward to subscript | |
/// } | |
/// print(brackets(Range<Int>(start:-99, end:100), 0)) // prints 0 | |
public struct Range<Element : ForwardIndexType> : Equatable, CollectionType, CustomStringConvertible, CustomDebugStringConvertible { | |
/// Construct a copy of `x`. | |
public init(_ x: Range<Element>) | |
/// Construct a range with `startIndex == start` and `endIndex == | |
/// end`. | |
public init(start: Element, end: Element) | |
public subscript (position: Element) -> Element { get } | |
public subscript (_: Element._DisabledRangeIndex) -> Element { get } | |
/// Return a *generator* over the elements of this *sequence*. | |
/// | |
/// - Complexity: O(1). | |
public func generate() -> RangeGenerator<Element> | |
/// The range's lower bound. | |
/// | |
/// Identical to `endIndex` in an empty range. | |
public var startIndex: Element | |
/// The range's upper bound. | |
/// | |
/// `endIndex` is not a valid argument to `subscript`, and is always | |
/// reachable from `startIndex` by zero or more applications of | |
/// `successor()`. | |
public var endIndex: Element | |
/// A textual representation of `self`. | |
public var description: String { get } | |
/// A textual representation of `self`, suitable for debugging. | |
public var debugDescription: String { get } | |
} | |
extension Range : _Reflectable { | |
} | |
/// A generator over the elements of `Range<Element>`. | |
public struct RangeGenerator<Element : ForwardIndexType> : GeneratorType, SequenceType { | |
/// Construct an instance that traverses the elements of `bounds`. | |
public init(_ bounds: Range<Element>) | |
/// Advance to the next element and return it, or `nil` if no next | |
/// element exists. | |
public mutating func next() -> Element? | |
/// The lower bound of the remaining range. | |
public var startIndex: Element | |
/// The upper bound of the remaining range; not included in the | |
/// generated sequence. | |
public var endIndex: Element | |
} | |
/// A *collection* that supports replacement of an arbitrary subRange | |
/// of elements with the elements of another collection. | |
public protocol RangeReplaceableCollectionType : CollectionType { | |
/// Create an empty instance. | |
public init() | |
/// Replace the given `subRange` of elements with `newElements`. | |
/// | |
/// Invalidates all indices with respect to `self`. | |
/// | |
/// - Complexity: O(`subRange.count`) if | |
/// `subRange.endIndex == self.endIndex` and `newElements.isEmpty`, | |
/// O(`self.count` + `newElements.count`) otherwise. | |
public mutating func replaceRange<C : CollectionType where C.Generator.Element == Generator.Element>(subRange: Range<Self.Index>, with newElements: C) | |
/// A non-binding request to ensure `n` elements of available storage. | |
/// | |
/// This works as an optimization to avoid multiple reallocations of | |
/// linear data structures like `Array`. Conforming types may | |
/// reserve more than `n`, exactly `n`, less than `n` elements of | |
/// storage, or even ignore the request completely. | |
public mutating func reserveCapacity(n: Self.Index.Distance) | |
/// Creates a collection instance that contains `elements`. | |
public init<S : SequenceType where S.Generator.Element == Generator.Element>(_ elements: S) | |
/// Append `x` to `self`. | |
/// | |
/// Applying `successor()` to the index of the new element yields | |
/// `self.endIndex`. | |
/// | |
/// - Complexity: Amortized O(1). | |
public mutating func append(x: Self.Generator.Element) | |
/// Append the elements of `newElements` to `self`. | |
/// | |
/// - Complexity: O(*length of result*). | |
public mutating func appendContentsOf<S : SequenceType where S.Generator.Element == Generator.Element>(newElements: S) | |
/// Insert `newElement` at index `i`. | |
/// | |
/// Invalidates all indices with respect to `self`. | |
/// | |
/// - Complexity: O(`self.count`). | |
public mutating func insert(newElement: Self.Generator.Element, atIndex i: Self.Index) | |
/// Insert `newElements` at index `i`. | |
/// | |
/// Invalidates all indices with respect to `self`. | |
/// | |
/// - Complexity: O(`self.count + newElements.count`). | |
public mutating func insertContentsOf<S : CollectionType where S.Generator.Element == Generator.Element>(newElements: S, at i: Self.Index) | |
/// Remove the element at index `i`. | |
/// | |
/// Invalidates all indices with respect to `self`. | |
/// | |
/// - Complexity: O(`self.count`). | |
public mutating func removeAtIndex(i: Self.Index) -> Self.Generator.Element | |
/// Remove the element at `startIndex` and return it. | |
/// | |
/// - Complexity: O(`self.count`) | |
/// - Requires: `!self.isEmpty`. | |
public mutating func removeFirst() -> Self.Generator.Element | |
/// Remove the first `n` elements. | |
/// | |
/// - Complexity: O(`self.count`) | |
/// - Requires: `n >= 0 && self.count >= n`. | |
public mutating func removeFirst(n: Int) | |
/// Remove the indicated `subRange` of elements. | |
/// | |
/// Invalidates all indices with respect to `self`. | |
/// | |
/// - Complexity: O(`self.count`). | |
public mutating func removeRange(subRange: Range<Self.Index>) | |
/// Remove all elements. | |
/// | |
/// Invalidates all indices with respect to `self`. | |
/// | |
/// - parameter keepCapacity: If `true`, is a non-binding request to | |
/// avoid releasing storage, which can be a useful optimization | |
/// when `self` is going to be grown again. | |
/// | |
/// - Complexity: O(`self.count`). | |
public mutating func removeAll(keepCapacity keepCapacity: Bool) | |
} | |
extension RangeReplaceableCollectionType { | |
public convenience init<S : SequenceType where S.Generator.Element == Generator.Element>(_ elements: S) | |
public mutating func append(newElement: Self.Generator.Element) | |
public mutating func appendContentsOf<S : SequenceType where S.Generator.Element == Generator.Element>(newElements: S) | |
public mutating func insert(newElement: Self.Generator.Element, atIndex i: Self.Index) | |
public mutating func insertContentsOf<C : CollectionType where C.Generator.Element == Generator.Element>(newElements: C, at i: Self.Index) | |
public mutating func removeAtIndex(index: Self.Index) -> Self.Generator.Element | |
public mutating func removeRange(subRange: Range<Self.Index>) | |
public mutating func removeFirst(n: Int) | |
public mutating func removeFirst() -> Self.Generator.Element | |
public mutating func removeAll(keepCapacity keepCapacity: Bool = default) | |
public mutating func reserveCapacity(n: Self.Index.Distance) | |
} | |
extension RangeReplaceableCollectionType where SubSequence == Self { | |
/// Remove the element at `startIndex` and return it. | |
/// | |
/// - Complexity: O(1) | |
/// - Requires: `!self.isEmpty`. | |
public mutating func removeFirst() -> Self.Generator.Element | |
/// Remove the first `n` elements. | |
/// | |
/// - Complexity: O(1) | |
/// - Requires: `self.count >= n`. | |
public mutating func removeFirst(n: Int) | |
} | |
extension RangeReplaceableCollectionType where Index : BidirectionalIndexType { | |
/// Remove an element from the end. | |
/// | |
/// - Complexity: O(1) | |
/// - Requires: `!self.isEmpty` | |
public mutating func removeLast() -> Self.Generator.Element | |
/// Remove the last `n` elements. | |
/// | |
/// - Complexity: O(`self.count`) | |
/// - Requires: `n >= 0 && self.count >= n`. | |
public mutating func removeLast(n: Int) | |
} | |
/// A byte-sized thing that isn't designed to interoperate with | |
/// any other types; it makes a decent parameter to | |
/// `UnsafeMutablePointer<Memory>` when you just want to do bytewise | |
/// pointer arithmetic. | |
public struct RawByte { | |
} | |
/// A type that can be converted to an associated "raw" type, then | |
/// converted back to produce an instance equivalent to the original. | |
public protocol RawRepresentable { | |
/// The "raw" type that can be used to represent all values of `Self`. | |
/// | |
/// Every distinct value of `self` has a corresponding unique | |
/// value of `RawValue`, but `RawValue` may have representations | |
/// that do not correspond to a value of `Self`. | |
typealias RawValue | |
/// Convert from a value of `RawValue`, yielding `nil` iff | |
/// `rawValue` does not correspond to a value of `Self`. | |
public init?(rawValue: Self.RawValue) | |
/// The corresponding value of the "raw" type. | |
/// | |
/// `Self(rawValue: self.rawValue)!` is equivalent to `self`. | |
public var rawValue: Self.RawValue { get } | |
} | |
/// A collection whose elements are all identical `Element`s. | |
public struct Repeat<Element> : CollectionType { | |
/// A type that represents a valid position in the collection. | |
/// | |
/// Valid indices consist of the position of every element and a | |
/// "past the end" position that's not valid for use as a subscript. | |
public typealias Index = Int | |
/// Construct an instance that contains `count` elements having the | |
/// value `repeatedValue`. | |
public init(count: Int, repeatedValue: Element) | |
/// Always zero, which is the index of the first element in a | |
/// non-empty instance. | |
public var startIndex: Index { get } | |
/// Always equal to `count`, which is one greater than the index of | |
/// the last element in a non-empty instance. | |
public var endIndex: Index { get } | |
public subscript (position: Int) -> Element { get } | |
/// The number of elements in this collection. | |
public var count: Int | |
/// The value of every element in this collection. | |
public let repeatedValue: Element | |
} | |
/// A Collection that presents the elements of its `Base` collection | |
/// in reverse order. | |
/// | |
/// - Note: This type is the result of `x.reverse()` where `x` is a | |
/// collection having bidirectional indices. | |
/// | |
/// The `reverse()` method is always lazy when applied to a collection | |
/// with bidirectional indices, but does not implicitly confer | |
/// laziness on algorithms applied to its result. In other words, for | |
/// ordinary collections `c` having bidirectional indices: | |
/// | |
/// * `c.reverse()` does not create new storage | |
/// * `c.reverse().map(f)` maps eagerly and returns a new array | |
/// * `c.lazy.reverse().map(f)` maps lazily and returns a `LazyMapCollection` | |
/// | |
/// - See also: `ReverseRandomAccessCollection` | |
public struct ReverseCollection<Base : CollectionType where Base.Index : BidirectionalIndexType> : CollectionType, _ReverseCollectionType { | |
/// Creates an instance that presents the elements of `base` in | |
/// reverse order. | |
/// | |
/// - Complexity: O(1) | |
public init(_ base: Base) | |
/// A type that represents a valid position in the collection. | |
/// | |
/// Valid indices consist of the position of every element and a | |
/// "past the end" position that's not valid for use as a subscript. | |
public typealias Index = ReverseIndex<Base.Index> | |
/// A type that provides the *sequence*'s iteration interface and | |
/// encapsulates its iteration state. | |
public typealias Generator = IndexingGenerator<ReverseCollection<Base>> | |
} | |
/// A wrapper for a `BidirectionalIndexType` that reverses its | |
/// direction of traversal. | |
public struct ReverseIndex<Base : BidirectionalIndexType> : BidirectionalIndexType, ReverseIndexType { | |
public typealias Distance = Base.Distance | |
public init(_ base: Base) | |
/// The successor position in the underlying (un-reversed) | |
/// collection. | |
/// | |
/// If `self` is `advance(c.reverse.startIndex, n)`, then: | |
/// - `self.base` is `advance(c.endIndex, -n)`. | |
/// - if `n` != `c.count`, then `c.reverse[self]` is | |
/// equivalent to `[self.base.predecessor()]`. | |
public let base: Base | |
} | |
public protocol ReverseIndexType : BidirectionalIndexType { | |
typealias Base : BidirectionalIndexType | |
/// A type that can represent the number of steps between pairs of | |
/// `ReverseIndex` values where one value is reachable from the other. | |
typealias Distance : _SignedIntegerType = Self.Base.Distance | |
/// The successor position in the underlying (un-reversed) | |
/// collection. | |
/// | |
/// If `self` is `advance(c.reverse.startIndex, n)`, then: | |
/// - `self.base` is `advance(c.endIndex, -n)`. | |
/// - if `n` != `c.count`, then `c.reverse[self]` is | |
/// equivalent to `[self.base.predecessor()]`. | |
public var base: Self.Base { get } | |
public init(_ base: Self.Base) | |
} | |
/// A Collection that presents the elements of its `Base` collection | |
/// in reverse order. | |
/// | |
/// - Note: This type is the result of `x.reverse()` where `x` is a | |
/// collection having random access indices. | |
/// - See also: `ReverseCollection` | |
public struct ReverseRandomAccessCollection<Base : CollectionType where Base.Index : RandomAccessIndexType> : _ReverseCollectionType { | |
/// Creates an instance that presents the elements of `base` in | |
/// reverse order. | |
/// | |
/// - Complexity: O(1) | |
public init(_ base: Base) | |
/// A type that represents a valid position in the collection. | |
/// | |
/// Valid indices consist of the position of every element and a | |
/// "past the end" position that's not valid for use as a subscript. | |
public typealias Index = ReverseRandomAccessIndex<Base.Index> | |
/// A type that provides the *sequence*'s iteration interface and | |
/// encapsulates its iteration state. | |
public typealias Generator = IndexingGenerator<ReverseRandomAccessCollection<Base>> | |
} | |
/// A wrapper for a `RandomAccessIndexType` that reverses its | |
/// direction of traversal. | |
public struct ReverseRandomAccessIndex<Base : RandomAccessIndexType> : RandomAccessIndexType, ReverseIndexType { | |
public typealias Distance = Base.Distance | |
public init(_ base: Base) | |
/// The successor position in the underlying (un-reversed) | |
/// collection. | |
/// | |
/// If `self` is `advance(c.reverse.startIndex, n)`, then: | |
/// - `self.base` is `advance(c.endIndex, -n)`. | |
/// - if `n` != `c.count`, then `c.reverse[self]` is | |
/// equivalent to `[self.base.predecessor()]`. | |
public let base: Base | |
public func distanceTo(other: ReverseRandomAccessIndex<Base>) -> Base.Distance | |
public func advancedBy(n: Base.Distance) -> ReverseRandomAccessIndex<Base> | |
} | |
/// A type that can be iterated with a `for`...`in` loop. | |
/// | |
/// `SequenceType` makes no requirement on conforming types regarding | |
/// whether they will be destructively "consumed" by iteration. To | |
/// ensure non-destructive iteration, constrain your *sequence* to | |
/// `CollectionType`. | |
/// | |
/// As a consequence, it is not possible to run multiple `for` loops | |
/// on a sequence to "resume" iteration: | |
/// | |
/// for element in sequence { | |
/// if ... some condition { break } | |
/// } | |
/// | |
/// for element in sequence { | |
/// // Not guaranteed to continue from the next element. | |
/// } | |
/// | |
/// `SequenceType` makes no requirement about the behavior in that | |
/// case. It is not correct to assume that a sequence will either be | |
/// "consumable" and will resume iteration, or that a sequence is a | |
/// collection and will restart iteration from the first element. | |
/// A conforming sequence that is not a collection is allowed to | |
/// produce an arbitrary sequence of elements from the second generator. | |
public protocol SequenceType { | |
/// A type that provides the *sequence*'s iteration interface and | |
/// encapsulates its iteration state. | |
typealias Generator : GeneratorType | |
/// A type that represents a subsequence of some of the elements. | |
typealias SubSequence | |
/// Return a *generator* over the elements of this *sequence*. | |
/// | |
/// - Complexity: O(1). | |
@warn_unused_result | |
public func generate() -> Self.Generator | |
/// Return a value less than or equal to the number of elements in | |
/// `self`, **nondestructively**. | |
/// | |
/// - Complexity: O(N). | |
@warn_unused_result | |
public func underestimateCount() -> Int | |
/// Return an `Array` containing the results of mapping `transform` | |
/// over `self`. | |
/// | |
/// - Complexity: O(N). | |
@warn_unused_result | |
public func map<T>(@noescape transform: (Self.Generator.Element) throws -> T) rethrows -> [T] | |
/// Return an `Array` containing the elements of `self`, | |
/// in order, that satisfy the predicate `includeElement`. | |
@warn_unused_result | |
public func filter(@noescape includeElement: (Self.Generator.Element) throws -> Bool) rethrows -> [Self.Generator.Element] | |
/// Call `body` on each element in `self` in the same order as a | |
/// *for-in loop.* | |
/// | |
/// sequence.forEach { | |
/// // body code | |
/// } | |
/// | |
/// is similar to: | |
/// | |
/// for element in sequence { | |
/// // body code | |
/// } | |
/// | |
/// - Note: You cannot use the `break` or `continue` statement to exit the | |
/// current call of the `body` closure or skip subsequent calls. | |
/// - Note: Using the `return` statement in the `body` closure will only | |
/// exit from the current call to `body`, not any outer scope, and won't | |
/// skip subsequent calls. | |
/// | |
/// - Complexity: O(`self.count`) | |
public func forEach(@noescape body: (Self.Generator.Element) throws -> Void) rethrows | |
/// Returns a subsequence containing all but the first `n` elements. | |
/// | |
/// - Requires: `n >= 0` | |
/// - Complexity: O(`n`) | |
@warn_unused_result | |
public func dropFirst(n: Int) -> Self.SubSequence | |
/// Returns a subsequence containing all but the last `n` elements. | |
/// | |
/// - Requires: `self` is a finite sequence. | |
/// - Requires: `n >= 0` | |
/// - Complexity: O(`self.count`) | |
@warn_unused_result | |
public func dropLast(n: Int) -> Self.SubSequence | |
/// Returns a subsequence, up to `maxLength` in length, containing the | |
/// initial elements. | |
/// | |
/// If `maxLength` exceeds `self.count`, the result contains all | |
/// the elements of `self`. | |
/// | |
/// - Requires: `maxLength >= 0` | |
@warn_unused_result | |
public func prefix(maxLength: Int) -> Self.SubSequence | |
/// Returns a slice, up to `maxLength` in length, containing the | |
/// final elements of `s`. | |
/// | |
/// If `maxLength` exceeds `s.count`, the result contains all | |
/// the elements of `s`. | |
/// | |
/// - Requires: `self` is a finite sequence. | |
/// - Requires: `maxLength >= 0` | |
@warn_unused_result | |
public func suffix(maxLength: Int) -> Self.SubSequence | |
/// Returns the maximal `SubSequence`s of `self`, in order, that | |
/// don't contain elements satisfying the predicate `isSeparator`. | |
/// | |
/// - Parameter maxSplit: The maximum number of `SubSequence`s to | |
/// return, minus 1. | |
/// If `maxSplit + 1` `SubSequence`s are returned, the last one is | |
/// a suffix of `self` containing the remaining elements. | |
/// The default value is `Int.max`. | |
/// | |
/// - Parameter allowEmptySubsequences: If `true`, an empty `SubSequence` | |
/// is produced in the result for each pair of consecutive elements | |
/// satisfying `isSeparator`. | |
/// The default value is `false`. | |
/// | |
/// - Requires: `maxSplit >= 0` | |
@warn_unused_result | |
public func split(maxSplit: Int, allowEmptySlices: Bool, @noescape isSeparator: (Self.Generator.Element) throws -> Bool) rethrows -> [Self.SubSequence] | |
} | |
extension SequenceType where Self.Generator.Element : Comparable { | |
/// Return an `Array` containing the sorted elements of `source`. | |
/// | |
/// The sorting algorithm is not stable (can change the relative order of | |
/// elements that compare equal). | |
/// | |
/// - Requires: The less-than operator (`func <`) defined in | |
/// the `Comparable` conformance is a | |
/// [strict weak ordering](http://en.wikipedia.org/wiki/Strict_weak_order#Strict_weak_orderings) | |
/// over the elements in `self`. | |
@warn_unused_result | |
public func sort() -> [Self.Generator.Element] | |
} | |
extension SequenceType { | |
/// Return an `Array` containing the sorted elements of `source` | |
/// according to `isOrderedBefore`. | |
/// | |
/// The sorting algorithm is not stable (can change the relative order of | |
/// elements for which `isOrderedBefore` does not establish an order). | |
/// | |
/// - Requires: `isOrderedBefore` is a | |
/// [strict weak ordering](http://en.wikipedia.org/wiki/Strict_weak_order#Strict_weak_orderings) | |
/// over the elements in `self`. | |
@warn_unused_result | |
public func sort(@noescape isOrderedBefore: (Self.Generator.Element, Self.Generator.Element) -> Bool) -> [Self.Generator.Element] | |
} | |
extension SequenceType where Generator.Element : SequenceType { | |
/// A concatenation of the elements of `self`. | |
@warn_unused_result | |
public func flatten() -> FlattenSequence<Self> | |
} | |
extension SequenceType where Generator.Element : SequenceType { | |
/// Returns a view, whose elements are the result of interposing a given | |
/// `separator` between the elements of the sequence `self`. | |
/// | |
/// For example, | |
/// `[[1, 2, 3], [4, 5, 6], [7, 8, 9]].joinWithSeparator([-1, -2])` | |
/// yields `[1, 2, 3, -1, -2, 4, 5, 6, -1, -2, 7, 8, 9]`. | |
@warn_unused_result | |
public func joinWithSeparator<Separator : SequenceType where Separator.Generator.Element == Generator.Element.Generator.Element>(separator: Separator) -> JoinSequence<Self> | |
} | |
extension SequenceType { | |
/// A sequence containing the same elements as a `Base` sequence, | |
/// but on which some operations such as `map` and `filter` are | |
/// implemented lazily. | |
/// | |
/// - See also: `LazySequenceType`, `LazySequence` | |
public var lazy: LazySequence<Self> { get } | |
} | |
extension SequenceType where Self.Generator == Self, Self : GeneratorType { | |
public func generate() -> Self | |
} | |
extension SequenceType { | |
/// Return an `Array` containing the results of mapping `transform` | |
/// over `self`. | |
/// | |
/// - Complexity: O(N). | |
@warn_unused_result | |
public func map<T>(@noescape transform: (Self.Generator.Element) throws -> T) rethrows -> [T] | |
/// Return an `Array` containing the elements of `self`, | |
/// in order, that satisfy the predicate `includeElement`. | |
@warn_unused_result | |
public func filter(@noescape includeElement: (Self.Generator.Element) throws -> Bool) rethrows -> [Self.Generator.Element] | |
/// Returns a subsequence containing all but the first `n` elements. | |
/// | |
/// - Requires: `n >= 0` | |
/// - Complexity: O(`n`) | |
@warn_unused_result | |
public func dropFirst(n: Int) -> AnySequence<Self.Generator.Element> | |
/// Returns a subsequence containing all but the last `n` elements. | |
/// | |
/// - Requires: `self` is a finite collection. | |
/// - Requires: `n >= 0` | |
/// - Complexity: O(`self.count`) | |
@warn_unused_result | |
public func dropLast(n: Int) -> AnySequence<Self.Generator.Element> | |
@warn_unused_result | |
public func prefix(maxLength: Int) -> AnySequence<Self.Generator.Element> | |
@warn_unused_result | |
public func suffix(maxLength: Int) -> AnySequence<Self.Generator.Element> | |
/// Returns the maximal `SubSequence`s of `self`, in order, that | |
/// don't contain elements satisfying the predicate `isSeparator`. | |
/// | |
/// - Parameter maxSplit: The maximum number of `SubSequence`s to | |
/// return, minus 1. | |
/// If `maxSplit + 1` `SubSequence`s are returned, the last one is | |
/// a suffix of `self` containing the remaining elements. | |
/// The default value is `Int.max`. | |
/// | |
/// - Parameter allowEmptySubsequences: If `true`, an empty `SubSequence` | |
/// is produced in the result for each pair of consecutive elements | |
/// satisfying `isSeparator`. | |
/// The default value is `false`. | |
/// | |
/// - Requires: `maxSplit >= 0` | |
@warn_unused_result | |
public func split(maxSplit: Int = default, allowEmptySlices: Bool = default, @noescape isSeparator: (Self.Generator.Element) throws -> Bool) rethrows -> [AnySequence<Self.Generator.Element>] | |
/// Return a value less than or equal to the number of elements in | |
/// `self`, **nondestructively**. | |
/// | |
/// - Complexity: O(N). | |
@warn_unused_result | |
public func underestimateCount() -> Int | |
} | |
extension SequenceType { | |
/// Call `body` on each element in `self` in the same order as a | |
/// *for-in loop.* | |
/// | |
/// sequence.forEach { | |
/// // body code | |
/// } | |
/// | |
/// is similar to: | |
/// | |
/// for element in sequence { | |
/// // body code | |
/// } | |
/// | |
/// - Note: You cannot use the `break` or `continue` statement to exit the | |
/// current call of the `body` closure or skip subsequent calls. | |
/// - Note: Using the `return` statement in the `body` closure will only | |
/// exit from the current call to `body`, not any outer scope, and won't | |
/// skip subsequent calls. | |
/// | |
/// - Complexity: O(`self.count`) | |
public func forEach(@noescape body: (Self.Generator.Element) throws -> Void) rethrows | |
} | |
extension SequenceType where Generator.Element : Equatable { | |
/// Returns the maximal `SubSequence`s of `self`, in order, around elements | |
/// equatable to `separator`. | |
/// | |
/// - Parameter maxSplit: The maximum number of `SubSequence`s to | |
/// return, minus 1. | |
/// If `maxSplit + 1` `SubSequence`s are returned, the last one is | |
/// a suffix of `self` containing the remaining elements. | |
/// The default value is `Int.max`. | |
/// | |
/// - Parameter allowEmptySubsequences: If `true`, an empty `SubSequence` | |
/// is produced in the result for each pair of consecutive elements | |
/// satisfying `isSeparator`. | |
/// The default value is `false`. | |
/// | |
/// - Requires: `maxSplit >= 0` | |
@warn_unused_result | |
public func split(separator: Self.Generator.Element, maxSplit: Int = default, allowEmptySlices: Bool = default) -> [AnySequence<Self.Generator.Element>] | |
} | |
extension SequenceType { | |
/// Returns a subsequence containing all but the first element. | |
/// | |
/// - Requires: `n >= 0` | |
/// - Complexity: O(`n`) | |
@warn_unused_result | |
public func dropFirst() -> Self.SubSequence | |
/// Returns a subsequence containing all but the last element. | |
/// | |
/// - Requires: `self` is a finite sequence. | |
/// - Requires: `n >= 0` | |
/// - Complexity: O(`self.count`) | |
@warn_unused_result | |
public func dropLast() -> Self.SubSequence | |
} | |
extension SequenceType where Self : _SequenceWrapperType, Self.Generator == Self.Base.Generator { | |
/// Return a *generator* over the elements of this *sequence*. | |
/// | |
/// - Complexity: O(1). | |
public func generate() -> Self.Generator | |
public func underestimateCount() -> Int | |
@warn_unused_result | |
public func map<T>(@noescape transform: (Self.Generator.Element) throws -> T) rethrows -> [T] | |
@warn_unused_result | |
public func filter(@noescape includeElement: (Self.Generator.Element) throws -> Bool) rethrows -> [Self.Generator.Element] | |
} | |
extension SequenceType { | |
/// Return a lazy `SequenceType` containing pairs (*n*, *x*), where | |
/// *n*s are consecutive `Int`s starting at zero, and *x*s are | |
/// the elements of `base`: | |
/// | |
/// > for (n, c) in "Swift".characters.enumerate() { | |
/// print("\(n): '\(c)'") | |
/// } | |
/// 0: 'S' | |
/// 1: 'w' | |
/// 2: 'i' | |
/// 3: 'f' | |
/// 4: 't' | |
@warn_unused_result | |
public func enumerate() -> EnumerateSequence<Self> | |
} | |
extension SequenceType { | |
/// Returns the minimum element in `self` or `nil` if the sequence is empty. | |
/// | |
/// - Complexity: O(`elements.count`). | |
/// | |
/// | |
/// - Requires: `isOrderedBefore` is a | |
/// [strict weak ordering](http://en.wikipedia.org/wiki/Strict_weak_order#Strict_weak_orderings). | |
/// over `self`. | |
@warn_unused_result | |
public func minElement(@noescape isOrderedBefore: (Self.Generator.Element, Self.Generator.Element) throws -> Bool) rethrows -> Self.Generator.Element? | |
/// Returns the maximum element in `self` or `nil` if the sequence is empty. | |
/// | |
/// - Complexity: O(`elements.count`). | |
/// | |
/// - Requires: `isOrderedBefore` is a | |
/// [strict weak ordering](http://en.wikipedia.org/wiki/Strict_weak_order#Strict_weak_orderings). | |
/// over `self`. | |
@warn_unused_result | |
public func maxElement(@noescape isOrderedBefore: (Self.Generator.Element, Self.Generator.Element) throws -> Bool) rethrows -> Self.Generator.Element? | |
} | |
extension SequenceType where Generator.Element : Comparable { | |
/// Returns the minimum element in `self` or `nil` if the sequence is empty. | |
/// | |
/// - Complexity: O(`elements.count`). | |
/// | |
/// | |
@warn_unused_result | |
public func minElement() -> Self.Generator.Element? | |
/// Returns the maximum element in `self` or `nil` if the sequence is empty. | |
/// | |
/// - Complexity: O(`elements.count`). | |
/// | |
@warn_unused_result | |
public func maxElement() -> Self.Generator.Element? | |
} | |
extension SequenceType { | |
/// Return true iff `self` begins with elements equivalent to those of | |
/// `other`, using `isEquivalent` as the equivalence test. Return true if | |
/// `other` is empty. | |
/// | |
/// - Requires: `isEquivalent` is an | |
/// [equivalence relation](http://en.wikipedia.org/wiki/Equivalence_relation). | |
@warn_unused_result | |
public func startsWith<OtherSequence : SequenceType where OtherSequence.Generator.Element == Generator.Element>(other: OtherSequence, @noescape isEquivalent: (Self.Generator.Element, Self.Generator.Element) throws -> Bool) rethrows -> Bool | |
} | |
extension SequenceType where Generator.Element : Equatable { | |
/// Return true iff the the initial elements of `self` are equal to `prefix`. | |
/// Return true if `other` is empty. | |
@warn_unused_result | |
public func startsWith<OtherSequence : SequenceType where OtherSequence.Generator.Element == Generator.Element>(other: OtherSequence) -> Bool | |
} | |
extension SequenceType { | |
/// Return true iff `self` and `other` contain equivalent elements, using | |
/// `isEquivalent` as the equivalence test. | |
/// | |
/// - Requires: `isEquivalent` is an | |
/// [equivalence relation](http://en.wikipedia.org/wiki/Equivalence_relation). | |
@warn_unused_result | |
public func elementsEqual<OtherSequence : SequenceType where OtherSequence.Generator.Element == Generator.Element>(other: OtherSequence, @noescape isEquivalent: (Self.Generator.Element, Self.Generator.Element) throws -> Bool) rethrows -> Bool | |
} | |
extension SequenceType where Generator.Element : Equatable { | |
/// Return `true` iff `self` and `other` contain the same elements in the | |
/// same order. | |
@warn_unused_result | |
public func elementsEqual<OtherSequence : SequenceType where OtherSequence.Generator.Element == Generator.Element>(other: OtherSequence) -> Bool | |
} | |
extension SequenceType { | |
/// Return true iff `self` precedes `other` in a lexicographical ("dictionary") | |
/// ordering, using `isOrderedBefore` as the comparison between elements. | |
/// | |
/// - Note: This method implements the mathematical notion of lexicographical | |
/// ordering, which has no connection to Unicode. If you are sorting strings | |
/// to present to the end-user, you should use `String` APIs that perform | |
/// localized comparison. | |
/// | |
/// - Requires: `isOrderedBefore` is a | |
/// [strict weak ordering](http://en.wikipedia.org/wiki/Strict_weak_order#Strict_weak_orderings) | |
/// over the elements of `self` and `other`. | |
@warn_unused_result | |
public func lexicographicalCompare<OtherSequence : SequenceType where OtherSequence.Generator.Element == Generator.Element>(other: OtherSequence, @noescape isOrderedBefore: (Self.Generator.Element, Self.Generator.Element) throws -> Bool) rethrows -> Bool | |
} | |
extension SequenceType where Generator.Element : Comparable { | |
/// Return true iff `self` precedes `other` in a lexicographical ("dictionary") | |
/// ordering, using "<" as the comparison between elements. | |
/// | |
/// - Note: This method implements the mathematical notion of lexicographical | |
/// ordering, which has no connection to Unicode. If you are sorting strings | |
/// to present to the end-user, you should use `String` APIs that perform | |
/// localized comparison. | |
@warn_unused_result | |
public func lexicographicalCompare<OtherSequence : SequenceType where OtherSequence.Generator.Element == Generator.Element>(other: OtherSequence) -> Bool | |
} | |
extension SequenceType where Generator.Element : Equatable { | |
/// Return `true` iff `element` is in `self`. | |
@warn_unused_result | |
public func contains(element: Self.Generator.Element) -> Bool | |
} | |
extension SequenceType { | |
/// Return `true` iff an element in `self` satisfies `predicate`. | |
@warn_unused_result | |
public func contains(@noescape predicate: (Self.Generator.Element) throws -> Bool) rethrows -> Bool | |
} | |
extension SequenceType { | |
/// Return the result of repeatedly calling `combine` with an | |
/// accumulated value initialized to `initial` and each element of | |
/// `self`, in turn, i.e. return | |
/// `combine(combine(...combine(combine(initial, self[0]), | |
/// self[1]),...self[count-2]), self[count-1])`. | |
@warn_unused_result | |
public func reduce<T>(initial: T, @noescape combine: (T, Self.Generator.Element) throws -> T) rethrows -> T | |
} | |
extension SequenceType { | |
/// Return an `Array` containing the elements of `self` in reverse | |
/// order. | |
/// | |
/// Complexity: O(N), where N is the length of `self`. | |
@warn_unused_result | |
public func reverse() -> [Self.Generator.Element] | |
} | |
extension SequenceType { | |
/// Return an `Array` containing the concatenated results of mapping | |
/// `transform` over `self`. | |
/// | |
/// s.flatMap(transform) | |
/// | |
/// is equivalent to | |
/// | |
/// Array(s.map(transform).flatten()) | |
/// | |
/// - Complexity: O(*M* + *N*), where *M* is the length of `self` | |
/// and *N* is the length of the result. | |
@warn_unused_result | |
public func flatMap<S : SequenceType>(transform: (Self.Generator.Element) throws -> S) rethrows -> [S.Generator.Element] | |
} | |
extension SequenceType { | |
/// Return an `Array` containing the non-nil results of mapping | |
/// `transform` over `self`. | |
/// | |
/// - Complexity: O(*M* + *N*), where *M* is the length of `self` | |
/// and *N* is the length of the result. | |
@warn_unused_result | |
public func flatMap<T>(@noescape transform: (Self.Generator.Element) throws -> T?) rethrows -> [T] | |
} | |
extension SequenceType where Generator.Element == String { | |
/// Interpose the `separator` between elements of `self`, then concatenate | |
/// the result. For example: | |
/// | |
/// ["foo", "bar", "baz"].joinWithSeparator("-|-") // "foo-|-bar-|-baz" | |
@warn_unused_result | |
public func joinWithSeparator(separator: String) -> String | |
} | |
/// A collection of unique `Element` instances with no defined ordering. | |
public struct Set<Element : Hashable> : Hashable, CollectionType, ArrayLiteralConvertible { | |
public typealias Index = SetIndex<Element> | |
/// Create an empty set with at least the given number of | |
/// elements worth of storage. The actual capacity will be the | |
/// smallest power of 2 that's >= `minimumCapacity`. | |
public init(minimumCapacity: Int) | |
/// The position of the first element in a non-empty set. | |
/// | |
/// This is identical to `endIndex` in an empty set. | |
/// | |
/// - Complexity: Amortized O(1) if `self` does not wrap a bridged | |
/// `NSSet`, O(N) otherwise. | |
public var startIndex: SetIndex<Element> { get } | |
/// The collection's "past the end" position. | |
/// | |
/// `endIndex` is not a valid argument to `subscript`, and is always | |
/// reachable from `startIndex` by zero or more applications of | |
/// `successor()`. | |
/// | |
/// - Complexity: Amortized O(1) if `self` does not wrap a bridged | |
/// `NSSet`, O(N) otherwise. | |
public var endIndex: SetIndex<Element> { get } | |
/// Returns `true` if the set contains a member. | |
@warn_unused_result | |
public func contains(member: Element) -> Bool | |
/// Returns the `Index` of a given member, or `nil` if the member is not | |
/// present in the set. | |
@warn_unused_result | |
public func indexOf(member: Element) -> SetIndex<Element>? | |
/// Insert a member into the set. | |
public mutating func insert(member: Element) | |
/// Remove the member from the set and return it if it was present. | |
public mutating func remove(member: Element) -> Element? | |
/// Remove the member referenced by the given index. | |
public mutating func removeAtIndex(index: SetIndex<Element>) -> Element | |
/// Erase all the elements. If `keepCapacity` is `true`, `capacity` | |
/// will not decrease. | |
public mutating func removeAll(keepCapacity keepCapacity: Bool = default) | |
/// Remove a member from the set and return it. | |
/// | |
/// - Requires: `count > 0`. | |
public mutating func removeFirst() -> Element | |
/// The number of members in the set. | |
/// | |
/// - Complexity: O(1). | |
public var count: Int { get } | |
public subscript (position: SetIndex<Element>) -> Element { get } | |
/// Return a *generator* over the members. | |
/// | |
/// - Complexity: O(1). | |
public func generate() -> SetGenerator<Element> | |
public init(arrayLiteral elements: Element...) | |
/// Create an empty `Set`. | |
public init() | |
/// Create a `Set` from a finite sequence of items. | |
public init<S : SequenceType where S.Generator.Element == Element>(_ sequence: S) | |
/// Returns true if the set is a subset of a finite sequence as a `Set`. | |
@warn_unused_result | |
public func isSubsetOf<S : SequenceType where S.Generator.Element == Element>(sequence: S) -> Bool | |
/// Returns true if the set is a subset of a finite sequence as a `Set` | |
/// but not equal. | |
@warn_unused_result | |
public func isStrictSubsetOf<S : SequenceType where S.Generator.Element == Element>(sequence: S) -> Bool | |
/// Returns true if the set is a superset of a finite sequence as a `Set`. | |
@warn_unused_result | |
public func isSupersetOf<S : SequenceType where S.Generator.Element == Element>(sequence: S) -> Bool | |
/// Returns true if the set is a superset of a finite sequence as a `Set` | |
/// but not equal. | |
@warn_unused_result | |
public func isStrictSupersetOf<S : SequenceType where S.Generator.Element == Element>(sequence: S) -> Bool | |
/// Returns true if no members in the set are in a finite sequence as a `Set`. | |
@warn_unused_result | |
public func isDisjointWith<S : SequenceType where S.Generator.Element == Element>(sequence: S) -> Bool | |
/// Return a new `Set` with items in both this set and a finite sequence. | |
@warn_unused_result | |
public func union<S : SequenceType where S.Generator.Element == Element>(sequence: S) -> Set<Element> | |
/// Insert elements of a finite sequence into this `Set`. | |
public mutating func unionInPlace<S : SequenceType where S.Generator.Element == Element>(sequence: S) | |
/// Return a new set with elements in this set that do not occur | |
/// in a finite sequence. | |
@warn_unused_result | |
public func subtract<S : SequenceType where S.Generator.Element == Element>(sequence: S) -> Set<Element> | |
/// Remove all members in the set that occur in a finite sequence. | |
public mutating func subtractInPlace<S : SequenceType where S.Generator.Element == Element>(sequence: S) | |
/// Return a new set with elements common to this set and a finite sequence. | |
@warn_unused_result | |
public func intersect<S : SequenceType where S.Generator.Element == Element>(sequence: S) -> Set<Element> | |
/// Remove any members of this set that aren't also in a finite sequence. | |
public mutating func intersectInPlace<S : SequenceType where S.Generator.Element == Element>(sequence: S) | |
/// Return a new set with elements that are either in the set or a finite | |
/// sequence but do not occur in both. | |
@warn_unused_result | |
public func exclusiveOr<S : SequenceType where S.Generator.Element == Element>(sequence: S) -> Set<Element> | |
/// For each element of a finite sequence, remove it from the set if it is a | |
/// common element, otherwise add it to the set. Repeated elements of the | |
/// sequence will be ignored. | |
public mutating func exclusiveOrInPlace<S : SequenceType where S.Generator.Element == Element>(sequence: S) | |
public var hashValue: Int { get } | |
/// `true` if the set is empty. | |
public var isEmpty: Bool { get } | |
/// The first element obtained when iterating, or `nil` if `self` is | |
/// empty. Equivalent to `self.generate().next()`. | |
public var first: Element? { get } | |
} | |
extension Set : CustomStringConvertible, CustomDebugStringConvertible { | |
/// A textual representation of `self`. | |
public var description: String { get } | |
/// A textual representation of `self`, suitable for debugging. | |
public var debugDescription: String { get } | |
} | |
extension Set : _Reflectable { | |
} | |
extension Set { | |
/// If `!self.isEmpty`, return the first key-value pair in the sequence of | |
/// elements, otherwise return `nil`. | |
/// | |
/// - Complexity: Amortized O(1) | |
public mutating func popFirst() -> Element? | |
} | |
/// A generalized set whose distinct elements are not necessarily | |
/// disjoint. | |
/// | |
/// In a model of `SetAlgebraType`, some elements may subsume other | |
/// elements, where | |
/// | |
/// > `a` **subsumes** `b` iff `([a] as Self).isSupersetOf([b])` | |
/// | |
/// In many models of `SetAlgebraType` such as `Set<T>`, `a` | |
/// *subsumes* `b` if and only if `a == b`, but that is not always the | |
/// case. For example, option sets typically do not satisfy that | |
/// property. | |
/// | |
/// Two elements are **disjoint** when neither one *subsumes* the other. | |
/// | |
/// - SeeAlso: `OptionSetType`. | |
/// | |
/// - Axioms, where `S` conforms to `SetAlgebraType`, `x` and `y` are | |
/// of type `S`, and `e` is of type `S.Element`: | |
/// | |
/// - `S() == []` | |
/// - `x.intersect(x) == x` | |
/// - `x.intersect([]) == []` | |
/// - `x.union(x) == x` | |
/// - `x.union([]) == x` | |
/// - `x.contains(e)` implies `x.union(y).contains(e)` | |
/// - `x.union(y).contains(e)` implies `x.contains(e) || y.contains(e)` | |
/// - `x.contains(e) && y.contains(e)` iff `x.intersect(y).contains(e)` | |
/// - `x.isSubsetOf(y)` iff `y.isSupersetOf(x)` | |
/// - `x.isStrictSupersetOf(y)` iff `x.isSupersetOf(y) && x != y` | |
/// - `x.isStrictSubsetOf(y)` iff `x.isSubsetOf(y) && x != y` | |
public protocol SetAlgebraType : Equatable, ArrayLiteralConvertible { | |
/// A type for which `Self` provides a containment test. | |
typealias Element | |
/// Creates an empty set. | |
/// | |
/// - Equivalent to `[] as Self` | |
public init() | |
/// Returns `true` if `self` contains `member`. | |
/// | |
/// - Equivalent to `self.intersect([member]) == [member]` | |
@warn_unused_result | |
public func contains(member: Self.Element) -> Bool | |
/// Returns the set of elements contained in `self`, in `other`, or in | |
/// both `self` and `other`. | |
@warn_unused_result | |
public func union(other: Self) -> Self | |
/// Returns the set of elements contained in both `self` and `other`. | |
@warn_unused_result | |
public func intersect(other: Self) -> Self | |
/// Returns the set of elements contained in `self` or in `other`, | |
/// but not in both `self` and `other`. | |
@warn_unused_result | |
public func exclusiveOr(other: Self) -> Self | |
/// If `member` is not already contained in `self`, inserts it. | |
/// | |
/// - Equivalent to `self.unionInPlace([member])` | |
/// - Postcondition: `self.contains(member)` | |
public mutating func insert(member: Self.Element) | |
/// If `member` is contained in `self`, removes and returns it. | |
/// Otherwise, removes all elements subsumed by `member` and returns | |
/// `nil`. | |
/// | |
/// - Postcondition: `self.intersect([member]).isEmpty` | |
public mutating func remove(member: Self.Element) -> Self.Element? | |
/// Insert all elements of `other` into `self`. | |
/// | |
/// - Equivalent to replacing `self` with `self.union(other)`. | |
/// - Postcondition: `self.isSupersetOf(other)` | |
public mutating func unionInPlace(other: Self) | |
/// Removes all elements of `self` that are not also present in | |
/// `other`. | |
/// | |
/// - Equivalent to replacing `self` with `self.intersect(other)` | |
/// - Postcondition: `self.isSubsetOf(other)` | |
public mutating func intersectInPlace(other: Self) | |
/// Replaces `self` with a set containing all elements contained in | |
/// either `self` or `other`, but not both. | |
/// | |
/// - Equivalent to replacing `self` with `self.exclusiveOr(other)` | |
public mutating func exclusiveOrInPlace(other: Self) | |
/// Return true iff `self.intersect(other).isEmpty`. | |
@warn_unused_result | |
public func subtract(other: Self) -> Self | |
/// Return true iff every element of `self` is contained in `other`. | |
@warn_unused_result | |
public func isSubsetOf(other: Self) -> Bool | |
/// Return true iff `self.intersect(other).isEmpty`. | |
@warn_unused_result | |
public func isDisjointWith(other: Self) -> Bool | |
/// Return true iff every element of `other` is contained in `self`. | |
@warn_unused_result | |
public func isSupersetOf(other: Self) -> Bool | |
/// Return true iff `self.contains(e)` is `false` for all `e`. | |
public var isEmpty: Bool { get } | |
/// Creates the set containing all elements of `sequence`. | |
public init<S : SequenceType where S.Generator.Element == Element>(_ sequence: S) | |
/// Removes all elements of `other` from `self`. | |
/// | |
/// - Equivalent to replacing `self` with `self.subtract(other)`. | |
public mutating func subtractInPlace(other: Self) | |
/// Returns `true` iff `a` subsumes `b`. | |
/// | |
/// - Equivalent to `([a] as Self).isSupersetOf([b])` | |
@warn_unused_result | |
public static func element(a: Self.Element, subsumes b: Self.Element) -> Bool | |
/// Returns `true` iff `a` is disjoint with `b`. | |
/// | |
/// Two elements are disjoint when neither one subsumes the other. | |
/// | |
/// - SeeAlso: `Self.element(_, subsumes:_)` | |
@warn_unused_result | |
public static func element(a: Self.Element, isDisjointWith b: Self.Element) -> Bool | |
} | |
extension SetAlgebraType { | |
/// Creates the set containing all elements of `sequence`. | |
public convenience init<S : SequenceType where S.Generator.Element == Element>(_ sequence: S) | |
/// Creates a set containing all elements of the given `arrayLiteral`. | |
/// | |
/// This initializer allows an array literal containing | |
/// `Self.Element` to represent an instance of the set, wherever it | |
/// is implied by the type context. | |
public convenience init(arrayLiteral: Self.Element...) | |
/// Removes all elements of `other` from `self`. | |
/// | |
/// - Equivalent to replacing `self` with `self.subtract(other)`. | |
public mutating func subtractInPlace(other: Self) | |
/// Returns true iff every element of `self` is contained in `other`. | |
@warn_unused_result | |
public func isSubsetOf(other: Self) -> Bool | |
/// Returns true iff every element of `other` is contained in `self`. | |
@warn_unused_result | |
public func isSupersetOf(other: Self) -> Bool | |
/// Returns true iff `self.intersect(other).isEmpty`. | |
@warn_unused_result | |
public func isDisjointWith(other: Self) -> Bool | |
/// Returns true iff `self.intersect(other).isEmpty`. | |
@warn_unused_result | |
public func subtract(other: Self) -> Self | |
/// Returns true iff `self.contains(e)` is `false` for all `e`. | |
public var isEmpty: Bool { get } | |
/// Returns true iff every element of `other` is contained in `self` | |
/// and `self` contains an element that is not contained in `other`. | |
@warn_unused_result | |
public func isStrictSupersetOf(other: Self) -> Bool | |
/// Return true iff every element of `self` is contained in `other` | |
/// and `other` contains an element that is not contained in `self`. | |
@warn_unused_result | |
public func isStrictSubsetOf(other: Self) -> Bool | |
/// Returns `true` iff `a` subsumes `b`. | |
/// | |
/// - Equivalent to `([a] as Self).isSupersetOf([b])` | |
@warn_unused_result | |
public static func element(a: Self.Element, subsumes b: Self.Element) -> Bool | |
/// Returns `true` iff `a` is disjoint with `b`. | |
/// | |
/// Two elements are disjoint when neither one subsumes the other. | |
/// | |
/// - SeeAlso: `Self.element(_, subsumes:_)` | |
@warn_unused_result | |
public static func element(a: Self.Element, isDisjointWith b: Self.Element) -> Bool | |
} | |
/// A generator over the members of a `Set<Element>`. | |
public struct SetGenerator<Element : Hashable> : GeneratorType { | |
/// Advance to the next element and return it, or `nil` if no next | |
/// element exists. | |
/// | |
/// - Requires: No preceding call to `self.next()` has returned `nil`. | |
public mutating func next() -> Element? | |
} | |
/// Used to access the members in an instance of `Set<Element>`. | |
public struct SetIndex<Element : Hashable> : ForwardIndexType, Comparable { | |
/// Returns the next consecutive value after `self`. | |
/// | |
/// - Requires: The next value is representable. | |
public func successor() -> SetIndex<Element> | |
} | |
/// A set of common requirements for Swift's signed integer types. | |
public protocol SignedIntegerType : _SignedIntegerType, IntegerType { | |
/// Represent this number using Swift's widest native signed integer | |
/// type. | |
public func toIntMax() -> IntMax | |
/// Convert from Swift's widest signed integer type, trapping on | |
/// overflow. | |
public init(_: IntMax) | |
} | |
/// Instances of conforming types can be subtracted, arithmetically | |
/// negated, and initialized from `0`. | |
/// | |
/// Axioms: | |
/// | |
/// - `x - 0 == x` | |
/// - `-x == 0 - x` | |
/// - `-(-x) == x` | |
public protocol SignedNumberType : Comparable, IntegerLiteralConvertible { | |
/// Return the result of negating `x`. | |
@warn_unused_result | |
prefix public func -(x: Self) -> Self | |
/// Return the difference between `lhs` and `rhs`. | |
@warn_unused_result | |
public func -(lhs: Self, rhs: Self) -> Self | |
} | |
/// A view into a sub-sequence of elements of another collection. | |
/// | |
/// A `Slice` instance stores the base collection, the start and end indices of | |
/// the view. It does not copy the elements from the collection into separate | |
/// storage. Thus, creating a slice has `O(1)` complexity. | |
/// | |
/// A `Slice` instance inherits the value or reference semantics of the base | |
/// collection. That is, if a `Slice` instance is wrapped around a mutable | |
/// colection that has value semantics (for example, `Array`), mutating the | |
/// original collection would not affect the copy stored inside of the slice. | |
/// | |
/// An element of a slice is located under the same index in the slice and in | |
/// the base collection, as long as neither the collection or the slice were | |
/// mutated. Thus, indices of a slice can be used interchangibly with indices | |
/// of the base collection. | |
/// | |
/// - Warning: Long-term storage of `Slice` instances is discouraged. | |
/// | |
/// Because a `Slice` presents a *view* onto the storage of some larger | |
/// collection even after the original collection goes out of scope, storing | |
/// the slice may prolong the lifetime of elements that are no longer | |
/// accessible, which can manifest as apparent memory and object leakage. To | |
/// prevent this effect, use slices only for transient computation. | |
public struct Slice<Base : Indexable> : CollectionType { | |
public typealias Index = Base.Index | |
public let startIndex: Base.Index | |
public let endIndex: Base.Index | |
public subscript (index: Base.Index) -> Base._Element { get } | |
public subscript (bounds: Range<Base.Index>) -> Slice<Base> { get } | |
/// Create a view into collection `base` that allows access within `bounds`. | |
/// | |
/// - Complexity: O(1). | |
public init(base: Base, bounds: Range<Base.Index>) | |
} | |
/// An simple string designed to represent text that is "knowable at | |
/// compile-time". | |
/// | |
/// Logically speaking, each instance looks something like this: | |
/// | |
/// enum StaticString { | |
/// case ASCII(start: UnsafePointer<UInt8>, length: Int) | |
/// case UTF8(start: UnsafePointer<UInt8>, length: Int) | |
/// case Scalar(UnicodeScalar) | |
/// } | |
public struct StaticString : UnicodeScalarLiteralConvertible, ExtendedGraphemeClusterLiteralConvertible, StringLiteralConvertible, CustomStringConvertible, CustomDebugStringConvertible, _Reflectable { | |
/// A pointer to the beginning of UTF-8 code units. | |
/// | |
/// - Requires: `self` stores a pointer to either ASCII or UTF-8 code | |
/// units. | |
public var utf8Start: UnsafePointer<UInt8> { get } | |
/// The stored Unicode scalar value. | |
/// | |
/// - Requires: `self` stores a single Unicode scalar value. | |
public var unicodeScalar: UnicodeScalar { get } | |
/// If `self` stores a pointer to ASCII or UTF-8 code units, the | |
/// length in bytes of that data. | |
/// | |
/// If `self` stores a single Unicode scalar value, the value of | |
/// `byteSize` is unspecified. | |
public var byteSize: Int { get } | |
/// `true` iff `self` stores a pointer to ASCII or UTF-8 code units. | |
public var hasPointerRepresentation: Bool { get } | |
/// `true` if `self` stores a pointer to ASCII code units. | |
/// | |
/// If `self` stores a single Unicode scalar value, the value of | |
/// `isASCII` is unspecified. | |
public var isASCII: Bool { get } | |
/// Invoke `body` with a buffer containing the UTF-8 code units of | |
/// `self`. | |
/// | |
/// This method works regardless of what `self` stores. | |
public func withUTF8Buffer<R>(@noescape body: (UnsafeBufferPointer<UInt8>) -> R) -> R | |
/// Return a `String` representing the same sequence of Unicode | |
/// scalar values as `self` does. | |
public var stringValue: String { get } | |
/// Create an empty instance. | |
public init() | |
public init(_builtinUnicodeScalarLiteral value: Builtin.Int32) | |
/// Create an instance initialized to `value`. | |
public init(unicodeScalarLiteral value: StaticString) | |
public init(_builtinExtendedGraphemeClusterLiteral start: Builtin.RawPointer, byteSize: Builtin.Word, isASCII: Builtin.Int1) | |
/// Create an instance initialized to `value`. | |
public init(extendedGraphemeClusterLiteral value: StaticString) | |
public init(_builtinStringLiteral start: Builtin.RawPointer, byteSize: Builtin.Word, isASCII: Builtin.Int1) | |
/// Create an instance initialized to `value`. | |
public init(stringLiteral value: StaticString) | |
/// A textual representation of `self`. | |
public var description: String { get } | |
/// A textual representation of `self`, suitable for debugging. | |
public var debugDescription: String { get } | |
} | |
/// A source of text streaming operations. `Streamable` instances can | |
/// be written to any *output stream*. | |
/// | |
/// For example: `String`, `Character`, `UnicodeScalar`. | |
public protocol Streamable { | |
/// Write a textual representation of `self` into `target`. | |
public func writeTo<Target : OutputStreamType>(inout target: Target) | |
} | |
/// A `SequenceType` of values formed by striding over a closed interval. | |
public struct StrideThrough<Element : Strideable> : SequenceType { | |
/// Return a *generator* over the elements of this *sequence*. | |
/// | |
/// - Complexity: O(1). | |
public func generate() -> StrideThroughGenerator<Element> | |
} | |
extension StrideThrough : _Reflectable { | |
} | |
/// A GeneratorType for `StrideThrough<Element>`. | |
public struct StrideThroughGenerator<Element : Strideable> : GeneratorType { | |
/// Advance to the next element and return it, or `nil` if no next | |
/// element exists. | |
public mutating func next() -> Element? | |
} | |
/// A `SequenceType` of values formed by striding over a half-open interval. | |
public struct StrideTo<Element : Strideable> : SequenceType { | |
/// Return a *generator* over the elements of this *sequence*. | |
/// | |
/// - Complexity: O(1). | |
public func generate() -> StrideToGenerator<Element> | |
} | |
extension StrideTo : _Reflectable { | |
} | |
/// A GeneratorType for `StrideTo<Element>`. | |
public struct StrideToGenerator<Element : Strideable> : GeneratorType { | |
/// Advance to the next element and return it, or `nil` if no next | |
/// element exists. | |
public mutating func next() -> Element? | |
} | |
/// Conforming types are notionally continuous, one-dimensional | |
/// values that can be offset and measured. | |
public protocol Strideable : Comparable { | |
/// A type that can represent the distance between two values of `Self`. | |
typealias Stride : SignedNumberType | |
/// Returns a stride `x` such that `self.advancedBy(x)` approximates | |
/// `other`. | |
/// | |
/// - Complexity: O(1). | |
/// | |
/// - SeeAlso: `RandomAccessIndexType`'s `distanceTo`, which provides a | |
/// stronger semantic guarantee. | |
@warn_unused_result | |
public func distanceTo(other: Self) -> Self.Stride | |
/// Returns a `Self` `x` such that `self.distanceTo(x)` approximates | |
/// `n`. | |
/// | |
/// - Complexity: O(1). | |
/// | |
/// - SeeAlso: `RandomAccessIndexType`'s `advancedBy`, which | |
/// provides a stronger semantic guarantee. | |
@warn_unused_result | |
public func advancedBy(n: Self.Stride) -> Self | |
} | |
extension Strideable { | |
/// Return the sequence of values (`self`, `self + stride`, `self + | |
/// stride + stride`, ... *last*) where *last* is the last value in | |
/// the progression that is less than `end`. | |
@warn_unused_result | |
public func stride(to end: Self, by stride: Self.Stride) -> StrideTo<Self> | |
} | |
extension Strideable { | |
/// Return the sequence of values (`start`, `start + stride`, `start + | |
/// stride + stride`, ... *last*) where *last* is the last value in | |
/// the progression less than or equal to `end`. | |
/// | |
/// - Note: There is no guarantee that `end` is an element of the sequence. | |
@warn_unused_result | |
public func stride(through end: Self, by stride: Self.Stride) -> StrideThrough<Self> | |
} | |
/// An arbitrary Unicode string value. | |
/// | |
/// Unicode-Correct | |
/// =============== | |
/// | |
/// Swift strings are designed to be Unicode-correct. In particular, | |
/// the APIs make it easy to write code that works correctly, and does | |
/// not surprise end-users, regardless of where you venture in the | |
/// Unicode character space. For example, the `==` operator checks | |
/// for [Unicode canonical | |
/// equivalence](http://www.unicode.org/glossary/#deterministic_comparison), | |
/// so two different representations of the same string will always | |
/// compare equal. | |
/// | |
/// Locale-Insensitive | |
/// ================== | |
/// | |
/// The fundamental operations on Swift strings are not sensitive to | |
/// locale settings. That's because, for example, the validity of a | |
/// `Dictionary<String, T>` in a running program depends on a given | |
/// string comparison having a single, stable result. Therefore, | |
/// Swift always uses the default, | |
/// un-[tailored](http://www.unicode.org/glossary/#tailorable) Unicode | |
/// algorithms for basic string operations. | |
/// | |
/// Importing `Foundation` endows swift strings with the full power of | |
/// the `NSString` API, which allows you to choose more complex | |
/// locale-sensitive operations explicitly. | |
/// | |
/// Value Semantics | |
/// =============== | |
/// | |
/// Each string variable, `let` binding, or stored property has an | |
/// independent value, so mutations to the string are not observable | |
/// through its copies: | |
/// | |
/// var a = "foo" | |
/// var b = a | |
/// b.appendContentsOf("bar") | |
/// print("a=\(a), b=\(b)") // a=foo, b=foobar | |
/// | |
/// Strings use Copy-on-Write so that their data is only copied | |
/// lazily, upon mutation, when more than one string instance is using | |
/// the same buffer. Therefore, the first in any sequence of mutating | |
/// operations may cost `O(N)` time and space, where `N` is the length | |
/// of the string's (unspecified) underlying representation. | |
/// | |
/// Views | |
/// ===== | |
/// | |
/// `String` is not itself a collection of anything. Instead, it has | |
/// properties that present the string's contents as meaningful | |
/// collections: | |
/// | |
/// - `characters`: a collection of `Character` ([extended grapheme | |
/// cluster](http://www.unicode.org/glossary/#extended_grapheme_cluster)) | |
/// elements, a unit of text that is meaningful to most humans. | |
/// | |
/// - `unicodeScalars`: a collection of `UnicodeScalar` ([Unicode | |
/// scalar | |
/// values](http://www.unicode.org/glossary/#unicode_scalar_value)) | |
/// the 21-bit codes that are the basic unit of Unicode. These | |
/// values are equivalent to UTF-32 code units. | |
/// | |
/// - `utf16`: a collection of `UTF16.CodeUnit`, the 16-bit | |
/// elements of the string's UTF-16 encoding. | |
/// | |
/// - `utf8`: a collection of `UTF8.CodeUnit`, the 8-bit | |
/// elements of the string's UTF-8 encoding. | |
/// | |
/// Growth and Capacity | |
/// =================== | |
/// | |
/// When a string's contiguous storage fills up, new storage must be | |
/// allocated and characters must be moved to the new storage. | |
/// `String` uses an exponential growth strategy that makes `append` a | |
/// constant time operation *when amortized over many invocations*. | |
/// | |
/// Objective-C Bridge | |
/// ================== | |
/// | |
/// `String` is bridged to Objective-C as `NSString`, and a `String` | |
/// that originated in Objective-C may store its characters in an | |
/// `NSString`. Since any arbitrary subclass of `NSSString` can | |
/// become a `String`, there are no guarantees about representation or | |
/// efficiency in this case. Since `NSString` is immutable, it is | |
/// just as though the storage was shared by some copy: the first in | |
/// any sequence of mutating operations causes elements to be copied | |
/// into unique, contiguous storage which may cost `O(N)` time and | |
/// space, where `N` is the length of the string representation (or | |
/// more, if the underlying `NSString` is has unusual performance | |
/// characteristics). | |
public struct String { | |
/// An empty `String`. | |
public init() | |
} | |
extension String { | |
public typealias Index = String.CharacterView.Index | |
/// The position of the first `Character` in `self.characters` if | |
/// `self` is non-empty; identical to `endIndex` otherwise. | |
public var startIndex: Index { get } | |
/// The "past the end" position in `self.characters`. | |
/// | |
/// `endIndex` is not a valid argument to `subscript`, and is always | |
/// reachable from `startIndex` by zero or more applications of | |
/// `successor()`. | |
public var endIndex: Index { get } | |
public subscript (i: Index) -> Character { get } | |
} | |
extension String { | |
/// A `String`'s collection of `Character`s ([extended grapheme | |
/// clusters](http://www.unicode.org/glossary/#extended_grapheme_cluster)) | |
/// elements. | |
public struct CharacterView { | |
/// Create a view of the `Character`s in `text`. | |
public init(_ text: String) | |
} | |
/// A collection of `Characters` representing the `String`'s | |
/// [extended grapheme | |
/// clusters](http://www.unicode.org/glossary/#extended_grapheme_cluster). | |
public var characters: String.CharacterView { get } | |
/// Efficiently mutate `self` by applying `body` to its `characters`. | |
/// | |
/// - Warning: Do not rely on anything about `self` (the `String` | |
/// that is the target of this method) during the execution of | |
/// `body`: it may not appear to have its correct value. Instead, | |
/// use only the `String.CharacterView` argument to `body`. | |
public mutating func withMutableCharacters<R>(body: (inout String.CharacterView) -> R) -> R | |
/// Construct the `String` corresponding to the given sequence of | |
/// Unicode scalars. | |
public init(_ characters: String.CharacterView) | |
} | |
extension String { | |
/// A collection of [Unicode scalar values](http://www.unicode.org/glossary/#unicode_scalar_value) that | |
/// encode a `String` . | |
public struct UnicodeScalarView : CollectionType, _Reflectable, CustomStringConvertible, CustomDebugStringConvertible { | |
/// A position in a `String.UnicodeScalarView`. | |
public struct Index : BidirectionalIndexType, Comparable { | |
/// Returns the next consecutive value after `self`. | |
/// | |
/// - Requires: The next value is representable. | |
@warn_unused_result | |
public func successor() -> String.UnicodeScalarView.Index | |
/// Returns the previous consecutive value before `self`. | |
/// | |
/// - Requires: The previous value is representable. | |
@warn_unused_result | |
public func predecessor() -> String.UnicodeScalarView.Index | |
} | |
/// The position of the first `UnicodeScalar` if the `String` is | |
/// non-empty; identical to `endIndex` otherwise. | |
public var startIndex: String.UnicodeScalarView.Index { get } | |
/// The "past the end" position. | |
/// | |
/// `endIndex` is not a valid argument to `subscript`, and is always | |
/// reachable from `startIndex` by zero or more applications of | |
/// `successor()`. | |
public var endIndex: String.UnicodeScalarView.Index { get } | |
public subscript (position: String.UnicodeScalarView.Index) -> UnicodeScalar { get } | |
public subscript (r: Range<String.UnicodeScalarView.Index>) -> String.UnicodeScalarView { get } | |
/// A type whose instances can produce the elements of this | |
/// sequence, in order. | |
public struct Generator : GeneratorType { | |
/// Advance to the next element and return it, or `nil` if no next | |
/// element exists. | |
/// | |
/// - Requires: No preceding call to `self.next()` has returned | |
/// `nil`. | |
public mutating func next() -> UnicodeScalar? | |
} | |
/// Return a *generator* over the `UnicodeScalar`s that comprise | |
/// this *sequence*. | |
/// | |
/// - Complexity: O(1). | |
@warn_unused_result | |
public func generate() -> String.UnicodeScalarView.Generator | |
public var description: String { get } | |
public var debugDescription: String { get } | |
} | |
/// Construct the `String` corresponding to the given sequence of | |
/// Unicode scalars. | |
public init(_ unicodeScalars: String.UnicodeScalarView) | |
/// The index type for subscripting a `String`'s `.unicodeScalars` | |
/// view. | |
public typealias UnicodeScalarIndex = String.UnicodeScalarView.Index | |
} | |
extension String { | |
/// A collection of UTF-16 code units that encodes a `String` value. | |
public struct UTF16View : CollectionType, _Reflectable, CustomStringConvertible, CustomDebugStringConvertible { | |
public struct Index { | |
} | |
/// The position of the first code unit if the `String` is | |
/// non-empty; identical to `endIndex` otherwise. | |
public var startIndex: String.UTF16View.Index { get } | |
/// The "past the end" position. | |
/// | |
/// `endIndex` is not a valid argument to `subscript`, and is always | |
/// reachable from `startIndex` by zero or more applications of | |
/// `successor()`. | |
public var endIndex: String.UTF16View.Index { get } | |
public subscript (i: String.UTF16View.Index) -> CodeUnit { get } | |
public subscript (subRange: Range<String.UTF16View.Index>) -> String.UTF16View { get } | |
public var description: String { get } | |
public var debugDescription: String { get } | |
} | |
/// A UTF-16 encoding of `self`. | |
public var utf16: String.UTF16View { get } | |
/// Construct the `String` corresponding to the given sequence of | |
/// UTF-16 code units. If `utf16` contains unpaired surrogates, the | |
/// result is `nil`. | |
public init?(_ utf16: String.UTF16View) | |
/// The index type for subscripting a `String`'s `utf16` view. | |
public typealias UTF16Index = String.UTF16View.Index | |
} | |
extension String { | |
/// A collection of UTF-8 code units that encodes a `String` value. | |
public struct UTF8View : CollectionType, _Reflectable, CustomStringConvertible, CustomDebugStringConvertible { | |
/// A position in a `String.UTF8View`. | |
public struct Index : ForwardIndexType { | |
/// Returns the next consecutive value after `self`. | |
/// | |
/// - Requires: The next value is representable. | |
@warn_unused_result | |
public func successor() -> String.UTF8View.Index | |
} | |
/// The position of the first code unit if the `String` is | |
/// non-empty; identical to `endIndex` otherwise. | |
public var startIndex: String.UTF8View.Index { get } | |
/// The "past the end" position. | |
/// | |
/// `endIndex` is not a valid argument to `subscript`, and is always | |
/// reachable from `startIndex` by zero or more applications of | |
/// `successor()`. | |
public var endIndex: String.UTF8View.Index { get } | |
public subscript (position: String.UTF8View.Index) -> CodeUnit { get } | |
public subscript (subRange: Range<String.UTF8View.Index>) -> String.UTF8View { get } | |
public var description: String { get } | |
public var debugDescription: String { get } | |
} | |
/// A UTF-8 encoding of `self`. | |
public var utf8: String.UTF8View { get } | |
/// A contiguously-stored nul-terminated UTF-8 representation of | |
/// `self`. | |
/// | |
/// To access the underlying memory, invoke | |
/// `withUnsafeBufferPointer` on the `ContiguousArray`. | |
public var nulTerminatedUTF8: ContiguousArray<CodeUnit> { get } | |
/// Construct the `String` corresponding to the given sequence of | |
/// UTF-8 code units. If `utf8` contains unpaired surrogates, the | |
/// result is `nil`. | |
public init?(_ utf8: String.UTF8View) | |
/// The index type for subscripting a `String`'s `.utf8` view. | |
public typealias UTF8Index = String.UTF8View.Index | |
} | |
extension String { | |
/// Creates a new `String` by copying the nul-terminated UTF-8 data | |
/// referenced by a `CString`. | |
/// | |
/// Returns `nil` if the `CString` is `NULL` or if it contains ill-formed | |
/// UTF-8 code unit sequences. | |
@warn_unused_result | |
public static func fromCString(cs: UnsafePointer<CChar>) -> String? | |
/// Creates a new `String` by copying the nul-terminated UTF-8 data | |
/// referenced by a `CString`. | |
/// | |
/// Returns `nil` if the `CString` is `NULL`. If `CString` contains | |
/// ill-formed UTF-8 code unit sequences, replaces them with replacement | |
/// characters (U+FFFD). | |
@warn_unused_result | |
public static func fromCStringRepairingIllFormedUTF8(cs: UnsafePointer<CChar>) -> (String?, hadError: Bool) | |
} | |
extension String { | |
/// Construct an instance containing just the given `Character`. | |
public init(_ c: Character) | |
} | |
extension String { | |
/// Invoke `f` on the contents of this string, represented as | |
/// a nul-terminated array of char, ensuring that the array's | |
/// lifetime extends through the execution of `f`. | |
public func withCString<Result>(@noescape f: UnsafePointer<Int8> throws -> Result) rethrows -> Result | |
} | |
extension String : _Reflectable { | |
} | |
extension String : OutputStreamType { | |
/// Append `other` to this stream. | |
public mutating func write(other: String) | |
} | |
extension String : Streamable { | |
/// Write a textual representation of `self` into `target`. | |
public func writeTo<Target : OutputStreamType>(inout target: Target) | |
} | |
extension String { | |
public init(_builtinUnicodeScalarLiteral value: Builtin.Int32) | |
} | |
extension String : UnicodeScalarLiteralConvertible { | |
/// Create an instance initialized to `value`. | |
public init(unicodeScalarLiteral value: String) | |
} | |
extension String { | |
public init(_builtinExtendedGraphemeClusterLiteral start: Builtin.RawPointer, byteSize: Builtin.Word, isASCII: Builtin.Int1) | |
} | |
extension String : ExtendedGraphemeClusterLiteralConvertible { | |
/// Create an instance initialized to `value`. | |
public init(extendedGraphemeClusterLiteral value: String) | |
} | |
extension String { | |
public init(_builtinUTF16StringLiteral start: Builtin.RawPointer, numberOfCodeUnits: Builtin.Word) | |
} | |
extension String { | |
public init(_builtinStringLiteral start: Builtin.RawPointer, byteSize: Builtin.Word, isASCII: Builtin.Int1) | |
} | |
extension String : StringLiteralConvertible { | |
/// Create an instance initialized to `value`. | |
public init(stringLiteral value: String) | |
} | |
extension String : CustomDebugStringConvertible { | |
/// A textual representation of `self`, suitable for debugging. | |
public var debugDescription: String { get } | |
} | |
extension String : Equatable { | |
} | |
extension String : Comparable { | |
} | |
extension String { | |
/// Append the elements of `other` to `self`. | |
public mutating func appendContentsOf(other: String) | |
/// Append `x` to `self`. | |
/// | |
/// - Complexity: Amortized O(1). | |
public mutating func append(x: UnicodeScalar) | |
} | |
extension String : Hashable { | |
/// The hash value. | |
/// | |
/// **Axiom:** `x == y` implies `x.hashValue == y.hashValue`. | |
/// | |
/// - Note: The hash value is not guaranteed to be stable across | |
/// different invocations of the same program. Do not persist the | |
/// hash value across program runs. | |
public var hashValue: Int { get } | |
} | |
extension String { | |
public subscript (subRange: Range<Index>) -> String { get } | |
} | |
extension String { | |
public mutating func reserveCapacity(n: Int) | |
public mutating func append(c: Character) | |
public mutating func appendContentsOf<S : SequenceType where S.Generator.Element == Character>(newElements: S) | |
/// Create an instance containing `characters`. | |
public init<S : SequenceType where S.Generator.Element == Character>(_ characters: S) | |
} | |
extension String { | |
/// Replace the given `subRange` of elements with `newElements`. | |
/// | |
/// Invalidates all indices with respect to `self`. | |
/// | |
/// - Complexity: O(`subRange.count`) if `subRange.endIndex | |
/// == self.endIndex` and `newElements.isEmpty`, O(N) otherwise. | |
public mutating func replaceRange<C : CollectionType where C.Generator.Element == Character>(subRange: Range<Index>, with newElements: C) | |
/// Replace the given `subRange` of elements with `newElements`. | |
/// | |
/// Invalidates all indices with respect to `self`. | |
/// | |
/// - Complexity: O(`subRange.count`) if `subRange.endIndex | |
/// == self.endIndex` and `newElements.isEmpty`, O(N) otherwise. | |
public mutating func replaceRange(subRange: Range<Index>, with newElements: String) | |
/// Insert `newElement` at index `i`. | |
/// | |
/// Invalidates all indices with respect to `self`. | |
/// | |
/// - Complexity: O(`self.count`). | |
public mutating func insert(newElement: Character, atIndex i: Index) | |
/// Insert `newElements` at index `i`. | |
/// | |
/// Invalidates all indices with respect to `self`. | |
/// | |
/// - Complexity: O(`self.count + newElements.count`). | |
public mutating func insertContentsOf<S : CollectionType where S.Generator.Element == Character>(newElements: S, at i: Index) | |
/// Remove and return the element at index `i`. | |
/// | |
/// Invalidates all indices with respect to `self`. | |
/// | |
/// - Complexity: O(`self.count`). | |
public mutating func removeAtIndex(i: Index) -> Character | |
/// Remove the indicated `subRange` of characters. | |
/// | |
/// Invalidates all indices with respect to `self`. | |
/// | |
/// - Complexity: O(`self.count`). | |
public mutating func removeRange(subRange: Range<Index>) | |
/// Remove all characters. | |
/// | |
/// Invalidates all indices with respect to `self`. | |
/// | |
/// - parameter keepCapacity: If `true`, prevents the release of | |
/// allocated storage, which can be a useful optimization | |
/// when `self` is going to be grown again. | |
public mutating func removeAll(keepCapacity keepCapacity: Bool = default) | |
} | |
extension String { | |
public var lowercaseString: String { get } | |
public var uppercaseString: String { get } | |
} | |
extension String : StringInterpolationConvertible { | |
/// Create an instance by concatenating the elements of `strings`. | |
public init(stringInterpolation strings: String...) | |
/// Create an instance containing `expr`'s `print` representation. | |
public init<T>(stringInterpolationSegment expr: T) | |
public init(stringInterpolationSegment expr: String) | |
public init(stringInterpolationSegment expr: Character) | |
public init(stringInterpolationSegment expr: UnicodeScalar) | |
public init(stringInterpolationSegment expr: Bool) | |
public init(stringInterpolationSegment expr: Float32) | |
public init(stringInterpolationSegment expr: Float64) | |
public init(stringInterpolationSegment expr: UInt8) | |
public init(stringInterpolationSegment expr: Int8) | |
public init(stringInterpolationSegment expr: UInt16) | |
public init(stringInterpolationSegment expr: Int16) | |
public init(stringInterpolationSegment expr: UInt32) | |
public init(stringInterpolationSegment expr: Int32) | |
public init(stringInterpolationSegment expr: UInt64) | |
public init(stringInterpolationSegment expr: Int64) | |
public init(stringInterpolationSegment expr: UInt) | |
public init(stringInterpolationSegment expr: Int) | |
} | |
extension String { | |
/// Construct an instance that is the concatenation of `count` copies | |
/// of `repeatedValue`. | |
public init(count: Int, repeatedValue c: Character) | |
/// Construct an instance that is the concatenation of `count` copies | |
/// of `Character(repeatedValue)`. | |
public init(count: Int, repeatedValue c: UnicodeScalar) | |
/// `true` iff `self` contains no characters. | |
public var isEmpty: Bool { get } | |
} | |
extension String { | |
/// Returns `true` iff `self` begins with `prefix`. | |
public func hasPrefix(prefix: String) -> Bool | |
/// Returns `true` iff `self` ends with `suffix`. | |
public func hasSuffix(suffix: String) -> Bool | |
} | |
extension String { | |
/// Create an instance representing `v` in base 10. | |
public init<T : _SignedIntegerType>(_ v: T) | |
/// Create an instance representing `v` in base 10. | |
public init<T : UnsignedIntegerType>(_ v: T) | |
/// Create an instance representing `v` in the given `radix` (base). | |
/// | |
/// Numerals greater than 9 are represented as roman letters, | |
/// starting with `a` if `uppercase` is `false` or `A` otherwise. | |
public init<T : _SignedIntegerType>(_ v: T, radix: Int, uppercase: Bool = default) | |
/// Create an instance representing `v` in the given `radix` (base). | |
/// | |
/// Numerals greater than 9 are represented as roman letters, | |
/// starting with `a` if `uppercase` is `false` or `A` otherwise. | |
public init<T : UnsignedIntegerType>(_ v: T, radix: Int, uppercase: Bool = default) | |
} | |
extension String { | |
/// The value of `self` as a collection of [Unicode scalar values](http://www.unicode.org/glossary/#unicode_scalar_value). | |
public var unicodeScalars: String.UnicodeScalarView | |
} | |
extension String { | |
} | |
extension String : MirrorPathType { | |
} | |
extension String { | |
/// Initialize `self` with the textual representation of `instance`. | |
/// | |
/// * If `T` conforms to `Streamable`, the result is obtained by | |
/// calling `instance.writeTo(s)` on an empty string s. | |
/// * Otherwise, if `T` conforms to `CustomStringConvertible`, the | |
/// result is `instance`'s `description` | |
/// * Otherwise, if `T` conforms to `CustomDebugStringConvertible`, | |
/// the result is `instance`'s `debugDescription` | |
/// * Otherwise, an unspecified result is supplied automatically by | |
/// the Swift standard library. | |
/// | |
/// - SeeAlso: `String.init<T>(reflecting: T)` | |
public init<T>(_ instance: T) | |
/// Initialize `self` with a detailed textual representation of | |
/// `subject`, suitable for debugging. | |
/// | |
/// * If `T` conforms to `CustomDebugStringConvertible`, the result | |
/// is `subject`'s `debugDescription`. | |
/// | |
/// * Otherwise, if `T` conforms to `CustomStringConvertible`, the result | |
/// is `subject`'s `description`. | |
/// | |
/// * Otherwise, if `T` conforms to `Streamable`, the result is | |
/// obtained by calling `subject.writeTo(s)` on an empty string s. | |
/// | |
/// * Otherwise, an unspecified result is supplied automatically by | |
/// the Swift standard library. | |
/// | |
/// - SeeAlso: `String.init<T>(T)` | |
public init<T>(reflecting subject: T) | |
} | |
extension String.CharacterView : CollectionType { | |
/// A character position. | |
public struct Index : BidirectionalIndexType, Comparable, _Reflectable { | |
/// Returns the next consecutive value after `self`. | |
/// | |
/// - Requires: The next value is representable. | |
public func successor() -> String.CharacterView.Index | |
/// Returns the previous consecutive value before `self`. | |
/// | |
/// - Requires: The previous value is representable. | |
public func predecessor() -> String.CharacterView.Index | |
} | |
/// The position of the first `Character` if `self` is | |
/// non-empty; identical to `endIndex` otherwise. | |
public var startIndex: String.CharacterView.Index { get } | |
/// The "past the end" position. | |
/// | |
/// `endIndex` is not a valid argument to `subscript`, and is always | |
/// reachable from `startIndex` by zero or more applications of | |
/// `successor()`. | |
public var endIndex: String.CharacterView.Index { get } | |
public subscript (i: String.CharacterView.Index) -> Character { get } | |
} | |
extension String.CharacterView : RangeReplaceableCollectionType { | |
/// Create an empty instance. | |
public init() | |
/// Replace the given `subRange` of elements with `newElements`. | |
/// | |
/// Invalidates all indices with respect to `self`. | |
/// | |
/// - Complexity: O(`subRange.count`) if `subRange.endIndex | |
/// == self.endIndex` and `newElements.isEmpty`, O(N) otherwise. | |
public mutating func replaceRange<C : CollectionType where C.Generator.Element == Character>(subRange: Range<String.CharacterView.Index>, with newElements: C) | |
/// Reserve enough space to store `n` ASCII characters. | |
/// | |
/// - Complexity: O(`n`). | |
public mutating func reserveCapacity(n: Int) | |
/// Append `c` to `self`. | |
/// | |
/// - Complexity: Amortized O(1). | |
public mutating func append(c: Character) | |
/// Append the elements of `newElements` to `self`. | |
public mutating func appendContentsOf<S : SequenceType where S.Generator.Element == Character>(newElements: S) | |
/// Create an instance containing `characters`. | |
public init<S : SequenceType where S.Generator.Element == Character>(_ characters: S) | |
} | |
extension String.CharacterView { | |
public subscript (subRange: Range<String.CharacterView.Index>) -> String.CharacterView { get } | |
} | |
extension String.UnicodeScalarView : RangeReplaceableCollectionType { | |
/// Construct an empty instance. | |
public init() | |
/// Reserve enough space to store `n` ASCII characters. | |
/// | |
/// - Complexity: O(`n`). | |
public mutating func reserveCapacity(n: Int) | |
/// Append `x` to `self`. | |
/// | |
/// - Complexity: Amortized O(1). | |
public mutating func append(x: UnicodeScalar) | |
/// Append the elements of `newElements` to `self`. | |
/// | |
/// - Complexity: O(*length of result*). | |
public mutating func appendContentsOf<S : SequenceType where S.Generator.Element == UnicodeScalar>(newElements: S) | |
/// Replace the given `subRange` of elements with `newElements`. | |
/// | |
/// Invalidates all indices with respect to `self`. | |
/// | |
/// - Complexity: O(`subRange.count`) if `subRange.endIndex | |
/// == self.endIndex` and `newElements.isEmpty`, O(N) otherwise. | |
public mutating func replaceRange<C : CollectionType where C.Generator.Element == UnicodeScalar>(subRange: Range<String.UnicodeScalarView.Index>, with newElements: C) | |
} | |
extension String.CharacterView.Index { | |
/// Construct the position in `characters` that corresponds exactly to | |
/// `unicodeScalarIndex`. If no such position exists, the result is `nil`. | |
/// | |
/// - Requires: `unicodeScalarIndex` is an element of | |
/// `characters.unicodeScalars.indices`. | |
public init?(_ unicodeScalarIndex: UnicodeScalarIndex, within characters: String) | |
/// Construct the position in `characters` that corresponds exactly to | |
/// `utf16Index`. If no such position exists, the result is `nil`. | |
/// | |
/// - Requires: `utf16Index` is an element of | |
/// `characters.utf16.indices`. | |
public init?(_ utf16Index: UTF16Index, within characters: String) | |
/// Construct the position in `characters` that corresponds exactly to | |
/// `utf8Index`. If no such position exists, the result is `nil`. | |
/// | |
/// - Requires: `utf8Index` is an element of | |
/// `characters.utf8.indices`. | |
public init?(_ utf8Index: UTF8Index, within characters: String) | |
/// Return the position in `utf8` that corresponds exactly | |
/// to `self`. | |
/// | |
/// - Requires: `self` is an element of `String(utf8).indices`. | |
@warn_unused_result | |
public func samePositionIn(utf8: String.UTF8View) -> String.UTF8View.Index | |
/// Return the position in `utf16` that corresponds exactly | |
/// to `self`. | |
/// | |
/// - Requires: `self` is an element of `String(utf16).indices`. | |
@warn_unused_result | |
public func samePositionIn(utf16: String.UTF16View) -> String.UTF16View.Index | |
/// Return the position in `unicodeScalars` that corresponds exactly | |
/// to `self`. | |
/// | |
/// - Requires: `self` is an element of `String(unicodeScalars).indices`. | |
@warn_unused_result | |
public func samePositionIn(unicodeScalars: String.UnicodeScalarView) -> String.UnicodeScalarView.Index | |
} | |
extension String.UnicodeScalarView.Index { | |
/// Construct the position in `unicodeScalars` that corresponds exactly to | |
/// `utf16Index`. If no such position exists, the result is `nil`. | |
/// | |
/// - Requires: `utf16Index` is an element of | |
/// `String(unicodeScalars).utf16.indices`. | |
public init?(_ utf16Index: UTF16Index, within unicodeScalars: String.UnicodeScalarView) | |
/// Construct the position in `unicodeScalars` that corresponds exactly to | |
/// `utf8Index`. If no such position exists, the result is `nil`. | |
/// | |
/// - Requires: `utf8Index` is an element of | |
/// `String(unicodeScalars).utf8.indices`. | |
public init?(_ utf8Index: UTF8Index, within unicodeScalars: String.UnicodeScalarView) | |
/// Construct the position in `unicodeScalars` that corresponds | |
/// exactly to `characterIndex`. | |
/// | |
/// - Requires: `characterIndex` is an element of | |
/// `String(unicodeScalars).indices`. | |
public init(_ characterIndex: Index, within unicodeScalars: String.UnicodeScalarView) | |
/// Return the position in `utf8` that corresponds exactly | |
/// to `self`. | |
/// | |
/// - Requires: `self` is an element of `String(utf8)!.indices`. | |
@warn_unused_result | |
public func samePositionIn(utf8: String.UTF8View) -> String.UTF8View.Index | |
/// Return the position in `utf16` that corresponds exactly | |
/// to `self`. | |
/// | |
/// - Requires: `self` is an element of `String(utf16)!.indices`. | |
@warn_unused_result | |
public func samePositionIn(utf16: String.UTF16View) -> String.UTF16View.Index | |
/// Return the position in `characters` that corresponds exactly | |
/// to `self`, or if no such position exists, `nil`. | |
/// | |
/// - Requires: `self` is an element of `characters.unicodeScalars.indices`. | |
@warn_unused_result | |
public func samePositionIn(characters: String) -> Index? | |
} | |
extension String.UTF16View.Index : BidirectionalIndexType { | |
public typealias Distance = Int | |
@warn_unused_result | |
public func successor() -> String.UTF16View.Index | |
@warn_unused_result | |
public func predecessor() -> String.UTF16View.Index | |
} | |
extension String.UTF16View.Index : Comparable, Equatable { | |
} | |
extension String.UTF16View.Index { | |
@warn_unused_result | |
public func distanceTo(end: String.UTF16View.Index) -> Distance | |
@warn_unused_result | |
public func advancedBy(n: Distance) -> String.UTF16View.Index | |
@warn_unused_result | |
public func advancedBy(n: Distance, limit: String.UTF16View.Index) -> String.UTF16View.Index | |
} | |
extension String.UTF16View.Index { | |
/// Construct the position in `utf16` that corresponds exactly to | |
/// `utf8Index`. If no such position exists, the result is `nil`. | |
/// | |
/// - Requires: `utf8Index` is an element of | |
/// `String(utf16)!.utf8.indices`. | |
public init?(_ utf8Index: UTF8Index, within utf16: String.UTF16View) | |
/// Construct the position in `utf16` that corresponds exactly to | |
/// `unicodeScalarIndex`. | |
/// | |
/// - Requires: `unicodeScalarIndex` is an element of | |
/// `String(utf16)!.unicodeScalars.indices`. | |
public init(_ unicodeScalarIndex: UnicodeScalarIndex, within utf16: String.UTF16View) | |
/// Construct the position in `utf16` that corresponds exactly to | |
/// `characterIndex`. | |
/// | |
/// - Requires: `characterIndex` is an element of | |
/// `String(utf16)!.indices`. | |
public init(_ characterIndex: Index, within utf16: String.UTF16View) | |
/// Return the position in `utf8` that corresponds exactly | |
/// to `self`, or if no such position exists, `nil`. | |
/// | |
/// - Requires: `self` is an element of | |
/// `String(utf8)!.utf16.indices`. | |
@warn_unused_result | |
public func samePositionIn(utf8: String.UTF8View) -> String.UTF8View.Index? | |
/// Return the position in `unicodeScalars` that corresponds exactly | |
/// to `self`, or if no such position exists, `nil`. | |
/// | |
/// - Requires: `self` is an element of | |
/// `String(unicodeScalars).utf16.indices`. | |
@warn_unused_result | |
public func samePositionIn(unicodeScalars: String.UnicodeScalarView) -> UnicodeScalarIndex? | |
/// Return the position in `characters` that corresponds exactly | |
/// to `self`, or if no such position exists, `nil`. | |
/// | |
/// - Requires: `self` is an element of `characters.utf16.indices`. | |
@warn_unused_result | |
public func samePositionIn(characters: String) -> Index? | |
} | |
extension String.UTF8View.Index { | |
/// Construct the position in `utf8` that corresponds exactly to | |
/// `utf16Index`. If no such position exists, the result is `nil`. | |
/// | |
/// - Requires: `utf8Index` is an element of | |
/// `String(utf16)!.utf8.indices`. | |
public init?(_ utf16Index: UTF16Index, within utf8: String.UTF8View) | |
/// Construct the position in `utf8` that corresponds exactly to | |
/// `unicodeScalarIndex`. | |
/// | |
/// - Requires: `unicodeScalarIndex` is an element of | |
/// `String(utf8)!.unicodeScalars.indices`. | |
public init(_ unicodeScalarIndex: UnicodeScalarIndex, within utf8: String.UTF8View) | |
/// Construct the position in `utf8` that corresponds exactly to | |
/// `characterIndex`. | |
/// | |
/// - Requires: `characterIndex` is an element of | |
/// `String(utf8)!.indices`. | |
public init(_ characterIndex: Index, within utf8: String.UTF8View) | |
/// Return the position in `utf16` that corresponds exactly | |
/// to `self`, or if no such position exists, `nil`. | |
/// | |
/// - Requires: `self` is an element of `String(utf16)!.utf8.indices`. | |
@warn_unused_result | |
public func samePositionIn(utf16: String.UTF16View) -> String.UTF16View.Index? | |
/// Return the position in `unicodeScalars` that corresponds exactly | |
/// to `self`, or if no such position exists, `nil`. | |
/// | |
/// - Requires: `self` is an element of | |
/// `String(unicodeScalars).utf8.indices`. | |
@warn_unused_result | |
public func samePositionIn(unicodeScalars: String.UnicodeScalarView) -> UnicodeScalarIndex? | |
/// Return the position in `characters` that corresponds exactly | |
/// to `self`, or if no such position exists, `nil`. | |
/// | |
/// - Requires: `self` is an element of `characters.utf8.indices`. | |
@warn_unused_result | |
public func samePositionIn(characters: String) -> Index? | |
} | |
/// Conforming types can be initialized with string interpolations | |
/// containing `\(`...`)` clauses. | |
public protocol StringInterpolationConvertible { | |
/// Create an instance by concatenating the elements of `strings`. | |
public init(stringInterpolation strings: Self...) | |
/// Create an instance containing `expr`'s `print` representation. | |
public init<T>(stringInterpolationSegment expr: T) | |
} | |
/// Conforming types can be initialized with arbitrary string literals. | |
public protocol StringLiteralConvertible : ExtendedGraphemeClusterLiteralConvertible { | |
typealias StringLiteralType | |
/// Create an instance initialized to `value`. | |
public init(stringLiteral value: Self.StringLiteralType) | |
} | |
/// The default type for an otherwise-unconstrained string literal. | |
public typealias StringLiteralType = String | |
/// A 64-bit unsigned integer value | |
/// type. | |
public struct UInt : UnsignedIntegerType, Comparable, Equatable { | |
/// A type that can represent the number of steps between pairs of | |
/// values. | |
public typealias Distance = Int | |
/// Create an instance initialized to zero. | |
public init() | |
public init(_ v: Builtin.Word) | |
/// Create an instance initialized to `value`. | |
public init(_ value: UInt) | |
/// Creates an integer from its big-endian representation, changing the | |
/// byte order if necessary. | |
public init(bigEndian value: UInt) | |
/// Creates an integer from its little-endian representation, changing the | |
/// byte order if necessary. | |
public init(littleEndian value: UInt) | |
public init(_builtinIntegerLiteral value: Builtin.Int2048) | |
/// Create an instance initialized to `value`. | |
public init(integerLiteral value: UInt) | |
/// Returns the big-endian representation of the integer, changing the | |
/// byte order if necessary. | |
public var bigEndian: UInt { get } | |
/// Returns the little-endian representation of the integer, changing the | |
/// byte order if necessary. | |
public var littleEndian: UInt { get } | |
/// Returns the current integer with the byte order swapped. | |
public var byteSwapped: UInt { get } | |
public static var max: UInt { get } | |
public static var min: UInt { get } | |
} | |
extension UInt : Hashable { | |
/// The hash value. | |
/// | |
/// **Axiom:** `x == y` implies `x.hashValue == y.hashValue`. | |
/// | |
/// - Note: The hash value is not guaranteed to be stable across | |
/// different invocations of the same program. Do not persist the | |
/// hash value across program runs. | |
public var hashValue: Int { get } | |
} | |
extension UInt : CustomStringConvertible { | |
/// A textual representation of `self`. | |
public var description: String { get } | |
} | |
extension UInt : RandomAccessIndexType { | |
/// Returns the next consecutive value after `self`. | |
/// | |
/// - Requires: The next value is representable. | |
public func successor() -> UInt | |
/// Returns the previous consecutive value before `self`. | |
/// | |
/// - Requires: The previous value is representable. | |
public func predecessor() -> UInt | |
public func distanceTo(other: UInt) -> Distance | |
public func advancedBy(n: Distance) -> UInt | |
} | |
extension UInt { | |
/// Add `lhs` and `rhs`, returning a result and a | |
/// `Bool` that is true iff the operation caused an arithmetic | |
/// overflow. | |
public static func addWithOverflow(lhs: UInt, _ rhs: UInt) -> (UInt, overflow: Bool) | |
/// Subtract `lhs` and `rhs`, returning a result and a | |
/// `Bool` that is true iff the operation caused an arithmetic | |
/// overflow. | |
public static func subtractWithOverflow(lhs: UInt, _ rhs: UInt) -> (UInt, overflow: Bool) | |
/// Multiply `lhs` and `rhs`, returning a result and a | |
/// `Bool` that is true iff the operation caused an arithmetic | |
/// overflow. | |
public static func multiplyWithOverflow(lhs: UInt, _ rhs: UInt) -> (UInt, overflow: Bool) | |
/// Divide `lhs` and `rhs`, returning | |
/// a result and a `Bool` | |
/// that is true iff the operation caused an arithmetic overflow. | |
public static func divideWithOverflow(lhs: UInt, _ rhs: UInt) -> (UInt, overflow: Bool) | |
/// Divide `lhs` and `rhs`, returning | |
/// the remainder and a `Bool` | |
/// that is true iff the operation caused an arithmetic overflow. | |
public static func remainderWithOverflow(lhs: UInt, _ rhs: UInt) -> (UInt, overflow: Bool) | |
/// Represent this number using Swift's widest native unsigned | |
/// integer type. | |
public func toUIntMax() -> UIntMax | |
/// Explicitly convert to `IntMax`, trapping on overflow (except in -Ounchecked builds). | |
public func toIntMax() -> IntMax | |
} | |
extension UInt { | |
public init(_ v: UInt8) | |
public init(_ v: Int8) | |
public init(_ v: UInt16) | |
public init(_ v: Int16) | |
public init(_ v: UInt32) | |
public init(_ v: Int32) | |
public init(_ v: UInt64) | |
/// Construct a `UInt` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: UInt64) | |
public init(_ v: Int64) | |
/// Construct a `UInt` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: Int64) | |
public init(_ v: Int) | |
/// Construct a `UInt` having the same memory representation as | |
/// the `Int` `bitPattern`. No range or overflow checking | |
/// occurs, and the resulting `UInt` may not have the same numeric | |
/// value as `bitPattern`--it is only guaranteed to use the same | |
/// pattern of bits. | |
public init(bitPattern: Int) | |
} | |
extension UInt : BitwiseOperationsType { | |
/// The empty bitset of type UInt. | |
public static var allZeros: UInt { get } | |
} | |
extension UInt { | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Float) | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Double) | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Float80) | |
} | |
extension UInt { | |
/// Construct from an ASCII representation in the given `radix`. | |
/// | |
/// If `text` does not match the regular expression | |
/// "[+-][0-9a-zA-Z]+", or the value it denotes in the given `radix` | |
/// is not representable, the result is `nil`. | |
public init?(_ text: String, radix: Int = default) | |
} | |
extension UInt : _Reflectable { | |
} | |
extension UInt : CVarArgType { | |
} | |
/// A 16-bit unsigned integer value | |
/// type. | |
public struct UInt16 : UnsignedIntegerType, Comparable, Equatable { | |
/// A type that can represent the number of steps between pairs of | |
/// values. | |
public typealias Distance = Int | |
/// Create an instance initialized to zero. | |
public init() | |
/// Create an instance initialized to `value`. | |
public init(_ value: UInt16) | |
/// Creates an integer from its big-endian representation, changing the | |
/// byte order if necessary. | |
public init(bigEndian value: UInt16) | |
/// Creates an integer from its little-endian representation, changing the | |
/// byte order if necessary. | |
public init(littleEndian value: UInt16) | |
public init(_builtinIntegerLiteral value: Builtin.Int2048) | |
/// Create an instance initialized to `value`. | |
public init(integerLiteral value: UInt16) | |
/// Returns the big-endian representation of the integer, changing the | |
/// byte order if necessary. | |
public var bigEndian: UInt16 { get } | |
/// Returns the little-endian representation of the integer, changing the | |
/// byte order if necessary. | |
public var littleEndian: UInt16 { get } | |
/// Returns the current integer with the byte order swapped. | |
public var byteSwapped: UInt16 { get } | |
public static var max: UInt16 { get } | |
public static var min: UInt16 { get } | |
} | |
extension UInt16 : Hashable { | |
/// The hash value. | |
/// | |
/// **Axiom:** `x == y` implies `x.hashValue == y.hashValue`. | |
/// | |
/// - Note: The hash value is not guaranteed to be stable across | |
/// different invocations of the same program. Do not persist the | |
/// hash value across program runs. | |
public var hashValue: Int { get } | |
} | |
extension UInt16 : CustomStringConvertible { | |
/// A textual representation of `self`. | |
public var description: String { get } | |
} | |
extension UInt16 : RandomAccessIndexType { | |
/// Returns the next consecutive value after `self`. | |
/// | |
/// - Requires: The next value is representable. | |
public func successor() -> UInt16 | |
/// Returns the previous consecutive value before `self`. | |
/// | |
/// - Requires: The previous value is representable. | |
public func predecessor() -> UInt16 | |
public func distanceTo(other: UInt16) -> Distance | |
public func advancedBy(n: Distance) -> UInt16 | |
} | |
extension UInt16 { | |
/// Add `lhs` and `rhs`, returning a result and a | |
/// `Bool` that is true iff the operation caused an arithmetic | |
/// overflow. | |
public static func addWithOverflow(lhs: UInt16, _ rhs: UInt16) -> (UInt16, overflow: Bool) | |
/// Subtract `lhs` and `rhs`, returning a result and a | |
/// `Bool` that is true iff the operation caused an arithmetic | |
/// overflow. | |
public static func subtractWithOverflow(lhs: UInt16, _ rhs: UInt16) -> (UInt16, overflow: Bool) | |
/// Multiply `lhs` and `rhs`, returning a result and a | |
/// `Bool` that is true iff the operation caused an arithmetic | |
/// overflow. | |
public static func multiplyWithOverflow(lhs: UInt16, _ rhs: UInt16) -> (UInt16, overflow: Bool) | |
/// Divide `lhs` and `rhs`, returning | |
/// a result and a `Bool` | |
/// that is true iff the operation caused an arithmetic overflow. | |
public static func divideWithOverflow(lhs: UInt16, _ rhs: UInt16) -> (UInt16, overflow: Bool) | |
/// Divide `lhs` and `rhs`, returning | |
/// the remainder and a `Bool` | |
/// that is true iff the operation caused an arithmetic overflow. | |
public static func remainderWithOverflow(lhs: UInt16, _ rhs: UInt16) -> (UInt16, overflow: Bool) | |
/// Represent this number using Swift's widest native unsigned | |
/// integer type. | |
public func toUIntMax() -> UIntMax | |
/// Explicitly convert to `IntMax`. | |
public func toIntMax() -> IntMax | |
} | |
extension UInt16 { | |
public init(_ v: UInt8) | |
public init(_ v: Int8) | |
public init(_ v: Int16) | |
public init(_ v: UInt32) | |
/// Construct a `UInt16` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: UInt32) | |
public init(_ v: Int32) | |
/// Construct a `UInt16` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: Int32) | |
public init(_ v: UInt64) | |
/// Construct a `UInt16` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: UInt64) | |
public init(_ v: Int64) | |
/// Construct a `UInt16` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: Int64) | |
public init(_ v: UInt) | |
/// Construct a `UInt16` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: UInt) | |
public init(_ v: Int) | |
/// Construct a `UInt16` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: Int) | |
/// Construct a `UInt16` having the same memory representation as | |
/// the `Int16` `bitPattern`. No range or overflow checking | |
/// occurs, and the resulting `UInt16` may not have the same numeric | |
/// value as `bitPattern`--it is only guaranteed to use the same | |
/// pattern of bits. | |
public init(bitPattern: Int16) | |
} | |
extension UInt16 : BitwiseOperationsType { | |
/// The empty bitset of type UInt16. | |
public static var allZeros: UInt16 { get } | |
} | |
extension UInt16 { | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Float) | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Double) | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Float80) | |
} | |
extension UInt16 { | |
/// Construct from an ASCII representation in the given `radix`. | |
/// | |
/// If `text` does not match the regular expression | |
/// "[+-][0-9a-zA-Z]+", or the value it denotes in the given `radix` | |
/// is not representable, the result is `nil`. | |
public init?(_ text: String, radix: Int = default) | |
} | |
extension UInt16 : _Reflectable { | |
} | |
extension UInt16 : _StringElementType { | |
} | |
extension UInt16 : CVarArgType { | |
} | |
/// A 32-bit unsigned integer value | |
/// type. | |
public struct UInt32 : UnsignedIntegerType, Comparable, Equatable { | |
/// A type that can represent the number of steps between pairs of | |
/// values. | |
public typealias Distance = Int | |
/// Create an instance initialized to zero. | |
public init() | |
/// Create an instance initialized to `value`. | |
public init(_ value: UInt32) | |
/// Creates an integer from its big-endian representation, changing the | |
/// byte order if necessary. | |
public init(bigEndian value: UInt32) | |
/// Creates an integer from its little-endian representation, changing the | |
/// byte order if necessary. | |
public init(littleEndian value: UInt32) | |
public init(_builtinIntegerLiteral value: Builtin.Int2048) | |
/// Create an instance initialized to `value`. | |
public init(integerLiteral value: UInt32) | |
/// Returns the big-endian representation of the integer, changing the | |
/// byte order if necessary. | |
public var bigEndian: UInt32 { get } | |
/// Returns the little-endian representation of the integer, changing the | |
/// byte order if necessary. | |
public var littleEndian: UInt32 { get } | |
/// Returns the current integer with the byte order swapped. | |
public var byteSwapped: UInt32 { get } | |
public static var max: UInt32 { get } | |
public static var min: UInt32 { get } | |
} | |
extension UInt32 : Hashable { | |
/// The hash value. | |
/// | |
/// **Axiom:** `x == y` implies `x.hashValue == y.hashValue`. | |
/// | |
/// - Note: The hash value is not guaranteed to be stable across | |
/// different invocations of the same program. Do not persist the | |
/// hash value across program runs. | |
public var hashValue: Int { get } | |
} | |
extension UInt32 : CustomStringConvertible { | |
/// A textual representation of `self`. | |
public var description: String { get } | |
} | |
extension UInt32 : RandomAccessIndexType { | |
/// Returns the next consecutive value after `self`. | |
/// | |
/// - Requires: The next value is representable. | |
public func successor() -> UInt32 | |
/// Returns the previous consecutive value before `self`. | |
/// | |
/// - Requires: The previous value is representable. | |
public func predecessor() -> UInt32 | |
public func distanceTo(other: UInt32) -> Distance | |
public func advancedBy(n: Distance) -> UInt32 | |
} | |
extension UInt32 { | |
/// Add `lhs` and `rhs`, returning a result and a | |
/// `Bool` that is true iff the operation caused an arithmetic | |
/// overflow. | |
public static func addWithOverflow(lhs: UInt32, _ rhs: UInt32) -> (UInt32, overflow: Bool) | |
/// Subtract `lhs` and `rhs`, returning a result and a | |
/// `Bool` that is true iff the operation caused an arithmetic | |
/// overflow. | |
public static func subtractWithOverflow(lhs: UInt32, _ rhs: UInt32) -> (UInt32, overflow: Bool) | |
/// Multiply `lhs` and `rhs`, returning a result and a | |
/// `Bool` that is true iff the operation caused an arithmetic | |
/// overflow. | |
public static func multiplyWithOverflow(lhs: UInt32, _ rhs: UInt32) -> (UInt32, overflow: Bool) | |
/// Divide `lhs` and `rhs`, returning | |
/// a result and a `Bool` | |
/// that is true iff the operation caused an arithmetic overflow. | |
public static func divideWithOverflow(lhs: UInt32, _ rhs: UInt32) -> (UInt32, overflow: Bool) | |
/// Divide `lhs` and `rhs`, returning | |
/// the remainder and a `Bool` | |
/// that is true iff the operation caused an arithmetic overflow. | |
public static func remainderWithOverflow(lhs: UInt32, _ rhs: UInt32) -> (UInt32, overflow: Bool) | |
/// Represent this number using Swift's widest native unsigned | |
/// integer type. | |
public func toUIntMax() -> UIntMax | |
/// Explicitly convert to `IntMax`. | |
public func toIntMax() -> IntMax | |
} | |
extension UInt32 { | |
public init(_ v: UInt8) | |
public init(_ v: Int8) | |
public init(_ v: UInt16) | |
public init(_ v: Int16) | |
public init(_ v: Int32) | |
public init(_ v: UInt64) | |
/// Construct a `UInt32` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: UInt64) | |
public init(_ v: Int64) | |
/// Construct a `UInt32` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: Int64) | |
public init(_ v: UInt) | |
/// Construct a `UInt32` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: UInt) | |
public init(_ v: Int) | |
/// Construct a `UInt32` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: Int) | |
/// Construct a `UInt32` having the same memory representation as | |
/// the `Int32` `bitPattern`. No range or overflow checking | |
/// occurs, and the resulting `UInt32` may not have the same numeric | |
/// value as `bitPattern`--it is only guaranteed to use the same | |
/// pattern of bits. | |
public init(bitPattern: Int32) | |
} | |
extension UInt32 : BitwiseOperationsType { | |
/// The empty bitset of type UInt32. | |
public static var allZeros: UInt32 { get } | |
} | |
extension UInt32 { | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Float) | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Double) | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Float80) | |
} | |
extension UInt32 { | |
/// Construct from an ASCII representation in the given `radix`. | |
/// | |
/// If `text` does not match the regular expression | |
/// "[+-][0-9a-zA-Z]+", or the value it denotes in the given `radix` | |
/// is not representable, the result is `nil`. | |
public init?(_ text: String, radix: Int = default) | |
} | |
extension UInt32 : _Reflectable { | |
} | |
extension UInt32 { | |
/// Construct with value `v.value`. | |
/// | |
/// - Requires: `v.value` can be represented as UInt32. | |
public init(_ v: UnicodeScalar) | |
} | |
extension UInt32 : CVarArgType { | |
} | |
/// A 64-bit unsigned integer value | |
/// type. | |
public struct UInt64 : UnsignedIntegerType, Comparable, Equatable { | |
/// A type that can represent the number of steps between pairs of | |
/// values. | |
public typealias Distance = Int | |
/// Create an instance initialized to zero. | |
public init() | |
/// Create an instance initialized to `value`. | |
public init(_ value: UInt64) | |
/// Creates an integer from its big-endian representation, changing the | |
/// byte order if necessary. | |
public init(bigEndian value: UInt64) | |
/// Creates an integer from its little-endian representation, changing the | |
/// byte order if necessary. | |
public init(littleEndian value: UInt64) | |
public init(_builtinIntegerLiteral value: Builtin.Int2048) | |
/// Create an instance initialized to `value`. | |
public init(integerLiteral value: UInt64) | |
/// Returns the big-endian representation of the integer, changing the | |
/// byte order if necessary. | |
public var bigEndian: UInt64 { get } | |
/// Returns the little-endian representation of the integer, changing the | |
/// byte order if necessary. | |
public var littleEndian: UInt64 { get } | |
/// Returns the current integer with the byte order swapped. | |
public var byteSwapped: UInt64 { get } | |
public static var max: UInt64 { get } | |
public static var min: UInt64 { get } | |
} | |
extension UInt64 : Hashable { | |
/// The hash value. | |
/// | |
/// **Axiom:** `x == y` implies `x.hashValue == y.hashValue`. | |
/// | |
/// - Note: The hash value is not guaranteed to be stable across | |
/// different invocations of the same program. Do not persist the | |
/// hash value across program runs. | |
public var hashValue: Int { get } | |
} | |
extension UInt64 : CustomStringConvertible { | |
/// A textual representation of `self`. | |
public var description: String { get } | |
} | |
extension UInt64 : RandomAccessIndexType { | |
/// Returns the next consecutive value after `self`. | |
/// | |
/// - Requires: The next value is representable. | |
public func successor() -> UInt64 | |
/// Returns the previous consecutive value before `self`. | |
/// | |
/// - Requires: The previous value is representable. | |
public func predecessor() -> UInt64 | |
public func distanceTo(other: UInt64) -> Distance | |
public func advancedBy(n: Distance) -> UInt64 | |
} | |
extension UInt64 { | |
/// Add `lhs` and `rhs`, returning a result and a | |
/// `Bool` that is true iff the operation caused an arithmetic | |
/// overflow. | |
public static func addWithOverflow(lhs: UInt64, _ rhs: UInt64) -> (UInt64, overflow: Bool) | |
/// Subtract `lhs` and `rhs`, returning a result and a | |
/// `Bool` that is true iff the operation caused an arithmetic | |
/// overflow. | |
public static func subtractWithOverflow(lhs: UInt64, _ rhs: UInt64) -> (UInt64, overflow: Bool) | |
/// Multiply `lhs` and `rhs`, returning a result and a | |
/// `Bool` that is true iff the operation caused an arithmetic | |
/// overflow. | |
public static func multiplyWithOverflow(lhs: UInt64, _ rhs: UInt64) -> (UInt64, overflow: Bool) | |
/// Divide `lhs` and `rhs`, returning | |
/// a result and a `Bool` | |
/// that is true iff the operation caused an arithmetic overflow. | |
public static func divideWithOverflow(lhs: UInt64, _ rhs: UInt64) -> (UInt64, overflow: Bool) | |
/// Divide `lhs` and `rhs`, returning | |
/// the remainder and a `Bool` | |
/// that is true iff the operation caused an arithmetic overflow. | |
public static func remainderWithOverflow(lhs: UInt64, _ rhs: UInt64) -> (UInt64, overflow: Bool) | |
/// Represent this number using Swift's widest native unsigned | |
/// integer type. | |
public func toUIntMax() -> UIntMax | |
/// Explicitly convert to `IntMax`, trapping on overflow (except in -Ounchecked builds). | |
public func toIntMax() -> IntMax | |
} | |
extension UInt64 { | |
public init(_ v: UInt8) | |
public init(_ v: Int8) | |
public init(_ v: UInt16) | |
public init(_ v: Int16) | |
public init(_ v: UInt32) | |
public init(_ v: Int32) | |
public init(_ v: Int64) | |
public init(_ v: UInt) | |
public init(_ v: Int) | |
/// Construct a `UInt64` having the same memory representation as | |
/// the `Int64` `bitPattern`. No range or overflow checking | |
/// occurs, and the resulting `UInt64` may not have the same numeric | |
/// value as `bitPattern`--it is only guaranteed to use the same | |
/// pattern of bits. | |
public init(bitPattern: Int64) | |
} | |
extension UInt64 : BitwiseOperationsType { | |
/// The empty bitset of type UInt64. | |
public static var allZeros: UInt64 { get } | |
} | |
extension UInt64 { | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Float) | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Double) | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Float80) | |
} | |
extension UInt64 { | |
/// Construct from an ASCII representation in the given `radix`. | |
/// | |
/// If `text` does not match the regular expression | |
/// "[+-][0-9a-zA-Z]+", or the value it denotes in the given `radix` | |
/// is not representable, the result is `nil`. | |
public init?(_ text: String, radix: Int = default) | |
} | |
extension UInt64 : _Reflectable { | |
} | |
extension UInt64 { | |
/// Construct with value `v.value`. | |
/// | |
/// - Requires: `v.value` can be represented as UInt64. | |
public init(_ v: UnicodeScalar) | |
} | |
extension UInt64 : CVarArgType, _CVarArgAlignedType { | |
} | |
/// A 8-bit unsigned integer value | |
/// type. | |
public struct UInt8 : UnsignedIntegerType, Comparable, Equatable { | |
/// A type that can represent the number of steps between pairs of | |
/// values. | |
public typealias Distance = Int | |
/// Create an instance initialized to zero. | |
public init() | |
/// Create an instance initialized to `value`. | |
public init(_ value: UInt8) | |
public init(_builtinIntegerLiteral value: Builtin.Int2048) | |
/// Create an instance initialized to `value`. | |
public init(integerLiteral value: UInt8) | |
public static var max: UInt8 { get } | |
public static var min: UInt8 { get } | |
} | |
extension UInt8 : Hashable { | |
/// The hash value. | |
/// | |
/// **Axiom:** `x == y` implies `x.hashValue == y.hashValue`. | |
/// | |
/// - Note: The hash value is not guaranteed to be stable across | |
/// different invocations of the same program. Do not persist the | |
/// hash value across program runs. | |
public var hashValue: Int { get } | |
} | |
extension UInt8 : CustomStringConvertible { | |
/// A textual representation of `self`. | |
public var description: String { get } | |
} | |
extension UInt8 : RandomAccessIndexType { | |
/// Returns the next consecutive value after `self`. | |
/// | |
/// - Requires: The next value is representable. | |
public func successor() -> UInt8 | |
/// Returns the previous consecutive value before `self`. | |
/// | |
/// - Requires: The previous value is representable. | |
public func predecessor() -> UInt8 | |
public func distanceTo(other: UInt8) -> Distance | |
public func advancedBy(n: Distance) -> UInt8 | |
} | |
extension UInt8 { | |
/// Add `lhs` and `rhs`, returning a result and a | |
/// `Bool` that is true iff the operation caused an arithmetic | |
/// overflow. | |
public static func addWithOverflow(lhs: UInt8, _ rhs: UInt8) -> (UInt8, overflow: Bool) | |
/// Subtract `lhs` and `rhs`, returning a result and a | |
/// `Bool` that is true iff the operation caused an arithmetic | |
/// overflow. | |
public static func subtractWithOverflow(lhs: UInt8, _ rhs: UInt8) -> (UInt8, overflow: Bool) | |
/// Multiply `lhs` and `rhs`, returning a result and a | |
/// `Bool` that is true iff the operation caused an arithmetic | |
/// overflow. | |
public static func multiplyWithOverflow(lhs: UInt8, _ rhs: UInt8) -> (UInt8, overflow: Bool) | |
/// Divide `lhs` and `rhs`, returning | |
/// a result and a `Bool` | |
/// that is true iff the operation caused an arithmetic overflow. | |
public static func divideWithOverflow(lhs: UInt8, _ rhs: UInt8) -> (UInt8, overflow: Bool) | |
/// Divide `lhs` and `rhs`, returning | |
/// the remainder and a `Bool` | |
/// that is true iff the operation caused an arithmetic overflow. | |
public static func remainderWithOverflow(lhs: UInt8, _ rhs: UInt8) -> (UInt8, overflow: Bool) | |
/// Represent this number using Swift's widest native unsigned | |
/// integer type. | |
public func toUIntMax() -> UIntMax | |
/// Explicitly convert to `IntMax`. | |
public func toIntMax() -> IntMax | |
} | |
extension UInt8 { | |
public init(_ v: Int8) | |
public init(_ v: UInt16) | |
/// Construct a `UInt8` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: UInt16) | |
public init(_ v: Int16) | |
/// Construct a `UInt8` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: Int16) | |
public init(_ v: UInt32) | |
/// Construct a `UInt8` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: UInt32) | |
public init(_ v: Int32) | |
/// Construct a `UInt8` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: Int32) | |
public init(_ v: UInt64) | |
/// Construct a `UInt8` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: UInt64) | |
public init(_ v: Int64) | |
/// Construct a `UInt8` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: Int64) | |
public init(_ v: UInt) | |
/// Construct a `UInt8` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: UInt) | |
public init(_ v: Int) | |
/// Construct a `UInt8` having the same bitwise representation as | |
/// the least significant bits of the provided bit pattern. | |
/// | |
/// No range or overflow checking occurs. | |
public init(truncatingBitPattern: Int) | |
/// Construct a `UInt8` having the same memory representation as | |
/// the `Int8` `bitPattern`. No range or overflow checking | |
/// occurs, and the resulting `UInt8` may not have the same numeric | |
/// value as `bitPattern`--it is only guaranteed to use the same | |
/// pattern of bits. | |
public init(bitPattern: Int8) | |
} | |
extension UInt8 : BitwiseOperationsType { | |
/// The empty bitset of type UInt8. | |
public static var allZeros: UInt8 { get } | |
} | |
extension UInt8 { | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Float) | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Double) | |
/// Construct an instance that approximates `other`. | |
public init(_ other: Float80) | |
} | |
extension UInt8 { | |
/// Construct from an ASCII representation in the given `radix`. | |
/// | |
/// If `text` does not match the regular expression | |
/// "[+-][0-9a-zA-Z]+", or the value it denotes in the given `radix` | |
/// is not representable, the result is `nil`. | |
public init?(_ text: String, radix: Int = default) | |
} | |
extension UInt8 : _Reflectable { | |
} | |
extension UInt8 : _StringElementType { | |
} | |
extension UInt8 { | |
/// Construct with value `v.value`. | |
/// | |
/// - Requires: `v.value` can be represented as ASCII (0..<128). | |
public init(ascii v: UnicodeScalar) | |
} | |
extension UInt8 : CVarArgType { | |
} | |
/// The largest native unsigned integer type. | |
public typealias UIntMax = UInt64 | |
/// A codec for [UTF-16](http://www.unicode.org/glossary/#UTF_16). | |
public struct UTF16 : UnicodeCodecType { | |
/// A type that can hold [code unit](http://www.unicode.org/glossary/#code_unit) values for this | |
/// encoding. | |
public typealias CodeUnit = UInt16 | |
public init() | |
/// Start or continue decoding a UTF sequence. | |
/// | |
/// In order to decode a code unit sequence completely, this function should | |
/// be called repeatedly until it returns `UnicodeDecodingResult.EmptyInput`. | |
/// Checking that the generator was exhausted is not sufficient. The decoder | |
/// can have an internal buffer that is pre-filled with data from the input | |
/// generator. | |
/// | |
/// Because of buffering, it is impossible to find the corresponding position | |
/// in the generator for a given returned `UnicodeScalar` or an error. | |
/// | |
/// - parameter next: A *generator* of code units to be decoded. | |
public mutating func decode<G : GeneratorType where G.Element == CodeUnit>(inout input: G) -> UnicodeDecodingResult | |
/// Encode a `UnicodeScalar` as a series of `CodeUnit`s by | |
/// calling `output` on each `CodeUnit`. | |
public static func encode(input: UnicodeScalar, output put: (CodeUnit) -> Void) | |
} | |
extension UTF16 { | |
/// Return the number of code units required to encode `x`. | |
@warn_unused_result | |
public static func width(x: UnicodeScalar) -> Int | |
/// Return the high surrogate code unit of a [surrogate pair](http://www.unicode.org/glossary/#surrogate_pair) representing | |
/// `x`. | |
/// | |
/// - Requires: `width(x) == 2`. | |
@warn_unused_result | |
public static func leadSurrogate(x: UnicodeScalar) -> CodeUnit | |
/// Return the low surrogate code unit of a [surrogate pair](http://www.unicode.org/glossary/#surrogate_pair) representing | |
/// `x`. | |
/// | |
/// - Requires: `width(x) == 2`. | |
@warn_unused_result | |
public static func trailSurrogate(x: UnicodeScalar) -> CodeUnit | |
@warn_unused_result | |
public static func isLeadSurrogate(x: CodeUnit) -> Bool | |
@warn_unused_result | |
public static func isTrailSurrogate(x: CodeUnit) -> Bool | |
/// Returns the number of UTF-16 code units required for the given code unit | |
/// sequence when transcoded to UTF-16, and a bit describing if the sequence | |
/// was found to contain only ASCII characters. | |
/// | |
/// If `repairIllFormedSequences` is `true`, the function always succeeds. | |
/// If it is `false`, `nil` is returned if an ill-formed code unit sequence is | |
/// found in `input`. | |
@warn_unused_result | |
public static func measure<Encoding : UnicodeCodecType, Input : GeneratorType where Encoding.CodeUnit == Input.Element>(_: Encoding.Type, input: Input, repairIllFormedSequences: Bool) -> (Int, Bool)? | |
} | |
/// A codec for [UTF-32](http://www.unicode.org/glossary/#UTF_32). | |
public struct UTF32 : UnicodeCodecType { | |
/// A type that can hold [code unit](http://www.unicode.org/glossary/#code_unit) values for this | |
/// encoding. | |
public typealias CodeUnit = UInt32 | |
public init() | |
/// Start or continue decoding a UTF sequence. | |
/// | |
/// In order to decode a code unit sequence completely, this function should | |
/// be called repeatedly until it returns `UnicodeDecodingResult.EmptyInput`. | |
/// Checking that the generator was exhausted is not sufficient. The decoder | |
/// can have an internal buffer that is pre-filled with data from the input | |
/// generator. | |
/// | |
/// Because of buffering, it is impossible to find the corresponding position | |
/// in the generator for a given returned `UnicodeScalar` or an error. | |
/// | |
/// - parameter next: A *generator* of code units to be decoded. | |
public mutating func decode<G : GeneratorType where G.Element == CodeUnit>(inout input: G) -> UnicodeDecodingResult | |
/// Encode a `UnicodeScalar` as a series of `CodeUnit`s by | |
/// calling `output` on each `CodeUnit`. | |
public static func encode(input: UnicodeScalar, output put: (CodeUnit) -> Void) | |
} | |
/// A codec for [UTF-8](http://www.unicode.org/glossary/#UTF_8). | |
public struct UTF8 : UnicodeCodecType { | |
/// A type that can hold [code unit](http://www.unicode.org/glossary/#code_unit) values for this | |
/// encoding. | |
public typealias CodeUnit = UInt8 | |
public init() | |
/// Start or continue decoding a UTF sequence. | |
/// | |
/// In order to decode a code unit sequence completely, this function should | |
/// be called repeatedly until it returns `UnicodeDecodingResult.EmptyInput`. | |
/// Checking that the generator was exhausted is not sufficient. The decoder | |
/// can have an internal buffer that is pre-filled with data from the input | |
/// generator. | |
/// | |
/// Because of buffering, it is impossible to find the corresponding position | |
/// in the generator for a given returned `UnicodeScalar` or an error. | |
/// | |
/// - parameter next: A *generator* of code units to be decoded. | |
public mutating func decode<G : GeneratorType where G.Element == CodeUnit>(inout next: G) -> UnicodeDecodingResult | |
/// Encode a `UnicodeScalar` as a series of `CodeUnit`s by | |
/// calling `output` on each `CodeUnit`. | |
public static func encode(input: UnicodeScalar, output put: (CodeUnit) -> Void) | |
/// Return `true` if `byte` is a continuation byte of the form | |
/// `0b10xxxxxx`. | |
@warn_unused_result | |
public static func isContinuation(byte: CodeUnit) -> Bool | |
} | |
/// A Unicode [encoding scheme](http://www.unicode.org/glossary/#character_encoding_scheme). | |
/// | |
/// Consists of an underlying [code unit](http://www.unicode.org/glossary/#code_unit) and functions to | |
/// translate between sequences of these code units and [unicode scalar values](http://www.unicode.org/glossary/#unicode_scalar_value). | |
public protocol UnicodeCodecType { | |
/// A type that can hold [code unit](http://www.unicode.org/glossary/#code_unit) values for this | |
/// encoding. | |
typealias CodeUnit | |
public init() | |
/// Start or continue decoding a UTF sequence. | |
/// | |
/// In order to decode a code unit sequence completely, this function should | |
/// be called repeatedly until it returns `UnicodeDecodingResult.EmptyInput`. | |
/// Checking that the generator was exhausted is not sufficient. The decoder | |
/// can have an internal buffer that is pre-filled with data from the input | |
/// generator. | |
/// | |
/// Because of buffering, it is impossible to find the corresponding position | |
/// in the generator for a given returned `UnicodeScalar` or an error. | |
/// | |
/// - parameter next: A *generator* of code units to be decoded. | |
public mutating func decode<G : GeneratorType where G.Element == CodeUnit>(inout next: G) -> UnicodeDecodingResult | |
/// Encode a `UnicodeScalar` as a series of `CodeUnit`s by | |
/// calling `output` on each `CodeUnit`. | |
public static func encode(input: UnicodeScalar, output: (Self.CodeUnit) -> Void) | |
} | |
/// The result of one Unicode decoding step. | |
/// | |
/// A unicode scalar value, an indication that no more unicode scalars | |
/// are available, or an indication of a decoding error. | |
public enum UnicodeDecodingResult { | |
case Result(UnicodeScalar) | |
case EmptyInput | |
case Error | |
/// Return true if `self` indicates no more unicode scalars are | |
/// available. | |
@warn_unused_result | |
public func isEmptyInput() -> Bool | |
} | |
/// A [Unicode scalar value](http://www.unicode.org/glossary/#unicode_scalar_value). | |
public struct UnicodeScalar : UnicodeScalarLiteralConvertible { | |
/// A numeric representation of `self`. | |
public var value: UInt32 { get } | |
public init(_builtinUnicodeScalarLiteral value: Builtin.Int32) | |
/// Create an instance initialized to `value`. | |
public init(unicodeScalarLiteral value: UnicodeScalar) | |
/// Creates an instance of the NUL scalar value. | |
public init() | |
/// Create an instance with numeric value `v`. | |
/// | |
/// - Requires: `v` is a valid Unicode scalar value. | |
public init(_ v: UInt32) | |
/// Create an instance with numeric value `v`. | |
/// | |
/// - Requires: `v` is a valid Unicode scalar value. | |
public init(_ v: UInt16) | |
/// Create an instance with numeric value `v`. | |
public init(_ v: UInt8) | |
/// Create a duplicate of `v`. | |
public init(_ v: UnicodeScalar) | |
/// Return a String representation of `self` . | |
/// | |
/// - parameter forceASCII: If `true`, forces most values into a numeric | |
/// representation. | |
@warn_unused_result | |
public func escape(asASCII forceASCII: Bool) -> String | |
/// Returns true if this is an ASCII character (code point 0 to 127 | |
/// inclusive). | |
@warn_unused_result | |
public func isASCII() -> Bool | |
} | |
extension UnicodeScalar : _Reflectable { | |
} | |
extension UnicodeScalar : Streamable { | |
/// Write a textual representation of `self` into `target`. | |
public func writeTo<Target : OutputStreamType>(inout target: Target) | |
} | |
extension UnicodeScalar : CustomStringConvertible, CustomDebugStringConvertible { | |
/// A textual representation of `self`. | |
public var description: String { get } | |
/// A textual representation of `self`, suitable for debugging. | |
public var debugDescription: String { get } | |
} | |
extension UnicodeScalar : Hashable { | |
/// The hash value. | |
/// | |
/// **Axiom:** `x == y` implies `x.hashValue == y.hashValue`. | |
/// | |
/// - Note: The hash value is not guaranteed to be stable across | |
/// different invocations of the same program. Do not persist the | |
/// hash value across program runs. | |
public var hashValue: Int { get } | |
} | |
extension UnicodeScalar { | |
/// Construct with value `v`. | |
/// | |
/// - Requires: `v` is a valid unicode scalar value. | |
public init(_ v: Int) | |
} | |
extension UnicodeScalar : Comparable, Equatable { | |
} | |
/// Conforming types can be initialized with string literals | |
/// containing a single [Unicode scalar value](http://www.unicode.org/glossary/#unicode_scalar_value). | |
public protocol UnicodeScalarLiteralConvertible { | |
typealias UnicodeScalarLiteralType | |
/// Create an instance initialized to `value`. | |
public init(unicodeScalarLiteral value: Self.UnicodeScalarLiteralType) | |
} | |
/// The default type for an otherwise-unconstrained unicode scalar literal. | |
public typealias UnicodeScalarType = String | |
/// A type for propagating an unmanaged object reference. | |
/// | |
/// When you use this type, you become partially responsible for | |
/// keeping the object alive. | |
public struct Unmanaged<Instance : AnyObject> { | |
/// Unsafely turn an opaque C pointer into an unmanaged | |
/// class reference. | |
/// | |
/// This operation does not change reference counts. | |
/// | |
/// let str: CFString = Unmanaged.fromOpaque(ptr).takeUnretainedValue() | |
@warn_unused_result | |
public static func fromOpaque(value: COpaquePointer) -> Unmanaged<Instance> | |
/// Unsafely turn an unmanaged class reference into an opaque | |
/// C pointer. | |
/// | |
/// This operation does not change reference counts. | |
/// | |
/// let str: CFString = Unmanaged.fromOpaque(ptr).takeUnretainedValue() | |
@warn_unused_result | |
public func toOpaque() -> COpaquePointer | |
/// Create an unmanaged reference with an unbalanced retain. | |
/// The object will leak if nothing eventually balances the retain. | |
/// | |
/// This is useful when passing an object to an API which Swift | |
/// does not know the ownership rules for, but you know that the | |
/// API expects you to pass the object at +1. | |
@warn_unused_result | |
public static func passRetained(value: Instance) -> Unmanaged<Instance> | |
/// Create an unmanaged reference without performing an unbalanced | |
/// retain. | |
/// | |
/// This is useful when passing a reference to an API which Swift | |
/// does not know the ownership rules for, but you know that the | |
/// API expects you to pass the object at +0. | |
/// | |
/// CFArraySetValueAtIndex(.passUnretained(array), i, | |
/// .passUnretained(object)) | |
@warn_unused_result | |
public static func passUnretained(value: Instance) -> Unmanaged<Instance> | |
/// Get the value of this unmanaged reference as a managed | |
/// reference without consuming an unbalanced retain of it. | |
/// | |
/// This is useful when a function returns an unmanaged reference | |
/// and you know that you're not responsible for releasing the result. | |
@warn_unused_result | |
public func takeUnretainedValue() -> Instance | |
/// Get the value of this unmanaged reference as a managed | |
/// reference and consume an unbalanced retain of it. | |
/// | |
/// This is useful when a function returns an unmanaged reference | |
/// and you know that you're responsible for releasing the result. | |
@warn_unused_result | |
public func takeRetainedValue() -> Instance | |
/// Perform an unbalanced retain of the object. | |
public func retain() -> Unmanaged<Instance> | |
/// Perform an unbalanced release of the object. | |
public func release() | |
/// Perform an unbalanced autorelease of the object. | |
public func autorelease() -> Unmanaged<Instance> | |
} | |
/// A non-owning pointer to buffer of `Element`s stored | |
/// contiguously in memory, presenting a `Collection` interface to the | |
/// underlying elements. | |
/// | |
/// The pointer should be aligned to `alignof(Element.self)`. | |
public struct UnsafeBufferPointer<Element> : CollectionType { | |
/// Always zero, which is the index of the first element in a | |
/// non-empty buffer. | |
public var startIndex: Int { get } | |
/// The "past the end" position; always identical to `count`. | |
/// | |
/// `endIndex` is not a valid argument to `subscript`, and is always | |
/// reachable from `startIndex` by zero or more applications of | |
/// `successor()`. | |
public var endIndex: Int { get } | |
public subscript (i: Int) -> Element { get } | |
/// Construct an UnsafePointer over the `count` contiguous | |
/// `Element` instances beginning at `start`. | |
public init(start: UnsafePointer<Element>, count: Int) | |
/// Return a *generator* over the elements of this *sequence*. | |
/// | |
/// - Complexity: O(1). | |
public func generate() -> UnsafeBufferPointerGenerator<Element> | |
/// A pointer to the first element of the buffer. | |
public var baseAddress: UnsafePointer<Element> { get } | |
/// The number of elements in the buffer. | |
public var count: Int { get } | |
} | |
extension UnsafeBufferPointer : CustomDebugStringConvertible { | |
/// A textual representation of `self`, suitable for debugging. | |
public var debugDescription: String { get } | |
} | |
/// A generator for the elements in the buffer referenced by | |
/// `UnsafeBufferPointer` or `UnsafeMutableBufferPointer`. | |
public struct UnsafeBufferPointerGenerator<Element> : GeneratorType, SequenceType { | |
/// Advance to the next element and return it, or `nil` if no next | |
/// element exists. | |
public mutating func next() -> Element? | |
} | |
/// A non-owning pointer to buffer of mutable `Element`s stored | |
/// contiguously in memory, presenting a `Collection` interface to the | |
/// underlying elements. | |
/// | |
/// The pointer should be aligned to `alignof(Element.self)`. | |
public struct UnsafeMutableBufferPointer<Element> : MutableCollectionType { | |
/// Always zero, which is the index of the first element in a | |
/// non-empty buffer. | |
public var startIndex: Int { get } | |
/// The "past the end" position; always identical to `count`. | |
/// | |
/// `endIndex` is not a valid argument to `subscript`, and is always | |
/// reachable from `startIndex` by zero or more applications of | |
/// `successor()`. | |
public var endIndex: Int { get } | |
public subscript (i: Int) -> Element { get nonmutating set } | |
/// Construct an UnsafeMutablePointer over the `count` contiguous | |
/// `Element` instances beginning at `start`. | |
public init(start: UnsafeMutablePointer<Element>, count: Int) | |
/// Return a *generator* over the elements of this *sequence*. | |
/// | |
/// - Complexity: O(1). | |
public func generate() -> UnsafeBufferPointerGenerator<Element> | |
/// A pointer to the first element of the buffer. | |
public var baseAddress: UnsafeMutablePointer<Element> { get } | |
/// The number of elements in the buffer. | |
public var count: Int { get } | |
} | |
extension UnsafeMutableBufferPointer : CustomDebugStringConvertible { | |
/// A textual representation of `self`, suitable for debugging. | |
public var debugDescription: String { get } | |
} | |
/// A pointer to an object of type `Memory`. This type provides no automated | |
/// memory management, and therefore the user must take care to allocate | |
/// and free memory appropriately. | |
/// | |
/// The pointer should be aligned to `alignof(Memory.self)`. | |
/// | |
/// The pointer can be in one of the following states: | |
/// | |
/// - memory is not allocated (for example, pointer is null, or memory has | |
/// been deallocated previously); | |
/// | |
/// - memory is allocated, but value has not been initialized; | |
/// | |
/// - memory is allocated and value is initialized. | |
public struct UnsafeMutablePointer<Memory> : RandomAccessIndexType, Hashable, NilLiteralConvertible, _PointerType { | |
public typealias Distance = Int | |
/// Construct a null pointer. | |
public init() | |
/// Convert from an opaque C pointer to a typed pointer. | |
/// | |
/// This is a fundamentally unsafe conversion. | |
public init(_ other: COpaquePointer) | |
/// Construct an `UnsafeMutablePointer` from a given address in memory. | |
/// | |
/// This is a fundamentally unsafe conversion. | |
public init(bitPattern: Int) | |
/// Construct an `UnsafeMutablePointer` from a given address in memory. | |
/// | |
/// This is a fundamentally unsafe conversion. | |
public init(bitPattern: UInt) | |
/// Convert from an `UnsafeMutablePointer` of a different type. | |
/// | |
/// This is a fundamentally unsafe conversion. | |
public init<U>(_ from: UnsafeMutablePointer<U>) | |
/// Convert from a `UnsafePointer` of a different type. | |
/// | |
/// This is a fundamentally unsafe conversion. | |
public init<U>(_ from: UnsafePointer<U>) | |
/// Create an instance initialized with `nil`. | |
public init(nilLiteral: ()) | |
/// Allocate memory for `num` objects of type `Memory`. | |
/// | |
/// - Postcondition: The memory is allocated, but not initialized. | |
@warn_unused_result | |
public static func alloc(num: Int) -> UnsafeMutablePointer<Memory> | |
/// Deallocate `num` objects. | |
/// | |
/// - parameter num: Number of objects to deallocate. Should match exactly | |
/// the value that was passed to `alloc()` (partial deallocations are not | |
/// possible). | |
/// | |
/// - Precondition: The memory is not initialized. | |
/// | |
/// - Postcondition: The memory has been deallocated. | |
public func dealloc(num: Int) | |
/// Access the underlying raw memory, getting and setting values. | |
public var memory: Memory { get nonmutating set } | |
/// Initialize the value the pointer points to, to construct | |
/// an object where there was no object previously stored. | |
/// | |
/// - Precondition: The memory is not initialized. | |
/// | |
/// - Postcondition: The memory is initalized; the value should eventually | |
/// be destroyed or moved from to avoid leaks. | |
public func initialize(newvalue: Memory) | |
/// Retrieve the value the pointer points to, moving it away | |
/// from the location referenced in memory. | |
/// | |
/// Equivalent to reading `memory` property and calling `destroy()`, | |
/// but more efficient. | |
/// | |
/// - Precondition: The memory is initialized. | |
/// | |
/// - Postcondition: The value has been destroyed and the memory must | |
/// be initialized before being used again. | |
@warn_unused_result | |
public func move() -> Memory | |
/// Assign from `count` values beginning at source into initialized | |
/// memory, proceeding from the first element to the last. | |
public func assignFrom(source: UnsafeMutablePointer<Memory>, count: Int) | |
/// Assign from `count` values beginning at `source` into | |
/// initialized memory, proceeding from the last value to the first. | |
/// Use this for assigning ranges into later memory that may overlap | |
/// with the source range. | |
/// | |
/// - Requires: Either `source` precedes `self` or follows `self + count`. | |
public func assignBackwardFrom(source: UnsafeMutablePointer<Memory>, count: Int) | |
/// Move `count` values beginning at source into raw memory, | |
/// transforming the source values into raw memory. | |
public func moveInitializeFrom(source: UnsafeMutablePointer<Memory>, count: Int) | |
/// Move `count` values beginning at `source` into uninitialized memory, | |
/// transforming the source values into raw memory, proceeding from | |
/// the last value to the first. Use this for copying ranges into | |
/// later memory that may overlap with the source range. | |
/// | |
/// - Requires: Either `source` precedes `self` or follows `self + count`. | |
public func moveInitializeBackwardFrom(source: UnsafeMutablePointer<Memory>, count: Int) | |
/// Copy `count` values beginning at source into raw memory. | |
/// | |
/// - Precondition: The memory is not initialized. | |
/// | |
/// - Requires: `self` and `source` may not overlap. | |
public func initializeFrom(source: UnsafeMutablePointer<Memory>, count: Int) | |
/// Copy the elements of `C` into raw memory. | |
/// | |
/// - Precondition: The memory is not initialized. | |
public func initializeFrom<C : CollectionType where C.Generator.Element == Memory>(source: C) | |
/// Assign from `count` values beginning at `source` into initialized | |
/// memory, transforming the source values into raw memory. | |
/// | |
/// - Requires: The `self` and `source` ranges may not overlap. | |
public func moveAssignFrom(source: UnsafeMutablePointer<Memory>, count: Int) | |
/// Destroy the object the pointer points to. | |
/// | |
/// - Precondition: The memory is initialized. | |
/// | |
/// - Postcondition: The value has been destroyed and the memory must | |
/// be initialized before being used again. | |
public func destroy() | |
/// Destroy the `count` objects the pointer points to. | |
/// - Precondition: The memory is initialized. | |
/// | |
/// - Postcondition: The value has been destroyed and the memory must | |
/// be initialized before being used again. | |
public func destroy(count: Int) | |
public subscript (i: Int) -> Memory { get nonmutating set } | |
/// The hash value. | |
/// | |
/// **Axiom:** `x == y` implies `x.hashValue == y.hashValue`. | |
/// | |
/// - Note: The hash value is not guaranteed to be stable across | |
/// different invocations of the same program. Do not persist the | |
/// hash value across program runs. | |
public var hashValue: Int { get } | |
/// Returns the next consecutive value after `self`. | |
/// | |
/// - Requires: The next value is representable. | |
public func successor() -> UnsafeMutablePointer<Memory> | |
/// Returns the previous consecutive value before `self`. | |
/// | |
/// - Requires: The previous value is representable. | |
public func predecessor() -> UnsafeMutablePointer<Memory> | |
public func distanceTo(x: UnsafeMutablePointer<Memory>) -> Int | |
public func advancedBy(n: Int) -> UnsafeMutablePointer<Memory> | |
} | |
extension UnsafeMutablePointer : CustomDebugStringConvertible { | |
/// A textual representation of `self`, suitable for debugging. | |
public var debugDescription: String { get } | |
} | |
extension UnsafeMutablePointer : _Reflectable { | |
} | |
extension UnsafeMutablePointer : CVarArgType { | |
} | |
/// A pointer to an object of type `Memory`. This type provides no automated | |
/// memory management, and therefore the user must take care to allocate | |
/// and free memory appropriately. | |
/// | |
/// The pointer should be aligned to `alignof(Memory.self)`. | |
/// | |
/// The pointer can be in one of the following states: | |
/// | |
/// - memory is not allocated (for example, pointer is null, or memory has | |
/// been deallocated previously); | |
/// | |
/// - memory is allocated, but value has not been initialized; | |
/// | |
/// - memory is allocated and value is initialized. | |
public struct UnsafePointer<Memory> : RandomAccessIndexType, Hashable, NilLiteralConvertible, _PointerType { | |
public typealias Distance = Int | |
/// Construct a null pointer. | |
public init() | |
/// Convert from an opaque C pointer to a typed pointer. | |
/// | |
/// This is a fundamentally unsafe conversion. | |
public init(_ other: COpaquePointer) | |
/// Construct an `UnsafePointer` from a given address in memory. | |
/// | |
/// This is a fundamentally unsafe conversion. | |
public init(bitPattern: Int) | |
/// Construct an `UnsafePointer` from a given address in memory. | |
/// | |
/// This is a fundamentally unsafe conversion. | |
public init(bitPattern: UInt) | |
/// Convert from an `UnsafeMutablePointer` of a different type. | |
/// | |
/// This is a fundamentally unsafe conversion. | |
public init<U>(_ from: UnsafeMutablePointer<U>) | |
/// Convert from a `UnsafePointer` of a different type. | |
/// | |
/// This is a fundamentally unsafe conversion. | |
public init<U>(_ from: UnsafePointer<U>) | |
/// Create an instance initialized with `nil`. | |
public init(nilLiteral: ()) | |
/// Access the underlying raw memory, getting values. | |
public var memory: Memory { get } | |
public subscript (i: Int) -> Memory { get } | |
/// The hash value. | |
/// | |
/// **Axiom:** `x == y` implies `x.hashValue == y.hashValue`. | |
/// | |
/// - Note: The hash value is not guaranteed to be stable across | |
/// different invocations of the same program. Do not persist the | |
/// hash value across program runs. | |
public var hashValue: Int { get } | |
/// Returns the next consecutive value after `self`. | |
/// | |
/// - Requires: The next value is representable. | |
public func successor() -> UnsafePointer<Memory> | |
/// Returns the previous consecutive value before `self`. | |
/// | |
/// - Requires: The previous value is representable. | |
public func predecessor() -> UnsafePointer<Memory> | |
public func distanceTo(x: UnsafePointer<Memory>) -> Int | |
public func advancedBy(n: Int) -> UnsafePointer<Memory> | |
} | |
extension UnsafePointer : CustomDebugStringConvertible { | |
/// A textual representation of `self`, suitable for debugging. | |
public var debugDescription: String { get } | |
} | |
extension UnsafePointer : _Reflectable { | |
} | |
extension UnsafePointer : CVarArgType { | |
} | |
/// A set of common requirements for Swift's unsigned integer types. | |
public protocol UnsignedIntegerType : _DisallowMixedSignArithmetic, IntegerType { | |
/// Represent this number using Swift's widest native unsigned | |
/// integer type. | |
@warn_unused_result | |
public func toUIntMax() -> UIntMax | |
/// Convert from Swift's widest unsigned integer type, trapping on | |
/// overflow. | |
public init(_: UIntMax) | |
} | |
/// An object that can manage the lifetime of storage backing a | |
/// `CVaListPointer`. | |
final public class VaListBuilder { | |
} | |
/// The empty tuple type. | |
/// | |
/// This is the default return type of functions for which no explicit | |
/// return type is specified. | |
public typealias Void = () | |
/// A generator for `Zip2Sequence`. | |
public struct Zip2Generator<Generator1 : GeneratorType, Generator2 : GeneratorType> : GeneratorType { | |
/// The type of element returned by `next()`. | |
public typealias Element = (Generator1.Element, Generator2.Element) | |
/// Construct around a pair of underlying generators. | |
public init(_ generator1: Generator1, _ generator2: Generator2) | |
/// Advance to the next element and return it, or `nil` if no next | |
/// element exists. | |
/// | |
/// - Requires: `next()` has not been applied to a copy of `self` | |
/// since the copy was made, and no preceding call to `self.next()` | |
/// has returned `nil`. | |
public mutating func next() -> (Generator1.Element, Generator2.Element)? | |
} | |
/// A sequence of pairs built out of two underlying sequences, where | |
/// the elements of the `i`th pair are the `i`th elements of each | |
/// underlying sequence. | |
public struct Zip2Sequence<Sequence1 : SequenceType, Sequence2 : SequenceType> : SequenceType { | |
public typealias Stream1 = Sequence1.Generator | |
public typealias Stream2 = Sequence2.Generator | |
/// A type whose instances can produce the elements of this | |
/// sequence, in order. | |
public typealias Generator = Zip2Generator<Sequence1.Generator, Sequence2.Generator> | |
/// Construct an instance that makes pairs of elements from `sequence1` and | |
/// `sequence2`. | |
public init(_ sequence1: Sequence1, _ sequence2: Sequence2) | |
/// Return a *generator* over the elements of this *sequence*. | |
/// | |
/// - Complexity: O(1). | |
public func generate() -> Zip2Generator<Sequence1.Generator, Sequence2.Generator> | |
} | |
public func ^(lhs: Int, rhs: Int) -> Int | |
public func ^(lhs: UInt, rhs: UInt) -> UInt | |
public func ^(lhs: Int64, rhs: Int64) -> Int64 | |
public func ^(lhs: UInt64, rhs: UInt64) -> UInt64 | |
public func ^(lhs: Int32, rhs: Int32) -> Int32 | |
public func ^(lhs: UInt32, rhs: UInt32) -> UInt32 | |
public func ^(lhs: UInt16, rhs: UInt16) -> UInt16 | |
public func ^(lhs: Int16, rhs: Int16) -> Int16 | |
public func ^(lhs: Int8, rhs: Int8) -> Int8 | |
public func ^(lhs: UInt8, rhs: UInt8) -> UInt8 | |
public func ^=(inout lhs: Int64, rhs: Int64) | |
public func ^=(inout lhs: UInt64, rhs: UInt64) | |
public func ^=(inout lhs: Int32, rhs: Int32) | |
@warn_unused_result | |
public func ^=<T : BitwiseOperationsType>(inout lhs: T, rhs: T) | |
public func ^=(inout lhs: Int, rhs: Int) | |
public func ^=(inout lhs: UInt32, rhs: UInt32) | |
public func ^=(inout lhs: Int16, rhs: Int16) | |
public func ^=(inout lhs: UInt, rhs: UInt) | |
public func ^=(inout lhs: UInt16, rhs: UInt16) | |
public func ^=(inout lhs: Int8, rhs: Int8) | |
public func ^=(inout lhs: UInt8, rhs: UInt8) | |
/// The underlying buffer for an ArrayType conforms to | |
/// `_ArrayBufferType`. This buffer does not provide value semantics. | |
public protocol _ArrayBufferType : MutableCollectionType { | |
/// The type of elements stored in the buffer. | |
typealias Element | |
/// Create an empty buffer. | |
public init() | |
/// Adopt the entire buffer, presenting it at the provided `startIndex`. | |
public init(_ buffer: _ContiguousArrayBuffer<Self.Element>, shiftedToStartIndex: Int) | |
public subscript (index: Int) -> Self.Element { get nonmutating set } | |
/// If this buffer is backed by a uniquely-referenced mutable | |
/// `_ContiguousArrayBuffer` that can be grown in-place to allow the `self` | |
/// buffer store `minimumCapacity` elements, returns that buffer. | |
/// Otherwise, returns nil. | |
/// | |
/// - Note: The result's firstElementAddress may not match ours, if we are a | |
/// _SliceBuffer. | |
/// | |
/// - Note: This function must remain mutating; otherwise the buffer | |
/// may acquire spurious extra references, which will cause | |
/// unnecessary reallocation. | |
@warn_unused_result | |
public mutating func requestUniqueMutableBackingBuffer(minimumCapacity: Int) -> _ContiguousArrayBuffer<Self.Element>? | |
/// Returns true iff this buffer is backed by a uniquely-referenced mutable | |
/// _ContiguousArrayBuffer. | |
/// | |
/// - Note: This function must remain mutating; otherwise the buffer | |
/// may acquire spurious extra references, which will cause | |
/// unnecessary reallocation. | |
@warn_unused_result | |
public mutating func isMutableAndUniquelyReferenced() -> Bool | |
/// If this buffer is backed by a `_ContiguousArrayBuffer` | |
/// containing the same number of elements as `self`, return it. | |
/// Otherwise, return `nil`. | |
@warn_unused_result | |
public func requestNativeBuffer() -> _ContiguousArrayBuffer<Self.Element>? | |
/// Replace the given `subRange` with the first `newCount` elements of | |
/// the given collection. | |
/// | |
/// - Requires: This buffer is backed by a uniquely-referenced | |
/// `_ContiguousArrayBuffer`. | |
public mutating func replace<C : CollectionType where C.Generator.Element == Element>(subRange subRange: Range<Int>, with newCount: Int, elementsOf newValues: C) | |
public subscript (subRange: Range<Int>) -> _SliceBuffer<Self.Element> { get } | |
/// Call `body(p)`, where `p` is an `UnsafeBufferPointer` over the | |
/// underlying contiguous storage. If no such storage exists, it is | |
/// created on-demand. | |
public func withUnsafeBufferPointer<R>(@noescape body: (UnsafeBufferPointer<Self.Element>) throws -> R) rethrows -> R | |
/// Call `body(p)`, where `p` is an `UnsafeMutableBufferPointer` | |
/// over the underlying contiguous storage. | |
/// | |
/// - Requires: Such contiguous storage exists or the buffer is empty. | |
public mutating func withUnsafeMutableBufferPointer<R>(@noescape body: (UnsafeMutableBufferPointer<Self.Element>) throws -> R) rethrows -> R | |
/// The number of elements the buffer stores. | |
public var count: Int { get set } | |
/// The number of elements the buffer can store without reallocation. | |
public var capacity: Int { get } | |
/// An object that keeps the elements stored in this buffer alive. | |
public var owner: AnyObject { get } | |
/// If the elements are stored contiguously, a pointer to the first | |
/// element. Otherwise, `nil`. | |
public var firstElementAddress: UnsafeMutablePointer<Self.Element> { get } | |
/// Return a base address to which you can add an index `i` to get the address | |
/// of the corresponding element at `i`. | |
public var subscriptBaseAddress: UnsafeMutablePointer<Self.Element> { get } | |
/// A value that identifies the storage used by the buffer. Two | |
/// buffers address the same elements when they have the same | |
/// identity and count. | |
public var identity: UnsafePointer<Void> { get } | |
public var startIndex: Int { get } | |
} | |
extension _ArrayBufferType { | |
public var subscriptBaseAddress: UnsafeMutablePointer<Self.Element> { get } | |
public mutating func replace<C : CollectionType where C.Generator.Element == Element>(subRange subRange: Range<Int>, with newCount: Int, elementsOf newValues: C) | |
} | |
public protocol _ArrayType : RangeReplaceableCollectionType, MutableSliceable, ArrayLiteralConvertible { | |
/// Construct an array of `count` elements, each initialized to `repeatedValue`. | |
public init(count: Int, repeatedValue: Self.Generator.Element) | |
/// The number of elements the Array stores. | |
public var count: Int { get } | |
/// The number of elements the Array can store without reallocation. | |
public var capacity: Int { get } | |
/// `true` if and only if the Array is empty. | |
public var isEmpty: Bool { get } | |
public subscript (index: Int) -> Self.Generator.Element { get set } | |
/// Reserve enough space to store minimumCapacity elements. | |
/// | |
/// - Postcondition: `capacity >= minimumCapacity` and the array has | |
/// mutable contiguous storage. | |
/// | |
/// - Complexity: O(`count`). | |
public mutating func reserveCapacity(minimumCapacity: Int) | |
/// Operator form of `appendContentsOf`. | |
public func +=<S : SequenceType where S.Generator.Element == Generator.Element>(inout lhs: Self, rhs: S) | |
/// Insert `newElement` at index `i`. | |
/// | |
/// Invalidates all indices with respect to `self`. | |
/// | |
/// - Complexity: O(`self.count`). | |
/// | |
/// - Requires: `atIndex <= count`. | |
public mutating func insert(newElement: Self.Generator.Element, atIndex i: Int) | |
/// Remove and return the element at the given index. | |
/// | |
/// - returns: The removed element. | |
/// | |
/// - Complexity: Worst case O(N). | |
/// | |
/// - Requires: `count > index`. | |
public mutating func removeAtIndex(index: Int) -> Self.Generator.Element | |
public init(_ buffer: Self._Buffer) | |
} | |
/// Some types require alignment greater than Int on some architectures. | |
public protocol _CVarArgAlignedType : CVarArgType { | |
} | |
/// Floating point types need to be passed differently on x86_64 | |
/// systems. CoreGraphics uses this to make CGFloat work properly. | |
public protocol _CVarArgPassedAsDouble : CVarArgType { | |
} | |
public protocol _CollectionWrapperType : _SequenceWrapperType { | |
typealias Base : CollectionType | |
typealias Index : ForwardIndexType = Self.Base.Index | |
} | |
/// A container is destructor safe if whether it may store to memory on | |
/// destruction only depends on its type parameters. | |
/// For example, whether `Array<T>` may store to memory on destruction depends | |
/// only on `T`. | |
/// If `T` is an `Int` we know the `Array<Int>` does not store to memory during | |
/// destruction. If `T` is an arbitrary class `Array<MemoryUnsafeDestructorClass>` | |
/// then the compiler will deduce may store to memory on destruction because | |
/// `MemoryUnsafeDestructorClass`'s destructor may store to memory on destruction. | |
public protocol _DestructorSafeContainer { | |
} | |
/// This protocol is an implementation detail of `UnsignedIntegerType`; | |
/// do not use it directly. | |
public protocol _DisallowMixedSignArithmetic : _IntegerType { | |
} | |
/// This protocol is an implementation detail of `ForwardIndexType`; do | |
/// not use it directly. | |
/// | |
/// Its requirements are inherited by `ForwardIndexType` and thus must | |
/// be satisfied by types conforming to that protocol. | |
public protocol _Incrementable : Equatable { | |
/// Return the next consecutive value in a discrete sequence of | |
/// `Self` values. | |
/// | |
/// - Requires: `self` has a well-defined successor. | |
@warn_unused_result | |
public func successor() -> Self | |
} | |
/// This protocol is an implementation detail of `IntegerArithmeticType`; do | |
/// not use it directly. | |
/// | |
/// Its requirements are inherited by `IntegerArithmeticType` and thus must | |
/// be satisfied by types conforming to that protocol. | |
public protocol _IntegerArithmeticType { | |
/// Add `lhs` and `rhs`, returning a result and a `Bool` that is | |
/// true iff the operation caused an arithmetic overflow. | |
public static func addWithOverflow(lhs: Self, _ rhs: Self) -> (Self, overflow: Bool) | |
/// Subtract `lhs` and `rhs`, returning a result and a `Bool` that is | |
/// true iff the operation caused an arithmetic overflow. | |
public static func subtractWithOverflow(lhs: Self, _ rhs: Self) -> (Self, overflow: Bool) | |
/// Multiply `lhs` and `rhs`, returning a result and a `Bool` that is | |
/// true iff the operation caused an arithmetic overflow. | |
public static func multiplyWithOverflow(lhs: Self, _ rhs: Self) -> (Self, overflow: Bool) | |
/// Divide `lhs` and `rhs`, returning a result and a `Bool` that is | |
/// true iff the operation caused an arithmetic overflow. | |
public static func divideWithOverflow(lhs: Self, _ rhs: Self) -> (Self, overflow: Bool) | |
/// Divide `lhs` and `rhs`, returning the remainder and a `Bool` that is | |
/// true iff the operation caused an arithmetic overflow. | |
public static func remainderWithOverflow(lhs: Self, _ rhs: Self) -> (Self, overflow: Bool) | |
} | |
/// This protocol is an implementation detail of `IntegerType`; do | |
/// not use it directly. | |
public protocol _IntegerType : IntegerLiteralConvertible, CustomStringConvertible, Hashable, IntegerArithmeticType, BitwiseOperationsType, _Incrementable { | |
} | |
/// The type returned by `_reflect(x)`; supplies an API for runtime | |
/// reflection on `x`. | |
public protocol _MirrorType { | |
/// The instance being reflected. | |
public var value: Any { get } | |
/// Identical to `value.dynamicType`. | |
public var valueType: Any.Type { get } | |
/// A unique identifier for `value` if it is a class instance; `nil` | |
/// otherwise. | |
public var objectIdentifier: ObjectIdentifier? { get } | |
/// The count of `value`'s logical children. | |
public var count: Int { get } | |
public subscript (i: Int) -> (String, _MirrorType) { get } | |
/// A string description of `value`. | |
public var summary: String { get } | |
/// A rich representation of `value` for an IDE, or `nil` if none is supplied. | |
public var quickLookObject: PlaygroundQuickLook? { get } | |
/// How `value` should be presented in an IDE. | |
public var disposition: _MirrorDisposition { get } | |
} | |
/// A shadow for the "core operations" of NSArray. | |
/// | |
/// Covers a set of operations everyone needs to implement in order to | |
/// be a useful `NSArray` subclass. | |
@objc public protocol _NSArrayCoreType : _NSCopyingType, _NSFastEnumerationType { | |
public func objectAtIndex(index: Int) -> AnyObject | |
public func getObjects(_: UnsafeMutablePointer<AnyObject>, range: _SwiftNSRange) | |
public func countByEnumeratingWithState(state: UnsafeMutablePointer<_SwiftNSFastEnumerationState>, objects: UnsafeMutablePointer<AnyObject>, count: Int) -> Int | |
public var count: Int { get } | |
} | |
/// A shadow for the `NSCopying` protocol. | |
@objc public protocol _NSCopyingType : _ShadowProtocol { | |
public func copyWithZone(zone: _SwiftNSZone) -> AnyObject | |
} | |
/// A shadow for the "core operations" of NSDictionary. | |
/// | |
/// Covers a set of operations everyone needs to implement in order to | |
/// be a useful `NSDictionary` subclass. | |
@objc public protocol _NSDictionaryCoreType : _NSCopyingType, _NSFastEnumerationType { | |
public init(objects: UnsafePointer<AnyObject?>, forKeys: UnsafePointer<Void>, count: Int) | |
public var count: Int { get } | |
public func objectForKey(aKey: AnyObject) -> AnyObject? | |
public func keyEnumerator() -> _NSEnumeratorType | |
public func copyWithZone(zone: _SwiftNSZone) -> AnyObject | |
public func getObjects(objects: UnsafeMutablePointer<AnyObject>, andKeys keys: UnsafeMutablePointer<AnyObject>) | |
public func countByEnumeratingWithState(state: UnsafeMutablePointer<_SwiftNSFastEnumerationState>, objects: UnsafeMutablePointer<AnyObject>, count: Int) -> Int | |
} | |
/// A shadow for the API of `NSDictionary` we will use in the core | |
/// stdlib. | |
/// | |
/// `NSDictionary` operations, in addition to those on | |
/// `_NSDictionaryCoreType`, that we need to use from the core stdlib. | |
/// Distinct from `_NSDictionaryCoreType` because we don't want to be | |
/// forced to implement operations that `NSDictionary` already | |
/// supplies. | |
@objc public protocol _NSDictionaryType : _NSDictionaryCoreType { | |
public func getObjects(objects: UnsafeMutablePointer<AnyObject>, andKeys keys: UnsafeMutablePointer<AnyObject>) | |
} | |
/// A shadow for the `NSEnumerator` class. | |
@objc public protocol _NSEnumeratorType : _ShadowProtocol { | |
public init() | |
public func nextObject() -> AnyObject? | |
} | |
/// A shadow for the `NSFastEnumeration` protocol. | |
@objc public protocol _NSFastEnumerationType : _ShadowProtocol { | |
public func countByEnumeratingWithState(state: UnsafeMutablePointer<_SwiftNSFastEnumerationState>, objects: UnsafeMutablePointer<AnyObject>, count: Int) -> Int | |
} | |
/// A shadow for the "core operations" of NSSet. | |
/// | |
/// Covers a set of operations everyone needs to implement in order to | |
/// be a useful `NSSet` subclass. | |
@objc public protocol _NSSetCoreType : _NSCopyingType, _NSFastEnumerationType { | |
public init(objects: UnsafePointer<AnyObject?>, count: Int) | |
public var count: Int { get } | |
public func member(object: AnyObject) -> AnyObject? | |
public func objectEnumerator() -> _NSEnumeratorType | |
public func copyWithZone(zone: _SwiftNSZone) -> AnyObject | |
public func countByEnumeratingWithState(state: UnsafeMutablePointer<_SwiftNSFastEnumerationState>, objects: UnsafeMutablePointer<AnyObject>, count: Int) -> Int | |
} | |
/// A shadow for the API of NSSet we will use in the core | |
/// stdlib. | |
/// | |
/// `NSSet` operations, in addition to those on | |
/// `_NSSetCoreType`, that we need to use from the core stdlib. | |
/// Distinct from `_NSSetCoreType` because we don't want to be | |
/// forced to implement operations that `NSSet` already | |
/// supplies. | |
@objc public protocol _NSSetType : _NSSetCoreType { | |
} | |
@objc public protocol _NSStringCoreType : _NSCopyingType, _NSFastEnumerationType { | |
public func length() -> Int | |
public func characterAtIndex(index: Int) -> UInt16 | |
} | |
/// A Swift Array or Dictionary of types conforming to | |
/// `_ObjectiveCBridgeable` can be passed to Objective-C as an NSArray or | |
/// NSDictionary, respectively. The elements of the resulting NSArray | |
/// or NSDictionary will be the result of calling `_bridgeToObjectiveC` | |
/// on each elmeent of the source container. | |
public protocol _ObjectiveCBridgeable { | |
} | |
/// A stdlib-internal protocol modeled by the intrinsic pointer types, | |
/// UnsafeMutablePointer, UnsafePointer, and | |
/// AutoreleasingUnsafeMutablePointer. | |
public protocol _PointerType { | |
} | |
/// Used to force conformers of RandomAccessIndexType to implement | |
/// `advancedBy` methods and `distanceTo`. | |
public protocol _RandomAccessAmbiguity { | |
typealias Distance : _SignedIntegerType = Int | |
} | |
extension _RandomAccessAmbiguity { | |
@warn_unused_result | |
public func advancedBy(n: Self.Distance) -> Self | |
} | |
/// Customizes the result of `_reflect(x)`, where `x` is a conforming | |
/// type. | |
public protocol _Reflectable { | |
} | |
public protocol _ReverseCollectionType : CollectionType { | |
typealias Index : ReverseIndexType | |
typealias Base : CollectionType | |
} | |
extension _ReverseCollectionType where Self : CollectionType, Self.Index.Base == Self.Base.Index { | |
public var startIndex: Self.Index { get } | |
public var endIndex: Self.Index { get } | |
public subscript (position: Self.Index) -> Self.Base.Generator.Element { get } | |
} | |
/// A type that is just a wrapper over some base Sequence | |
public protocol _SequenceWrapperType { | |
typealias Base : SequenceType | |
typealias Generator : GeneratorType = Self.Base.Generator | |
} | |
@objc public protocol _ShadowProtocol { | |
} | |
/// This protocol is an implementation detail of `SignedIntegerType`; | |
/// do not use it directly. | |
public protocol _SignedIntegerType : _IntegerType, SignedNumberType { | |
/// Represent this number using Swift's widest native signed integer | |
/// type. | |
@warn_unused_result | |
public func toIntMax() -> IntMax | |
/// Convert from Swift's widest signed integer type, trapping on | |
/// overflow. | |
public init(_: IntMax) | |
} | |
public protocol _SinkType { | |
} | |
/// Instances of conforming types are used in internal `String` | |
/// representation. | |
public protocol _StringElementType { | |
} | |
/// Return the absolute value of `x`. | |
/// | |
/// Concrete instances of `SignedNumberType` can specialize this | |
/// function by conforming to `AbsoluteValuable`. | |
public func abs<T : SignedNumberType>(x: T) -> T | |
/// Returns the minimum memory alignment of `T`. | |
@warn_unused_result | |
public func alignof<T>(_: T.Type) -> Int | |
/// Returns the minimum memory alignment of `T`. | |
@warn_unused_result | |
public func alignofValue<T>(_: T) -> Int | |
/// Traditional C-style assert with an optional message. | |
/// | |
/// Use this function for internal sanity checks that are active | |
/// during testing but do not impact performance of shipping code. | |
/// To check for invalid usage in Release builds; see `precondition`. | |
/// | |
/// * In playgrounds and -Onone builds (the default for Xcode's Debug | |
/// configuration): if `condition` evaluates to false, stop program | |
/// execution in a debuggable state after printing `message`. | |
/// | |
/// * In -O builds (the default for Xcode's Release configuration), | |
/// `condition` is not evaluated, and there are no effects. | |
/// | |
/// * In -Ounchecked builds, `condition` is not evaluated, but the | |
/// optimizer may assume that it *would* evaluate to `true`. Failure | |
/// to satisfy that assumption in -Ounchecked builds is a serious | |
/// programming error. | |
public func assert(@autoclosure condition: () -> Bool, @autoclosure _ message: () -> String = default, file: StaticString = default, line: UInt = default) | |
/// Indicate that an internal sanity check failed. | |
/// | |
/// Use this function to stop the program, without impacting the | |
/// performance of shipping code, when control flow is not expected to | |
/// reach the call (e.g. in the `default` case of a `switch` where you | |
/// have knowledge that one of the other cases must be satisfied). To | |
/// protect code from invalid usage in Release builds; see | |
/// `preconditionFailure`. | |
/// | |
/// * In playgrounds and -Onone builds (the default for Xcode's Debug | |
/// configuration) stop program execution in a debuggable state | |
/// after printing `message`. | |
/// | |
/// * In -O builds, has no effect. | |
/// | |
/// * In -Ounchecked builds, the optimizer may assume that this | |
/// function will never be called. Failure to satisfy that assumption | |
/// is a serious programming error. | |
public func assertionFailure(@autoclosure message: () -> String = default, file: StaticString = default, line: UInt = default) | |
/// Writes the textual representations of `items` most suitable for | |
/// debugging, separated by `separator` and terminated by | |
/// `terminator`, into `output`. | |
/// | |
/// The textual representations are obtained for each `item` via | |
/// the expression `String(reflecting: item)`. | |
/// | |
/// - Note: To print without a trailing newline, pass `terminator: ""` | |
/// | |
/// - SeeAlso: `print`, Streamable`, `CustomStringConvertible`, | |
/// `CustomDebugStringConvertible` | |
public func debugPrint<Target : OutputStreamType>(items: Any..., separator: String = default, terminator: String = default, inout toStream output: Target) | |
/// Writes the textual representations of `items` most suitable for | |
/// debugging, separated by `separator` and terminated by | |
/// `terminator`, into the standard output. | |
/// | |
/// The textual representations are obtained for each `item` via | |
/// the expression `String(reflecting: item)`. | |
/// | |
/// - Note: To print without a trailing newline, pass `terminator: ""` | |
/// | |
/// - SeeAlso: `print`, Streamable`, `CustomStringConvertible`, | |
/// `CustomDebugStringConvertible` | |
public func debugPrint(items: Any..., separator: String = default, terminator: String = default) | |
/// Dump an object's contents using its mirror to the specified output stream. | |
public func dump<T, TargetStream : OutputStreamType>(x: T, inout _ targetStream: TargetStream, name: String? = default, indent: Int = default, maxDepth: Int = default, maxItems: Int = default) -> T | |
/// Dump an object's contents using its mirror to standard output. | |
public func dump<T>(x: T, name: String? = default, indent: Int = default, maxDepth: Int = default, maxItems: Int = default) -> T | |
/// Unconditionally print a `message` and stop execution. | |
@noreturn public func fatalError(@autoclosure message: () -> String = default, file: StaticString = default, line: UInt = default) | |
/// Returns a `CVaListPointer` built from `args` that's backed by | |
/// autoreleased storage. | |
/// | |
/// - Warning: This function is best avoided in favor of | |
/// `withVaList`, but occasionally (i.e. in a `class` initializer) you | |
/// may find that the language rules don't allow you to use | |
/// `withVaList` as intended. | |
@warn_unused_result | |
public func getVaList(args: [CVarArgType]) -> CVaListPointer | |
/// Returns `true` iff `object` is a non-`@objc` class instance with a single | |
/// strong reference. | |
/// | |
/// * Does *not* modify `object`; the use of `inout` is an | |
/// implementation artifact. | |
/// * Weak references do not affect the result of this function. | |
/// | |
/// Useful for implementing the copy-on-write optimization for the | |
/// deep storage of value types: | |
/// | |
/// mutating func modifyMe(arg: X) { | |
/// if isUniquelyReferenced(&myStorage) { | |
/// myStorage.modifyInPlace(arg) | |
/// } | |
/// else { | |
/// myStorage = myStorage.createModified(arg) | |
/// } | |
/// } | |
/// | |
/// This function is safe to use for `mutating` functions in | |
/// multithreaded code because a false positive would imply that there | |
/// is already a user-level data race on the value being mutated. | |
public func isUniquelyReferenced<T : NonObjectiveCBase>(inout object: T) -> Bool | |
/// Returns `true` iff `object` is a non-`@objc` class instance with | |
/// a single strong reference. | |
/// | |
/// * Does *not* modify `object`; the use of `inout` is an | |
/// implementation artifact. | |
/// * If `object` is an Objective-C class instance, returns `false`. | |
/// * Weak references do not affect the result of this function. | |
/// | |
/// Useful for implementing the copy-on-write optimization for the | |
/// deep storage of value types: | |
/// | |
/// mutating func modifyMe(arg: X) { | |
/// if isUniquelyReferencedNonObjC(&myStorage) { | |
/// myStorage.modifyInPlace(arg) | |
/// } | |
/// else { | |
/// myStorage = self.createModified(myStorage, arg) | |
/// } | |
/// } | |
/// | |
/// This function is safe to use for `mutating` functions in | |
/// multithreaded code because a false positive would imply that there | |
/// is already a user-level data race on the value being mutated. | |
public func isUniquelyReferencedNonObjC<T : AnyObject>(inout object: T?) -> Bool | |
/// Returns `true` iff `object` is a non-`@objc` class instance with | |
/// a single strong reference. | |
/// | |
/// * Does *not* modify `object`; the use of `inout` is an | |
/// implementation artifact. | |
/// * If `object` is an Objective-C class instance, returns `false`. | |
/// * Weak references do not affect the result of this function. | |
/// | |
/// Useful for implementing the copy-on-write optimization for the | |
/// deep storage of value types: | |
/// | |
/// mutating func modifyMe(arg: X) { | |
/// if isUniquelyReferencedNonObjC(&myStorage) { | |
/// myStorage.modifyInPlace(arg) | |
/// } | |
/// else { | |
/// myStorage = self.createModified(myStorage, arg) | |
/// } | |
/// } | |
/// | |
/// This function is safe to use for `mutating` functions in | |
/// multithreaded code because a false positive would imply that there | |
/// is already a user-level data race on the value being mutated. | |
public func isUniquelyReferencedNonObjC<T : AnyObject>(inout object: T) -> Bool | |
/// Returns the greatest argument passed. | |
@warn_unused_result | |
public func max<T : Comparable>(x: T, _ y: T, _ z: T, _ rest: T...) -> T | |
/// Returns the greater of `x` and `y`. | |
@warn_unused_result | |
public func max<T : Comparable>(x: T, _ y: T) -> T | |
/// Returns the lesser of `x` and `y`. | |
@warn_unused_result | |
public func min<T : Comparable>(x: T, _ y: T) -> T | |
/// Returns the least argument passed. | |
@warn_unused_result | |
public func min<T : Comparable>(x: T, _ y: T, _ z: T, _ rest: T...) -> T | |
/// Convert `x` to type `U`, trapping on overflow in -Onone and -O | |
/// builds. | |
/// | |
/// Typically used to do conversion to any contextually-deduced | |
/// integer type: | |
/// | |
/// func f(x: Int32) {} | |
/// func g(x: UInt64) { f(numericCast(x)) } | |
@warn_unused_result | |
public func numericCast<T : UnsignedIntegerType, U : _SignedIntegerType>(x: T) -> U | |
/// Convert `x` to type `U`, trapping on overflow in -Onone and -O | |
/// builds. | |
/// | |
/// Typically used to do conversion to any contextually-deduced | |
/// integer type: | |
/// | |
/// func f(x: UInt32) {} | |
/// func g(x: Int64) { f(numericCast(x)) } | |
@warn_unused_result | |
public func numericCast<T : _SignedIntegerType, U : UnsignedIntegerType>(x: T) -> U | |
/// Convert `x` to type `U`, trapping on overflow in -Onone and -O | |
/// builds. | |
/// | |
/// Typically used to do conversion to any contextually-deduced | |
/// integer type: | |
/// | |
/// func f(x: UInt32) {} | |
/// func g(x: UInt64) { f(numericCast(x)) } | |
@warn_unused_result | |
public func numericCast<T : UnsignedIntegerType, U : UnsignedIntegerType>(x: T) -> U | |
/// Convert `x` to type `U`, trapping on overflow in -Onone and -O | |
/// builds. | |
/// | |
/// Typically used to do conversion to any contextually-deduced | |
/// integer type: | |
/// | |
/// func f(x: Int32) {} | |
/// func g(x: Int64) { f(numericCast(x)) } | |
@warn_unused_result | |
public func numericCast<T : _SignedIntegerType, U : _SignedIntegerType>(x: T) -> U | |
/// Check a necessary condition for making forward progress. | |
/// | |
/// Use this function to detect conditions that must prevent the | |
/// program from proceeding even in shipping code. | |
/// | |
/// * In playgrounds and -Onone builds (the default for Xcode's Debug | |
/// configuration): if `condition` evaluates to false, stop program | |
/// execution in a debuggable state after printing `message`. | |
/// | |
/// * In -O builds (the default for Xcode's Release configuration): | |
/// if `condition` evaluates to false, stop program execution. | |
/// | |
/// * In -Ounchecked builds, `condition` is not evaluated, but the | |
/// optimizer may assume that it *would* evaluate to `true`. Failure | |
/// to satisfy that assumption in -Ounchecked builds is a serious | |
/// programming error. | |
public func precondition(@autoclosure condition: () -> Bool, @autoclosure _ message: () -> String = default, file: StaticString = default, line: UInt = default) | |
/// Indicate that a precondition was violated. | |
/// | |
/// Use this function to stop the program when control flow can only | |
/// reach the call if your API was improperly used. | |
/// | |
/// * In playgrounds and -Onone builds (the default for Xcode's Debug | |
/// configuration), stop program execution in a debuggable state | |
/// after printing `message`. | |
/// | |
/// * In -O builds (the default for Xcode's Release configuration), | |
/// stop program execution. | |
/// | |
/// * In -Ounchecked builds, the optimizer may assume that this | |
/// function will never be called. Failure to satisfy that assumption | |
/// is a serious programming error. | |
@noreturn public func preconditionFailure(@autoclosure message: () -> String = default, file: StaticString = default, line: UInt = default) | |
/// Writes the textual representations of `items`, separated by | |
/// `separator` and terminated by `terminator`, into `output`. | |
/// | |
/// The textual representations are obtained for each `item` via | |
/// the expression `String(item)`. | |
/// | |
/// - Note: To print without a trailing newline, pass `terminator: ""` | |
/// | |
/// - SeeAlso: `debugPrint`, Streamable`, `CustomStringConvertible`, | |
/// `CustomDebugStringConvertible` | |
public func print<Target : OutputStreamType>(items: Any..., separator: String = default, terminator: String = default, inout toStream output: Target) | |
/// Writes the textual representations of `items`, separated by | |
/// `separator` and terminated by `terminator`, into the standard | |
/// output. | |
/// | |
/// The textual representations are obtained for each `item` via | |
/// the expression `String(item)`. | |
/// | |
/// - Note: To print without a trailing newline, pass `terminator: ""` | |
/// | |
/// - SeeAlso: `debugPrint`, Streamable`, `CustomStringConvertible`, | |
/// `CustomDebugStringConvertible` | |
public func print(items: Any..., separator: String = default, terminator: String = default) | |
/// Returns `Character`s read from standard input through the end of the | |
/// current line or until EOF is reached, or `nil` if EOF has already been | |
/// reached. | |
/// | |
/// If `stripNewline` is `true`, newline characters and character | |
/// combinations will be stripped from the result. This is the default. | |
/// | |
/// Standard input is interpreted as `UTF-8`. Invalid bytes | |
/// will be replaced by Unicode [replacement characters](http://en.wikipedia.org/wiki/Specials_(Unicode_block)#Replacement_character). | |
@warn_unused_result | |
public func readLine(stripNewline stripNewline: Bool = default) -> String? | |
/// Returns the contiguous memory footprint of `T`. | |
/// | |
/// Does not include any dynamically-allocated or "remote" storage. | |
/// In particular, `sizeof(X.self)`, when `X` is a class type, is the | |
/// same regardless of how many stored properties `X` has. | |
@warn_unused_result | |
public func sizeof<T>(_: T.Type) -> Int | |
/// Returns the contiguous memory footprint of `T`. | |
/// | |
/// Does not include any dynamically-allocated or "remote" storage. | |
/// In particular, `sizeof(a)`, when `a` is a class instance, is the | |
/// same regardless of how many stored properties `a` has. | |
@warn_unused_result | |
public func sizeofValue<T>(_: T) -> Int | |
/// Returns the least possible interval between distinct instances of | |
/// `T` in memory. The result is always positive. | |
@warn_unused_result | |
public func strideof<T>(_: T.Type) -> Int | |
/// Returns the least possible interval between distinct instances of | |
/// `T` in memory. The result is always positive. | |
@warn_unused_result | |
public func strideofValue<T>(_: T) -> Int | |
/// Exchange the values of `a` and `b`. | |
public func swap<T>(inout a: T, inout _ b: T) | |
/// Translate `input`, in the given `InputEncoding`, into `output`, in | |
/// the given `OutputEncoding`. | |
/// | |
/// - parameter stopOnError: Causes encoding to stop when an encoding | |
/// error is detected in `input`, if `true`. Otherwise, U+FFFD | |
/// replacement characters are inserted for each detected error. | |
public func transcode<Input : GeneratorType, InputEncoding : UnicodeCodecType, OutputEncoding : UnicodeCodecType where InputEncoding.CodeUnit == Input.Element>(inputEncoding: InputEncoding.Type, _ outputEncoding: OutputEncoding.Type, _ input: Input, _ output: (OutputEncoding.CodeUnit) -> Void, stopOnError: Bool) -> Bool | |
/// Returns an `UnsafePointer` to the storage used for `object`. There's | |
/// not much you can do with this other than use it to identify the | |
/// object. | |
@warn_unused_result | |
public func unsafeAddressOf(object: AnyObject) -> UnsafePointer<Void> | |
/// Returns the the bits of `x`, interpreted as having type `U`. | |
/// | |
/// - Warning: Breaks the guarantees of Swift's type system; use | |
/// with extreme care. There's almost always a better way to do | |
/// anything. | |
/// | |
@warn_unused_result | |
public func unsafeBitCast<T, U>(x: T, _: U.Type) -> U | |
/// - returns: `x as T`. | |
/// | |
/// - Requires: `x is T`. In particular, in -O builds, no test is | |
/// performed to ensure that `x` actually has dynamic type `T`. | |
/// | |
/// - Warning: Trades safety for performance. Use `unsafeDowncast` | |
/// only when `x as T` has proven to be a performance problem and you | |
/// are confident that, always, `x is T`. It is better than an | |
/// `unsafeBitCast` because it's more restrictive, and because | |
/// checking is still performed in debug builds. | |
@warn_unused_result | |
public func unsafeDowncast<T : AnyObject>(x: AnyObject) -> T | |
/// - Returns: `nonEmpty!`. | |
/// | |
/// - Requires: `nonEmpty != nil`. In particular, in -O builds, no test | |
/// is performed to ensure that `nonEmpty` actually is non-nil. | |
/// | |
/// - Warning: Trades safety for performance. Use `unsafeUnwrap` | |
/// only when `nonEmpty!` has proven to be a performance problem and | |
/// you are confident that, always, `nonEmpty != nil`. It is better | |
/// than an `unsafeBitCast` because it's more restrictive, and | |
/// because checking is still performed in debug builds. | |
@warn_unused_result | |
public func unsafeUnwrap<T>(nonEmpty: T?) -> T | |
/// Evaluate `f()` and return its result, ensuring that `x` is not | |
/// destroyed before f returns. | |
public func withExtendedLifetime<T, Result>(x: T, @noescape _ f: () throws -> Result) rethrows -> Result | |
/// Evaluate `f(x)` and return its result, ensuring that `x` is not | |
/// destroyed before f returns. | |
public func withExtendedLifetime<T, Result>(x: T, @noescape _ f: T throws -> Result) rethrows -> Result | |
/// Invokes `body` with an `UnsafeMutablePointer` to `arg` and returns the | |
/// result. Useful for calling Objective-C APIs that take "in/out" | |
/// parameters (and default-constructible "out" parameters) by pointer. | |
public func withUnsafeMutablePointer<T, Result>(inout arg: T, @noescape _ body: UnsafeMutablePointer<T> throws -> Result) rethrows -> Result | |
/// Like `withUnsafeMutablePointer`, but passes pointers to `arg0` and `arg1`. | |
public func withUnsafeMutablePointers<A0, A1, Result>(inout arg0: A0, inout _ arg1: A1, @noescape _ body: (UnsafeMutablePointer<A0>, UnsafeMutablePointer<A1>) throws -> Result) rethrows -> Result | |
/// Like `withUnsafeMutablePointer`, but passes pointers to `arg0`, `arg1`, | |
/// and `arg2`. | |
public func withUnsafeMutablePointers<A0, A1, A2, Result>(inout arg0: A0, inout _ arg1: A1, inout _ arg2: A2, @noescape _ body: (UnsafeMutablePointer<A0>, UnsafeMutablePointer<A1>, UnsafeMutablePointer<A2>) throws -> Result) rethrows -> Result | |
/// Invokes `body` with an `UnsafePointer` to `arg` and returns the | |
/// result. Useful for calling Objective-C APIs that take "in/out" | |
/// parameters (and default-constructible "out" parameters) by pointer. | |
public func withUnsafePointer<T, Result>(inout arg: T, @noescape _ body: UnsafePointer<T> throws -> Result) rethrows -> Result | |
/// Like `withUnsafePointer`, but passes pointers to `arg0`, `arg1`, | |
/// and `arg2`. | |
public func withUnsafePointers<A0, A1, A2, Result>(inout arg0: A0, inout _ arg1: A1, inout _ arg2: A2, @noescape _ body: (UnsafePointer<A0>, UnsafePointer<A1>, UnsafePointer<A2>) throws -> Result) rethrows -> Result | |
/// Like `withUnsafePointer`, but passes pointers to `arg0` and `arg1`. | |
public func withUnsafePointers<A0, A1, Result>(inout arg0: A0, inout _ arg1: A1, @noescape _ body: (UnsafePointer<A0>, UnsafePointer<A1>) throws -> Result) rethrows -> Result | |
/// Invoke `f` with a C `va_list` argument derived from `builder`. | |
public func withVaList<R>(builder: VaListBuilder, @noescape _ f: CVaListPointer -> R) -> R | |
/// Invoke `f` with a C `va_list` argument derived from `args`. | |
public func withVaList<R>(args: [CVarArgType], @noescape _ f: CVaListPointer -> R) -> R | |
/// A sequence of pairs built out of two underlying sequences, where | |
/// the elements of the `i`th pair are the `i`th elements of each | |
/// underlying sequence. | |
public func zip<Sequence1 : SequenceType, Sequence2 : SequenceType>(sequence1: Sequence1, _ sequence2: Sequence2) -> Zip2Sequence<Sequence1, Sequence2> | |
public func |(lhs: Int8, rhs: Int8) -> Int8 | |
public func |(lhs: UInt8, rhs: UInt8) -> UInt8 | |
public func |(lhs: UInt16, rhs: UInt16) -> UInt16 | |
public func |(lhs: Int16, rhs: Int16) -> Int16 | |
public func |(lhs: UInt32, rhs: UInt32) -> UInt32 | |
public func |(lhs: Int32, rhs: Int32) -> Int32 | |
public func |(lhs: UInt64, rhs: UInt64) -> UInt64 | |
public func |(lhs: Int64, rhs: Int64) -> Int64 | |
public func |(lhs: UInt, rhs: UInt) -> UInt | |
public func |(lhs: Int, rhs: Int) -> Int | |
@warn_unused_result | |
public func |=<T : BitwiseOperationsType>(inout lhs: T, rhs: T) | |
public func |=(inout lhs: Int, rhs: Int) | |
public func |=(inout lhs: UInt, rhs: UInt) | |
public func |=(inout lhs: Int64, rhs: Int64) | |
public func |=(inout lhs: UInt64, rhs: UInt64) | |
public func |=(inout lhs: Int32, rhs: Int32) | |
public func |=(inout lhs: UInt32, rhs: UInt32) | |
public func |=(inout lhs: Int16, rhs: Int16) | |
public func |=(inout lhs: UInt16, rhs: UInt16) | |
public func |=(inout lhs: Int8, rhs: Int8) | |
public func |=(inout lhs: UInt8, rhs: UInt8) | |
@warn_unused_result | |
public func ||<T : BooleanType>(lhs: T, @autoclosure rhs: () throws -> Bool) rethrows -> Bool | |
/// If `lhs` is `true`, return it. Otherwise, evaluate `rhs` and | |
/// return its `boolValue`. | |
@warn_unused_result | |
public func ||<T : BooleanType, U : BooleanType>(lhs: T, @autoclosure rhs: () throws -> U) rethrows -> Bool | |
prefix public func ~(rhs: UInt8) -> UInt8 | |
prefix public func ~(rhs: Int8) -> Int8 | |
prefix public func ~(rhs: UInt16) -> UInt16 | |
prefix public func ~(rhs: Int16) -> Int16 | |
prefix public func ~(rhs: UInt32) -> UInt32 | |
prefix public func ~(rhs: Int32) -> Int32 | |
prefix public func ~(rhs: UInt) -> UInt | |
prefix public func ~(rhs: UInt64) -> UInt64 | |
prefix public func ~(rhs: Int64) -> Int64 | |
prefix public func ~(rhs: Int) -> Int | |
@warn_unused_result | |
public func ~=<I : ForwardIndexType where I : Comparable>(pattern: Range<I>, value: I) -> Bool | |
@warn_unused_result | |
public func ~=<T : Equatable>(a: T, b: T) -> Bool | |
@warn_unused_result | |
public func ~=<T>(lhs: _OptionalNilComparisonType, rhs: T?) -> Bool | |
/// Returns `true` iff `pattern` contains `value`. | |
@warn_unused_result | |
public func ~=<I : IntervalType>(pattern: I, value: I.Bound) -> Bool | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment