// <file>
//     <copyright see="prj:///doc/copyright.txt"/>
//     <license see="prj:///doc/license.txt"/>
//     <owner name="Mike Krüger" email="mike@icsharpcode.net"/>
//     <version value="$version"/>
// </file>

using System;
using System.Reflection;

namespace ICSharpCode.Core.AddIns
{
	/// <summary>
	/// Indicates that field should be treated as a xml attribute for the codon or condition.
	/// The field is treated as a array, separated by ',' example :
	/// fileextensions = ".cpp,.cc,.C"
	/// </summary>
	[AttributeUsage(AttributeTargets.Field, Inherited=true)]
	public class XmlMemberArrayAttribute : Attribute
	{
		char[]   separator = new char[] { ',' };
		string name;
		bool   isRequired;
		
		/// <summary>
		/// Constructs a new instance.
		/// </summary>
		public XmlMemberArrayAttribute(string name)
		{
			this.name  = name;
			isRequired = false;
		}
		
		public char[] Separator {
			get {
				return separator;
			}
			set {
				separator = value;
			}
		}
		
		/// <summary>
		/// The name of the attribute.
		/// </summary>
		public string Name {
			get {
				return name;
			}
			set {
				name = value;
			}
		}
		
		/// <summary>
		/// returns <code>true</code> if this attribute is required.
		/// </summary>
		public bool IsRequired {
			get {
				return isRequired;
			}
			set {
				isRequired = value;
			}
		}
	}
}
