00001 /*---------------------------------------------------------------------\ 00002 | ____ _ __ __ ___ | 00003 | |__ / \ / / . \ . \ | 00004 | / / \ V /| _/ _/ | 00005 | / /__ | | | | | | | 00006 | /_____||_| |_| |_| | 00007 | | 00008 \---------------------------------------------------------------------*/ 00013 #ifndef XMLPatchParser_h 00014 #define XMLPatchParser_h 00015 00016 #include <zypp/parser/xmlstore/XMLResObjectParser.h> 00017 #include <zypp/parser/xmlstore/XMLParserData.h> 00018 #include <zypp/parser/XMLNodeIterator.h> 00019 #include <zypp/parser/LibXMLHelper.h> 00020 #include <list> 00021 00022 namespace zypp 00023 { 00024 namespace parser 00025 { 00026 namespace xmlstore 00027 { 00028 00029 class XMLPatchParser : public XMLNodeIterator<XMLPatchData_Ptr>, public XMLResObjectParser 00030 { 00031 public: 00032 XMLPatchParser(std::istream &is, const std::string &baseUrl); 00033 XMLPatchParser(); 00034 XMLPatchParser(XMLPatchData_Ptr& entry); 00035 virtual ~XMLPatchParser(); 00036 00037 private: 00038 virtual bool isInterested(const xmlNodePtr nodePtr); 00039 virtual XMLPatchData_Ptr process(const xmlTextReaderPtr reader); 00040 void parseAtomsNode(XMLPatchData_Ptr dataPtr, xmlNodePtr formatNode); 00041 //void parsePackageNode(XMLPatchData_Ptr dataPtr, xmlNodePtr formatNode); 00042 void parseMessageNode(XMLPatchData_Ptr dataPtr, xmlNodePtr formatNode); 00043 void parseScriptNode(XMLPatchData_Ptr dataPtr, xmlNodePtr formatNode); 00044 void parseAtomNode(XMLPatchData_Ptr dataPtr, xmlNodePtr formatNode); 00045 // base method to parse capabilities and other stuff 00046 void parseResolvableNode(XMLResObjectData_Ptr dataPtr, xmlNodePtr formatNode); 00047 }; 00048 } // namespace xml 00049 } // namespace parser 00050 } // namespace zypp 00051 00052 #endif