topical media & game development

talk show tell print

lib-of-vs-libs-free-type-2.1.4-include-freetype2-freetype-ftsysmem.h / h



  ifndef __FT_SYSTEM_MEMORY_H__
  define __FT_SYSTEM_MEMORY_H__
  
  include <ft2build.h>
  
  FT_BEGIN_HEADER
  
   
*********************************************************************

  
   
*********************************************************************

  
   
*** ****

  
   
*** NOTE: THE CONTENT OF THIS FILE IS NOT CURRENTLY USED ****

  
   
*** IN NORMAL BUILDS. CONSIDER IT EXPERIMENTAL. ****

  
   
*** ****

  
   
*********************************************************************

  
   
*********************************************************************

  
  
   /*@**********************************************************************
    *
    * @type: FT_Memory
    *
    * @description:
    *   opaque handle to a memory manager handle. Note that since FreeType
    *   2.2, the memory manager structure FT_MemoryRec is hidden to client
    *   applications.
    *
    *   however, you can still define custom allocators easily using the
    *   @ft_memory_new API
    */
    typedef struct FT_MemoryRec_*   FT_Memory;
  
   /*@**********************************************************************
    *
    * @functype: FT_Memory_AllocFunc
    *
    * @description:
    *   a function used to allocate a block of memory.
    *
    * @input:
    *   size     :: size of blocks in bytes. Always > 0 !!
    *   mem_data :: memory-manager specific optional argument
    *               (see @ft_memory_new)
    *
    * @return:
    *   address of new block. NULL in case of memory exhaustion
    */
    typedef FT_Pointer  (*FT_Memory_AllocFunc)( FT_ULong   size,
                                                FT_Pointer mem_data );
  
   /*@**********************************************************************
    *
    * @functype: FT_Memory_FreeFunc
    *
    * @description:
    *   a function used to release a block of memory created through
    *   @FT_Memory_AllocFunc or @FT_Memory_ReallocFunc
    *
    * @input:
    *   block    :: address of target memory block. cannot be NULL !!
    *   mem_data :: memory-manager specific optional argument
    *               (see @ft_memory_new)
    */
    typedef void        (*FT_Memory_FreeFunc) ( FT_Pointer  block,
                                                FT_Pointer  mem_data );
  
   /*@**********************************************************************
    *
    * @functype: FT_Memory_ReallocFunc
    *
    * @description:
    *   a function used to reallocate a memory block.
    *
    * @input:
    *   block    :: address of target memory block. cannot be NULL !!
    *   new_size :: new requested size in bytes
    *   cur_size :: current block size in bytes
    *   mem_data :: memory-manager specific optional argument
    *               (see @ft_memory_new)
    */
    typedef FT_Pointer  (*FT_Memory_ReallocFunc)( FT_Pointer   block,
                                                  FT_ULong     new_size,
                                                  FT_ULong     cur_size,
                                                  FT_Pointer   mem_data );
  
   /*@**********************************************************************
    *
    * @functype: FT_Memory_CreateFunc
    *
    * @description:
    *   a function used to create a @FT_Memory object to model a
    *   memory manager
    *
    * @input:
    *   size      :: size of memory manager structure in bytes
    *   init_data :: optional initialisation argument
    *
    * @output:
    *   amem_data :: memory-manager specific argument to block management
    *                routines.
    *
    * @return:
    *   handle to new memory manager object. NULL in case of failure
    */
    typedef FT_Pointer  (*FT_Memory_CreateFunc)( FT_UInt     size,
                                                 FT_Pointer  init_data,
                                                 FT_Pointer *amem_data );
  
   /*@**********************************************************************
    *
    * @functype: FT_Memory_DestroyFunc
    *
    * @description:
    *   a function used to destroy a given @FT_Memory manager
    *
    * @input:
    *   memory   :: target memory manager handle
    *   mem_data :: option manager-specific argument
    */
    typedef void        (*FT_Memory_DestroyFunc)( FT_Memory  memory,
                                                  FT_Pointer mem_data );
  
   /*@**********************************************************************
    *
    * @struct: FT_Memory_FuncsRec
    *
    * @description:
    *   a function used to hold all methods of a given memory manager
    *   implementation.
    *
    * @fields:
    *   mem_alloc   :: block allocation routine
    *   mem_free    :: block release routine
    *   mem_realloc :: block re-allocation routine
    *   mem_create  :: manager creation routine
    *   mem_destroy :: manager destruction routine
    */
    typedef struct FT_Memory_FuncsRec_
    {
      FT_Memory_AllocFunc     mem_alloc;
      FT_Memory_FreeFunc      mem_free;
      FT_Memory_ReallocFunc   mem_realloc;
      FT_Memory_CreateFunc    mem_create;
      FT_Memory_DestroyFunc   mem_destroy;
  
    } FT_Memory_FuncsRec, *FT_Memory_Funcs;
  
   /*@**********************************************************************
    *
    * @type: FT_Memory_Funcs
    *
    * @description:
    *   a pointer to a constant @FT_Memory_FuncsRec structure used to
    *   describe a given memory manager implementation.
    */
    typedef const FT_Memory_FuncsRec*  FT_Memory_Funcs;
  
   /*@**********************************************************************
    *
    * @function: ft_memory_new
    *
    * @description:
    *   create a new memory manager, given a set of memory methods
    *
    * @input:
    *   mem_funcs     :: handle to memory manager implementation descriptor
    *   mem_init_data :: optional initialisation argument, passed to
    *                    @FT_Memory_CreateFunc
    *
    * @return:
    *   new memory manager handle. NULL in case of failure
    */
    FT_BASE( FT_Memory )
    ft_memory_new( FT_Memory_Funcs  mem_funcs,
                   FT_Pointer       mem_init_data );
  
   /*@**********************************************************************
    *
    * @function: ft_memory_destroy
    *
    * @description:
    *   destroy a given memory manager
    *
    * @input:
    *   memory :: handle to target memory manager
    */
    FT_BASE( void )
    ft_memory_destroy( FT_Memory  memory );
  
  /* */
  
  FT_END_HEADER
  
  endif /* __FT_SYSTEM_MEMORY_H__ */
  


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.