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.
54 lines
1.6 KiB
54 lines
1.6 KiB
5 months ago
|
// 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)
|
||
|
}
|
||
|
}
|