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 namespace parser {
00026 namespace yum {
00027
00048 class YUMPatchParser : public XMLNodeIterator<YUMPatchData_Ptr>
00049 {
00050 public:
00051 YUMPatchParser(std::istream &is, const std::string &baseUrl);
00052 YUMPatchParser();
00053 YUMPatchParser(YUMPatchData_Ptr& entry);
00054 virtual ~YUMPatchParser();
00055
00056 private:
00057 virtual bool isInterested(const xmlNodePtr nodePtr);
00058 virtual YUMPatchData_Ptr process(const xmlTextReaderPtr reader);
00059 void parseAtomsNode(YUMPatchData_Ptr dataPtr, xmlNodePtr formatNode);
00060 void parsePackageNode(YUMPatchData_Ptr dataPtr, xmlNodePtr formatNode);
00061 void parseMessageNode(YUMPatchData_Ptr dataPtr, xmlNodePtr formatNode);
00062 void parseScriptNode(YUMPatchData_Ptr dataPtr, xmlNodePtr formatNode);
00063 void parseFormatNode(YUMPatchPackage *dataPtr, xmlNodePtr formatNode);
00064 void parsePkgFilesNode(YUMPatchPackage *dataPtr, xmlNodePtr formatNode);
00065 void parsePkgPlainRpmNode(YUMPatchPackage *dataPtr, xmlNodePtr formatNode);
00066 void parsePkgPatchRpmNode(YUMPatchPackage *dataPtr, xmlNodePtr formatNode);
00067 void parsePkgDeltaRpmNode(YUMPatchPackage *dataPtr, xmlNodePtr formatNode);
00068 void parsePkgBaseVersionNode(YUMBaseVersion *dataPtr, xmlNodePtr formatNode);
00069 LibXMLHelper _helper;
00070 Arch _zypp_architecture;
00071 };
00072 }
00073 }
00074 }
00075
00076 #endif