]> git.saurik.com Git - apt.git/blob - apt-private/private-cachefile.h
Merge commit 'e2073b0276226b625897ef475f225bf8f508719e' as 'triehash'
[apt.git] / apt-private / private-cachefile.h
1 #ifndef APT_PRIVATE_CACHEFILE_H
2 #define APT_PRIVATE_CACHEFILE_H
3
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>
11
12 // class CacheFile - Cover class for some dependency cache functions /*{{{*/
13 class APT_PUBLIC CacheFile : public pkgCacheFile
14 {
15 public:
16 std::vector<map_pointer_t> UniverseList;
17
18 bool CheckDeps(bool AllowBroken = false);
19 bool BuildCaches(bool WithLock = true)
20 {
21 OpTextProgress Prog(*_config);
22 if (pkgCacheFile::BuildCaches(&Prog,WithLock) == false)
23 return false;
24 return true;
25 }
26 bool Open(bool WithLock = true)
27 {
28 OpTextProgress Prog(*_config);
29 return pkgCacheFile::Open(&Prog,WithLock);
30 };
31 bool OpenForInstall()
32 {
33 if (_config->FindB("APT::Get::Print-URIs") == true)
34 return Open(false);
35 else
36 return Open(true);
37 }
38 };
39 /*}}}*/
40
41 class SortedPackageUniverse : public APT::PackageUniverse
42 {
43 std::vector<map_pointer_t> &List;
44 void LazyInit() const;
45
46 public:
47 explicit SortedPackageUniverse(CacheFile &Cache);
48
49 class const_iterator : public APT::Container_iterator_base<APT::PackageContainerInterface, SortedPackageUniverse, SortedPackageUniverse::const_iterator, std::vector<map_pointer_t>::const_iterator, pkgCache::PkgIterator>
50 {
51 pkgCache * const Cache;
52 public:
53 inline pkgCache::PkgIterator getType(void) const
54 {
55 if (*_iter == 0) return pkgCache::PkgIterator(*Cache);
56 return pkgCache::PkgIterator(*Cache, Cache->PkgP + *_iter);
57 }
58 explicit const_iterator(pkgCache * const Owner, std::vector<map_pointer_t>::const_iterator i):
59 Container_iterator_base<APT::PackageContainerInterface, SortedPackageUniverse, SortedPackageUniverse::const_iterator, std::vector<map_pointer_t>::const_iterator, pkgCache::PkgIterator>(i), Cache(Owner) {}
60
61 };
62 typedef const_iterator iterator;
63
64 const_iterator begin() const { LazyInit(); return const_iterator(data(), List.begin()); }
65 const_iterator end() const { LazyInit(); return const_iterator(data(), List.end()); }
66 const_iterator cbegin() const { LazyInit(); return const_iterator(data(), List.begin()); }
67 const_iterator cend() const { LazyInit(); return const_iterator(data(), List.end()); }
68 iterator begin() { LazyInit(); return iterator(data(), List.begin()); }
69 iterator end() { LazyInit(); return iterator(data(), List.end()); }
70 };
71
72 #endif