mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-23 14:45:21 +00:00
Updated polls
This commit is contained in:
@@ -484,6 +484,22 @@ public final class PostboxEncoder {
|
||||
}
|
||||
}
|
||||
|
||||
public func encodeDataArray(_ value: [Data], forKey key: StaticString) {
|
||||
self.encodeKey(key)
|
||||
var type: Int8 = ValueType.BytesArray.rawValue
|
||||
self.buffer.write(&type, offset: 0, length: 1)
|
||||
var length: Int32 = Int32(value.count)
|
||||
self.buffer.write(&length, offset: 0, length: 4)
|
||||
|
||||
for object in value {
|
||||
var length: Int32 = Int32(object.count)
|
||||
self.buffer.write(&length, offset: 0, length: 4)
|
||||
object.withUnsafeBytes { (bytes: UnsafePointer<UInt8>) -> Void in
|
||||
self.buffer.write(bytes, offset: 0, length: Int(length))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public func encodeObjectDictionary<K, V: PostboxCoding>(_ value: [K : V], forKey key: StaticString) where K: PostboxCoding {
|
||||
self.encodeKey(key)
|
||||
var t: Int8 = ValueType.ObjectDictionary.rawValue
|
||||
@@ -1173,6 +1189,31 @@ public final class PostboxDecoder {
|
||||
}
|
||||
}
|
||||
|
||||
public func decodeOptionalDataArrayForKey(_ key: StaticString) -> [Data]? {
|
||||
if PostboxDecoder.positionOnKey(self.buffer.memory, offset: &self.offset, maxOffset: self.buffer.length, length: self.buffer.length, key: key, valueType: .BytesArray) {
|
||||
var length: Int32 = 0
|
||||
memcpy(&length, self.buffer.memory + self.offset, 4)
|
||||
self.offset += 4
|
||||
|
||||
var array: [Data] = []
|
||||
array.reserveCapacity(Int(length))
|
||||
|
||||
var i: Int32 = 0
|
||||
while i < length {
|
||||
var length: Int32 = 0
|
||||
memcpy(&length, self.buffer.memory + self.offset, 4)
|
||||
array.append(Data(bytes: self.buffer.memory.advanced(by: self.offset + 4), count: Int(length)))
|
||||
self.offset += 4 + Int(length)
|
||||
|
||||
i += 1
|
||||
}
|
||||
|
||||
return array
|
||||
} else {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
public func decodeObjectArrayForKey<T>(_ key: StaticString) -> [T] where T: PostboxCoding {
|
||||
if PostboxDecoder.positionOnKey(self.buffer.memory, offset: &self.offset, maxOffset: self.buffer.length, length: self.buffer.length, key: key, valueType: .ObjectArray) {
|
||||
var length: Int32 = 0
|
||||
|
||||
Reference in New Issue
Block a user