1 /***************************************************************************/ 2 /* */ 3 /* ftstdlib.h */ 4 /* */ 5 /* ANSI-specific library and header configuration file (specification */ 6 /* only). */ 7 /* */ 8 /* Copyright 2002-2017 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