private-cachefile.h 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #ifndef APT_PRIVATE_CACHEFILE_H
  2. #define APT_PRIVATE_CACHEFILE_H
  3. #include <apt-pkg/cachefile.h>
  4. #include <apt-pkg/progress.h>
  5. #include <apt-pkg/configuration.h>
  6. #include <apt-pkg/pkgcache.h>
  7. #include <apt-pkg/macros.h>
  8. #include <apt-pkg/sourcelist.h>
  9. #include <apt-pkg/cacheset.h>
  10. // class CacheFile - Cover class for some dependency cache functions /*{{{*/
  11. class APT_PUBLIC CacheFile : public pkgCacheFile
  12. {
  13. public:
  14. std::vector<map_pointer_t> UniverseList;
  15. bool CheckDeps(bool AllowBroken = false);
  16. bool BuildCaches(bool WithLock = true)
  17. {
  18. OpTextProgress Prog(*_config);
  19. if (pkgCacheFile::BuildCaches(&Prog,WithLock) == false)
  20. return false;
  21. return true;
  22. }
  23. bool Open(bool WithLock = true)
  24. {
  25. OpTextProgress Prog(*_config);
  26. return pkgCacheFile::Open(&Prog,WithLock);
  27. };
  28. bool OpenForInstall()
  29. {
  30. if (_config->FindB("APT::Get::Print-URIs") == true)
  31. return Open(false);
  32. else
  33. return Open(true);
  34. }
  35. };
  36. /*}}}*/
  37. class SortedPackageUniverse : public APT::PackageUniverse
  38. {
  39. std::vector<map_pointer_t> &List;
  40. void LazyInit() const;
  41. public:
  42. explicit SortedPackageUniverse(CacheFile &Cache);
  43. class const_iterator : public APT::Container_iterator_base<APT::PackageContainerInterface, SortedPackageUniverse, SortedPackageUniverse::const_iterator, std::vector<map_pointer_t>::const_iterator, pkgCache::PkgIterator>
  44. {
  45. pkgCache * const Cache;
  46. public:
  47. inline pkgCache::PkgIterator getType(void) const
  48. {
  49. if (*_iter == 0) return pkgCache::PkgIterator(*Cache);
  50. return pkgCache::PkgIterator(*Cache, Cache->PkgP + *_iter);
  51. }
  52. explicit const_iterator(pkgCache * const Owner, std::vector<map_pointer_t>::const_iterator i):
  53. Container_iterator_base<APT::PackageContainerInterface, SortedPackageUniverse, SortedPackageUniverse::const_iterator, std::vector<map_pointer_t>::const_iterator, pkgCache::PkgIterator>(i), Cache(Owner) {}
  54. };
  55. typedef const_iterator iterator;
  56. const_iterator begin() const { LazyInit(); return const_iterator(data(), List.begin()); }
  57. const_iterator end() const { LazyInit(); return const_iterator(data(), List.end()); }
  58. const_iterator cbegin() const { LazyInit(); return const_iterator(data(), List.begin()); }
  59. const_iterator cend() const { LazyInit(); return const_iterator(data(), List.end()); }
  60. iterator begin() { LazyInit(); return iterator(data(), List.begin()); }
  61. iterator end() { LazyInit(); return iterator(data(), List.end()); }
  62. };
  63. #endif