summaryrefslogtreecommitdiff
path: root/apt-pkg/cachefile.h
blob: 4888b441c330267f45738f14df09e55214f1fb02 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
// -*- mode: cpp; mode: fold -*-
// Description								/*{{{*/
// $Id: cachefile.h,v 1.2 1999/06/12 03:43:48 jgg Exp $
/* ######################################################################
   
   CacheFile - Simple wrapper class for opening, generating and whatnot
   
   This class implements a simple 2 line mechanism to open various sorts
   of caches. It can operate as root, as not root, show progress and so on,
   it transparently handles everything necessary.
   
   ##################################################################### */
									/*}}}*/
#ifndef PKGLIB_CACHEFILE_H
#define PKGLIB_CACHEFILE_H

#ifdef __GNUG__
#pragma interface "apt-pkg/cachefile.h"
#endif 

#include <apt-pkg/depcache.h>
#include <apt-pkg/dpkginit.h>

class pkgCacheFile
{
   protected:
   
   MMap *Map;
   pkgDepCache *Cache;
   pkgDpkgLock *Lock;
   
   public:
      
   // We look pretty much exactly like a pointer to a dep cache
   inline operator pkgDepCache &() {return *Cache;};
   inline pkgDepCache *operator ->() {return Cache;};
   inline pkgDepCache &operator *() {return *Cache;};
   inline pkgDepCache::StateCache &operator [](pkgCache::PkgIterator const &I) {return (*Cache)[I];};
   inline unsigned char &operator [](pkgCache::DepIterator const &I) {return (*Cache)[I];};
   
   // Release the dpkg status lock
   inline void ReleaseLock() {Lock->Close();};
   
   bool Open(OpProgress &Progress,bool WithLock = true);
   
   pkgCacheFile();
   ~pkgCacheFile();
};

#endif