[
https://issues.apache.org/jira/browse/THRIFT-3773?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15482947#comment-15482947
]
ASF GitHub Bot commented on THRIFT-3773:
----------------------------------------
Github user fumoboy007 commented on a diff in the pull request:
https://github.com/apache/thrift/pull/1084#discussion_r78312512
--- Diff: lib/swift/Sources/TMap.swift ---
@@ -0,0 +1,182 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+public struct TMap<Key : TSerializable & Hashable, Value : TSerializable>:
Collection, ExpressibleByDictionaryLiteral, Hashable, TSerializable {
+ typealias Storage = Dictionary<Key, Value>
+ public typealias Element = Storage.Element
+ public typealias Index = Storage.Index
+ public typealias IndexDistance = Storage.IndexDistance
+ public typealias Indices = Storage.Indices
+ public typealias SubSequence = Storage.SubSequence
+ internal var storage = Storage()
+
+ /// Mark: Be Like Dictionary
+
+ public func indexForKey(_ key: Key) -> Index? {
+ return storage.index(forKey: key)
+ }
+
+ public mutating func updateValue(_ value: Value, forKey key: Key) ->
Value? {
+ return updateValue(value, forKey: key)
+ }
+
+ public mutating func removeAtIndex(_ index: DictionaryIndex<Key, Value>)
-> (Key, Value) {
+ return removeAtIndex(index)
+ }
+
+ public mutating func removeValueForKey(_ key: Key) -> Value? {
+ return storage.removeValue(forKey: key)
+ }
+
+ public init(minimumCapacity: Int) {
+ storage = Storage(minimumCapacity: minimumCapacity)
+ }
+
+ public subscript (key: Key) -> Value? {
+ get {
+ return storage[key]
+ }
+ set {
+ storage[key] = newValue
+ }
+ }
+
+ /// Mark: Collection
+
+ public var indices: Indices {
+ return storage.indices
+ }
+
+ public func distance(from start: Index, to end: Index) -> IndexDistance {
+ return storage.distance(from: start, to: end)
+ }
+
+ public func index(_ i: Index, offsetBy n: IndexDistance) -> Index {
+ return storage.index(i, offsetBy: n)
+ }
+
+ public func index(_ i: Index, offsetBy n: IndexDistance, limitedBy
limit: Index) -> Index? {
+ return storage.index(i, offsetBy: n, limitedBy: limit)
+ }
+
+ public subscript(position: Index) -> Element {
+ return storage[position]
+ }
+
+ /// Mark: IndexableBase
+
+ public var startIndex: Index { return storage.startIndex }
+ public var endIndex: Index { return storage.endIndex }
+ public func index(after i: Index) -> Index {
+ return storage.index(after: i)
+ }
+
+ public func formIndex(after i: inout Index) {
+ storage.formIndex(after: &i)
+ }
+
+ public subscript(bounds: Range<Index>) -> SubSequence {
+ return storage[bounds]
+ }
+
+ /// Mark: DictionaryLiteralConvertible
+
+ public init(dictionaryLiteral elements: (Key, Value)...) {
+ storage = Storage()
+ for (key, value) in elements {
+ storage[key] = value
+ }
+ }
+
+ /// Mark: Hashable
+
+ public var hashValue: Int {
+ let prime = 31
+ var result = 1
+ for (key, value) in storage {
+ result = prime * result + key.hashValue
--- End diff --
`&*`, `&+`?
> Swift Library
> -------------
>
> Key: THRIFT-3773
> URL: https://issues.apache.org/jira/browse/THRIFT-3773
> Project: Thrift
> Issue Type: New Feature
> Components: Swift - Library
> Reporter: Thomas Bartelmess
>
> We already have the option to generate Swift code in the Cocoa compiler,
> however large parts of the (Objective-C) Cocoa Library still depend on Cocoa
> and Objective-C.
> It would be good to have a native Swift library that doesn't depend on the
> Cocoa libraries.
> Design goals:
> - Fully compatible with the code that is currently generated by the Cocoa
> compiler (both Objective-C and Swift).
> - Ability to run on Linux
> - Pure Swift, no Objective-C code.
> - No dependencies on closed source apple libraries
> - Keep the same interface, so that the library is compatible with the code
> the current cocoa compiler generates
> - Better server support that the current Objective-C library.
> - Follow the new Swift packaging format to be compatible with the Swift
> Package manager
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)