X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/2d11135a1b8e8ee0a21c7932d7ce08a89b354784..ba00ddd633a9c7f1f04962a3b563fb7c98d7cf2e:/apt-pkg/contrib/mmap.h?ds=sidebyside diff --git a/apt-pkg/contrib/mmap.h b/apt-pkg/contrib/mmap.h index 0c11d3202..bde62217d 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.9 1999/04/18 06:36:36 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(). @@ -25,13 +25,17 @@ #ifndef PKGLIB_MMAP_H #define PKGLIB_MMAP_H -#ifdef __GNUG__ -#pragma interface "apt-pkg/mmap.h" -#endif #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: @@ -80,15 +84,17 @@ class DynamicMMap : public MMap unsigned long WorkSpace; Pool *Pools; unsigned int PoolCount; + + bool Grow(); public: // 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(const 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);