]> git.saurik.com Git - apt.git/blame_incremental - apt-pkg/cachefile.h
CMake: Do not use -lresolv if res_init exists in libc
[apt.git] / apt-pkg / cachefile.h
... / ...
CommitLineData
1// -*- mode: cpp; mode: fold -*-
2// Description /*{{{*/
3/* ######################################################################
4
5 CacheFile - Simple wrapper class for opening, generating and whatnot
6
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.
10
11 This means it can rebuild caches from the source list and instantiates
12 and prepares the standard policy mechanism.
13
14 ##################################################################### */
15 /*}}}*/
16#ifndef PKGLIB_CACHEFILE_H
17#define PKGLIB_CACHEFILE_H
18
19#include <stddef.h>
20
21#include <apt-pkg/depcache.h>
22#include <apt-pkg/macros.h>
23#include <apt-pkg/pkgcache.h>
24#include <apt-pkg/cacheiterators.h>
25
26#ifndef APT_8_CLEANER_HEADERS
27#include <apt-pkg/acquire.h>
28#include <apt-pkg/policy.h>
29#include <apt-pkg/sourcelist.h>
30#endif
31
32class MMap;
33class pkgPolicy;
34class pkgSourceList;
35class pkgIndexFile;
36class OpProgress;
37
38class pkgCacheFile
39{
40 /** \brief dpointer placeholder (for later in case we need it) */
41 void * const d;
42 bool ExternOwner;
43
44 protected:
45 MMap *Map;
46 pkgCache *Cache;
47 pkgDepCache *DCache;
48 pkgSourceList *SrcList;
49
50 public:
51 pkgPolicy *Policy;
52
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];};
66
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();
76 void Close();
77
78 bool AddIndexFile(pkgIndexFile * const File);
79
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; };
84
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); };
89
90 pkgCacheFile();
91 explicit pkgCacheFile(pkgDepCache * const Owner);
92 virtual ~pkgCacheFile();
93};
94
95#endif