1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/ 2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* ftconfig.h */ 4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* ANSI-specific configuration file (specification only). */ 6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 7ec62c527eb34ee4481a0153ceb42dfd35d7e1d26Makoto Onuki/* Copyright 1996-2015 by */ 8049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* David Turner, Robert Wilhelm, and Werner Lemberg. */ 9049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 10049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* This file is part of the FreeType project, and may only be used, */ 11049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* modified, and distributed under the terms of the FreeType project */ 12049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 13049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* this file you indicate that you have read the license and */ 14049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* understand and accept it fully. */ 15049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 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 /* This header file contains a number of macro definitions that are used */ 22049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* by the rest of the engine. Most of the macros here are automatically */ 23049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* determined at compile time, and you should not need to change it to */ 24049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* port FreeType, except to compile the library with a non-ANSI */ 25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* compiler. */ 26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Note however that if some specific modifications are needed, we */ 28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* advise you to place a modified copy in your build directory. */ 29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 30ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* The build directory is usually `builds/<system>', and contains */ 31ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* system-specific files that are always included first when building */ 32ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* the library. */ 33049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 34ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* This ANSI version should stay in `include/config/'. */ 35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef __FTCONFIG_H__ 39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define __FTCONFIG_H__ 40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 41049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include <ft2build.h> 42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_CONFIG_OPTIONS_H 43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_CONFIG_STANDARD_LIBRARY_H 44049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 450a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project 46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_BEGIN_HEADER 47049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 480a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project 49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* PLATFORM-SPECIFIC CONFIGURATION MACROS */ 52049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 53049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* These macros can be toggled to suit a specific system. The current */ 54049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* ones are defaults used to compile FreeType in an ANSI C environment */ 55049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* (16bit compilers are also supported). Copy this file to your own */ 56ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* `builds/<system>' directory, and edit it to port the engine. */ 57049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 58049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 59049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 60049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 61049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* There are systems (like the Texas Instruments 'C54x) where a `char' */ 62049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* has 16 bits. ANSI C says that sizeof(char) is always 1. Since an */ 63049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `int' has 16 bits also for this system, sizeof(int) gives 1 which */ 64049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* is probably unexpected. */ 65049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 66049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `CHAR_BIT' (defined in limits.h) gives the number of bits in a */ 67049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `char' type. */ 68049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 69049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef FT_CHAR_BIT 70049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_CHAR_BIT CHAR_BIT 71049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 72049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 73049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The size of an `int' type. */ 75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if FT_UINT_MAX == 0xFFFFUL 76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_SIZEOF_INT (16 / FT_CHAR_BIT) 77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#elif FT_UINT_MAX == 0xFFFFFFFFUL 78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_SIZEOF_INT (32 / FT_CHAR_BIT) 79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#elif FT_UINT_MAX > 0xFFFFFFFFUL && FT_UINT_MAX == 0xFFFFFFFFFFFFFFFFUL 80049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_SIZEOF_INT (64 / FT_CHAR_BIT) 81049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#error "Unsupported size of `int' type!" 83049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 84049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 85049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The size of a `long' type. A five-byte `long' (as used e.g. on the */ 86049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* DM642) is recognized but avoided. */ 87049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if FT_ULONG_MAX == 0xFFFFFFFFUL 88049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_SIZEOF_LONG (32 / FT_CHAR_BIT) 89049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFUL 90049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_SIZEOF_LONG (32 / FT_CHAR_BIT) 91049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFFFFFFFUL 92049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_SIZEOF_LONG (64 / FT_CHAR_BIT) 93049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 94049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#error "Unsupported size of `long' type!" 95049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 96049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 97049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 98049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_UNUSED is a macro used to indicate that a given parameter is not */ 99049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* used -- this is only used to get rid of unpleasant compiler warnings */ 100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef FT_UNUSED 101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_UNUSED( arg ) ( (arg) = (arg) ) 102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 103049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 104049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 105049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 106049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* AUTOMATIC CONFIGURATION MACROS */ 108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* These macros are computed from the ones defined above. Don't touch */ 110049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* their definition, unless you know precisely what you are doing. No */ 111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* porter should need to mess with them. */ 112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Mac support */ 119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This is the only necessary change, so it is defined here instead */ 121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* providing a new configuration file. */ 122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 12341371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier#if defined( __APPLE__ ) || ( defined( __MWERKS__ ) && defined( macintosh ) ) 124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* no Carbon frameworks for 64bit 10.4.x */ 125aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner /* AvailabilityMacros.h is available since Mac OS X 10.2, */ 126aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner /* so guess the system version by maximum errno before inclusion */ 127aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner#include <errno.h> 128aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner#ifdef ECANCELED /* defined since 10.2 */ 129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "AvailabilityMacros.h" 130aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner#endif 131049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if defined( __LP64__ ) && \ 132049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ( MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 ) 13341371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier#undef FT_MACINTOSH 134049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 1350a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project 1360a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project#elif defined( __SC__ ) || defined( __MRC__ ) 1370a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Classic MacOS compilers */ 1380a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project#include "ConditionalMacros.h" 1390a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project#if TARGET_OS_MAC 1400a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project#define FT_MACINTOSH 1 1410a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project#endif 1420a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project 143049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 144049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 145049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 146049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 147049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 148049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Section> */ 149049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* basic_types */ 150049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 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 /* */ 156049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Type> */ 157049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Int16 */ 158049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 159049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 160049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A typedef for a 16bit signed integer type. */ 161049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 162049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef signed short FT_Int16; 163049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 164049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 165049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 166049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 167049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Type> */ 168049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_UInt16 */ 169049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 170049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 171049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A typedef for a 16bit unsigned integer type. */ 172049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 173049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef unsigned short FT_UInt16; 1740a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project 175049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 176049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 177049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 178049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* this #if 0 ... #endif clause is for documentation purposes */ 179049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 0 180049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 181049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 182049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 183049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Type> */ 184049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Int32 */ 185049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 186049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 187049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A typedef for a 32bit signed integer type. The size depends on */ 188049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the configuration. */ 189049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 190049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef signed XXX FT_Int32; 191049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 192049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 193049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 194049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 195049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Type> */ 196049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_UInt32 */ 197049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 198049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A typedef for a 32bit unsigned integer type. The size depends on */ 199049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the configuration. */ 200049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 201049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef unsigned XXX FT_UInt32; 202049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 203727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 204727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /*************************************************************************/ 205727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* */ 206727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* <Type> */ 207727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* FT_Int64 */ 208727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* */ 209727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* A typedef for a 64bit signed integer type. The size depends on */ 210727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* the configuration. Only defined if there is real 64bit support; */ 211727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* otherwise, it gets emulated with a structure (if necessary). */ 212727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* */ 213727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease typedef signed XXX FT_Int64; 214727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 215727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 216727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /*************************************************************************/ 217727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* */ 218727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* <Type> */ 219727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* FT_UInt64 */ 220727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* */ 221727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* A typedef for a 64bit unsigned integer type. The size depends on */ 222727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* the configuration. Only defined if there is real 64bit support; */ 223727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* otherwise, it gets emulated with a structure (if necessary). */ 224727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* */ 225727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease typedef unsigned XXX FT_UInt64; 226727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 227049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 228049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 229049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 230049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 231049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if FT_SIZEOF_INT == (32 / FT_CHAR_BIT) 232049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 233049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef signed int FT_Int32; 234049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef unsigned int FT_UInt32; 235049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 236049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#elif FT_SIZEOF_LONG == (32 / FT_CHAR_BIT) 237049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 238049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef signed long FT_Int32; 239049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef unsigned long FT_UInt32; 240049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 241049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 242049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#error "no 32bit type found -- please check your configuration files" 243049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 244049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 2450a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project 246049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* look up an integer type that is at least 32 bits */ 247049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if FT_SIZEOF_INT >= (32 / FT_CHAR_BIT) 248049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 249049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef int FT_Fast; 250049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef unsigned int FT_UFast; 251049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 252049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#elif FT_SIZEOF_LONG >= (32 / FT_CHAR_BIT) 253049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 254049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef long FT_Fast; 255049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef unsigned long FT_UFast; 256049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 257049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 258049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 259049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 260049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* determine whether we have a 64-bit int type for platforms without */ 261049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Autoconf */ 262049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if FT_SIZEOF_LONG == (64 / FT_CHAR_BIT) 263049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 264049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_LONG64 must be defined if a 64-bit type is available */ 265049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_LONG64 266727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define FT_INT64 long 267727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define FT_UINT64 unsigned long 268049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 269ec62c527eb34ee4481a0153ceb42dfd35d7e1d26Makoto Onuki /*************************************************************************/ 270ec62c527eb34ee4481a0153ceb42dfd35d7e1d26Makoto Onuki /* */ 271ec62c527eb34ee4481a0153ceb42dfd35d7e1d26Makoto Onuki /* A 64-bit data type may create compilation problems if you compile */ 272ec62c527eb34ee4481a0153ceb42dfd35d7e1d26Makoto Onuki /* in strict ANSI mode. To avoid them, we disable other 64-bit data */ 273ec62c527eb34ee4481a0153ceb42dfd35d7e1d26Makoto Onuki /* types if __STDC__ is defined. You can however ignore this rule */ 274ec62c527eb34ee4481a0153ceb42dfd35d7e1d26Makoto Onuki /* by defining the FT_CONFIG_OPTION_FORCE_INT64 configuration macro. */ 275ec62c527eb34ee4481a0153ceb42dfd35d7e1d26Makoto Onuki /* */ 276ec62c527eb34ee4481a0153ceb42dfd35d7e1d26Makoto Onuki#elif !defined( __STDC__ ) || defined( FT_CONFIG_OPTION_FORCE_INT64 ) 277ec62c527eb34ee4481a0153ceb42dfd35d7e1d26Makoto Onuki 278ec62c527eb34ee4481a0153ceb42dfd35d7e1d26Makoto Onuki#if defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */ 279049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 280049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* this compiler provides the __int64 type */ 281049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_LONG64 282727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define FT_INT64 __int64 283727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define FT_UINT64 unsigned __int64 284049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 285049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#elif defined( __BORLANDC__ ) /* Borland C++ */ 286049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 287049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* XXXX: We should probably check the value of __BORLANDC__ in order */ 288049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* to test the compiler version. */ 289049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 290049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* this compiler provides the __int64 type */ 291049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_LONG64 292727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define FT_INT64 __int64 293727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define FT_UINT64 unsigned __int64 294049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 295049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#elif defined( __WATCOMC__ ) /* Watcom C++ */ 296049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 297049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Watcom doesn't provide 64-bit data types */ 298049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 299049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#elif defined( __MWERKS__ ) /* Metrowerks CodeWarrior */ 300049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 301049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_LONG64 302727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define FT_INT64 long long int 303727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define FT_UINT64 unsigned long long int 304049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 305049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#elif defined( __GNUC__ ) 306049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 307049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* GCC provides the `long long' type */ 308049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_LONG64 309727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define FT_INT64 long long int 310727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define FT_UINT64 unsigned long long int 311049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 312ec62c527eb34ee4481a0153ceb42dfd35d7e1d26Makoto Onuki#endif /* _MSC_VER */ 313049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 314ec62c527eb34ee4481a0153ceb42dfd35d7e1d26Makoto Onuki#endif /* FT_SIZEOF_LONG == (64 / FT_CHAR_BIT) */ 315049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 316727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#ifdef FT_LONG64 317727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease typedef FT_INT64 FT_Int64; 318727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease typedef FT_UINT64 FT_UInt64; 319727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#endif 320727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 321049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 322ec62c527eb34ee4481a0153ceb42dfd35d7e1d26Makoto Onuki /*************************************************************************/ 323ec62c527eb34ee4481a0153ceb42dfd35d7e1d26Makoto Onuki /* */ 324ec62c527eb34ee4481a0153ceb42dfd35d7e1d26Makoto Onuki /* miscellaneous */ 325ec62c527eb34ee4481a0153ceb42dfd35d7e1d26Makoto Onuki /* */ 326ec62c527eb34ee4481a0153ceb42dfd35d7e1d26Makoto Onuki /*************************************************************************/ 327ec62c527eb34ee4481a0153ceb42dfd35d7e1d26Makoto Onuki 328ec62c527eb34ee4481a0153ceb42dfd35d7e1d26Makoto Onuki 3290a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project#define FT_BEGIN_STMNT do { 3300a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project#define FT_END_STMNT } while ( 0 ) 3310a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project#define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT 3320a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project 3330a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project 334ec62c527eb34ee4481a0153ceb42dfd35d7e1d26Makoto Onuki /* typeof condition taken from gnulib's `intprops.h' header file */ 335ec62c527eb34ee4481a0153ceb42dfd35d7e1d26Makoto Onuki#if ( __GNUC__ >= 2 || \ 336ec62c527eb34ee4481a0153ceb42dfd35d7e1d26Makoto Onuki defined( __IBM__TYPEOF__ ) || \ 337ec62c527eb34ee4481a0153ceb42dfd35d7e1d26Makoto Onuki ( __SUNPRO_C >= 0x5110 && !__STDC__ ) ) 338ec62c527eb34ee4481a0153ceb42dfd35d7e1d26Makoto Onuki#define TYPEOF( type ) (__typeof__ (type)) 339ec62c527eb34ee4481a0153ceb42dfd35d7e1d26Makoto Onuki#else 340ec62c527eb34ee4481a0153ceb42dfd35d7e1d26Makoto Onuki#define TYPEOF( type ) /* empty */ 341ec62c527eb34ee4481a0153ceb42dfd35d7e1d26Makoto Onuki#endif 342ec62c527eb34ee4481a0153ceb42dfd35d7e1d26Makoto Onuki 343ec62c527eb34ee4481a0153ceb42dfd35d7e1d26Makoto Onuki 344049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef FT_MAKE_OPTION_SINGLE_OBJECT 345049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 346049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_LOCAL( x ) static x 347049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_LOCAL_DEF( x ) static x 348049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 349049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 350049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 351049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef __cplusplus 352049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_LOCAL( x ) extern "C" x 353049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_LOCAL_DEF( x ) extern "C" x 354049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 355049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_LOCAL( x ) extern x 356049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_LOCAL_DEF( x ) x 357049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 358049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 359049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* FT_MAKE_OPTION_SINGLE_OBJECT */ 360049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 361ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease#define FT_LOCAL_ARRAY( x ) extern const x 362ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease#define FT_LOCAL_ARRAY_DEF( x ) const x 363ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease 364049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 365049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef FT_BASE 366049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 367049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef __cplusplus 368049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_BASE( x ) extern "C" x 369049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 370049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_BASE( x ) extern x 371049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 372049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 373049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* !FT_BASE */ 374049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 375049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 376049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef FT_BASE_DEF 377049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 378049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef __cplusplus 3790a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project#define FT_BASE_DEF( x ) x 380049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 381049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_BASE_DEF( x ) x 382049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 383049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 384049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* !FT_BASE_DEF */ 385049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 386049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 387049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef FT_EXPORT 388049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 389049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef __cplusplus 390049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_EXPORT( x ) extern "C" x 391049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 392049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_EXPORT( x ) extern x 393049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 394049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 395049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* !FT_EXPORT */ 396049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 397049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 398049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef FT_EXPORT_DEF 399049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 400049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef __cplusplus 401049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_EXPORT_DEF( x ) extern "C" x 402049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 403049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_EXPORT_DEF( x ) extern x 404049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 405049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 406049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* !FT_EXPORT_DEF */ 407049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 408049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 409049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef FT_EXPORT_VAR 410049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 411049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef __cplusplus 412049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_EXPORT_VAR( x ) extern "C" x 413049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 414049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_EXPORT_VAR( x ) extern x 415049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 416049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 417049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* !FT_EXPORT_VAR */ 418049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 419049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The following macros are needed to compile the library with a */ 420049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* C++ compiler and with 16bit compilers. */ 421049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 422049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 423049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This is special. Within C++, you must specify `extern "C"' for */ 424049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* functions which are used via function pointers, and you also */ 425049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* must do that for structures which contain function pointers to */ 426049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* assure C linkage -- it's not possible to have (local) anonymous */ 427049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* functions which are accessed by (global) function pointers. */ 428049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 429049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 430049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_CALLBACK_DEF is used to _define_ a callback function. */ 431049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 432049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_CALLBACK_TABLE is used to _declare_ a constant variable that */ 433049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* contains pointers to callback functions. */ 434049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 435049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_CALLBACK_TABLE_DEF is used to _define_ a constant variable */ 436049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* that contains pointers to callback functions. */ 437049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 438049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 439049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Some 16bit compilers have to redefine these macros to insert */ 440049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the infamous `_cdecl' or `__fastcall' declarations. */ 441049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 442049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef FT_CALLBACK_DEF 443049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef __cplusplus 444049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_CALLBACK_DEF( x ) extern "C" x 445049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 446049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_CALLBACK_DEF( x ) static x 447049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 448049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* FT_CALLBACK_DEF */ 449049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 450049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef FT_CALLBACK_TABLE 451049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef __cplusplus 452049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_CALLBACK_TABLE extern "C" 453049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_CALLBACK_TABLE_DEF extern "C" 454049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 455049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_CALLBACK_TABLE extern 456049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_CALLBACK_TABLE_DEF /* nothing */ 457049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 458049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* FT_CALLBACK_TABLE */ 459049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 460049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 461049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_END_HEADER 462049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 463049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 464049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* __FTCONFIG_H__ */ 465049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 466049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 467049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* END */ 468