- initial import of revision 374 from cnc
[apt.git] / apt-pkg / cachefile.h
1 // -*- mode: cpp; mode: fold -*-
2 // Description                                                          /*{{{*/
3 // $Id: cachefile.h,v 1.2 2002/07/25 18:07:18 niemeyer Exp $
4 /* ######################################################################
5    
6    CacheFile - Simple wrapper class for opening, generating and whatnot
7    
8    This class implements a simple 2 line mechanism to open various sorts
9    of caches. It can operate as root, as not root, show progress and so on,
10    it transparently handles everything necessary.
11    
12    This means it can rebuild caches from the source list and instantiates
13    and prepares the standard policy mechanism.
14    
15    ##################################################################### */
16                                                                         /*}}}*/
17 #ifndef PKGLIB_CACHEFILE_H
18 #define PKGLIB_CACHEFILE_H
19
20 #ifdef __GNUG__
21 #pragma interface "apt-pkg/cachefile.h"
22 #endif 
23
24 #include <apt-pkg/depcache.h>
25
26 class pkgPolicy;
27 class pkgCacheFile
28 {
29    protected:
30    
31    MMap *Map;
32    pkgCache *Cache;
33    pkgDepCache *DCache;
34    
35    public:
36
37    pkgPolicy *Policy;
38       
39    // We look pretty much exactly like a pointer to a dep cache
40    inline operator pkgCache &() {return *Cache;};
41    inline operator pkgCache *() {return Cache;};
42    inline operator pkgDepCache &() {return *DCache;};
43    inline operator pkgDepCache *() {return DCache;};
44    inline pkgDepCache *operator ->() {return DCache;};
45    inline pkgDepCache &operator *() {return *DCache;};
46    inline pkgDepCache::StateCache &operator [](pkgCache::PkgIterator const &I) {return (*DCache)[I];};
47    inline unsigned char &operator [](pkgCache::DepIterator const &I) {return (*DCache)[I];};
48
49    bool BuildCaches(OpProgress &Progress,bool WithLock = true);
50    bool Open(OpProgress &Progress,bool WithLock = true);
51    void Close();
52    
53    pkgCacheFile();
54    ~pkgCacheFile();
55 };
56
57 #endif