From 70685bd233d5c32b9f762a5fc0e4d7fa42a013ee Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Wed, 11 Jul 2012 23:20:48 +0900 Subject: Rewritten Xml2XmlParser Now it is push parser + utility function for file parsing. --- src/Xml2XmlParser.h | 41 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 5 deletions(-) (limited to 'src/Xml2XmlParser.h') diff --git a/src/Xml2XmlParser.h b/src/Xml2XmlParser.h index 66cc1a8b..c608b6c7 100644 --- a/src/Xml2XmlParser.h +++ b/src/Xml2XmlParser.h @@ -2,7 +2,7 @@ /* * aria2 - The high speed download utility * - * Copyright (C) 2011 Tatsuhiro Tsujikawa + * Copyright (C) 2012 Tatsuhiro Tsujikawa * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -37,25 +37,56 @@ #include "common.h" +#include + #include +#include +#include + +#include namespace aria2 { -class BinaryStream; class ParserStateMachine; +namespace xml { + +enum XmlError { + ERR_XML_PARSE = -1, + ERR_RESET = -2 +}; + +struct SessionData { + std::deque charactersStack; + ParserStateMachine* psm; + SessionData(ParserStateMachine* psm) + : psm(psm) + {} + void reset() + { + charactersStack.clear(); + } +}; + class XmlParser { public: // This object does not delete psm. XmlParser(ParserStateMachine* psm); ~XmlParser(); - bool parseFile(const char* filename); - bool parseBinaryStream(BinaryStream* binaryStream); - bool parseMemory(const char* xml, size_t size); + ssize_t parseUpdate(const char* data, size_t size); + ssize_t parseFinal(const char* data, size_t size); + int reset(); private: ParserStateMachine* psm_; + SessionData sessionData_; + xmlParserCtxtPtr ctx_; + int lastError_; }; +bool parseFile(const std::string& filename, ParserStateMachine* psm); + +} // namespace xml + } // namespace aria2 #endif // D_XML2_XML_PARSER_H -- cgit