/******************************************************************* * * ttmemory.h 1.2 * * Memory management component (specification). * * Copyright 1996-1999 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used * modified and distributed under the terms of the FreeType project * license, LICENSE.TXT. By continuing to use, modify, or distribute * this file you indicate that you have read the license and * understand and accept it fully. * * Changes between 1.2 and 1.1: * * - the font pool is gone! All allocations are now performed * with malloc() and free(). * * - introduced the FREE() macro and the Free() function for * future use in destructors. * * - Init_FontPool() is now a macro to allow the compilation of * 'legacy' applications (all four test programs have been updated). * ******************************************************************/ /* $XFree86: xc/extras/FreeType/lib/ttmemory.h,v 1.4 2000/02/13 05:03:53 dawes Exp $ */ #ifndef TTMEMORY_H #define TTMEMORY_H #include "ttconfig.h" #include "tttypes.h" /* Removed for XFree86 module support */ #if 0 #include #endif #ifdef __cplusplus extern "C" { #endif #define MEM_Set( dest, byte, count ) memset( dest, byte, count ) #ifdef HAVE_MEMCPY #define MEM_Copy( dest, source, count ) memcpy( dest, source, count ) #else #define MEM_Copy( dest, source, count ) bcopy( source, dest, count ) #endif #ifdef HAVE_MEMMOVE #define MEM_Move( dest, source, count ) memmove( dest, source, count ) #else #define MEM_Move( dest, source, count ) bcopy( source, dest, count ) #endif #define MEM_Alloc( _pointer_, _size_ ) \ TT_Alloc( _size_, (void**)&(_pointer_) ) #define MEM_Realloc( _pointer_, _size_ ) \ TT_Realloc( _size_, (void**)&(_pointer_) ) #define ALLOC( _pointer_, _size_ ) \ ( ( error = MEM_Alloc( _pointer_, _size_ ) ) != TT_Err_Ok ) #define ALLOC_ARRAY( _pointer_, _count_, _type_ ) \ ( ( error = MEM_Alloc( _pointer_, \ (_count_) * sizeof ( _type_ ) ) ) != TT_Err_Ok ) #define REALLOC( _pointer_, _size_ ) \ ( ( error = MEM_Realloc( _pointer_, _size_ ) ) != TT_Err_Ok ) #define REALLOC_ARRAY( _pointer_, _count_, _type_ ) \ ( (error = MEM_Realloc( _pointer_, \ (_count_) * sizeof ( _type_ ) ) ) != TT_Err_Ok ) #define FREE( _pointer_ ) \ TT_Free( (void**)&(_pointer_) ) /* Allocate a block of memory of 'Size' bytes from the heap, and */ /* sets the pointer '*P' to its address. If 'Size' is 0, or in */ /* case of error, the pointer is always set to NULL. */ EXPORT_DEF TT_Error TT_Alloc( ULong Size, void** P ); #ifdef TT_CONFIG_OPTION_EXTEND_ENGINE /* Reallocates a block of memory pointed to by '*P' to 'Size' */ /* bytes from the heap, possibly changing '*P'. If 'Size' is 0, */ /* TT_Free() is called, if '*P' is NULL, TT_Alloc() is called. */ /* '*P' is freed (if it's non-NULL) in case of error. */ EXPORT_DEF TT_Error TT_Realloc( ULong Size, void** P ); #endif /* TT_CONFIG_OPTION_EXTEND_ENGINE */ /* Releases a block that was previously allocated through Alloc. */ /* Note that the function returns successfully when P or *P are */ /* already NULL. The pointer '*P' is set to NULL on exit in */ /* case of success. */ EXPORT_DEF TT_Error TT_Free( void** P ); /* For "legacy" applications, that should be re-coded. */ /* Note that this won't release the previously allocated font pool. */ #define Init_FontPool( x, y ) while( 0 ) { } LOCAL_DEF TT_Error TTMemory_Init( void ); LOCAL_DEF TT_Error TTMemory_Done( void ); #ifdef __cplusplus } #endif #endif /* TTMEMORY_H */ /* END */