1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/
2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  ftstdlib.h                                                             */
4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*    ANSI-specific library and header configuration file (specification   */
6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*    only).                                                               */
7049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
8a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang/*  Copyright 2002-2007, 2009, 2011-2012 by                                */
9049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
10049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
11049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  This file is part of the FreeType project, and may only be used,       */
12049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  modified, and distributed under the terms of the FreeType project      */
13049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
14049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  this file you indicate that you have read the license and              */
15049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  understand and accept it fully.                                        */
16049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
17049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/
18049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
19049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
20049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
21049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
22049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* This file is used to group all #includes to the ANSI C library that   */
23049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* FreeType normally requires.  It also defines macros to rename the     */
24049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* standard functions within the FreeType source code.                   */
25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* Load a file which defines __FTSTDLIB_H__ before this one to override  */
27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* it.                                                                   */
28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
31049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
32049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef __FTSTDLIB_H__
33049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define __FTSTDLIB_H__
34049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include <stddef.h>
37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_ptrdiff_t  ptrdiff_t
39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
41049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**********************************************************************/
42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                    */
43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                           integer limits                           */
44049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                    */
45049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* UINT_MAX and ULONG_MAX are used to automatically compute the size  */
46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* of `int' and `long' in bytes at compile-time.  So far, this works  */
47049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* for all platforms the library has been tested on.                  */
48049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                    */
49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* Note that on the extremely rare platforms that do not provide      */
50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* integer types that are _exactly_ 16 and 32 bits wide (e.g. some    */
51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* old Crays where `int' is 36 bits), we do not make any guarantee    */
52049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* about the correct behaviour of FT2 with all fonts.                 */
53049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                    */
54049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* In these case, `ftconfig.h' will refuse to compile anyway with a   */
55049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* message like `couldn't find 32-bit type' or something similar.     */
56049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                    */
57049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**********************************************************************/
58049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
59049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
60049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include <limits.h>
61049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
62e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#define FT_CHAR_BIT    CHAR_BIT
63e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#define FT_USHORT_MAX  USHRT_MAX
64e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#define FT_INT_MAX     INT_MAX
65e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#define FT_INT_MIN     INT_MIN
66e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#define FT_UINT_MAX    UINT_MAX
67e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang#define FT_ULONG_MAX   ULONG_MAX
68049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
69049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
70049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**********************************************************************/
71049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                    */
72049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                 character and string processing                    */
73049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                    */
74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**********************************************************************/
75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include <string.h>
78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_memchr   memchr
80049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_memcmp   memcmp
81049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_memcpy   memcpy
82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_memmove  memmove
83049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_memset   memset
84049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_strcat   strcat
85049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_strcmp   strcmp
86049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_strcpy   strcpy
87049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_strlen   strlen
88049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_strncmp  strncmp
89049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_strncpy  strncpy
90049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_strrchr  strrchr
91049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_strstr   strstr
92049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
93049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
94049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**********************************************************************/
95049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                    */
96049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                           file handling                            */
97049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                    */
98049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**********************************************************************/
99049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include <stdio.h>
102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
103049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_FILE     FILE
104049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_fclose   fclose
105049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_fopen    fopen
106049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_fread    fread
107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_fseek    fseek
108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_ftell    ftell
109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_sprintf  sprintf
110049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**********************************************************************/
113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                    */
114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                             sorting                                */
115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                    */
116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**********************************************************************/
117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include <stdlib.h>
120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_qsort  qsort
122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**********************************************************************/
125049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                    */
126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                        memory allocation                           */
127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                    */
128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**********************************************************************/
129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
130049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
131049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_scalloc   calloc
132049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_sfree     free
133049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_smalloc   malloc
134049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_srealloc  realloc
135049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
136049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
137049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**********************************************************************/
138049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                    */
139049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                          miscellaneous                             */
140049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                    */
141049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**********************************************************************/
142049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
143049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
144049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_atol   atol
145049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_labs   labs
146049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
147049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
148049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**********************************************************************/
149049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                    */
150049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                         execution control                          */
151049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                    */
152049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /**********************************************************************/
153049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
154049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
155049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include <setjmp.h>
156049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
157049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_jmp_buf     jmp_buf  /* note: this cannot be a typedef since */
158049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                                /*       jmp_buf is defined as a macro  */
159049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                                /*       on certain platforms           */
160049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
161049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_longjmp     longjmp
162a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang#define ft_setjmp( b ) setjmp( *(ft_jmp_buf*) &(b) ) /* same thing here */
163049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
164049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
165049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* the following is only used for debugging purposes, i.e., if */
166049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* FT_DEBUG_LEVEL_ERROR or FT_DEBUG_LEVEL_TRACE are defined    */
167049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
168049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include <stdarg.h>
169049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
170049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
171049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* __FTSTDLIB_H__ */
172049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
173049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
174049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* END */
175