]>
Commit | Line | Data |
---|---|---|
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 | #include <apti18n.h> | |
13 | ||
14 | // class CacheFile - Cover class for some dependency cache functions /*{{{*/ | |
15 | class APT_PUBLIC CacheFile : public pkgCacheFile | |
16 | { | |
17 | public: | |
18 | std::vector<map_pointer_t> UniverseList; | |
19 | ||
20 | bool CheckDeps(bool AllowBroken = false); | |
21 | bool BuildCaches(bool WithLock = true) | |
22 | { | |
23 | OpTextProgress Prog(*_config); | |
24 | if (pkgCacheFile::BuildCaches(&Prog,WithLock) == false) | |
25 | return false; | |
26 | return true; | |
27 | } | |
28 | bool Open(bool WithLock = true) | |
29 | { | |
30 | OpTextProgress Prog(*_config); | |
31 | return pkgCacheFile::Open(&Prog,WithLock); | |
32 | }; | |
33 | bool OpenForInstall() | |
34 | { | |
35 | if (_config->FindB("APT::Get::Print-URIs") == true) | |
36 | return Open(false); | |
37 | else | |
38 | return Open(true); | |
39 | } | |
40 | }; | |
41 | /*}}}*/ | |
42 | ||
43 | class SortedPackageUniverse : public APT::PackageUniverse | |
44 | { | |
45 | std::vector<map_pointer_t> &List; | |
46 | void LazyInit() const; | |
47 | ||
48 | public: | |
49 | explicit SortedPackageUniverse(CacheFile &Cache); | |
50 | ||
51 | class const_iterator : public APT::Container_iterator_base<APT::PackageContainerInterface, SortedPackageUniverse, SortedPackageUniverse::const_iterator, std::vector<map_pointer_t>::const_iterator, pkgCache::PkgIterator> | |
52 | { | |
53 | pkgCache * const Cache; | |
54 | public: | |
55 | inline pkgCache::PkgIterator getType(void) const | |
56 | { | |
57 | if (*_iter == 0) return pkgCache::PkgIterator(*Cache); | |
58 | return pkgCache::PkgIterator(*Cache, Cache->PkgP + *_iter); | |
59 | } | |
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) {} | |
62 | ||
63 | }; | |
64 | typedef const_iterator iterator; | |
65 | ||
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()); } | |
72 | }; | |
73 | ||
74 | #endif |