/// <inheritdoc /> public override CtfFieldValue Read(IPacketReader reader, CtfFieldValue parent = null) { Guard.NotNull(reader, nameof(reader)); reader.Align((uint)this.Align); var structValue = new CtfStructValue(); foreach (var ctfField in this.Fields) { CtfFieldValue field = null; try { field = ctfField.Read(reader, structValue); } catch (InvalidOperationException) { continue; } bool addedField = structValue.AddValue(field); Debug.Assert(addedField); } return(structValue); }
/// <inheritdoc /> public override CtfFieldValue Read(IPacketReader reader, CtfFieldValue parent = null) { Guard.NotNull(reader, nameof(reader)); reader.Align((uint)this.Align); byte[] value = reader.ReadString(); if (this.Encoding == EncodingTypes.Ascii) { return(new CtfStringValue(System.Text.Encoding.ASCII.GetString(value, 0, value.Length - 1))); } return(new CtfStringValue(System.Text.Encoding.UTF8.GetString(value, 0, value.Length - 1))); }
/// <inheritdoc /> public override CtfFieldValue Read(IPacketReader reader, CtfFieldValue parent = null) { Guard.NotNull(reader, nameof(reader)); reader.Align((uint)this.Align); byte[] buffer = reader.ReadBits((uint)this.Size); if (buffer == null) { throw new CtfPlaybackException("IPacketReader.ReadBits returned null while reading an integer value."); } int byteCount = buffer.Length; return(this.Read(buffer, byteCount)); }
/// <inheritdoc /> public override CtfFieldValue Read(IPacketReader reader, CtfFieldValue parent = null) { Guard.NotNull(reader, nameof(reader)); reader.Align((uint)this.Align); byte[] buffer = null; if ((Exponent + Mantissa) == 32) { buffer = reader.ReadBits(32); } else if ((Exponent + Mantissa) == 64) { buffer = reader.ReadBits(64); } if (buffer == null) { throw new CtfPlaybackException("IPacketReader.ReadBits returned null while reading an floating_point value."); } int byteCount = buffer.Length; return(this.Read(buffer, byteCount)); }