/*
Copyright (c) 1993 Xerox Corporation. All rights reserved.
*/
/*
$Id$
$Date$
*
* PCR Memory Management public interface
*/
/* Chauser, October 28, 1993 4:22 pm PDT */
#ifndef ←←PCR←MM←h
#define ←←PCR←MM←h 1
#include <config/PCR←StdDefs.h>
#include <stddef.h>
/*
* A simple memory manager interface
*
* Implementations are expected to use the POSIX system-provided
* malloc/calloc to allocate their own heap space.
*
* Clients (wizards excepted) are expected *never* to use
* malloc/calloc/realloc/free directly.
*/
extern void *
PCR←MM←Alloc( size←t size, PCR←Bool ptrFree, PCR←Bool clear );
/*
Allocate memory.
The ptrFree flag is a hint that says it's okay for a GC
to not trace through the object.
The clear argument causes the allocated area to be initialized to zeroes.
*/
extern void *
PCR←MM←Realloc( void *p, size←t size );
/*
Grow / shrink object p, as in the standard C library routine.
The ptrFree property is preserved.
*/
extern void
PCR←MM←Free( void *p );
/*
Explicit free.
*/
/*
* C clients may use the following sugared names:
*/
extern void * (PCR←MM←New(size←t size));
# define PCR←MM←←New(sz) PCR←MM←Alloc((sz), PCR←Bool←false, PCR←Bool←true)
# define PCR←MM←New PCR←MM←←New
extern void * (PCR←MM←Malloc(size←t size));
# define PCR←MM←←Malloc(sz) PCR←MM←Alloc((sz), PCR←Bool←false, PCR←Bool←false)
# define PCR←MM←Malloc PCR←MM←←Malloc
#endif /* ! ←←PCR←MM←h */
/*
$Log$
*/