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