YUMParserData.cc

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------\
00002 |                          ____ _   __ __ ___                          |
00003 |                         |__  / \ / / . \ . \                         |
00004 |                           / / \ V /|  _/  _/                         |
00005 |                          / /__ | | | | | |                           |
00006 |                         /_____||_| |_| |_|                           |
00007 |                                                                      |
00008 \---------------------------------------------------------------------*/
00013 #include <iostream>
00014 
00015 #include <zypp/parser/yum/YUMParserData.h>
00016 
00017 using namespace std;
00018 namespace zypp
00019 {
00020 namespace parser
00021 {
00022 namespace yum
00023 {
00024 
00025 YUMDependency::YUMDependency()
00026 { }
00027 
00028 YUMDependency::YUMDependency(const std::string& kind,
00029                              const std::string& name,
00030                              const std::string& flags,
00031                              const std::string& epoch,
00032                              const std::string& ver,
00033                              const std::string& rel,
00034                              const std::string& pre)
00035     : kind(kind),
00036     name(name),
00037     flags(flags),
00038     epoch(epoch),
00039     ver(ver),
00040     rel(rel),
00041     pre(pre)
00042 { };
00043 
00044 YUMDependency::YUMDependency(const std::string& kind,
00045                              const std::string& encoded)
00046     : kind(kind),
00047     encoded(encoded)
00048 { };
00049 
00050 bool YUMDependency::isEncoded() const
00051 {
00052   return !encoded.empty();
00053 }
00054 
00055 YUMDirSize::YUMDirSize()
00056 { }
00057 
00058 YUMDirSize::YUMDirSize(const std::string& path,
00059                        const std::string& sizeKByte,
00060                        const std::string& fileCount)
00061     : path(path), sizeKByte(sizeKByte), fileCount(fileCount)
00062 { }
00063 
00064 YUMRepomdData::YUMRepomdData()
00065 { }
00066 
00067 YUMPrimaryData::YUMPrimaryData()
00068     : installOnly( false )
00069 { }
00070 
00071 FileData::FileData()
00072 { }
00073 
00074 YUMPatchData::YUMPatchData()
00075     : rebootNeeded( false )
00076     , packageManager( false )
00077 { }
00078 
00079 FileData::FileData(const std::string &name,
00080                    const std::string &type)
00081     : name(name), type(type)
00082 { }
00083 
00084 
00085 YUMGroupData::YUMGroupData()
00086 { }
00087 
00088 YUMPatternData::YUMPatternData()
00089 { }
00090 
00091 MetaPkg::MetaPkg()
00092 { }
00093 
00094 MetaPkg::MetaPkg(const std::string& type,
00095                  const std::string& name)
00096     : type(type), name(name)
00097 { }
00098 
00099 PackageReq::PackageReq()
00100 { }
00101 
00102 PackageReq::PackageReq(const std::string& type,
00103                        const std::string& epoch,
00104                        const std::string& ver,
00105                        const std::string& rel,
00106                        const std::string& name)
00107     : type(type), epoch(epoch), ver(ver), rel(rel), name(name)
00108 { }
00109 
00110 ChangelogEntry::ChangelogEntry()
00111 { }
00112 
00113 ChangelogEntry::ChangelogEntry(const std::string& author,
00114                                const std::string& date,
00115                                const std::string& entry)
00116     : author(author), date(date), entry(entry)
00117 { }
00118 
00119 
00120 YUMFileListData::YUMFileListData()
00121 { }
00122 
00123 YUMOtherData::YUMOtherData()
00124 { }
00125 
00126 
00127 /* Define pointer classes */
00128 
00129 IMPL_PTR_TYPE(YUMRepomdData);
00130 IMPL_PTR_TYPE(YUMPrimaryData);
00131 IMPL_PTR_TYPE(YUMGroupData);
00132 IMPL_PTR_TYPE(YUMPatternData);
00133 IMPL_PTR_TYPE(YUMFileListData);
00134 IMPL_PTR_TYPE(YUMOtherData);
00135 IMPL_PTR_TYPE(YUMPatchData);
00136 IMPL_PTR_TYPE(YUMPatchesData);
00137 IMPL_PTR_TYPE(YUMProductData);
00138 IMPL_PTR_TYPE(YUMPatchPackage);
00139 IMPL_PTR_TYPE(YUMPatchScript);
00140 IMPL_PTR_TYPE(YUMPatchMessage);
00141 
00142 /* output operators */
00143 
00144 namespace
00145 {
00152 template<class T>
00153 ostream& operator<<(ostream &out, const list<T>& aList)
00154 {
00155   typedef typename list<T>::const_iterator IterType;
00156   for (IterType iter = aList.begin();
00157        iter != aList.end();
00158        ++iter)
00159   {
00160     if (iter != aList.begin())
00161       out << endl;
00162     operator<<(out,*iter);
00163   }
00164   return out;
00165 }
00166 }
00167 
00174 string join(const list<string>& aList,
00175             const string& joiner)
00176 {
00177   string res;
00178   for (list<string>::const_iterator iter = aList.begin();
00179        iter != aList.end();
00180        ++ iter)
00181   {
00182     if (iter != aList.begin())
00183       res += joiner;
00184     res += *iter;
00185   }
00186   return res;
00187 }
00188 
00189 ostream& operator<<(ostream &out, const YUMDependency& data)
00190 {
00191   if (! data.kind.empty())
00192     out << "[" << data.kind << "] ";
00193   out << data.name << " " << data.flags << " ";
00194   if (! data.epoch.empty())
00195     out << data.epoch << "-";
00196   out << data.ver << "-" << data.rel ;
00197   if (! data.pre.empty() && data.pre != "0")
00198     out << " (pre=" << data.pre << ")";
00199   return out;
00200 }
00201 
00202 ostream& operator<<(ostream &out, const YUMDirSize& data)
00203 {
00204   out << data.path
00205   << ": " << data.sizeKByte << " kByte, "
00206   << data.fileCount << " files";
00207   return out;
00208 }
00209 
00210 ostream& operator<<(ostream &out, const FileData& data)
00211 {
00212   out << data.name;
00213   if (! data.type.empty())
00214   {
00215     out << ": " << data.type;
00216   }
00217   return out;
00218 }
00219 
00220 ostream& operator<<(ostream &out, const MetaPkg& data)
00221 {
00222   out << "type: " << data.type
00223   << ", name: " << data.name;
00224   return out;
00225 }
00226 
00227 ostream& operator<<(ostream &out, const PackageReq& data)
00228 {
00229   out << "[" << data.type << "] "
00230   << data.name
00231   << " " << data.epoch
00232   << "-" << data.ver
00233   << "-" << data.rel;
00234   return out;
00235 }
00236 
00237 ostream& operator<<(ostream &out, const ChangelogEntry& data)
00238 {
00239   out << data.date
00240   << " - " << data.author << endl
00241   << data.entry;
00242   return out;
00243 }
00244 
00245 ostream& operator<<(ostream &out, const YUMRepomdData& data)
00246 {
00247   out << "Repomd Data: " << endl
00248   << "  type: '" << data.type << "'" << endl
00249   << "  location: '" << data.location << "'" <<endl
00250   << "  checksumType: '" << data.checksumType << "'" << endl
00251   << "  checksum: '" << data.checksum << "'" << endl
00252   << "  timestamp: '" << data.timestamp << "'" << endl
00253   << "  openChecksumType: '" << data.openChecksumType << "'" << endl
00254   << "  openChecksum: '" << data.openChecksum << "'" << endl;
00255   return out;
00256 }
00257 
00258 ostream& operator<<(ostream &out, const YUMPrimaryData& data)
00259 {
00260   out << "-------------------------------------------------" << endl
00261   << "Primary Data: " << endl
00262   << "name: '" << data.name << "'" << endl
00263   << "type: '" << data.type << "'" << endl
00264   << " arch: '" << data.arch << "'" << endl
00265   << " ver: '" << data.ver << "'" << endl
00266   << "checksumType: '" << data.checksumType << "'" << endl
00267   << "checksumPkgid: '" << data.checksumPkgid << "'" << endl
00268   << "checksum: '" << data.checksum << "'" << endl
00269   << "summary: '" << data.summary << "'" << endl
00270   << "description: '" << data.description << "'" << endl
00271   << "packager: '" << data.packager << "'" << endl
00272   << "url: '" << data.url << "'" << endl
00273   << "timeFile: '" << data.timeFile << "'" << endl
00274   << "timeBuild: '" << data.timeBuild << "'" << endl
00275   << "sizePackage: '" << data.sizePackage << "'" << endl
00276   << "sizeInstalled: '" << data.sizeInstalled << "'" << endl
00277   << "sizeArchive: '" << data.sizeArchive << "'" << endl
00278   << "location: '" << data.location << "'" << endl
00279   << "license: '" << data.license << "'" << endl
00280   << "vendor: '" << data.vendor << "'" << endl
00281   << "group: '" << data.group << "'" << endl
00282   << "buildhost: '" << data.buildhost << "'" << endl
00283   << "sourcerpm: '" << data.sourcerpm << "'" << endl
00284   << "headerStart: '" << data.headerStart << "'" << endl
00285   << "headerEnd: '" << data.headerEnd << "'" << endl
00286   << "provides:" << endl
00287   << data.provides << endl
00288   << "conflicts:" << endl
00289   << data.conflicts << endl
00290   << "obsoletes:" << endl
00291   << data.obsoletes << endl
00292   << "requires:" << endl
00293   << data.requires << endl
00294   << "recommends:" << endl
00295   << data.recommends << endl
00296   << "suggests:" << endl
00297   << data.suggests << endl
00298   << "supplements:" << endl
00299   << data.supplements << endl
00300   << "enhances:" << endl
00301   << data.enhances << endl
00302   << "files:" << endl
00303   << data.files << endl
00304   << "authors: " << join(data.authors,", ") << endl
00305   << "keywords: " << join(data.keywords,", ") << endl
00306   << "media: " << data.media << endl
00307   << "dirsizes: " << endl
00308   << data.dirSizes << endl
00309   << "freshens: " << endl
00310   << data.freshens << endl
00311   << "install-only: '" << data.installOnly << "'" << endl
00312   << "License to confirm:" << endl
00313   << data.license_to_confirm << endl;
00314   return out;
00315 }
00316 
00317 ostream& operator<<(ostream &out, const YUMGroupData& data)
00318 {
00319   out << "-------------------------------------------------" << endl
00320   << "Group Data: " << endl
00321   << "group-id: '" << data.groupId << "'" << endl
00322   << "name:" << endl
00323   << data.name << endl
00324   << "default: '" << data.default_  << "'" << endl
00325   << "user-visible: '" << data.userVisible  << "'" << endl
00326   << "description:" << endl
00327   << data.description << endl
00328   << "grouplist:" << endl
00329   << data.grouplist << endl
00330   << "packageList:" << endl
00331   << data.packageList << endl;
00332   return out;
00333 }
00334 
00335 ostream& operator<<(ostream &out, const YUMPatternData& data)
00336 {
00337   out << "-------------------------------------------------" << endl
00338   << "Pattern Data: " << endl
00339   << "name:" << data.name << endl
00340   << "summary: '" << data.summary << "'" << endl
00341   << "default: '" << data.default_  << "'" << endl
00342   << "user-visible: '" << data.userVisible  << "'" << endl
00343   << "description:" << endl << data.description << endl
00344   << "category: " << data.category << endl
00345   << "icon: " << data.icon << endl
00346   << "script: " << data.script << endl
00347   << "provides:" << endl << data.provides << endl
00348   << "conflicts:" << endl << data.conflicts << endl
00349   << "obsoletes:" << endl << data.obsoletes << endl
00350   << "requires:" << endl << data.requires << endl
00351   << "recommends:" << endl << data.recommends << endl
00352   << "suggests:" << endl << data.suggests << endl
00353   << "supplements:" << endl << data.supplements << endl
00354   << "enhances:" << endl << data.enhances << endl
00355   << "freshens: " << endl << data.freshens << endl;
00356   return out;
00357 }
00358 
00359 ostream& operator<<(ostream &out, const YUMFileListData& data)
00360 {
00361   out << "-------------------------------------------------" << endl
00362   << "File List: " << endl
00363   << "pkgid: " << data.pkgId << endl
00364   << "package: " << data.name << " "
00365   << data.epoch << "-" << data.ver << "-" << data.rel << endl
00366   << "files:" << endl
00367   << data.files << endl;
00368   return out;
00369 }
00370 
00371 ostream& operator<<(ostream& out, const YUMOtherData& data)
00372 {
00373   out << "-------------------------------------------------" << endl
00374   << "Other: " << endl
00375   << "pkgid: " << data.pkgId
00376   << "package: " << data.name << " "
00377   << data.epoch << "-" << data.ver << "-" << data.rel << endl
00378   << "Changelog:" << endl
00379   << data.changelog << endl;
00380   return out;
00381 }
00382 
00383 ostream& operator<<(ostream &out, const YUMPatchData& data)
00384 {
00385   out << "-------------------------------------------------" << endl
00386   << "Patch Data: " << endl
00387   << "  patch ID: " << data.patchId << endl
00388   << "  timestamp: '" << data.timestamp << "'" << endl
00389   << "  engine: '" << data.engine << "'" << endl
00390   << "  name: " << data.name << endl
00391   << "  summary: " << data.summary << endl
00392   << "  description: " << data.description << endl
00393   << "  license to confirm:" << endl
00394   << data.license_to_confirm << endl
00395   << "  epoch: " << data.epoch << endl
00396   << "  version: " << data.ver << endl
00397   << "  release: " << data.rel << endl
00398   << "  architecture: " << data.arch << endl
00399   << "  provides: " << data.provides << endl
00400   << "  conflicts: " << data.conflicts << endl
00401   << "  obsoletes: " << data.obsoletes << endl
00402   << "  freshens: " << data.freshens << endl
00403   << "  requires: " << data.requires << endl
00404   << "  recommends:" << endl << data.recommends << endl
00405   << "  suggests:" << endl << data.suggests << endl
00406   << "  supplements:" << endl << data.supplements << endl
00407   << "  enhances:" << endl << data.enhances << endl
00408   << "  category: " << data.category << endl
00409   << "  reboot needed: " << data.rebootNeeded << endl
00410   << "  affects package manager: " << data.packageManager << endl
00411   << "  update script: " << data.updateScript << endl
00412   << "  atoms:" << endl
00413   << data.atoms;
00414   return out;
00415 }
00416 
00417 ostream& operator<<(ostream &out, const YUMPatchesData& data)
00418 {
00419   out << "-------------------------------------------------" << endl
00420   << "Patches Entry Data: " << endl
00421   << "  patch ID: " << data.id << endl
00422   << "  location: " << data.location << endl
00423   << "  checksumType: '" << data.checksumType << "'" << endl
00424   << "  checksum: '" << data.checksum << "'" << endl;
00425   return out;
00426 }
00427 
00428 ostream& operator<<(ostream &out, const YUMProductData& data)
00429 {
00430   out << "-------------------------------------------------" << endl
00431   << "Product Data: " << endl
00432   << "  type: " << data.type << endl
00433   << "  vendor: " << data.vendor << endl
00434   << "  name: " << data.name << endl
00435   << "  display name: " << data.summary << endl
00436   << "  short name: " << data.short_name << endl
00437   << "  description: " << data.description << endl
00438   << "  epoch: " << data.epoch << endl
00439   << "  version: " << data.ver << endl
00440   << "  release: " << data.rel << endl
00441   << "  provides: " << data.provides << endl
00442   << "  conflicts: " << data.conflicts << endl
00443   << "  obsoletes: " << data.obsoletes << endl
00444   << "  freshens: " << data.freshens << endl
00445   << "  requires: " << data.requires << endl
00446   << "  recommends:" << endl << data.recommends << endl
00447   << "  suggests:" << endl << data.suggests << endl
00448   << "  supplements:" << endl << data.supplements << endl
00449   << "  enhances:" << endl << data.enhances << endl;
00450   return out;
00451 }
00452 
00453 std::ostream& operator<<(std::ostream& out, const zypp::shared_ptr<YUMPatchAtom> data)
00454 {
00455   out << "Atom data" << endl;
00456   switch (data->atomType())
00457   {
00458   case YUMPatchAtom::Package:
00459     out << "  atom type: " << "package" << endl
00460     << *zypp::dynamic_pointer_cast<YUMPatchPackage>(data);
00461     break;
00462   case YUMPatchAtom::Message:
00463     out << "  atom type: " << "message" << endl
00464     << *zypp::dynamic_pointer_cast<YUMPatchMessage>(data);
00465     break;
00466   case YUMPatchAtom::Script:
00467     out << "  atom type: " << "script" << endl
00468     << *zypp::dynamic_pointer_cast<YUMPatchScript>(data);
00469     break;
00470   default:
00471     out << "Unknown atom type" << endl;
00472   }
00473   return out;
00474 }
00475 
00476 std::ostream& operator<<(std::ostream& out, const YUMPatchMessage& data)
00477 {
00478   out << "Message Data: " << endl
00479   << "  name: " << data.name << endl
00480   << "  epoch: " << data.epoch << endl
00481   << "  version: " << data.ver << endl
00482   << "  release: " << data.rel << endl
00483   << "  provides: " << data.provides << endl
00484   << "  conflicts: " << data.conflicts << endl
00485   << "  obsoletes: " << data.obsoletes << endl
00486   << "  freshens: " << data.freshens << endl
00487   << "  requires: " << data.requires << endl
00488   << "  recommends:" << endl << data.recommends << endl
00489   << "  suggests:" << endl << data.suggests << endl
00490   << "  supplements:" << endl << data.supplements << endl
00491   << "  enhances:" << endl << data.enhances << endl
00492   << "  text: " << data.text << endl;
00493   return out;
00494 }
00495 
00496 std::ostream& operator<<(std::ostream& out, const YUMPatchScript& data)
00497 {
00498   out << "Script Data: " << endl
00499   << "  name: " << data.name << endl
00500   << "  epoch: " << data.epoch << endl
00501   << "  version: " << data.ver << endl
00502   << "  release: " << data.rel << endl
00503   << "  provides: " << data.provides << endl
00504   << "  conflicts: " << data.conflicts << endl
00505   << "  obsoletes: " << data.obsoletes << endl
00506   << "  freshens: " << data.freshens << endl
00507   << "  requires: " << data.requires << endl
00508   << "  recommends:" << endl << data.recommends << endl
00509   << "  suggests:" << endl << data.suggests << endl
00510   << "  supplements:" << endl << data.supplements << endl
00511   << "  enhances:" << endl << data.enhances << endl
00512   << "  do script: " << data.do_script << endl
00513   << "  undo script: " << data.undo_script << endl
00514   << "  do script location: " << data.do_location << endl
00515   << "  undo script location: " << data.undo_location << endl
00516   << "  do script media: " << data.do_media << endl
00517   << "  undo script media: " << data.undo_media << endl
00518   << "  do checksum type: " << data.do_checksum_type << endl
00519   << "  do checksum: " << data.do_checksum << endl
00520   << "  undo checksum type: " << data.undo_checksum_type << endl
00521   << "  undo checksum: " << data.undo_checksum << endl;
00522   return out;
00523 }
00524 
00525 std::ostream& operator<<(std::ostream& out, const YUMPatchPackage& data)
00526 {
00527   out << "Package Data: " << endl
00528   << "  name: '" << data.name << "'" << endl
00529   << "  type: '" << data.type << "'" << endl
00530   << "   arch: '" << data.arch << "'" << endl
00531   << "   ver: '" << data.ver << "'" << endl
00532   << "  checksumType: '" << data.checksumType << "'" << endl
00533   << "  checksumPkgid: '" << data.checksumPkgid << "'" << endl
00534   << "  checksum: '" << data.checksum << "'" << endl
00535   << "  summary: '" << data.summary << "'" << endl
00536   << "  description: '" << data.description << "'" << endl
00537   << "  packager: '" << data.packager << "'" << endl
00538   << "  url: '" << data.url << "'" << endl
00539   << "  timeFile: '" << data.timeFile << "'" << endl
00540   << "  timeBuild: '" << data.timeBuild << "'" << endl
00541   << "  sizePackage: '" << data.sizePackage << "'" << endl
00542   << "  sizeInstalled: '" << data.sizeInstalled << "'" << endl
00543   << "  sizeArchive: '" << data.sizeArchive << "'" << endl
00544   << "  location: '" << data.location << "'" << endl
00545   << "  license: '" << data.license << "'" << endl
00546   << "  license to confirm:" << endl
00547   << data.license_to_confirm << endl
00548   << "  vendor: '" << data.vendor << "'" << endl
00549   << "  group: '" << data.group << "'" << endl
00550   << "  buildhost: '" << data.buildhost << "'" << endl
00551   << "  sourcerpm: '" << data.sourcerpm << "'" << endl
00552   << "  headerStart: '" << data.headerStart << "'" << endl
00553   << "  headerEnd: '" << data.headerEnd << "'" << endl
00554   << "  provides:" << endl
00555   << data.provides << endl
00556   << "  conflicts:" << endl
00557   << data.conflicts << endl
00558   << "  obsoletes:" << endl
00559   << data.obsoletes << endl
00560   << "  requires:" << endl
00561   << data.requires << endl
00562   << "  recommends:" << endl
00563   << data.recommends << endl
00564   << "  suggests:" << endl
00565   << data.suggests << endl
00566   << "  supplements:" << endl
00567   << data.supplements << endl
00568   << "  enhances:" << endl
00569   << data.enhances << endl
00570   << "  files:" << endl
00571   << data.files << endl
00572   << "  authors: " << join(data.authors,", ") << endl
00573   << "  keywords: " << join(data.keywords,", ") << endl
00574   << "  media: " << data.media << endl
00575   << "  dirsizes: " << endl
00576   << data.dirSizes << endl
00577   << "  freshens: " << endl
00578   << data.freshens << endl
00579   << "  install-only: '" << data.installOnly << "'" << endl
00580   << "  files:" << endl
00581   << data.files << endl
00582   << "  Changelog:" << endl
00583   << data.changelog << endl
00584   << data.plainRpms
00585   << data.patchRpms
00586   << data.deltaRpms;
00587   return out;
00588 }
00589 
00590 std::ostream& operator<<(std::ostream& out, const YUMPlainRpm& data)
00591 {
00592   out << "  Plain RPM:" << endl
00593   << "    arch: " << data.arch << endl
00594   << "    filename: " << data.filename << endl
00595   << "    download size: " << data.downloadsize << endl
00596   << "    MD5: " << data.md5sum << endl
00597   << "    build time: " << data.buildtime << endl;
00598   return out;
00599 }
00600 
00601 std::ostream& operator<<(std::ostream& out, const YUMEdition& data)
00602 {
00603   out << "    epoch: " << data.epoch << endl
00604   << "    version: " << data.ver << endl
00605   << "    release: " << data.rel << endl;
00606   return out;
00607 }
00608 
00609 std::ostream& operator<<(std::ostream& out, const YUMPatchBaseVersion& data)
00610 {
00611   out << "    Patch base version:" << endl
00612   << data.edition;
00613   return out;
00614 }
00615 
00616 std::ostream& operator<<(std::ostream& out, const YUMPatchRpm& data)
00617 {
00618   out << "  Patch RPM:" << endl
00619   << "    arch: " << data.arch << endl
00620   << "    filename: " << data.filename << endl
00621   << "    location: '" << data.location << "'" <<endl
00622   << "    media: " << data.media << endl
00623   << "    checksumType: '" << data.checksumType << "'" << endl
00624   << "    checksum: '" << data.checksum << "'" << endl
00625   << "    download size: " << data.downloadsize << endl
00626   << "    MD5: " << data.md5sum << endl
00627   << "    build time: " << data.buildtime << endl
00628   << data.baseVersions;
00629   return out;
00630 }
00631 
00632 std::ostream& operator<<(std::ostream& out, const YUMDeltaBaseVersion& data)
00633 {
00634   out << "    Delta base version:" << endl
00635   << data.edition
00636   << "      MD5: " << data.md5sum << endl
00637   << "      build time: " << data.buildtime << endl
00638   << "      sequence info: " << data.sequence_info << endl;
00639   return out;
00640 }
00641 
00642 std::ostream& operator<<(std::ostream& out, const YUMDeltaRpm& data)
00643 {
00644   out << "  Delta RPM:" << endl
00645   << "    arch: " << data.arch << endl
00646   << "    filename: " << data.filename << endl
00647   << "    location: '" << data.location << "'" <<endl
00648   << "    media: " << data.media << endl
00649   << "    checksumType: '" << data.checksumType << "'" << endl
00650   << "    checksum: '" << data.checksum << "'" << endl
00651   << "    download size: " << data.downloadsize << endl
00652   << "    MD5: " << data.md5sum << endl
00653   << "    build time: " << data.buildtime << endl
00654   << data.baseVersion << endl;
00655   return out;
00656 }
00657 
00658 } // namespace yum
00659 } // namespace parser
00660 } // namespace zypp

Generated on Tue Nov 28 16:49:30 2006 for zypp by  doxygen 1.5.0