mirror of
git://git.psyced.org/git/psyclpc
synced 2024-08-15 03:20:16 +00:00
64 lines
1.7 KiB
C
64 lines
1.7 KiB
C
|
#ifndef MEMPOOLS_H__
|
||
|
#define MEMPOOLS_H__ 1
|
||
|
|
||
|
#include <sys/types.h>
|
||
|
|
||
|
#include "typedefs.h" /* strbuf_t */
|
||
|
|
||
|
/* --- Types --- */
|
||
|
|
||
|
/* --- enum membuffer_e: Memory buffer IDs ---
|
||
|
*/
|
||
|
|
||
|
typedef enum membuffer {
|
||
|
mbFile /* read_file(), restore_(), read_bytes() */
|
||
|
, mbSwap /* Swapper buffer */
|
||
|
, mbMax
|
||
|
} membuffer_e;
|
||
|
|
||
|
/* --- Mempool, struct mempool_s: a memory pool ---
|
||
|
*
|
||
|
* The structure contains no public data.
|
||
|
*/
|
||
|
|
||
|
struct mempool_s;
|
||
|
typedef struct mempool_s mempool_t;
|
||
|
typedef struct mempool_s * Mempool;
|
||
|
|
||
|
/* --- Prototypes --- */
|
||
|
|
||
|
extern Mempool new_mempool (size_t iSize);
|
||
|
extern Mempool new_lifopool (size_t iSize);
|
||
|
extern size_t size_mempool (size_t elemsize);
|
||
|
extern size_t size_lifopool (size_t elemsize);
|
||
|
extern void mempool_depend_on (Mempool pSub, Mempool pSuper);
|
||
|
extern void * mempool_alloc (Mempool pPool, size_t iSize);
|
||
|
extern void mempool_free (Mempool pPool, void * adr);
|
||
|
extern void mempool_reset (Mempool pPool);
|
||
|
extern void mempool_delete (Mempool pPool);
|
||
|
extern size_t mempool_size (Mempool pPool);
|
||
|
|
||
|
extern void mb_init(void);
|
||
|
extern void mb_release(void);
|
||
|
extern void * mb_alloc(membuffer_e buf, size_t size);
|
||
|
extern void * mb_realloc(membuffer_e buf, size_t size);
|
||
|
extern size_t mb_status (strbuf_t * sbuf, Bool verbose);
|
||
|
extern void mb_dinfo_status (svalue_t *svp, int value);
|
||
|
|
||
|
#define mb_free(buf) NOOP
|
||
|
/* Use the above macro to 'free' the memory.
|
||
|
* While it may redundant, use of the macro improves the readability
|
||
|
* of the code!
|
||
|
*/
|
||
|
|
||
|
#ifdef GC_SUPPORT
|
||
|
|
||
|
extern void mempool_clear_refs (Mempool pPool);
|
||
|
extern void mempool_note_refs (Mempool pPool);
|
||
|
extern void mb_clear_refs (void);
|
||
|
extern void mb_note_refs (void);
|
||
|
|
||
|
#endif /* GC_SUPPORT */
|
||
|
|
||
|
#endif /* MEMPOOLS_H__ */
|