1 /***************************************************************************/ 2 /* */ 3 /* ftstdlib.h */ 4 /* */ 5 /* ANSI-specific library and header configuration file (specification */ 6 /* only). */ 7 /* */ 8 /* Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2009 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 */ 27 /* it. */ 28 /* */ 29 /*************************************************************************/ 30 31 32 #ifndef __FTSTDLIB_H__ 33 #define __FTSTDLIB_H__ 34 35 36 #include <stddef.h> 37 38 #define ft_ptrdiff_t ptrdiff_t 39 40 41 /**********************************************************************/ 42 /* */ 43 /* integer limits */ 44 /* */ 45 /* UINT_MAX and ULONG_MAX are used to automatically compute the size */ 46 /* of `int' and `long' in bytes at compile-time. So far, this works */ 47 /* for all platforms the library has been tested on. */ 48 /* */ 49 /* Note that on the extremely rare platforms that do not provide */ 50 /* integer types that are _exactly_ 16 and 32 bits wide (e.g. some */ 51 /* old Crays where `int' is 36 bits), we do not make any guarantee */ 52 /* about the correct behaviour of FT2 with all fonts. */ 53 /* */ 54 /* In these case, `ftconfig.h' will refuse to compile anyway with a */ 55 /* message like `couldn't find 32-bit type' or something similar. */ 56 /* */ 57 /**********************************************************************/ 58 59 60 #include <limits.h> 61 62 #define FT_CHAR_BIT CHAR_BIT 63 #define FT_INT_MAX INT_MAX 64 #define FT_UINT_MAX UINT_MAX 65 #define FT_ULONG_MAX ULONG_MAX 66 67 68 /**********************************************************************/ 69 /* */ 70 /* character and string processing */ 71 /* */ 72 /**********************************************************************/ 73 74 75 #include <string.h> 76 77 #define ft_memchr memchr 78 #define ft_memcmp memcmp 79 #define ft_memcpy memcpy 80 #define ft_memmove memmove 81 #define ft_memset memset 82 #define ft_strcat strcat 83 #define ft_strcmp strcmp 84 #define ft_strcpy strcpy 85 #define ft_strlen strlen 86 #define ft_strncmp strncmp 87 #define ft_strncpy strncpy 88 #define ft_strrchr strrchr 89 #define ft_strstr strstr 90 91 92 /**********************************************************************/ 93 /* */ 94 /* file handling */ 95 /* */ 96 /**********************************************************************/ 97 98 99 #include <stdio.h> 100 101 #define FT_FILE FILE 102 #define ft_fclose fclose 103 #define ft_fopen fopen 104 #define ft_fread fread 105 #define ft_fseek fseek 106 #define ft_ftell ftell 107 #define ft_sprintf sprintf 108 109 110 /**********************************************************************/ 111 /* */ 112 /* sorting */ 113 /* */ 114 /**********************************************************************/ 115 116 117 #include <stdlib.h> 118 119 #define ft_qsort qsort 120 121 122 /**********************************************************************/ 123 /* */ 124 /* memory allocation */ 125 /* */ 126 /**********************************************************************/ 127 128 129 #define ft_scalloc calloc 130 #define ft_sfree free 131 #define ft_smalloc malloc 132 #define ft_srealloc realloc 133 134 135 /**********************************************************************/ 136 /* */ 137 /* miscellaneous */ 138 /* */ 139 /**********************************************************************/ 140 141 142 #define ft_atol atol 143 #define ft_labs labs 144 145 146 /**********************************************************************/ 147 /* */ 148 /* execution control */ 149 /* */ 150 /**********************************************************************/ 151 152 153 #include <setjmp.h> 154 155 #define ft_jmp_buf jmp_buf /* note: this cannot be a typedef since */ 156 /* jmp_buf is defined as a macro */ 157 /* on certain platforms */ 158 159 #define ft_longjmp longjmp 160 #define ft_setjmp( b ) setjmp( *(jmp_buf*) &(b) ) /* same thing here */ 161 162 163 /* the following is only used for debugging purposes, i.e., if */ 164 /* FT_DEBUG_LEVEL_ERROR or FT_DEBUG_LEVEL_TRACE are defined */ 165 166 #include <stdarg.h> 167 168 169 #endif /* __FTSTDLIB_H__ */ 170 171 172 /* END */ 173