2021-05-07 22:05:11 -04:00

60 lines
1.7 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using UniversalEditor.ObjectModels.VersatileContainer.Sections;
namespace UniversalEditor.ObjectModels.VersatileContainer
{
public abstract class VersatileContainerSection : ICloneable
{
public class VersatileContainerSectionCollection
: System.Collections.ObjectModel.Collection<VersatileContainerSection>
{
private Dictionary<string, VersatileContainerSection> sectionsByName = new Dictionary<string, VersatileContainerSection>();
public VersatileContainerSection this[string Name]
{
get
{
if (sectionsByName.ContainsKey(Name))
{
return sectionsByName[Name];
}
return null;
}
}
protected override void InsertItem(int index, VersatileContainerSection item)
{
if (!String.IsNullOrEmpty(item.Name)) sectionsByName.Add(item.Name, item);
base.InsertItem(index, item);
}
protected override void RemoveItem(int index)
{
if (!String.IsNullOrEmpty(this[index].Name)) sectionsByName.Remove(this[index].Name);
base.RemoveItem(index);
}
public VersatileContainerContentSection Add(string Name, byte[] Data)
{
return Add(Name, String.Empty, Data);
}
public VersatileContainerContentSection Add(string Name, string ClassName, byte[] Data)
{
VersatileContainerContentSection content = new VersatileContainerContentSection();
content.Name = Name;
content.ClassName = ClassName;
content.Data = Data;
Add(content);
return content;
}
}
private string mvarName = String.Empty;
public string Name { get { return mvarName; } set { mvarName = value; } }
public abstract object Clone();
}
}