Ejemplo n.º 1
0
        public void Encode(BinaryWriter writer)
        {
            EsfType containedTypeCode = ContainedTypeCode;
            EsfType esfType           = containedTypeCode + 64;

            writer.Write((byte)esfType);
            byte[] array = new byte[0];
            using (MemoryStream memoryStream = new MemoryStream())
            {
                using (BinaryWriter writer2 = new BinaryWriter(memoryStream))
                {
                    CodecNode <T> codecNode =
                        base.Codec.CreateValueNode(containedTypeCode, optimize: false) as CodecNode <T>;
                    codecNode.TypeCode = containedTypeCode;
                    T[] value = Value;
                    for (int i = 0; i < value.Length; i++)
                    {
                        T val2 = codecNode.Value = value[i];
                        codecNode.WriteValue(writer2);
                    }

                    array = memoryStream.ToArray();
                    base.Codec.WriteOffset(writer, array.Length);
                    writer.Write(array);
                }
            }
        }
Ejemplo n.º 2
0
        public void Encode(BinaryWriter writer)
        {
            EsfType containedTypeCode = ContainedTypeCode;
            EsfType myRealType        = (EsfType)(containedTypeCode + 0x40);

#if DEBUG
            Console.WriteLine("encoding array with {2} bytes, code {0} containing {1}", myRealType, containedTypeCode, Value.Length);
#endif

            writer.Write((byte)myRealType);
            byte[] encodedArray = new byte[0];
            using (var stream = new MemoryStream()) {
                using (var memWriter = new BinaryWriter(stream)) {
                    CodecNode <T> valueNode = Codec.CreateValueNode(containedTypeCode, false) as CodecNode <T>;
                    valueNode.TypeCode = containedTypeCode;
                    foreach (T item in Value)
                    {
                        valueNode.Value = item;
                        valueNode.WriteValue(memWriter);
                    }
                    encodedArray = stream.ToArray();
#if DEBUG
                    Console.WriteLine("size is {0}", encodedArray.Length);
#endif
                    Codec.WriteOffset(writer, encodedArray.Length);
                    writer.Write(encodedArray);
                }
            }
        }