in Sources/TwitterApacheThrift/ThriftCompactBinary.swift [75:90]
func readFieldMetadata(previousId: Int) throws -> (type: ThriftType, id: Int?) {
let binary = try readByte()
if binary == 0 {
return (.stop, nil)
}
let fieldIdDelta = UInt8((binary & 0xF0) >> 4)
let fieldType = UInt8(binary & 0x0F)
let type = try ThriftType(compactValue: fieldType)
if fieldIdDelta == 0 {
let fieldId = try Int16(zigZag: super.readInt16())
return (type, Int(fieldId))
}
return (type, Int(fieldIdDelta) + previousId)
}