Imported Upstream version 2.10.4
[platform/upstream/freetype2.git] / include / freetype / config / ftstdlib.h
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 */