Protocol Buffers - Google's data interchange format (grpc依赖)
https://developers.google.com/protocol-buffers/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.6 KiB
53 lines
1.6 KiB
// Protocol Buffers - Google's data interchange format |
|
// Copyright 2024 Google Inc. All rights reserved. |
|
// |
|
// Use of this source code is governed by a BSD-style |
|
// license that can be found in the LICENSE file or at |
|
// https://developers.google.com/open-source/licenses/bsd |
|
|
|
/// Swift specific additions to simplify usage. |
|
extension GPBUnknownFields { |
|
|
|
/// Fetches the first varint for the given field number. |
|
public func firstVarint(_ fieldNumber: Int32) -> UInt64? { |
|
var value: UInt64 = 0 |
|
guard getFirst(fieldNumber, varint: &value) else { return nil } |
|
return value |
|
} |
|
|
|
/// Fetches the first fixed32 for the given field number. |
|
public func firstFixed32(_ fieldNumber: Int32) -> UInt32? { |
|
var value: UInt32 = 0 |
|
guard getFirst(fieldNumber, fixed32: &value) else { return nil } |
|
return value |
|
} |
|
|
|
/// Fetches the first fixed64 for the given field number. |
|
public func firstFixed64(_ fieldNumber: Int32) -> UInt64? { |
|
var value: UInt64 = 0 |
|
guard getFirst(fieldNumber, fixed64: &value) else { return nil } |
|
return value |
|
} |
|
|
|
} |
|
|
|
/// Map the `NSFastEnumeration` support to a Swift `Sequence`. |
|
extension GPBUnknownFields: Sequence { |
|
public typealias Element = GPBUnknownField |
|
|
|
public struct Iterator: IteratorProtocol { |
|
var iter: NSFastEnumerationIterator |
|
|
|
init(_ fields: NSFastEnumeration) { |
|
self.iter = NSFastEnumerationIterator(fields) |
|
} |
|
|
|
public mutating func next() -> GPBUnknownField? { |
|
return iter.next() as? GPBUnknownField |
|
} |
|
} |
|
|
|
public func makeIterator() -> Iterator { |
|
return Iterator(self) |
|
} |
|
}
|
|
|