Vixen
02b45cc4
csharp
public ref struct SerializationReader

Reads the binary format out of a span.

No guide page documents this yet — the page shows what the code says about itself.

Remarks

Span-only, with no stream form, and that is a deliberate pair with Vixen.Core.IO's memory mapping. A bundle on disk is mapped rather than read, so "the whole file in a span" costs no copy and no allocation, and the pages holding the two hundred assets nobody asked for are never faulted in. A stream-based reader would give up both of those to support a case — reading content off a socket without buffering it — that does not exist.

Reading past the end throws SerializationException rather than returning garbage. Deserialisation runs over data that may be truncated, corrupt, or from a future version, and the difference between an exception and silence is the difference between a diagnosable failure and a mysterious one.

Fields and properties (2)

  • public readonly int BytesRead

    How many bytes have been consumed.

  • public readonly int Remaining

    How many bytes are left.

Methods (32)

  • public SerializationReader(ReadOnlySpan<byte> source)

    Reads from a span.

  • public byte ReadByte()

    Reads one byte.

  • public bool ReadBoolean()

    Reads a boolean.

  • public sbyte ReadSByte()

    Reads a signed byte.

  • public short ReadInt16()

    Reads a 16-bit integer.

  • public ushort ReadUInt16()

    Reads an unsigned 16-bit integer.

  • public int ReadInt32()

    Reads a 32-bit integer.

  • public uint ReadUInt32()

    Reads an unsigned 32-bit integer.

  • public long ReadInt64()

    Reads a 64-bit integer.

  • public ulong ReadUInt64()

    Reads an unsigned 64-bit integer.

  • public char ReadChar()

    Reads a 16-bit character.

  • public Half ReadHalf()

    Reads a half-precision float.

  • public float ReadSingle()

    Reads a single-precision float.

  • public double ReadDouble()

    Reads a double-precision float.

  • public decimal ReadDecimal()

    Reads a decimal.

  • public Guid ReadGuid()

    Reads a Guid.

  • public DateTime ReadDateTime()

    Reads a DateTime.

  • public DateTimeOffset ReadDateTimeOffset()

    Reads a DateTimeOffset.

  • public TimeSpan ReadTimeSpan()

    Reads a TimeSpan.

  • public ulong ReadVarUInt64()

    Reads a LEB128 unsigned integer.

  • public long ReadVarInt64()

    Reads a zig-zag LEB128 signed integer.

  • public string? ReadString()

    Reads a length-prefixed UTF-8 string.

  • public ReadOnlySpan<byte> ReadBytes(int count)

    Reads raw bytes.

  • public void ReadBlittable<T>(Span<T> destination) where T : unmanaged

    Reads a blittable array as one bulk copy.

  • public T ReadValue<T>() where T : struct

    Reads a value type through its registered serializer.

  • public T? ReadReference<T>() where T : class

    Reads a reference, which may be null.

  • public T? ReadNullable<T>() where T : struct

    Reads a nullable value type.

  • public TBase? ReadPolymorphic<TBase>() where TBase : class

    Reads a reference written by its run-time type.

  • public T[]? ReadArray<T>()

    Reads an array, element by element.

  • public T[]? ReadBlittableArray<T>() where T : unmanaged

    Reads an array of a primitive type as one bulk copy.

  • public List<T>? ReadList<T>()

    Reads a list, element by element.

  • public Dictionary<TKey, TValue>? ReadDictionary<TKey, TValue>() where TKey : notnull

    Reads a dictionary.

Used by (393, showing 40)

  • Vixen_Samples_AddressablesRemote_GreetingSerializerAddressablesRemote
  • Vixen_Samples_ThirdPersonShooter_BoxCollisionSerializerThirdPersonShooter
  • Vixen_Samples_ThirdPersonShooter_CharacterVisualsSerializerThirdPersonShooter
  • Vixen_Samples_ThirdPersonShooter_SpawnPointSerializerThirdPersonShooter
  • AssetIdSerializerVixen.Core.Serialization
  • AssetReferenceSerializerVixen.Core.Serialization
  • BooleanSerializerVixen.Core.Serialization
  • ByteSerializerVixen.Core.Serialization
  • CharSerializerVixen.Core.Serialization
  • ChunkFormatVixen.Core.Serialization
  • ComponentTypeIdSerializerVixen.Core.Serialization
  • ContentReferenceSerializerVixen.Core.Serialization
  • ContractColumnVixen.Engine
  • DataSerializerVixen.Core.Serialization
  • DataSerializerVixen.Core.Serialization
  • DateTimeOffsetSerializerVixen.Core.Serialization
  • DateTimeSerializerVixen.Core.Serialization
  • DecimalSerializerVixen.Core.Serialization
  • DepthColumnVixen.Engine
  • DoubleSerializerVixen.Core.Serialization
  • EntitySerializerVixen.Core.Serialization
  • GuidSerializerVixen.Core.Serialization
  • HalfSerializerVixen.Core.Serialization
  • ISceneComponentBinderVixen.Engine
  • IWorldColumnVixen.Engine
  • Int16SerializerVixen.Core.Serialization
  • Int32SerializerVixen.Core.Serialization
  • Int64SerializerVixen.Core.Serialization
  • LocalTransformColumnVixen.Engine
  • MigratedClassVixen.Core.Serialization.Tests
  • ObjectDatabaseVixen.Core.Serialization
  • ObjectIdSerializerVixen.Core.Serialization
  • SByteSerializerVixen.Core.Serialization
  • SceneComponentBinderVixen.Engine
  • SceneContentVixen.Engine
  • SceneTagColumnVixen.Engine
  • SerializationTestsVixen.Core.Serialization.Tests
  • SerializerVixen.Core.Serialization
  • SingleSerializerVixen.Core.Serialization
  • StringSerializerVixen.Core.Serialization