System.Runtime.Serialization.Plists.BinaryPlistWriter.AddData C# (CSharp) Method

AddData() private method

Adds arbitrary data to the internal object table.
private AddData ( object value ) : int
value object The value to add.
return int
        private int AddData(object value)
        {
            int index = this.objectTable.Count, count = 0, bufferIndex = 0;
            byte[] buffer = value as byte[];

            if (buffer == null)
            {
                using (MemoryStream stream = new MemoryStream())
                {
                    BinaryFormatter formatter = new BinaryFormatter();
                    formatter.Serialize(stream, value);

                    stream.Position = 0;
                    buffer = new byte[stream.Length];

                    while (0 < (count = stream.Read(buffer, 0, buffer.Length - bufferIndex)))
                    {
                        bufferIndex += count;
                    }
                }
            }

            BinaryPlistItem item = new BinaryPlistItem(value);
            item.SetByteValue(buffer);

            if (buffer.Length < 15)
            {
                item.Marker.Add((byte)((byte)0x40 | (byte)buffer.Length));
            }
            else
            {
                item.Marker.Add(0x4F);
                AddIntegerCount(item.Marker, buffer.Length);
            }

            this.objectTable.Add(item);
            this.objectTableSize += item.Size;

            return index;
        }