public override int Serialize(int offset, byte [] data) { int recSize = RecordSize; int dataSize = recSize - 4; LittleEndianByteArrayOutputStream out1 = new LittleEndianByteArrayOutputStream(data, offset, recSize); out1.WriteShort(sid); out1.WriteShort(dataSize); if (_uninterpretedData == null) { for (int i = 0; i < subrecords.Count; i++) { SubRecord record = subrecords[i]; record.Serialize(out1); } int expectedEndIx = offset + dataSize; // padding while (out1.WriteIndex < expectedEndIx) { out1.WriteByte(0); } } else { out1.Write(_uninterpretedData); } return(recSize); }
public void Write(LittleEndianByteArrayOutputStream bos) { bos.WriteShort(info.VersionMajor); bos.WriteShort(info.VersionMinor); header.Write(bos); verifier.Write(bos); }
/** * Serializes the header */ public void Write(LittleEndianByteArrayOutputStream bos) { int startIdx = bos.WriteIndex; ILittleEndianOutput sizeOutput = bos.CreateDelayedOutput(LittleEndianConsts.INT_SIZE); bos.WriteInt(Flags); bos.WriteInt(0); // size extra bos.WriteInt(CipherAlgorithm.ecmaId); bos.WriteInt(HashAlgorithm.ecmaId); bos.WriteInt(KeySize); bos.WriteInt(CipherProvider.ecmaId); bos.WriteInt(0); // reserved1 bos.WriteInt(0); // reserved2 String cspName = CspName; if (cspName == null) { cspName = CipherProvider.cipherProviderName; } bos.Write(StringUtil.GetToUnicodeLE(cspName)); bos.WriteShort(0); int headerSize = bos.WriteIndex - startIdx - LittleEndianConsts.INT_SIZE; sizeOutput.WriteInt(headerSize); }
public override int Serialize(int offset, byte[] data) { int dataSize = DataSize; int recSize = 4 + dataSize; LittleEndianByteArrayOutputStream out1 = new LittleEndianByteArrayOutputStream(data, offset, recSize); out1.WriteShort(this.Sid); out1.WriteShort(dataSize); Serialize(out1); if (out1.WriteIndex - offset != recSize) { throw new InvalidOperationException("Error in serialization of (" + this.GetType().Name + "): " + "Incorrect number of bytes written - expected " + recSize + " but got " + (out1.WriteIndex - offset)); } return(recSize); }
public void Write(LittleEndianByteArrayOutputStream bos) { WriteUnicodeLPP4(bos, featureIdentifier); bos.WriteShort(readerVersionMajor); bos.WriteShort(readerVersionMinor); bos.WriteShort(updaterVersionMajor); bos.WriteShort(updaterVersionMinor); bos.WriteShort(writerVersionMajor); bos.WriteShort(writerVersionMinor); }
public void Write(LittleEndianByteArrayOutputStream bos) { int start = bos.WriteIndex; ILittleEndianOutput sizeOut = bos.CreateDelayedOutput(LittleEndianConsts.INT_SIZE); bos.WriteInt(transformType); WriteUnicodeLPP4(bos, transformerId); sizeOut.WriteInt(bos.WriteIndex - start); WriteUnicodeLPP4(bos, transformerName); bos.WriteShort(readerVersionMajor); bos.WriteShort(readerVersionMinor); bos.WriteShort(updaterVersionMajor); bos.WriteShort(updaterVersionMinor); bos.WriteShort(writerVersionMajor); bos.WriteShort(writerVersionMinor); }
public override int Serialize(int offset, byte [] data) { int recSize = RecordSize; int dataSize = recSize - 4; LittleEndianByteArrayOutputStream out1 = new LittleEndianByteArrayOutputStream(data, offset, recSize); out1.WriteShort(sid); out1.WriteShort(dataSize); if (_uninterpretedData == null) { for (int i = 0; i < subrecords.Count; i++) { SubRecord record = subrecords[i]; record.Serialize(out1); } int expectedEndIx = offset + dataSize; // padding while (out1.WriteIndex < expectedEndIx) { out1.WriteByte(0); } } else { out1.Write(_uninterpretedData); } return recSize; }
public void TestExtRstEqualsAndHashCode() { byte[] buf = new byte[200]; LittleEndianByteArrayOutputStream bos = new LittleEndianByteArrayOutputStream(buf, 0); String str = "\u1d02\u1d12\u1d22"; bos.WriteShort(1); bos.WriteShort(5 * LittleEndianConsts.SHORT_SIZE + str.Length * 2 + 3 * LittleEndianConsts.SHORT_SIZE + 2); // data size bos.WriteShort(0x4711); bos.WriteShort(0x0815); bos.WriteShort(1); bos.WriteShort(str.Length); bos.WriteShort(str.Length); StringUtil.PutUnicodeLE(str, bos); bos.WriteShort(1); bos.WriteShort(1); bos.WriteShort(3); bos.WriteShort(42); LittleEndianByteArrayInputStream in1 = new LittleEndianByteArrayInputStream(buf, 0, bos.WriteIndex); UnicodeString.ExtRst extRst1 = new UnicodeString.ExtRst(in1, bos.WriteIndex); in1 = new LittleEndianByteArrayInputStream(buf, 0, bos.WriteIndex); UnicodeString.ExtRst extRst2 = new UnicodeString.ExtRst(in1, bos.WriteIndex); Assert.AreEqual(extRst1, extRst2); Assert.AreEqual(extRst1.GetHashCode(), extRst2.GetHashCode()); }