X-Git-Url: https://git.distorted.org.uk/u/mdw/catacomb/blobdiff_plain/d3409d5ecf2492cff862616de72a580d1a8e8dc0..2bdb833f485d3c985a0f930865452fcaafdf95dd:/mparena.h diff --git a/mparena.h b/mparena.h index 61c735e..b541b25 100644 --- a/mparena.h +++ b/mparena.h @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: mparena.h,v 1.1 1999/11/17 18:02:16 mdw Exp $ + * $Id: mparena.h,v 1.2 1999/12/10 23:28:59 mdw Exp $ * * Allocation and freeing of MP buffers * @@ -30,13 +30,16 @@ /*----- Revision history --------------------------------------------------* * * $Log: mparena.h,v $ + * Revision 1.2 1999/12/10 23:28:59 mdw + * Memory allocation counting. + * * Revision 1.1 1999/11/17 18:02:16 mdw * New multiprecision integer arithmetic suite. * */ -#ifndef MPARENA_H -#define MPARENA_H +#ifndef CATACOMB_MPARENA_H +#define CATACOMB_MPARENA_H #ifdef __cplusplus extern "C" { @@ -44,7 +47,7 @@ /*----- Header files ------------------------------------------------------*/ -#ifndef MPW_H +#ifndef CATACOMB_MPW_H # include "mpw.h" #endif @@ -68,6 +71,7 @@ typedef struct mparena_node { typedef struct mparena { mparena_node *root; + unsigned n; struct mparena_ops *ops; } mparena; @@ -105,7 +109,7 @@ extern mparena_ops mparena_defaultops; extern void mparena_create(mparena */*a*/); -#define MPARENA_INIT { 0, &mparena_defaultops } +#define MPARENA_INIT { 0, 0, &mparena_defaultops } /* --- @mparena_setops@ --- * * @@ -132,6 +136,18 @@ extern mparena_ops *mparena_setops(mparena */*a*/, mparena_ops */*ops*/); extern void mparena_destroy(mparena */*a*/); +/* --- @mparena_count@ --- * + * + * Arguments: @mparena *a@ = pointer to arena block + * + * Returns: Number of allocated blocks from this arena. + * + * Use: Reports the number of blocks allocated from the arena and not + * yet freed. + */ + +extern unsigned mparena_count(mparena */*a*/); + /* --- @mpalloc@ --- * * * Arguments: @mparena *a@ = pointer to arena block @@ -152,8 +168,7 @@ extern mpw *mpalloc(mparena */*a*/, size_t /*sz*/); * * Returns: --- * - * Use: Returns an MP vector to an arena. It doesn't have to be - * returned to the arena from which it was allocated. + * Use: Returns an MP vector to an arena. */ extern void mpfree(mparena */*a*/, mpw */*v*/);