logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

ost::MemPager - The memory pager is used to allocate cumulative memory pages for storing object specific

Author

       Generated automatically by Doxygen for GNU CommonC++ from the source code.

GNU CommonC++                                    Sun Dec 27 2020                                ost::MemPager(3)

Constructor & Destructor Documentation

ost::MemPager::MemPager(size_tpagesize=4096)[protected]
       Create a paged memory pool for cumulative storage. This pool allocates memory in fixed 'pagesize' chunks.
       Ideal performance is achived when the pool size matches the system page size. This pool can only exist in
       derived objects.

       Parameterspagesize page size to allocate chunks.

   virtualost::MemPager::~MemPager()[protected],[virtual]
       Delete the memory pool and all allocated memory.

Detailed Description

       The memory pager is used to allocate cumulative memory pages for storing object specific 'persistant'
       data that is presumed to persist during the life of a given derived object.

       When the object is destroyed, all accumulated data is automatically purged.

       There are a number of odd and specialized utility classes found in Common C++. The most common of these
       is the 'MemPager' class. This is basically a class to enable page-grouped 'cumulative' memory allocation;
       all accumulated allocations are dropped during the destructor. This class has found it's way in a lot of
       other utility classes in Common C++.

       Author
           David Sugar dyfet@ostel.com

       Accumulative object memory allocator.

Member Function Documentation

char*ost::MemPager::alloc(constchar*str)[protected]
       Allocate a string from the memory pager pool and copy the string inti it's new memory area. This checks
       only the last active page for available space before allocating a new page.

       Parametersstr string to allocate and copy into paged memory pool.

       Returns
           copy of string from allocated memory.

   virtualvoid*ost::MemPager::alloc(size_tsize)[protected],[virtual]
       Allocate memory from either the currently active page, or allocate a new page for the object.

       Parameterssize size of memory to allocate.

       Returns
           pointer to allocated memory.

       Reimplemented in ost::SharedMemPager.

   voidost::MemPager::clean(void)[protected]
       Clean for memory cleanup before exiting.

   char*ost::MemPager::first(char*str)[protected]
       Allocate a string from the memory pager pool and copy the string into it's new memory area. This method
       allocates memory by first searching for an available page, and then allocating a new page if no space is
       found.

       Parametersstr string to allocate and copy into paged memory pool.

       Returns
           copy of string from allocated memory.

   virtualvoid*ost::MemPager::first(size_tsize)[protected],[virtual]
       Allocate first workspace from paged memory. This method scans all currently allocated blocks for
       available space before adding new pages and hence is both slower and more efficient.

       Parameterssize size of memory to allocate.

       Returns
           pointer to allocated memory.

       Reimplemented in ost::SharedMemPager.

   intost::MemPager::getPages(void)[inline]
       Return the total number of pages that have been allocated for this memory pool.

       Returns
           number of pages allocated.

   voidost::MemPager::purge(void)[protected]
       purge the current memory pool.

Name

       ost::MemPager - The memory pager is used to allocate cumulative memory pages for storing object specific
       'persistant' data that is presumed to persist during the life of a given derived object.

Synopsis

       #include <misc.h>

       Inherited by ost::Keydata [protected], ost::SharedMemPager, and ost::StackPager [protected].

   PublicMemberFunctions
       int getPages (void)
           Return the total number of pages that have been allocated for this memory pool.

   ProtectedMemberFunctions
       virtual void * first (size_t size)
           Allocate first workspace from paged memory.
       virtual void * alloc (size_t size)
           Allocate memory from either the currently active page, or allocate a new page for the object.
       char * first (char *str)
           Allocate a string from the memory pager pool and copy the string into it's new memory area.
       char * alloc (const char *str)
           Allocate a string from the memory pager pool and copy the string inti it's new memory area.
       MemPager (size_t pagesize=4096)
           Create a paged memory pool for cumulative storage.
       void purge (void)
           purge the current memory pool.
       void clean (void)
           Clean for memory cleanup before exiting.
       virtual ~MemPager ()
           Delete the memory pool and all allocated memory.

   Friends
       class String
       class MemPagerObject

See Also