]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/contrib/mmap.h
Ignore .* for configuration directory processing. Close...
[apt.git] / apt-pkg / contrib / mmap.h
index 512b8bcf6a791c4fab6d5d6caf4630b1a5b23923..6285620c90fc5f78247c8efffe7f5fa10633e937 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: mmap.h,v 1.6 1998/07/19 04:42:15 jgg Exp $
+// $Id: mmap.h,v 1.11 1999/08/02 03:07:47 jgg Exp $
 /* ######################################################################
    
    MMap Class - Provides 'real' mmap or a faked mmap using read().
 /* ######################################################################
    
    MMap Class - Provides 'real' mmap or a faked mmap using read().
@@ -22,7 +22,6 @@
    
    ##################################################################### */
                                                                        /*}}}*/
    
    ##################################################################### */
                                                                        /*}}}*/
-// Header section: pkglib
 #ifndef PKGLIB_MMAP_H
 #define PKGLIB_MMAP_H
 
 #ifndef PKGLIB_MMAP_H
 #define PKGLIB_MMAP_H
 
 #include <string>
 #include <apt-pkg/fileutl.h>
 
 #include <string>
 #include <apt-pkg/fileutl.h>
 
+/* This should be a 32 bit type, larger tyes use too much ram and smaller
+   types are too small. Where ever possible 'unsigned long' should be used
+   instead of this internal type */
+typedef unsigned int map_ptrloc;
+
 class MMap
 {
    protected:
    
 class MMap
 {
    protected:
    
-   FileFd &Fd;
-   unsigned long Flags;   
+   unsigned long Flags;
    unsigned long iSize;
    void *Base;
 
    unsigned long iSize;
    void *Base;
 
-   bool Map();
-   bool Close(bool DoClose = true,bool DoSync = true);
+   bool Map(FileFd &Fd);
+   bool Close(bool DoSync = true);
    
    public:
 
    
    public:
 
-   enum OpenFlags {NoImmMap = (1<<0),Public = (1<<1),ReadOnly = (1<<2)};
+   enum OpenFlags {NoImmMap = (1<<0),Public = (1<<1),ReadOnly = (1<<2),
+                   UnMapped = (1<<3)};
       
    // Simple accessors
    inline operator void *() {return Base;};
       
    // Simple accessors
    inline operator void *() {return Base;};
@@ -59,6 +63,7 @@ class MMap
    bool Sync(unsigned long Start,unsigned long Stop);
    
    MMap(FileFd &F,unsigned long Flags);
    bool Sync(unsigned long Start,unsigned long Stop);
    
    MMap(FileFd &F,unsigned long Flags);
+   MMap(unsigned long Flags);
    virtual ~MMap();
 };
 
    virtual ~MMap();
 };
 
@@ -76,6 +81,7 @@ class DynamicMMap : public MMap
    
    protected:
    
    
    protected:
    
+   FileFd *Fd;
    unsigned long WorkSpace;
    Pool *Pools;
    unsigned int PoolCount;
    unsigned long WorkSpace;
    Pool *Pools;
    unsigned int PoolCount;
@@ -85,11 +91,12 @@ class DynamicMMap : public MMap
    // Allocation
    unsigned long RawAllocate(unsigned long Size,unsigned long Aln = 0);
    unsigned long Allocate(unsigned long ItemSize);
    // Allocation
    unsigned long RawAllocate(unsigned long Size,unsigned long Aln = 0);
    unsigned long Allocate(unsigned long ItemSize);
-   unsigned long WriteString(const char *String,unsigned long Len = 0);
+   unsigned long WriteString(const char *String,unsigned long Len = (unsigned long)-1);
    inline unsigned long WriteString(string S) {return WriteString(S.begin(),S.size());};
    inline unsigned long WriteString(string S) {return WriteString(S.begin(),S.size());};
-   void UsePools(Pool &P,unsigned int Count) {Pools = &P; PoolCount = Count;}; 
+   void UsePools(Pool &P,unsigned int Count) {Pools = &P; PoolCount = Count;};
    
    
-   DynamicMMap(FileFd &F,unsigned long Flags,unsigned long WorkSpace = 1024*1024);
+   DynamicMMap(FileFd &F,unsigned long Flags,unsigned long WorkSpace = 2*1024*1024);
+   DynamicMMap(unsigned long Flags,unsigned long WorkSpace = 2*1024*1024);
    virtual ~DynamicMMap();
 };
 
    virtual ~DynamicMMap();
 };