MCPcopy Create free account
hub / github.com/apache/fory / Read

Method Read

csharp/src/Fory/TypeMeta.cs:338–370  ·  view source on GitHub ↗
(ByteReader reader)

Source from the content-addressed store, hash-verified

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 {

Callers

nothing calls this directly

Calls 5

ReadUInt8Method · 0.80
ReadVarUInt32Method · 0.80
ReadMethod · 0.65
ReadBytesMethod · 0.45
DecodeMethod · 0.45

Tested by

no test coverage detected