/// <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); }
/// <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); }
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); }
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); }