/// <summary>
        /// Writes the ini data to a stream.
        /// </summary>
        /// <param name="writer">The writer.</param>
        /// <param name="iniData">An <see cref="IniData"/> instance .</param>
        public void WriteData(StreamWriter writer, IniData iniData)
        {
            SectionDataCollection sdc = iniData.Sections;


            //Write sections
            foreach (SectionData sd in sdc)
            {
                //Write section comments
                foreach (string sectionComment in sd.Comments)
                {
                    writer.WriteLine(string.Format("{0}{1}", CommentDelimiter, sectionComment));
                }

                //Write section name
                writer.WriteLine(string.Format(
                                     "{0}{1}{2}",
                                     SectionDelimiters[0], sd.SectionName, SectionDelimiters[1]));

                //Write section keys
                foreach (KeyData kd in sd.Keys)
                {
                    //Write key comments
                    foreach (string keyComment in kd.Comments)
                    {
                        writer.WriteLine(string.Format("{0}{1}", CommentDelimiter, keyComment));
                    }

                    //Write key and value
                    writer.WriteLine(string.Format(
                                         "{0} {1} {2}",
                                         kd.KeyName, KeyValueDelimiter, kd.Value));
                }

                writer.WriteLine();                      //blank line
            }
        }
 /// <summary>
 /// Initializes a new IniData instance using a previous
 /// <see cref="SectionDataCollection"/>.
 /// </summary>
 /// <param name="sdc">
 /// <see cref="SectionDataCollection"/> object containing the
 /// data with the sections of the file</param>
 public IniData(SectionDataCollection sdc)
 {
     _sections = (SectionDataCollection)sdc.Clone();
 }
 /// <summary>
 /// Initializes an empty IniData instance.
 /// </summary>
 public IniData()
 {
     _sections = new SectionDataCollection();
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="SectionDataCollection"/> class
 /// from a previous instance of <see cref="SectionDataCollection"/>.
 /// </summary>
 /// <remarks>
 /// Data is deeply copied
 /// </remarks>
 /// <param name="ori">
 /// The instance of the <see cref="SectionDataCollection"/> class
 /// used to create the new instance.</param>
 public SectionDataCollection(SectionDataCollection ori)
 {
     _sectionData = new Dictionary <string, SectionData> (ori._sectionData);
 }