• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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