using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace agree
{
	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>
	/// TDL exception definitions
	/// </summary>
	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	public class TdlException : Exception
	{
		String filename;
		int line;
		int column;

		public TdlException(String fmt, params Object[] args)
			: base(String.Format(fmt, args))
		{
		}

		public TdlException(String filename, int line, int column)
		{
			this.filename = filename;
			this.line = line;
			this.column = column;
		}
		public TdlException(ErrorPos ep, String err_msg)
			: base(err_msg)
		{
			this.filename = ep.file;
			this.line = ep.line;
			this.column = ep.col;
		}
		public TdlException(ErrorPos ep, String fmt, params Object[] args)
			: base(String.Format(fmt, args))
		{
			this.filename = ep.file;
			this.line = ep.line;
			this.column = ep.col;
		}
	};

	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	///
	///
	///
	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	public class TfsException : Exception
	{
		public TfsException(String msg)
			: base(msg)
		{
		}
		public TfsException(String fmt, params Object[] args)
			: base(String.Format(fmt, args))
		{
		}
	};

	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	///
	///
	///
	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	public unsafe partial class TypeMgr
	{
		public class InternalConsistencyException : Exception
		{
			public InternalConsistencyException(String fmt, params Object[] args)
				: base(String.Format(fmt, args))
			{
			}
		};
	};

}