NBTExplorer/SubstrateCS/Source/Nbt/SchemaNode.cs
2011-10-08 00:01:51 -04:00

60 lines
1.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
namespace Substrate.Nbt
{
/// <summary>
/// A node in an NBT schema definition, used to define what values are considered valid for a given NBT node.
/// </summary>
public abstract class SchemaNode
{
private string _name;
private SchemaOptions _options;
/// <summary>
/// Gets the name of an expected NBT node.
/// </summary>
public string Name
{
get { return _name; }
}
/// <summary>
/// Gets additional schema options defined for this node.
/// </summary>
public SchemaOptions Options
{
get { return _options; }
}
/// <summary>
/// Constructs a new <see cref="SchemaNode"/> representing a <see cref="TagNode"/> named <paramref name="name"/>.
/// </summary>
/// <param name="name">The name of the corresponding <see cref="TagNode"/>.</param>
protected SchemaNode (string name)
{
_name = name;
}
/// <summary>
/// Constructs a new <see cref="SchemaNode"/> with additional options.
/// </summary>
/// <param name="name">The name of the corresponding <see cref="TagNode"/>.</param>
/// <param name="options">One or more option flags modifying the processing of this node.</param>
protected SchemaNode (string name, SchemaOptions options)
{
_name = name;
_options = options;
}
/// <summary>
/// Construct a sensible default NBT tree representative of this schema node.
/// </summary>
/// <returns>A <see cref="TagNode"/> that is valid for this schema node.</returns>
public virtual TagNode BuildDefaultTree ()
{
return null;
}
}
}