public static BitReaderWriter ReadFrom(BitStream stream) { Debug.Assert(stream.Reading, "Read stream should be set for reading!"); // Move current position after the data uint dataBitLen = stream.ReadUInt32Variant(); var reader = new BitReaderWriter(stream, stream.BitPosition); stream.SetBitPositionRead(stream.BitPosition + (int)dataBitLen); return reader; }
public static BitReaderWriter ReadFrom(BitStream stream) { Debug.Assert(stream.Reading, "Read stream should be set for reading!"); // Move current position after the data uint dataBitLen = stream.ReadUInt32Variant(); var reader = new BitReaderWriter(stream, stream.BitPosition); stream.SetBitPositionRead(stream.BitPosition + (int)dataBitLen); return(reader); }
/// <summary> /// Returns false when validation was required and failed, otherwise true. /// </summary> public bool ReadData(IBitSerializable readDataInto, bool validate) { Debug.Assert(m_readStream != null, "Local invocation is not supported for BitReaderWriter"); //if (m_readStream == null) //{ // tmpStream.ResetWrite(); // Write(tmpStream); // tmpStream.ResetRead(); // return ReadFrom(tmpStream).ReadData(readDataInto, validate, null); //} int oldPos = m_readStream.BitPosition; m_readStream.SetBitPositionRead(m_readStreamPosition); try { return(readDataInto.Serialize(m_readStream, validate)); } finally { m_readStream.SetBitPositionRead(oldPos); } }