29 lines
695 B
C#
Executable File
29 lines
695 B
C#
Executable File
using System.Collections;
|
|
|
|
namespace Nbt.Tag;
|
|
|
|
public interface INbtArray : INbtValue, IEnumerable
|
|
{
|
|
new Array Value { get; set; }
|
|
}
|
|
|
|
public interface INbtArray<T> : INbtArray, INbtValue<T[]>, IEnumerable<T> where T : notnull
|
|
{
|
|
new T[] Value { get; set; }
|
|
}
|
|
|
|
public abstract class NbtArray<T>(T[] value) : NbtValue<T[]>(value), INbtArray<T> where T : notnull
|
|
{
|
|
Array INbtArray.Value
|
|
{
|
|
get => Value;
|
|
set => Value = (T[])value;
|
|
}
|
|
|
|
protected override T[] CopyValue() => (T[])value.Clone();
|
|
|
|
IEnumerator<T> IEnumerable<T>.GetEnumerator() => ((IEnumerable<T>)Value).GetEnumerator();
|
|
|
|
IEnumerator IEnumerable.GetEnumerator() => Value.GetEnumerator();
|
|
}
|