freetype-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Devel] New "ftstdlib.h" configuration file


From: David Turner
Subject: [Devel] New "ftstdlib.h" configuration file
Date: Fri, 12 Apr 2002 12:16:07 +0200

Hello,

  Following Juliusz's ideas, I have created a new configuration file named
  <freetype/config/ftstdlib.h>, whose purpose is to define aliases for all
  routines of the ISO C library that the font engine uses..

  This allows easier ports on exotic platforms to replace these function
  calls with something different when they need to. Content follows below.

  Notice that this file doesn't include heap management and i/o routines
  since these should normally be implemented by platform-specific
  "ftsystem.c" implementations. Of course, all includes to the C library
  itself have been removed from the engine's source code proper, except
  some rare cases specific to debugging which are not part of a normal
  build..

  I do not claim that this change will solve Juliusz's problems with
  integrating FT2 within an XFree86 extension, only that it's a step
  in the right direction. :-)

  Note also that I didn't bother changing the names of the memory
  object methods (they're still "alloc", "realloc" and "free") since
  the FT_Memory structure is going to change significantly in 2.1.1
  with the inclusion of cleanup-stack exception handling, which
  should happen fairly soon after 2.1.0 ...

  As usual, testing will be appreciated..


Best Regards,

- David

=============================================================================

/***************************************************************************/
/*                                                                         */
/*  ftstdlib.h                                                             */
/*                                                                         */
/*    ANSI-specific configuration file                                     */
/*                                                                         */
/*  Copyright 1996-2001, 2002 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.                                        */
/*                                                                         */
/*                                                                         */
/*  This file is used to group all #includes to the ANSI C library         */
/*  that FreeType normally requires. It also defines macros to rename      */
/*  the standard functions within the FT source code                       */
/*                                                                         */
/*  (You're free to provide alternative when working in exotic             */
/*   runtime environments :-)                                              */
/*                                                                         */
/***************************************************************************/

#ifndef __FT_STANDARD_LIBRARY_H__
#define __FT_STANDARD_LIBRARY_H__


/************************************************************************/
/*                                                                      */
/*                            integer limits                            */
/*                                                                      */
/*  UINT_MAX and ULONG_MAX are used to automatically compute the size   */
/*  of 'int' and 'long' in bytes at compile-time. So far, this works    */
/*  for all platforms the library has been tested on.                   */
/*                                                                      */
/*  Note that on the extremely rare platforms that do not provide       */
/*  integer types that are _exactly_ 16 and 32 bits wide (e.g. some     */
/*  old Crays where 'int' is 36 bits !!), we do not make any guarantee  */
/*  about the correct behaviour of FT2 with all fonts..                 */
/*                                                                      */
/*  in these case, "ftconfig.h" will refuse to compile anyway with a    */
/*  message like "couldn't find 32-bit type" or something similar       */
/*  anyway..                                                            */
/*                                                                      */
/*                                                                      */
/*  IMPORTANT NOTE: We do not define aliases for heap management and    */
/*                  i/o routines (i.e. malloc/free/fopen/fread/...)     */
/*                  since these functions should all be encapsulated    */
/*                  by platform-specific implementations of             */
/*                  "ftsystem.c" anyway !!                              */
/*                                                                      */
/************************************************************************/

#include <limits.h>
#define  FT_UINT_MAX   UINT_MAX
#define  FT_ULONG_MAX  ULONG_MAX


/************************************************************************/
/*                                                                      */
/*                   character and string processing                    */
/*                                                                      */
/************************************************************************/

#include <ctype.h>
#define  ft_isalnum    isalnum
#define  ft_isupper    isupper
#define  ft_islower    islower


#include <string.h>
#define  ft_strlen     strlen
#define  ft_strcmp     strcmp
#define  ft_strncmp    strncmp
#define  ft_memcpy     memcpy
#define  ft_strcpy     strcpy
#define  ft_strncpy    strncpy
#define  ft_memset     memset
#define  ft_memmove    memmove


/************************************************************************/
/*                                                                      */
/*                               sorting                                */
/*                                                                      */
/************************************************************************/

#include <stdlib.h>   /* for qsort() */
#define  ft_qsort      qsort


/************************************************************************/
/*                                                                      */
/*                           execution control                          */
/*                                                                      */
/************************************************************************/

#include <setjmp.h>

#define  ft_jmp_buf   jmp_buf   /* note: this cannot be a typedef since */
                                /*       jmp_buf is defined as a macro  */
                                /*       on certain platforms..         */

#define  ft_setjmp   setjmp     /* same thing here */
#define  ft_longjmp  longjmp    /*   "             */


/* the following is only used for debugging purposes, i.e. when */
/* FT_DEBUG_LEVEL_ERROR or FT_DEBUG_LEVEL_TRACE are defined     */
/*                                                              */
#include <stdarg.h>


#endif /* __FT_STANDARD_LIBRARY_H__ */



reply via email to

[Prev in Thread] Current Thread [Next in Thread]