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

AddString() private method

Adds a string to the internal object table.
private AddString ( string value ) : int
value string The value to add.
return int
        private int AddString(string value)
        {
            if (!this.uniques.Contains(value))
            {
                int index = this.objectTable.Count;
                bool ascii = value.IsAscii();
                byte[] buffer;

                BinaryPlistItem item = new BinaryPlistItem(value);

                if (value.Length < 15)
                {
                    item.Marker.Add((byte)((byte)(ascii ? 0x50 : 0x60) | (byte)value.Length));
                }
                else
                {
                    item.Marker.Add((byte)(ascii ? 0x5F : 0x6F));
                    AddIntegerCount(item.Marker, value.Length);
                }

                if (ascii)
                {
                    buffer = Encoding.ASCII.GetBytes(value);
                }
                else
                {
                    buffer = Encoding.Unicode.GetBytes(value);

                    if (BitConverter.IsLittleEndian)
                    {
                        for (int i = 0; i < buffer.Length; i++)
                        {
                            byte l = buffer[i];
                            buffer[i] = buffer[++i];
                            buffer[i] = l;
                        }
                    }
                }

                item.SetByteValue(buffer);

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

                this.uniques.SetIndex(value, index);
                return index;
            }

            return this.uniques.GetIndex(value);
        }