1 /**************************************************************************** 2 * 3 * ftstdlib.h 4 * 5 * ANSI-specific library and header configuration file (specification 6 * only). 7 * 8 * Copyright (C) 2002-2020 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 of 45 * `int` and `long` in bytes at compile-time. So far, this works for all 46 * platforms the library has been tested on. 47 * 48 * Note that on the extremely rare platforms that do not provide integer 49 * types that are _exactly_ 16 and 32~bits wide (e.g., some old Crays where 50 * `int` is 36~bits), we do not make any guarantee about the correct 51 * behaviour of FreeType~2 with all fonts. 52 * 53 * In these cases, `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