/// Abstract class representing the result of decoding a barcode, as more than
/// a String -- as some type of structured data. This might be a subclass which represents
/// a URL, or an e-mail address. will turn a raw
/// decoded string into the most appropriate type of structured representation.
///
/// Thanks to Jeff Griffin for proposing rewrite of these classes that relies less
/// on exception-based mechanisms during parsing.
///
/// @author Sean Owen
///
public abstract class ResultParser
{
private static readonly ResultParser[] PARSERS = {new BookmarkDoCoMoResultParser(), new AddressBookDoCoMoResultParser(), new EmailDoCoMoResultParser(), new AddressBookAUResultParser(), new VCardResultParser(), new BizcardResultParser(), new VEventResultParser(), new EmailAddressResultParser(), new SMTPResultParser(), new TelResultParser(), new SMSMMSResultParser(), new SMSTOMMSTOResultParser(), new GeoResultParser(), new WifiResultParser(), new URLTOResultParser(), new URIResultParser(), new ISBNResultParser(), new ProductResultParser(), new ExpandedProductResultParser()};
private static readonly string DIGITS = "\\d*";
private static readonly string ALPHANUM = "[a-zA-Z0-9]*";
private static readonly string AMPERSAND = "&";
private static readonly string EQUALS = "=";
private const string BYTE_ORDER_MARK = "\ufeff";
///