Exemple #1
0
        /// <summary>
        /// Writes this element binary to the writer.
        /// </summary>
        /// <param name="writer">The <see cref="T:CE.iPhone.PListBinaryWriter"/> to which the element is written.</param>
        /// <remarks>Provided for internal use only.</remarks>
        public void WriteBinary(PListBinaryWriter writer)
        {
            Byte[] keys      = new Byte[writer.ElementIdxSize * Count];
            Byte[] values    = new Byte[writer.ElementIdxSize * Count];
            long   streamPos = writer.BaseStream.Position;

            writer.BaseStream.Write(keys, 0, keys.Length);
            writer.BaseStream.Write(values, 0, values.Length);

            KeyValuePair <String, IPListElement>[] elems = this.ToArray();

            for (int i = 0; i < Count; i++)
            {
                int elementIdx = writer.WriteInternal(PListElementFactory.Instance.CreateKeyElement(elems[i].Key));
                writer.FormatIdx(elementIdx).CopyTo(keys, writer.ElementIdxSize * i);
            }
            for (int i = 0; i < Count; i++)
            {
                int elementIdx = writer.WriteInternal(elems[i].Value);
                writer.FormatIdx(elementIdx).CopyTo(values, writer.ElementIdxSize * i);
            }

            writer.BaseStream.Seek(streamPos, SeekOrigin.Begin);
            writer.BaseStream.Write(keys, 0, keys.Length);
            writer.BaseStream.Write(values, 0, values.Length);
            writer.BaseStream.Seek(0, SeekOrigin.End);
        }
Exemple #2
0
        /// <summary>
        /// Writes this element binary to the writer.
        /// </summary>
        /// <param name="writer">The <see cref="T:CE.iPhone.PListBinaryWriter"/> to which the element is written.</param>
        /// <remarks>Provided for internal use only.</remarks>
        public void WriteBinary(PListBinaryWriter writer)
        {
            Byte[] elements  = new Byte[writer.ElementIdxSize * Count];
            long   streamPos = writer.BaseStream.Position;

            writer.BaseStream.Write(elements, 0, elements.Length);
            for (int i = 0; i < Count; i++)
            {
                int elementIdx = writer.WriteInternal(this[i]);
                writer.FormatIdx(elementIdx).CopyTo(elements, writer.ElementIdxSize * i);
            }
            writer.BaseStream.Seek(streamPos, SeekOrigin.Begin);
            writer.BaseStream.Write(elements, 0, elements.Length);
            writer.BaseStream.Seek(0, SeekOrigin.End);
        }
Exemple #3
0
        public void WriteBinary(PListBinaryWriter writer)
        {
            byte[] buffer1  = new byte[(int)writer.ElementIdxSize * this.Count];
            byte[] buffer2  = new byte[(int)writer.ElementIdxSize * this.Count];
            long   position = writer.BaseStream.Position;

            writer.BaseStream.Write(buffer1, 0, buffer1.Length);
            writer.BaseStream.Write(buffer2, 0, buffer2.Length);
            KeyValuePair <string, IPListElement>[] array = this.ToArray <KeyValuePair <string, IPListElement> >();
            for (int index = 0; index < this.Count; ++index)
            {
                int idx = writer.WriteInternal(PListElementFactory.Instance.CreateKeyElement(array[index].Key));
                writer.FormatIdx(idx).CopyTo((Array)buffer1, (int)writer.ElementIdxSize * index);
            }
            for (int index = 0; index < this.Count; ++index)
            {
                int idx = writer.WriteInternal(array[index].Value);
                writer.FormatIdx(idx).CopyTo((Array)buffer2, (int)writer.ElementIdxSize * index);
            }
            writer.BaseStream.Seek(position, SeekOrigin.Begin);
            writer.BaseStream.Write(buffer1, 0, buffer1.Length);
            writer.BaseStream.Write(buffer2, 0, buffer2.Length);
            writer.BaseStream.Seek(0L, SeekOrigin.End);
        }
Exemple #4
0
        public void WriteBinary(PListBinaryWriter writer)
        {
            byte[] buffer   = new byte[(int)writer.ElementIdxSize * this.Count];
            long   position = writer.BaseStream.Position;

            writer.BaseStream.Write(buffer, 0, buffer.Length);
            for (int index = 0; index < this.Count; ++index)
            {
                int idx = writer.WriteInternal(this[index]);
                writer.FormatIdx(idx).CopyTo((Array)buffer, (int)writer.ElementIdxSize * index);
            }
            writer.BaseStream.Seek(position, SeekOrigin.Begin);
            writer.BaseStream.Write(buffer, 0, buffer.Length);
            writer.BaseStream.Seek(0L, SeekOrigin.End);
        }