public unsafe void Read <T>(IntPtr data, ref int index, int length, ref T result) { int references = 0; if (index >= length) { throw new DataCorruptedException("Unexpected end of data"); } var start = (byte *)(data + index); if (*start == (byte)GroBufTypeCode.Reference) { if (index + 5 >= length) { throw new DataCorruptedException("Unexpected end of data"); } references = *(int *)(start + 1); index += 5; } GetReader <T>(false)(data, ref index, ref result, new ReaderContext(serializerId, length, index, references)); }
/// <inheritdoc /> public TModel Read(TSrc source) { return(GetReader()(source)); }
public void Read(XElement source, T target) => GetReader()(source, target);