X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/7f25bdff3a0fa55ba897964d5c82475b45f3325a..2a9f1f154b8c450b71efdb097f5444f49a4161e2:/apt-pkg/contrib/mmap.h diff --git a/apt-pkg/contrib/mmap.h b/apt-pkg/contrib/mmap.h index 3cb6c6468..caffa0f90 100644 --- a/apt-pkg/contrib/mmap.h +++ b/apt-pkg/contrib/mmap.h @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: mmap.h,v 1.8 1999/01/18 06:20:08 jgg Exp $ +// $Id: mmap.h,v 1.12 2001/05/14 05:16:43 jgg Exp $ /* ###################################################################### MMap Class - Provides 'real' mmap or a faked mmap using read(). @@ -32,21 +32,28 @@ #include #include +using std::string; + +/* 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: - FileFd &Fd; - unsigned long Flags; + unsigned long Flags; 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: - 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;}; @@ -58,6 +65,7 @@ class MMap bool Sync(unsigned long Start,unsigned long Stop); MMap(FileFd &F,unsigned long Flags); + MMap(unsigned long Flags); virtual ~MMap(); }; @@ -75,6 +83,7 @@ class DynamicMMap : public MMap protected: + FileFd *Fd; unsigned long WorkSpace; Pool *Pools; unsigned int PoolCount; @@ -84,11 +93,12 @@ class DynamicMMap : public MMap // 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); - inline unsigned long WriteString(string S) {return WriteString(S.begin(),S.size());}; - void UsePools(Pool &P,unsigned int Count) {Pools = &P; PoolCount = Count;}; + unsigned long WriteString(const char *String,unsigned long Len = (unsigned long)-1); + inline unsigned long WriteString(string S) {return WriteString(S.c_str(),S.length());}; + void UsePools(Pool &P,unsigned int Count) {Pools = &P; PoolCount = Count;}; DynamicMMap(FileFd &F,unsigned long Flags,unsigned long WorkSpace = 2*1024*1024); + DynamicMMap(unsigned long Flags,unsigned long WorkSpace = 2*1024*1024); virtual ~DynamicMMap(); };