chiark / gitweb /
debian: Clean noadns build directory.
[mLib] / arena.h
diff --git a/arena.h b/arena.h
index 6ceef09701b121e8dffd47b4cbdc4cf9c269ef28..05037f1917600ef1347f5a58a510fd8d537061cf 100644 (file)
--- a/arena.h
+++ b/arena.h
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
- * $Id: arena.h,v 1.1 2000/06/17 10:37:53 mdw Exp $
+ * $Id$
  *
  * Abstraction for memory allocation arenas
  *
  * MA 02111-1307, USA.
  */
 
-/*----- Revision history --------------------------------------------------* 
- *
- * $Log: arena.h,v $
- * Revision 1.1  2000/06/17 10:37:53  mdw
- * Basic arena management.
- *
- */
-
 #ifndef MLIB_ARENA_H
 #define MLIB_ARENA_H
 
 /* --- An arena structure --- */
 
 typedef struct arena {
-  struct arena_ops *ops;
+  const struct arena_ops *ops;
 } arena;
       
 typedef struct arena_ops {
   void *(*alloc)(arena */*a*/, size_t /*sz*/);
-  void *(*realloc)(arena */*a*/, void */*p*/, size_t /*sz*/);
+  void *(*realloc)(arena */*a*/, void */*p*/, size_t /*sz*/, size_t /*osz*/);
   void (*free)(arena */*a*/, void */*p*/);
   void (*purge)(arena */*a*/);
 } arena_ops;
@@ -73,6 +65,7 @@ extern arena arena_stdlib;            /* Arena based on @malloc@/@free@ */
  * Arguments:  @arena *a@ = pointer to arena block
  *             @void *p@ = pointer to memory block to resize
  *             @size_t sz@ = size desired for the block
+ *             @size_t osz@ = size of the old block
  *
  * Returns:    ---
  *
@@ -80,18 +73,20 @@ extern arena arena_stdlib;          /* Arena based on @malloc@/@free@ */
  *             support @realloc@ properly.
  */
 
-extern void *arena_fakerealloc(arena */*a*/, void */*p*/, size_t /*sz*/);
+extern void *arena_fakerealloc(arena */*a*/, void */*p*/,
+                              size_t /*sz*/, size_t /*osz*/);
 
 /* --- Useful macros --- */
 
 #define A_ALLOC(a, sz) (((a)->ops->alloc)((a), (sz)))
-#define A_REALLOC(a, p, sz) (((a)->ops->realloc)((a), (p), (sz)))
+#define A_REALLOC(a, p, sz, osz) (((a)->ops->realloc)((a), (p), (sz), (osz)))
 #define A_FREE(a, p) (((a)->ops->free)((a), (p)))
 
 /* --- Simple function equivalents --- */
 
 extern void *a_alloc(arena */*a*/, size_t /*sz*/);
-extern void *a_realloc(arena */*a*/, void */*p*/, size_t /*sz*/);
+extern void *a_realloc(arena */*a*/, void */*p*/,
+                      size_t /*sz*/, size_t /*osz*/);
 extern void a_free(arena */*a*/, void */*p*/);
 
 /*----- That's all, folks -------------------------------------------------*/