1/***************************************************************************/ 2/* */ 3/* ftstdlib.h */ 4/* */ 5/* ANSI-specific library and header configuration file (specification */ 6/* only). */ 7/* */ 8/* Copyright 2002-2007, 2009, 2011-2012 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 */ 27 /* it. */ 28 /* */ 29 /*************************************************************************/ 30 31 32#ifndef __FTSTDLIB_H__ 33#define __FTSTDLIB_H__ 34 35 36#include <stddef.h> 37 38#define ft_ptrdiff_t ptrdiff_t 39 40 41 /**********************************************************************/ 42 /* */ 43 /* integer limits */ 44 /* */ 45 /* UINT_MAX and ULONG_MAX are used to automatically compute the size */ 46 /* of `int' and `long' in bytes at compile-time. So far, this works */ 47 /* for all platforms the library has been tested on. */ 48 /* */ 49 /* Note that on the extremely rare platforms that do not provide */ 50 /* integer types that are _exactly_ 16 and 32 bits wide (e.g. some */ 51 /* old Crays where `int' is 36 bits), we do not make any guarantee */ 52 /* about the correct behaviour of FT2 with all fonts. */ 53 /* */ 54 /* In these case, `ftconfig.h' will refuse to compile anyway with a */ 55 /* message like `couldn't find 32-bit type' or something similar. */ 56 /* */ 57 /**********************************************************************/ 58 59 60#include <limits.h> 61 62#define FT_CHAR_BIT CHAR_BIT 63#define FT_USHORT_MAX USHRT_MAX 64#define FT_INT_MAX INT_MAX 65#define FT_INT_MIN INT_MIN 66#define FT_UINT_MAX UINT_MAX 67#define FT_ULONG_MAX ULONG_MAX 68 69 70 /**********************************************************************/ 71 /* */ 72 /* character and string processing */ 73 /* */ 74 /**********************************************************************/ 75 76 77#include <string.h> 78 79#define ft_memchr memchr 80#define ft_memcmp memcmp 81#define ft_memcpy memcpy 82#define ft_memmove memmove 83#define ft_memset memset 84#define ft_strcat strcat 85#define ft_strcmp strcmp 86#define ft_strcpy strcpy 87#define ft_strlen strlen 88#define ft_strncmp strncmp 89#define ft_strncpy strncpy 90#define ft_strrchr strrchr 91#define ft_strstr strstr 92 93 94 /**********************************************************************/ 95 /* */ 96 /* file handling */ 97 /* */ 98 /**********************************************************************/ 99 100 101#include <stdio.h> 102 103#define FT_FILE FILE 104#define ft_fclose fclose 105#define ft_fopen fopen 106#define ft_fread fread 107#define ft_fseek fseek 108#define ft_ftell ftell 109#define ft_sprintf sprintf 110 111 112 /**********************************************************************/ 113 /* */ 114 /* sorting */ 115 /* */ 116 /**********************************************************************/ 117 118 119#include <stdlib.h> 120 121#define ft_qsort qsort 122 123 124 /**********************************************************************/ 125 /* */ 126 /* memory allocation */ 127 /* */ 128 /**********************************************************************/ 129 130 131#define ft_scalloc calloc 132#define ft_sfree free 133#define ft_smalloc malloc 134#define ft_srealloc realloc 135 136 137 /**********************************************************************/ 138 /* */ 139 /* miscellaneous */ 140 /* */ 141 /**********************************************************************/ 142 143 144#define ft_atol atol 145#define ft_labs labs 146 147 148 /**********************************************************************/ 149 /* */ 150 /* execution control */ 151 /* */ 152 /**********************************************************************/ 153 154 155#include <setjmp.h> 156 157#define ft_jmp_buf jmp_buf /* note: this cannot be a typedef since */ 158 /* jmp_buf is defined as a macro */ 159 /* on certain platforms */ 160 161#define ft_longjmp longjmp 162#define ft_setjmp( b ) setjmp( *(ft_jmp_buf*) &(b) ) /* same thing here */ 163 164 165 /* the following is only used for debugging purposes, i.e., if */ 166 /* FT_DEBUG_LEVEL_ERROR or FT_DEBUG_LEVEL_TRACE are defined */ 167 168#include <stdarg.h> 169 170 171#endif /* __FTSTDLIB_H__ */ 172 173 174/* END */ 175