fix bug from moving read_from check_recency...check_recency had the assumption that...
[model-checker.git] / mymemory.h
index 481e081e380942bec5333b00a2b3de7bf1ef5404..4c44f5be514c4e8fdd9344f2cee7fb939ca8a3ad 100644 (file)
@@ -1,30 +1,49 @@
+/** @file mymemory.h
+ *  @brief Memory allocation functions.
+ */
+
 #ifndef _MY_MEMORY_H
 #define _MY_MEMORY_H
 #include <stdlib.h>
 #include <limits>
-#define MEMALLOC void *operator new( size_t size ){ \
-                                                                                                                                       return MYMALLOC( size );\
-                                                                                                                                       }\
-                                                          void operator delete( void *p, size_t size ){ \
-                                                                                                                                       MYFREE( p ); \
-                                                                                                                                       }\
-                 void *operator new[]( size_t size ){ \
-                                  return MYMALLOC( size );\
-                                  }\
-                 void operator delete[]( void *p, size_t size ){\
-                                  MYFREE( p );\
-                                  }
 
+/** MEMALLOC declares the allocators for a class to allocate
+ *     memory in the non-snapshotting heap. */
+#define MEMALLOC \
+       void * operator new(size_t size) { \
+               return MYMALLOC(size);\
+       }\
+       void operator delete(void *p, size_t size) { \
+               MYFREE( p ); \
+       }\
+       void * operator new[](size_t size) { \
+               return MYMALLOC(size);\
+       }\
+       void operator delete[](void *p, size_t size) {\
+               MYFREE(p);\
+       }
+
+/** SNAPSHOTALLOC declares the allocators for a class to allocate
+ *     memory in the snapshotting heap. */
+#define SNAPSHOTALLOC
 
 void *MYMALLOC(size_t size);
+void *MYCALLOC(size_t count, size_t size);
 void MYFREE(void *ptr);
-                                                                                               
-/*
-The following code example is taken from the book
-The C++ Standard Library - A Tutorial and Reference
-by Nicolai M. Josuttis, Addison-Wesley, 1999
-© Copyright Nicolai M. Josuttis 1999
-*/
+
+void system_free( void * ptr );
+void *system_malloc( size_t size );
+
+/** @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 T>
    class MyAlloc {
      public:
@@ -93,28 +112,34 @@ template <class T>
        }
    };
 
-// return that all specializations of this allocator are interchangeable
+/** Return that all specializations of this allocator are interchangeable. */
  template <class T1, class T2>
  bool operator== (const MyAlloc<T1>&,
                   const MyAlloc<T2>&) throw() {
      return true;
  }
+
+/** Return that all specializations of this allocator are interchangeable. */
  template <class T1, class T2>
  bool operator!= (const MyAlloc<T1>&,
                   const MyAlloc<T2>&) throw() {
      return false;
  }
 
-
 #ifdef __cplusplus
 extern "C" {
 #endif
 typedef void * mspace;
 extern void* mspace_malloc(mspace msp, size_t bytes);
 extern void mspace_free(mspace msp, void* mem);
+extern void* mspace_realloc(mspace msp, void* mem, size_t newsize);
+extern void* mspace_calloc(mspace msp, size_t n_elements, size_t elem_size);
 extern mspace create_mspace_with_base(void* base, size_t capacity, int locked);
 extern mspace create_mspace(size_t capacity, int locked);
+extern mspace mySpace;
+extern void * basemySpace;
 #ifdef __cplusplus
 };  /* end of extern "C" */
 #endif
-#endif
+
+#endif /* _MY_MEMORY_H */