Home | History | Annotate | Download | only in config
      1 /****************************************************************************
      2  *
      3  * ftstdlib.h
      4  *
      5  *   ANSI-specific library and header configuration file (specification
      6  *   only).
      7  *
      8  * Copyright 2002-2018 by
      9  * David Turner, Robert Wilhelm, and Werner Lemberg.
     10  *
     11  * This file is part of the FreeType project, and may only be used,
     12  * modified, and distributed under the terms of the FreeType project
     13  * license, LICENSE.TXT.  By continuing to use, modify, or distribute
     14  * this file you indicate that you have read the license and
     15  * understand and accept it fully.
     16  *
     17  */
     18 
     19 
     20   /**************************************************************************
     21    *
     22    * This file is used to group all #includes to the ANSI C library that
     23    * FreeType normally requires.  It also defines macros to rename the
     24    * standard functions within the FreeType source code.
     25    *
     26    * Load a file which defines FTSTDLIB_H_ before this one to override it.
     27    *
     28    */
     29 
     30 
     31 #ifndef FTSTDLIB_H_
     32 #define FTSTDLIB_H_
     33 
     34 
     35 #include <stddef.h>
     36 
     37 #define ft_ptrdiff_t  ptrdiff_t
     38 
     39 
     40   /***********************************************************************
     41    *
     42    *                          integer limits
     43    *
     44    * UINT_MAX and ULONG_MAX are used to automatically compute the size
     45    * of `int' and `long' in bytes at compile-time.  So far, this works
     46    * for all platforms the library has been tested on.
     47    *
     48    * Note that on the extremely rare platforms that do not provide
     49    * integer types that are _exactly_ 16 and 32 bits wide (e.g. some
     50    * old Crays where `int' is 36 bits), we do not make any guarantee
     51    * about the correct behaviour of FT2 with all fonts.
     52    *
     53    * In these case, `ftconfig.h' will refuse to compile anyway with a
     54    * message like `couldn't find 32-bit type' or something similar.
     55    *
     56    */
     57 
     58 
     59 #include <limits.h>
     60 
     61 #define FT_CHAR_BIT    CHAR_BIT
     62 #define FT_USHORT_MAX  USHRT_MAX
     63 #define FT_INT_MAX     INT_MAX
     64 #define FT_INT_MIN     INT_MIN
     65 #define FT_UINT_MAX    UINT_MAX
     66 #define FT_LONG_MIN    LONG_MIN
     67 #define FT_LONG_MAX    LONG_MAX
     68 #define FT_ULONG_MAX   ULONG_MAX
     69 
     70 
     71   /***********************************************************************
     72    *
     73    *                character and string processing
     74    *
     75    */
     76 
     77 
     78 #include <string.h>
     79 
     80 #define ft_memchr   memchr
     81 #define ft_memcmp   memcmp
     82 #define ft_memcpy   memcpy
     83 #define ft_memmove  memmove
     84 #define ft_memset   memset
     85 #define ft_strcat   strcat
     86 #define ft_strcmp   strcmp
     87 #define ft_strcpy   strcpy
     88 #define ft_strlen   strlen
     89 #define ft_strncmp  strncmp
     90 #define ft_strncpy  strncpy
     91 #define ft_strrchr  strrchr
     92 #define ft_strstr   strstr
     93 
     94 
     95   /***********************************************************************
     96    *
     97    *                          file handling
     98    *
     99    */
    100 
    101 
    102 #include <stdio.h>
    103 
    104 #define FT_FILE     FILE
    105 #define ft_fclose   fclose
    106 #define ft_fopen    fopen
    107 #define ft_fread    fread
    108 #define ft_fseek    fseek
    109 #define ft_ftell    ftell
    110 #define ft_sprintf  sprintf
    111 
    112 
    113   /***********************************************************************
    114    *
    115    *                            sorting
    116    *
    117    */
    118 
    119 
    120 #include <stdlib.h>
    121 
    122 #define ft_qsort  qsort
    123 
    124 
    125   /***********************************************************************
    126    *
    127    *                       memory allocation
    128    *
    129    */
    130 
    131 
    132 #define ft_scalloc   calloc
    133 #define ft_sfree     free
    134 #define ft_smalloc   malloc
    135 #define ft_srealloc  realloc
    136 
    137 
    138   /***********************************************************************
    139    *
    140    *                         miscellaneous
    141    *
    142    */
    143 
    144 
    145 #define ft_strtol  strtol
    146 #define ft_getenv  getenv
    147 
    148 
    149   /***********************************************************************
    150    *
    151    *                        execution control
    152    *
    153    */
    154 
    155 
    156 #include <setjmp.h>
    157 
    158 #define ft_jmp_buf     jmp_buf  /* note: this cannot be a typedef since */
    159                                 /*       jmp_buf is defined as a macro  */
    160                                 /*       on certain platforms           */
    161 
    162 #define ft_longjmp     longjmp
    163 #define ft_setjmp( b ) setjmp( *(ft_jmp_buf*) &(b) ) /* same thing here */
    164 
    165 
    166   /* the following is only used for debugging purposes, i.e., if */
    167   /* FT_DEBUG_LEVEL_ERROR or FT_DEBUG_LEVEL_TRACE are defined    */
    168 
    169 #include <stdarg.h>
    170 
    171 
    172 #endif /* FTSTDLIB_H_ */
    173 
    174 
    175 /* END */
    176