zypp::parser::yum::YUMPatchParser Class Reference

Parser for YUM primary.xml files (containing package metadata) Use this class as an iterator that produces, one after one, YUMPatchData_Ptr(s) for the XML package elements in the input. More...

#include <YUMPatchParser.h>

Inheritance diagram for zypp::parser::yum::YUMPatchParser:

zypp::parser::XMLNodeIterator< YUMPatchData_Ptr > zypp::parser::XMLNodeIteratorBase iterator List of all members.

Public Member Functions

 YUMPatchParser (std::istream &is, const std::string &baseUrl)
 YUMPatchParser ()
 YUMPatchParser (YUMPatchData_Ptr &entry)
virtual ~YUMPatchParser ()

Private Member Functions

virtual bool isInterested (const xmlNodePtr nodePtr)
 filter for the xml nodes The derived class decides which xml nodes it is actually interested in.
virtual YUMPatchData_Ptr process (const xmlTextReaderPtr reader)
 process an xml node The derived class has to produce the ENTRYTYPE object here.
void parseAtomsNode (YUMPatchData_Ptr dataPtr, xmlNodePtr formatNode)
void parsePackageNode (YUMPatchData_Ptr dataPtr, xmlNodePtr formatNode)
void parseMessageNode (YUMPatchData_Ptr dataPtr, xmlNodePtr formatNode)
void parseScriptNode (YUMPatchData_Ptr dataPtr, xmlNodePtr formatNode)
void parseFormatNode (YUMPatchPackage *dataPtr, xmlNodePtr formatNode)
void parsePkgFilesNode (YUMPatchPackage *dataPtr, xmlNodePtr formatNode)
void parsePkgPlainRpmNode (YUMPatchPackage *dataPtr, xmlNodePtr formatNode)
void parsePkgPatchRpmNode (YUMPatchPackage *dataPtr, xmlNodePtr formatNode)
void parsePkgDeltaRpmNode (YUMPatchPackage *dataPtr, xmlNodePtr formatNode)
void parsePkgBaseVersionNode (YUMBaseVersion *dataPtr, xmlNodePtr formatNode)

Private Attributes

LibXMLHelper _helper
Arch _zypp_architecture

Detailed Description

Parser for YUM primary.xml files (containing package metadata) Use this class as an iterator that produces, one after one, YUMPatchData_Ptr(s) for the XML package elements in the input.

Here's an example:

for (YUMPatchParser iter(anIstream, baseUrl), iter != YUMOtherParser.end(), // or: iter() != 0, or ! iter.atEnd() ++iter) { doSomething(*iter) }

The iterator owns the pointer (i.e., caller must not delete it) until the next ++ operator is called. At this time, it will be destroyed (and a new ENTRYTYPE is created.)

If the input is fundamentally flawed so that it makes no sense to continue parsing, XMLNodeIterator will log it and consider the input as finished. You can query the exit status with errorStatus().

Definition at line 48 of file YUMPatchParser.h.


Constructor & Destructor Documentation

zypp::parser::yum::YUMPatchParser::YUMPatchParser std::istream &  is,
const std::string &  baseUrl
 

zypp::parser::yum::YUMPatchParser::YUMPatchParser  ) 
 

Definition at line 40 of file YUMPatchParser.cc.

zypp::parser::yum::YUMPatchParser::YUMPatchParser YUMPatchData_Ptr &  entry  ) 
 

Definition at line 44 of file YUMPatchParser.cc.

zypp::parser::yum::YUMPatchParser::~YUMPatchParser  )  [virtual]
 

Definition at line 30 of file YUMPatchParser.cc.


Member Function Documentation

bool zypp::parser::yum::YUMPatchParser::isInterested const xmlNodePtr  nodePtr  )  [private, virtual]
 

filter for the xml nodes The derived class decides which xml nodes it is actually interested in.

For each that is selected, process() will be called an the resulting ENTRYTYPE object used as the next value for the iterator. Documentation for the node structure can be found in the libxml2 documentation. Have a look at LibXMLHelper to access node attributes and contents.

Parameters:
nodePtr points to the xml node in question. Only the node is available, not the subtree. See libxml2 documentation.
Returns:
true if interested

Implements zypp::parser::XMLNodeIterator< YUMPatchData_Ptr >.

Definition at line 52 of file YUMPatchParser.cc.

References _helper, zypp::parser::LibXMLHelper::isElement(), and zypp::parser::LibXMLHelper::name().

YUMPatchData_Ptr zypp::parser::yum::YUMPatchParser::process const xmlTextReaderPtr  reader  )  [private, virtual]
 

process an xml node The derived class has to produce the ENTRYTYPE object here.

Details about the xml reader is in the libxml2 documentation. You'll most probably want to use xmlTextReaderExpand(reader) to request the full subtree, and then use the links in the resulting node structure to traverse, and class LibXMLHelper to access the attributes and element contents. fetchNext() cannot throw an error since it will be called in the constructor. Instead, in case of a fundamental syntax error the error is saved and will be thrown with the next checkError().

Parameters:
readerPtr points to the xmlTextReader that reads the xml stream.
Returns:

Implements zypp::parser::XMLNodeIterator< YUMPatchData_Ptr >.

Definition at line 59 of file YUMPatchParser.cc.

References _helper, _zypp_architecture, zypp::parser::LibXMLHelper::attribute(), zypp::parser::LibXMLHelper::content(), DBG, zypp::parser::LibXMLHelper::isElement(), zypp::parser::LibXMLHelper::name(), name, parseAtomsNode(), zypp::parser::yum::YUMPrimaryParser::parseDependencyEntries(), zypp::parser::LibXMLHelper::positionInfo(), WAR, xml_assert, and ZYPP_CAUGHT.

void zypp::parser::yum::YUMPatchParser::parseAtomsNode YUMPatchData_Ptr  dataPtr,
xmlNodePtr  formatNode
[private]
 

Definition at line 170 of file YUMPatchParser.cc.

References _helper, zypp::parser::LibXMLHelper::isElement(), zypp::parser::LibXMLHelper::name(), name, parseMessageNode(), parsePackageNode(), parseScriptNode(), zypp::parser::LibXMLHelper::positionInfo(), WAR, xml_assert, and XXX.

Referenced by process().

void zypp::parser::yum::YUMPatchParser::parsePackageNode YUMPatchData_Ptr  dataPtr,
xmlNodePtr  formatNode
[private]
 

Definition at line 462 of file YUMPatchParser.cc.

References _helper, zypp::parser::LibXMLHelper::attribute(), zypp::parser::LibXMLHelper::content(), zypp::parser::LibXMLHelper::isElement(), zypp::parser::LibXMLHelper::name(), name, parseFormatNode(), parsePkgFilesNode(), zypp::parser::LibXMLHelper::positionInfo(), WAR, and XXX.

Referenced by parseAtomsNode().

void zypp::parser::yum::YUMPatchParser::parseMessageNode YUMPatchData_Ptr  dataPtr,
xmlNodePtr  formatNode
[private]
 

Definition at line 631 of file YUMPatchParser.cc.

References _helper, zypp::parser::LibXMLHelper::attribute(), zypp::parser::LibXMLHelper::content(), zypp::parser::LibXMLHelper::isElement(), zypp::parser::LibXMLHelper::name(), name, zypp::parser::yum::YUMPrimaryParser::parseDependencyEntries(), zypp::parser::LibXMLHelper::positionInfo(), and WAR.

Referenced by parseAtomsNode().

void zypp::parser::yum::YUMPatchParser::parseScriptNode YUMPatchData_Ptr  dataPtr,
xmlNodePtr  formatNode
[private]
 

Definition at line 541 of file YUMPatchParser.cc.

References _helper, zypp::parser::LibXMLHelper::attribute(), zypp::parser::LibXMLHelper::content(), zypp::parser::LibXMLHelper::isElement(), zypp::parser::LibXMLHelper::name(), name, zypp::parser::yum::YUMPrimaryParser::parseDependencyEntries(), zypp::parser::LibXMLHelper::positionInfo(), and WAR.

Referenced by parseAtomsNode().

void zypp::parser::yum::YUMPatchParser::parseFormatNode YUMPatchPackage dataPtr,
xmlNodePtr  formatNode
[private]
 

Definition at line 201 of file YUMPatchParser.cc.

References _helper, zypp::parser::LibXMLHelper::attribute(), zypp::parser::yum::YUMPatchPackage::authors, zypp::parser::yum::YUMPatchPackage::buildhost, zypp::parser::yum::YUMObjectData::conflicts, zypp::parser::LibXMLHelper::content(), zypp::parser::yum::YUMPatchPackage::dirSizes, zypp::parser::yum::YUMObjectData::enhances, zypp::parser::yum::YUMPatchPackage::files, zypp::parser::yum::YUMObjectData::freshens, zypp::parser::yum::YUMPatchPackage::group, zypp::parser::yum::YUMPatchPackage::headerEnd, zypp::parser::yum::YUMPatchPackage::headerStart, zypp::parser::yum::YUMPatchPackage::installOnly, zypp::parser::LibXMLHelper::isElement(), zypp::parser::yum::YUMPatchPackage::keywords, zypp::parser::yum::YUMPatchPackage::license, zypp::parser::yum::YUMPatchPackage::media, zypp::parser::LibXMLHelper::name(), name, zypp::parser::yum::YUMObjectData::obsoletes, zypp::parser::yum::YUMPrimaryParser::parseAuthorEntries(), zypp::parser::yum::YUMPrimaryParser::parseDependencyEntries(), zypp::parser::yum::YUMPrimaryParser::parseDirsizeEntries(), zypp::parser::yum::YUMPrimaryParser::parseKeywordEntries(), zypp::parser::LibXMLHelper::positionInfo(), zypp::parser::yum::YUMObjectData::prerequires, zypp::parser::yum::YUMObjectData::provides, zypp::parser::yum::YUMObjectData::recommends, zypp::parser::yum::YUMObjectData::requires, zypp::parser::yum::YUMPatchPackage::sourcerpm, zypp::parser::yum::YUMObjectData::suggests, zypp::parser::yum::YUMObjectData::supplements, zypp::parser::yum::YUMPatchPackage::vendor, WAR, and xml_assert.

Referenced by parsePackageNode().

void zypp::parser::yum::YUMPatchParser::parsePkgFilesNode YUMPatchPackage dataPtr,
xmlNodePtr  formatNode
[private]
 

Definition at line 430 of file YUMPatchParser.cc.

References _helper, zypp::parser::LibXMLHelper::isElement(), zypp::parser::LibXMLHelper::name(), name, parsePkgDeltaRpmNode(), parsePkgPatchRpmNode(), parsePkgPlainRpmNode(), zypp::parser::LibXMLHelper::positionInfo(), and WAR.

Referenced by parsePackageNode().

void zypp::parser::yum::YUMPatchParser::parsePkgPlainRpmNode YUMPatchPackage dataPtr,
xmlNodePtr  formatNode
[private]
 

Definition at line 296 of file YUMPatchParser.cc.

References _helper, zypp::parser::yum::YUMPlainRpm::arch, zypp::parser::LibXMLHelper::attribute(), zypp::parser::yum::YUMPlainRpm::buildtime, zypp::parser::yum::YUMPlainRpm::downloadsize, zypp::parser::yum::YUMPlainRpm::filename, zypp::parser::LibXMLHelper::isElement(), zypp::parser::yum::YUMPlainRpm::md5sum, zypp::parser::LibXMLHelper::name(), name, zypp::parser::LibXMLHelper::positionInfo(), and WAR.

Referenced by parsePkgFilesNode().

void zypp::parser::yum::YUMPatchParser::parsePkgPatchRpmNode YUMPatchPackage dataPtr,
xmlNodePtr  formatNode
[private]
 

Definition at line 319 of file YUMPatchParser.cc.

References _helper, zypp::parser::yum::YUMPatchRpm::arch, zypp::parser::LibXMLHelper::attribute(), zypp::parser::yum::YUMPatchRpm::baseVersions, zypp::parser::yum::YUMPatchRpm::buildtime, zypp::parser::yum::YUMPatchRpm::checksum, zypp::parser::yum::YUMPatchRpm::checksumType, zypp::parser::LibXMLHelper::content(), zypp::parser::yum::YUMPatchRpm::downloadsize, zypp::parser::yum::YUMPatchRpm::filename, zypp::parser::LibXMLHelper::isElement(), zypp::parser::yum::YUMPatchRpm::location, zypp::parser::yum::YUMPatchRpm::md5sum, zypp::parser::yum::YUMPatchRpm::media, zypp::parser::LibXMLHelper::name(), name, parsePkgBaseVersionNode(), zypp::parser::LibXMLHelper::positionInfo(), and WAR.

Referenced by parsePkgFilesNode().

void zypp::parser::yum::YUMPatchParser::parsePkgDeltaRpmNode YUMPatchPackage dataPtr,
xmlNodePtr  formatNode
[private]
 

Definition at line 369 of file YUMPatchParser.cc.

References _helper, zypp::parser::yum::YUMDeltaRpm::arch, zypp::parser::LibXMLHelper::attribute(), zypp::parser::yum::YUMDeltaRpm::baseVersion, zypp::parser::yum::YUMDeltaRpm::buildtime, zypp::parser::yum::YUMDeltaRpm::checksum, zypp::parser::yum::YUMDeltaRpm::checksumType, zypp::parser::LibXMLHelper::content(), zypp::parser::yum::YUMDeltaRpm::downloadsize, zypp::parser::yum::YUMDeltaRpm::filename, zypp::parser::LibXMLHelper::isElement(), zypp::parser::yum::YUMDeltaRpm::location, zypp::parser::yum::YUMDeltaRpm::md5sum, zypp::parser::yum::YUMDeltaRpm::media, zypp::parser::LibXMLHelper::name(), name, parsePkgBaseVersionNode(), zypp::parser::LibXMLHelper::positionInfo(), and WAR.

Referenced by parsePkgFilesNode().

void zypp::parser::yum::YUMPatchParser::parsePkgBaseVersionNode YUMBaseVersion dataPtr,
xmlNodePtr  formatNode
[private]
 

Definition at line 418 of file YUMPatchParser.cc.

References _helper, zypp::parser::LibXMLHelper::attribute(), zypp::parser::yum::YUMBaseVersion::buildtime, zypp::parser::yum::YUMBaseVersion::epoch, zypp::parser::yum::YUMBaseVersion::md5sum, zypp::parser::yum::YUMBaseVersion::rel, zypp::parser::yum::YUMBaseVersion::source_info, and zypp::parser::yum::YUMBaseVersion::ver.

Referenced by parsePkgDeltaRpmNode(), and parsePkgPatchRpmNode().


Member Data Documentation

LibXMLHelper zypp::parser::yum::YUMPatchParser::_helper [private]
 

Definition at line 69 of file YUMPatchParser.h.

Referenced by isInterested(), parseAtomsNode(), parseFormatNode(), parseMessageNode(), parsePackageNode(), parsePkgBaseVersionNode(), parsePkgDeltaRpmNode(), parsePkgFilesNode(), parsePkgPatchRpmNode(), parsePkgPlainRpmNode(), parseScriptNode(), and process().

Arch zypp::parser::yum::YUMPatchParser::_zypp_architecture [private]
 

Definition at line 70 of file YUMPatchParser.h.

Referenced by process().


The documentation for this class was generated from the following files:
Generated on Thu Jul 6 00:07:33 2006 for zypp by  doxygen 1.4.6