1 #ifndef APT_PRIVATE_CACHEFILE_H
2 #define APT_PRIVATE_CACHEFILE_H
4 #include <apt-pkg/cachefile.h>
5 #include <apt-pkg/progress.h>
6 #include <apt-pkg/configuration.h>
7 #include <apt-pkg/pkgcache.h>
8 #include <apt-pkg/macros.h>
9 #include <apt-pkg/sourcelist.h>
10 #include <apt-pkg/cacheset.h>
14 // class CacheFile - Cover class for some dependency cache functions /*{{{*/
15 class APT_PUBLIC CacheFile
: public pkgCacheFile
18 std::vector
<map_pointer_t
> UniverseList
;
20 bool CheckDeps(bool AllowBroken
= false);
21 bool BuildCaches(bool WithLock
= true)
23 OpTextProgress
Prog(*_config
);
24 if (pkgCacheFile::BuildCaches(&Prog
,WithLock
) == false)
28 bool Open(bool WithLock
= true)
30 OpTextProgress
Prog(*_config
);
31 return pkgCacheFile::Open(&Prog
,WithLock
);
35 if (_config
->FindB("APT::Get::Print-URIs") == true)
43 class SortedPackageUniverse
: public APT::PackageUniverse
45 std::vector
<map_pointer_t
> &List
;
46 void LazyInit() const;
49 SortedPackageUniverse(CacheFile
&Cache
);
51 class const_iterator
: public APT::Container_iterator_base
<APT::PackageContainerInterface
, SortedPackageUniverse
, SortedPackageUniverse::const_iterator
, std::vector
<map_pointer_t
>::const_iterator
, pkgCache::PkgIterator
>
53 pkgCache
* const Cache
;
55 inline pkgCache::PkgIterator
getType(void) const
57 if (*_iter
== 0) return pkgCache::PkgIterator(*Cache
);
58 return pkgCache::PkgIterator(*Cache
, Cache
->PkgP
+ *_iter
);
60 explicit const_iterator(pkgCache
* const Owner
, std::vector
<map_pointer_t
>::const_iterator i
):
61 Container_iterator_base
<APT::PackageContainerInterface
, SortedPackageUniverse
, SortedPackageUniverse::const_iterator
, std::vector
<map_pointer_t
>::const_iterator
, pkgCache::PkgIterator
>(i
), Cache(Owner
) {}
64 typedef const_iterator iterator
;
66 const_iterator
begin() const { LazyInit(); return const_iterator(data(), List
.begin()); }
67 const_iterator
end() const { LazyInit(); return const_iterator(data(), List
.end()); }
68 const_iterator
cbegin() const { LazyInit(); return const_iterator(data(), List
.begin()); }
69 const_iterator
cend() const { LazyInit(); return const_iterator(data(), List
.end()); }
70 iterator
begin() { LazyInit(); return iterator(data(), List
.begin()); }
71 iterator
end() { LazyInit(); return iterator(data(), List
.end()); }