X-Git-Url: http://plrg.eecs.uci.edu/git/?p=satune.git;a=blobdiff_plain;f=src%2Fmymemory.h;h=2fa964e6f8031779d21f958f2ae2a2b71d3c3f79;hp=642ea1d872cf855fb31a5941174a0a03c8564ded;hb=a60327c3c9d0f6ad9365aa042162a6c042a62402;hpb=8b7232fa4c6557fa03211353d37824c3ad1010e0 diff --git a/src/mymemory.h b/src/mymemory.h index 642ea1d..2fa964e 100644 --- a/src/mymemory.h +++ b/src/mymemory.h @@ -13,127 +13,15 @@ #ifndef _MY_MEMORY_H #define _MY_MEMORY_H -#include +#include #include #include #include "config.h" -/** MEMALLOC declares the allocators for a class to allocate - * memory in the non-snapshotting heap. */ -#define MEMALLOC \ - void * operator new(size_t size) { \ - return model_malloc(size); \ - } \ - void operator delete(void *p, size_t size) { \ - model_free(p); \ - } \ - void * operator new[](size_t size) { \ - return model_malloc(size); \ - } \ - void operator delete[](void *p, size_t size) { \ - model_free(p); \ - } \ - void * operator new(size_t size, void *p) { /* placement new */ \ - return p; \ - } - -void *model_malloc(size_t size); -void *model_calloc(size_t count, size_t size); -void * model_realloc(void *ptr, size_t size); -void model_free(void *ptr); - -/** @brief Provides a non-snapshotting allocator for use in STL classes. - * - * The code was adapted from a code example from the book The C++ - * Standard Library - A Tutorial and Reference by Nicolai M. Josuttis, - * Addison-Wesley, 1999 © Copyright Nicolai M. Josuttis 1999 - * Permission to copy, use, modify, sell and distribute this software - * is granted provided this copyright notice appears in all copies. - * This software is provided "as is" without express or implied - * warranty, and with no claim as to its suitability for any purpose. - */ -template -class ModelAlloc { -public: - // type definitions - typedef T value_type; - typedef T* pointer; - typedef const T* const_pointer; - typedef T& reference; - typedef const T& const_reference; - typedef size_t size_type; - typedef size_t difference_type; - - // rebind allocator to type U - template - struct rebind { - typedef ModelAlloc other; - }; - - // return address of values - pointer address(reference value) const { - return &value; - } - const_pointer address(const_reference value) const { - return &value; - } - - /* constructors and destructor - * - nothing to do because the allocator has no state - */ - ModelAlloc() throw() { - } - ModelAlloc(const ModelAlloc&) throw() { - } - template - ModelAlloc(const ModelAlloc&) throw() { - } - ~ModelAlloc() throw() { - } - - // return maximum number of elements that can be allocated - size_type max_size() const throw() { - return std::numeric_limits::max() / sizeof(T); - } - - // allocate but don't initialize num elements of type T - pointer allocate(size_type num, const void * = 0) { - pointer p = (pointer)model_malloc(num * sizeof(T)); - return p; - } - - // initialize elements of allocated storage p with value value - void construct(pointer p, const T& value) { - // initialize memory with placement new - new((void*)p)T(value); - } - - // destroy elements of initialized storage p - void destroy(pointer p) { - // destroy objects by calling their destructor - p->~T(); - } - - // deallocate storage p of deleted elements - void deallocate(pointer p, size_type num) { - model_free((void*)p); - } -}; - -/** Return that all specializations of this allocator are interchangeable. */ -template -bool operator ==(const ModelAlloc&, - const ModelAlloc&) throw() { - return true; -} - -/** Return that all specializations of this allocator are interchangeable. */ -template -bool operator!= (const ModelAlloc&, - const ModelAlloc&) throw() { - return false; -} - +void * ourmalloc(size_t size); +void ourfree(void *ptr); +void * ourcalloc(size_t count, size_t size); +void * ourrealloc(void *ptr, size_t size); #endif/* _MY_MEMORY_H */