示例#1
0
        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);
        }
示例#2
0
 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);
 }
示例#3
0
        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);
            }
        }
示例#4
0
 public void Write(EndianBinaryWriter writer)
 {
     BeamTerm.TermToBinary(writer, Info);
 }
示例#5
0
 public void Write(EndianBinaryWriter writer)
 {
     BeamTerm.TermToBinary(writer, Attributes);
 }