using System;
using System.Collections;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Text;
namespace Island.StandardLib.Storage
{
///
/// 表示一个每项长度固定的可序列化变长数组(固定项长可变数组)
///
/// 定长项的类型
[Serializable]
public class StorableFixedArray : IStorable, IEnumerable where T : IStorable, new()
{
List array;
///
/// 初始化固定项长可变数组
///
public StorableFixedArray()
{
array = new List();
}
public void ReadFromData(DataStorage data)
{
data.Read(out int size);
for (int i = 0; i < size; i++)
array.Add(data.Read());
}
public void WriteToData(DataStorage data)
{
data.Write(array.Count);
for (int i = 0; i < array.Count; i++)
data.Write(array[i]);
}
public void Add(T item)
{
array.Add(item);
}
public void AddRange(IEnumerable item)
{
array.AddRange(item);
}
public void Remove(T item)
{
array.Remove(item);
}
public void RemoveAt(int index)
{
array.RemoveAt(index);
}
public void Clear()
{
array.Clear();
}
public IEnumerator GetEnumerator()
{
List tl = new List();
for (int i = 0; i < array.Count; i++)
tl.Add(array[i]);
return tl.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
List tl = new List();
for (int i = 0; i < array.Count; i++)
tl.Add(array[i]);
return tl.GetEnumerator();
}
public int Count
{
get
{
return array.Count;
}
}
public int Size
{
get
{
return array.Count;
}
}
public int Length
{
get
{
return array.Count;
}
}
public T this[int index]
{
get
{
return array[index];
}
}
}
}