public void Write(EndianBinaryWriter writer) { var decMemStream = new MemoryStream(); var decWriter = new EndianBinaryWriter(decMemStream); decWriter.Write(Literals.Length); foreach (var literal in Literals) { decWriter.SeekNext(4); //uint size var oldPos = decWriter.Position; BeamTerm.TermToBinary(decWriter, literal); var len = (uint)(decWriter.Position - oldPos); decWriter.SeekBack((int)(len + 4)); decWriter.Write(len); decWriter.SeekNext((int)len); } decMemStream.Position = 0; var decBytes = decMemStream.ToArray(); writer.Write(decBytes.Length); var encBytes = ZLibCompressor.Compress(decBytes); writer.Write(encBytes); }
public void Write(EndianBinaryWriter writer) { writer.Write((byte)EExtTermType.List); writer.Write(Elements.Length); foreach (var element in Elements) { BeamTerm.TermToBinary(writer, element, false); } BeamTerm.TermToBinary(writer, Tail, false); }
public void Write(EndianBinaryWriter writer) { if (Elements.Length <= byte.MaxValue) { writer.Write((byte)EExtTermType.Tuple8); writer.Write((byte)Elements.Length); } else { writer.Write((byte)EExtTermType.Tuple32); writer.Write(Elements.Length); } foreach (var element in Elements) { BeamTerm.TermToBinary(writer, element, false); } }
public void Write(EndianBinaryWriter writer) { BeamTerm.TermToBinary(writer, Info); }
public void Write(EndianBinaryWriter writer) { BeamTerm.TermToBinary(writer, Attributes); }