1 // -*- mode: cpp; mode: fold -*-
3 /* ######################################################################
5 CacheFile - Simple wrapper class for opening, generating and whatnot
7 This class implements a simple 2 line mechanism to open various sorts
8 of caches. It can operate as root, as not root, show progress and so on,
9 it transparently handles everything necessary.
11 This means it can rebuild caches from the source list and instantiates
12 and prepares the standard policy mechanism.
14 ##################################################################### */
16 #ifndef PKGLIB_CACHEFILE_H
17 #define PKGLIB_CACHEFILE_H
21 #include <apt-pkg/depcache.h>
22 #include <apt-pkg/macros.h>
23 #include <apt-pkg/pkgcache.h>
24 #include <apt-pkg/cacheiterators.h>
26 #ifndef APT_8_CLEANER_HEADERS
27 #include <apt-pkg/acquire.h>
28 #include <apt-pkg/policy.h>
29 #include <apt-pkg/sourcelist.h>
40 /** \brief dpointer placeholder (for later in case we need it) */
48 pkgSourceList
*SrcList
;
53 // We look pretty much exactly like a pointer to a dep cache
54 inline operator pkgCache
&() const {return *Cache
;};
55 inline operator pkgCache
*() const {return Cache
;};
56 inline operator pkgDepCache
&() const {return *DCache
;};
57 inline operator pkgDepCache
*() const {return DCache
;};
58 inline operator pkgPolicy
&() const {return *Policy
;};
59 inline operator pkgPolicy
*() const {return Policy
;};
60 inline operator pkgSourceList
&() const {return *SrcList
;};
61 inline operator pkgSourceList
*() const {return SrcList
;};
62 inline pkgDepCache
*operator ->() const {return DCache
;};
63 inline pkgDepCache
&operator *() const {return *DCache
;};
64 inline pkgDepCache::StateCache
&operator [](pkgCache::PkgIterator
const &I
) const {return (*DCache
)[I
];};
65 inline unsigned char &operator [](pkgCache::DepIterator
const &I
) const {return (*DCache
)[I
];};
67 bool BuildCaches(OpProgress
*Progress
= NULL
,bool WithLock
= true);
68 APT_DEPRECATED_MSG("Pass Progress in as a pointer") bool BuildCaches(OpProgress
&Progress
,bool const &WithLock
= true) { return BuildCaches(&Progress
, WithLock
); };
69 bool BuildSourceList(OpProgress
*Progress
= NULL
);
70 bool BuildPolicy(OpProgress
*Progress
= NULL
);
71 bool BuildDepCache(OpProgress
*Progress
= NULL
);
72 bool Open(OpProgress
*Progress
= NULL
, bool WithLock
= true);
73 inline bool ReadOnlyOpen(OpProgress
*Progress
= NULL
) { return Open(Progress
, false); };
74 APT_DEPRECATED_MSG("Pass Progress in as a pointer") bool Open(OpProgress
&Progress
,bool const &WithLock
= true) { return Open(&Progress
, WithLock
); };
75 static void RemoveCaches();
78 bool AddIndexFile(pkgIndexFile
* const File
);
80 inline pkgCache
* GetPkgCache() { BuildCaches(NULL
, false); return Cache
; };
81 inline pkgDepCache
* GetDepCache() { BuildDepCache(); return DCache
; };
82 inline pkgPolicy
* GetPolicy() { BuildPolicy(); return Policy
; };
83 inline pkgSourceList
* GetSourceList() { BuildSourceList(); return SrcList
; };
85 inline bool IsPkgCacheBuilt() const { return (Cache
!= NULL
); };
86 inline bool IsDepCacheBuilt() const { return (DCache
!= NULL
); };
87 inline bool IsPolicyBuilt() const { return (Policy
!= NULL
); };
88 inline bool IsSrcListBuilt() const { return (SrcList
!= NULL
); };
91 explicit pkgCacheFile(pkgDepCache
* const Owner
);
92 virtual ~pkgCacheFile();