* it under the terms of the GNU Library General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
* it under the terms of the GNU Library General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
* mLib is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Library General Public License for more details.
* mLib is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Library General Public License for more details.
* You should have received a copy of the GNU Library General Public
* License along with mLib; if not, write to the Free
* Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
* MA 02111-1307, USA.
*/
* You should have received a copy of the GNU Library General Public
* License along with mLib; if not, write to the Free
* Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
* MA 02111-1307, USA.
*/
typedef struct arena_ops {
void *(*alloc)(arena */*a*/, size_t /*sz*/);
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;
void (*free)(arena */*a*/, void */*p*/);
void (*purge)(arena */*a*/);
} arena_ops;
* Arguments: @arena *a@ = pointer to arena block
* @void *p@ = pointer to memory block to resize
* @size_t sz@ = size desired for the block
* Arguments: @arena *a@ = pointer to arena block
* @void *p@ = pointer to memory block to resize
* @size_t sz@ = size desired for the block
-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)))
/* --- 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*/);
#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 -------------------------------------------------*/
extern void a_free(arena */*a*/, void */*p*/);
/*----- That's all, folks -------------------------------------------------*/