00001
00002
00003
00004
00005
00006
00007
00008
00015 #ifndef YUMPatchParser_h
00016 #define YUMPatchParser_h
00017
00018 #include <zypp/parser/yum/YUMParserData.h>
00019 #include <zypp/parser/XMLNodeIterator.h>
00020 #include <zypp/parser/LibXMLHelper.h>
00021 #include <zypp/Arch.h>
00022 #include <list>
00023
00024 namespace zypp
00025 {
00026 namespace parser
00027 {
00028 namespace yum
00029 {
00030
00051 class YUMPatchParser : public XMLNodeIterator<YUMPatchData_Ptr>
00052 {
00053 public:
00054 YUMPatchParser(std::istream &is, const std::string &baseUrl, parser::ParserProgress::Ptr progress = parser::ParserProgress::Ptr());
00055 YUMPatchParser();
00056 YUMPatchParser(YUMPatchData_Ptr& entry);
00057 virtual ~YUMPatchParser();
00058
00059 private:
00060 virtual bool isInterested(const xmlNodePtr nodePtr);
00061 virtual YUMPatchData_Ptr process(const xmlTextReaderPtr reader);
00062 void parseAtomsNode(YUMPatchData_Ptr dataPtr, xmlNodePtr formatNode);
00063 void parsePackageNode(YUMPatchData_Ptr dataPtr, xmlNodePtr formatNode);
00064 void parseMessageNode(YUMPatchData_Ptr dataPtr, xmlNodePtr formatNode);
00065 void parseScriptNode(YUMPatchData_Ptr dataPtr, xmlNodePtr formatNode);
00066 void parseFormatNode(YUMPatchPackage *dataPtr, xmlNodePtr formatNode);
00067 void parsePkgFilesNode(YUMPatchPackage *dataPtr, xmlNodePtr formatNode);
00068 void parsePkgPlainRpmNode(YUMPatchPackage *dataPtr, xmlNodePtr formatNode);
00069 void parsePkgPatchRpmNode(YUMPatchPackage *dataPtr, xmlNodePtr formatNode);
00070 void parsePkgDeltaRpmNode(YUMPatchPackage *dataPtr, xmlNodePtr formatNode);
00071 void parsePkgPatchBaseVersionNode(YUMPatchBaseVersion *dataPtr, xmlNodePtr formatNode);
00072 void parsePkgDeltaBaseVersionNode(YUMDeltaBaseVersion *dataPtr, xmlNodePtr formatNode);
00073 LibXMLHelper _helper;
00074 Arch _zypp_architecture;
00075 };
00076 }
00077 }
00078 }
00079
00080 #endif