(ByteReader reader)
| 336 | } |
| 337 | |
| 338 | internal static TypeMetaFieldInfo Read(ByteReader reader) |
| 339 | { |
| 340 | byte header = reader.ReadUInt8(); |
| 341 | int encodingFlags = (header >> 6) & 0b11; |
| 342 | int size = (header >> 2) & 0b1111; |
| 343 | if (size == TypeMetaConstants.FieldNameSizeThreshold) |
| 344 | { |
| 345 | size += (int)reader.ReadVarUInt32(); |
| 346 | } |
| 347 | |
| 348 | size += 1; |
| 349 | |
| 350 | bool nullable = (header & 0b10) != 0; |
| 351 | bool trackRef = (header & 0b1) != 0; |
| 352 | TypeMetaFieldType fieldType = TypeMetaFieldType.Read(reader, false, nullable, trackRef); |
| 353 | |
| 354 | if (encodingFlags == 3) |
| 355 | { |
| 356 | short fieldId = unchecked((short)(size - 1)); |
| 357 | return new TypeMetaFieldInfo(fieldId, $"$tag{fieldId}", fieldType); |
| 358 | } |
| 359 | |
| 360 | if (encodingFlags >= TypeMetaEncodings.FieldNameMetaStringEncodings.Length) |
| 361 | { |
| 362 | throw new InvalidDataException("invalid field name encoding id"); |
| 363 | } |
| 364 | |
| 365 | byte[] nameBytes = reader.ReadBytes(size); |
| 366 | string name = MetaStringDecoder.FieldName.Decode( |
| 367 | nameBytes, |
| 368 | TypeMetaEncodings.FieldNameMetaStringEncodings[encodingFlags]).Value; |
| 369 | return new TypeMetaFieldInfo(null, name, fieldType); |
| 370 | } |
| 371 | |
| 372 | public bool Equals(TypeMetaFieldInfo? other) |
| 373 | { |
nothing calls this directly
no test coverage detected