using System;
namespace QFSW.QC
{
///
/// Creates a Parser that is loaded and used by the QuantumParser.
///
public interface IQcParser
{
///
/// The priority of this parser to resolve multiple parsers covering the same type.
///
int Priority { get; }
///
/// If this parser can parse to the incoming type.
///
/// The type to test.
/// If it can be parsed.
bool CanParse(Type type);
///
/// Parses the incoming string to the specified type.
///
/// The incoming string data.
/// The type to parse the incoming string to.
/// Delegate back to the main parser to allow for recursive parsing of sub elements.
/// The parsed object.
object Parse(string value, Type type, Func recursiveParser);
}
}