// GenbankParser.hpp #if !defined(GENBANK_PARSER_HPP) #define GENBANK_PARSER_HPP #include #include #include "Parser.hpp" #include "Reader.hpp" namespace NGBW { struct GenbankRecord { typedef std::vector VersionList; void clear() throw() { locus.clear(); definition.clear(); accession.clear(); organism.clear(); sequence.clear(); version.clear(); } std::string locus; std::string definition; std::string accession; std::string organism; std::string sequence; VersionList version; }; class GenbankParser : public Parser { public: GenbankParser(Reader &input) throw() : Parser(input) { } ~GenbankParser() throw() { } bool Parse(GenbankRecord &record); private: void ParseLocus(GenbankRecord &record); void ParseDefinition(GenbankRecord &record); void ParseAccession(GenbankRecord &record); void ParseVersion(GenbankRecord &record); void ParseSource(GenbankRecord &record); void ParseOrigin(GenbankRecord &record); void IgnoreField(); bool FindEndToken(); }; } // namespace NGBW #endif // GENBANK_PARSER_HPP