1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/
2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  ftconfig.h                                                             */
4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*    ANSI-specific configuration file (specification only).               */
6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
7e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov/*  Copyright 1996-2004, 2006-2008, 2010-2011, 2013, 2014 by               */
8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  This file is part of the FreeType project, and may only be used,       */
11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  modified, and distributed under the terms of the FreeType project      */
12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  this file you indicate that you have read the license and              */
14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  understand and accept it fully.                                        */
15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/
17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* This header file contains a number of macro definitions that are used */
22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* by the rest of the engine.  Most of the macros here are automatically */
23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* determined at compile time, and you should not need to change it to   */
24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* port FreeType, except to compile the library with a non-ANSI          */
25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* compiler.                                                             */
26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* Note however that if some specific modifications are needed, we       */
28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* advise you to place a modified copy in your build directory.          */
29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
30e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /* The build directory is usually `builds/<system>', and contains        */
31e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /* system-specific files that are always included first when building    */
32e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /* the library.                                                          */
33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
34e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /* This ANSI version should stay in `include/config/'.                   */
35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef __FTCONFIG_H__
39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define __FTCONFIG_H__
40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
41e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include <ft2build.h>
42e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include FT_CONFIG_OPTIONS_H
43e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include FT_CONFIG_STANDARD_LIBRARY_H
44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
46ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFT_BEGIN_HEADER
47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*               PLATFORM-SPECIFIC CONFIGURATION MACROS                  */
52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* These macros can be toggled to suit a specific system.  The current   */
54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* ones are defaults used to compile FreeType in an ANSI C environment   */
55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* (16bit compilers are also supported).  Copy this file to your own     */
56e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /* `builds/<system>' directory, and edit it to port the engine.          */
57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* There are systems (like the Texas Instruments 'C54x) where a `char' */
62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* has 16 bits.  ANSI C says that sizeof(char) is always 1.  Since an  */
63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* `int' has 16 bits also for this system, sizeof(int) gives 1 which   */
64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* is probably unexpected.                                             */
65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                     */
66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* `CHAR_BIT' (defined in limits.h) gives the number of bits in a      */
67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* `char' type.                                                        */
68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef FT_CHAR_BIT
70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_CHAR_BIT  CHAR_BIT
71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* The size of an `int' type.  */
75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#if                                 FT_UINT_MAX == 0xFFFFUL
76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_SIZEOF_INT  (16 / FT_CHAR_BIT)
77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#elif                               FT_UINT_MAX == 0xFFFFFFFFUL
78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_SIZEOF_INT  (32 / FT_CHAR_BIT)
79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#elif FT_UINT_MAX > 0xFFFFFFFFUL && FT_UINT_MAX == 0xFFFFFFFFFFFFFFFFUL
80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_SIZEOF_INT  (64 / FT_CHAR_BIT)
81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#else
82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#error "Unsupported size of `int' type!"
83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* The size of a `long' type.  A five-byte `long' (as used e.g. on the */
86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* DM642) is recognized but avoided.                                   */
87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#if                                  FT_ULONG_MAX == 0xFFFFFFFFUL
88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_SIZEOF_LONG  (32 / FT_CHAR_BIT)
89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFUL
90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_SIZEOF_LONG  (32 / FT_CHAR_BIT)
91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFFFFFFFUL
92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_SIZEOF_LONG  (64 / FT_CHAR_BIT)
93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#else
94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#error "Unsupported size of `long' type!"
95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* FT_UNUSED is a macro used to indicate that a given parameter is not  */
99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* used -- this is only used to get rid of unpleasant compiler warnings */
100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef FT_UNUSED
101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_UNUSED( arg )  ( (arg) = (arg) )
102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                     AUTOMATIC CONFIGURATION MACROS                    */
108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* These macros are computed from the ones defined above.  Don't touch   */
110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* their definition, unless you know precisely what you are doing.  No   */
111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* porter should need to mess with them.                                 */
112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* Mac support                                                           */
119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*   This is the only necessary change, so it is defined here instead    */
121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*   providing a new configuration file.                                 */
122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#if defined( __APPLE__ ) || ( defined( __MWERKS__ ) && defined( macintosh ) )
124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* no Carbon frameworks for 64bit 10.4.x */
125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* AvailabilityMacros.h is available since Mac OS X 10.2,        */
126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* so guess the system version by maximum errno before inclusion */
127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include <errno.h>
128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef ECANCELED /* defined since 10.2 */
129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "AvailabilityMacros.h"
130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#if defined( __LP64__ ) && \
132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    ( MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 )
133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#undef FT_MACINTOSH
134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#elif defined( __SC__ ) || defined( __MRC__ )
137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* Classic MacOS compilers */
138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "ConditionalMacros.h"
139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#if TARGET_OS_MAC
140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_MACINTOSH 1
141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Section>                                                             */
149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    basic_types                                                        */
150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Type>                                                                */
157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FT_Int16                                                           */
158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    A typedef for a 16bit signed integer type.                         */
161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef signed short  FT_Int16;
163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Type>                                                                */
168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FT_UInt16                                                          */
169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    A typedef for a 16bit unsigned integer type.                       */
172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef unsigned short  FT_UInt16;
174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* */
176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* this #if 0 ... #endif clause is for documentation purposes */
179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#if 0
180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Type>                                                                */
184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FT_Int32                                                           */
185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    A typedef for a 32bit signed integer type.  The size depends on    */
188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    the configuration.                                                 */
189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef signed XXX  FT_Int32;
191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Type>                                                                */
196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FT_UInt32                                                          */
197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    A typedef for a 32bit unsigned integer type.  The size depends on  */
199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    the configuration.                                                 */
200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef unsigned XXX  FT_UInt32;
202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Type>                                                                */
207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FT_Int64                                                           */
208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    A typedef for a 64bit signed integer type.  The size depends on    */
210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    the configuration.  Only defined if there is real 64bit support;   */
211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    otherwise, it gets emulated with a structure (if necessary).       */
212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef signed XXX  FT_Int64;
214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Type>                                                                */
219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FT_UInt64                                                          */
220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    A typedef for a 64bit unsigned integer type.  The size depends on  */
222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    the configuration.  Only defined if there is real 64bit support;   */
223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    otherwise, it gets emulated with a structure (if necessary).       */
224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef unsigned XXX  FT_UInt64;
226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* */
228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#if FT_SIZEOF_INT == (32 / FT_CHAR_BIT)
232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef signed int      FT_Int32;
234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef unsigned int    FT_UInt32;
235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#elif FT_SIZEOF_LONG == (32 / FT_CHAR_BIT)
237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef signed long     FT_Int32;
239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef unsigned long   FT_UInt32;
240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#else
242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#error "no 32bit type found -- please check your configuration files"
243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* look up an integer type that is at least 32 bits */
247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#if FT_SIZEOF_INT >= (32 / FT_CHAR_BIT)
248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef int            FT_Fast;
250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef unsigned int   FT_UFast;
251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#elif FT_SIZEOF_LONG >= (32 / FT_CHAR_BIT)
253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef long           FT_Fast;
255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef unsigned long  FT_UFast;
256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* determine whether we have a 64-bit int type for platforms without */
261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* Autoconf                                                          */
262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#if FT_SIZEOF_LONG == (64 / FT_CHAR_BIT)
263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* FT_LONG64 must be defined if a 64-bit type is available */
265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LONG64
266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_INT64   long
267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_UINT64  unsigned long
268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
269e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*************************************************************************/
270e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*                                                                       */
271e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /* A 64-bit data type may create compilation problems if you compile     */
272e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /* in strict ANSI mode.  To avoid them, we disable other 64-bit data     */
273e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /* types if __STDC__ is defined.  You can however ignore this rule       */
274e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /* by defining the FT_CONFIG_OPTION_FORCE_INT64 configuration macro.     */
275e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*                                                                       */
276e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#elif !defined( __STDC__ ) || defined( FT_CONFIG_OPTION_FORCE_INT64 )
277e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov
278e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#if defined( _MSC_VER ) && _MSC_VER >= 900  /* Visual C++ (and Intel C++) */
279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* this compiler provides the __int64 type */
281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LONG64
282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_INT64   __int64
283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_UINT64  unsigned __int64
284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#elif defined( __BORLANDC__ )  /* Borland C++ */
286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* XXXX: We should probably check the value of __BORLANDC__ in order */
288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*       to test the compiler version.                               */
289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* this compiler provides the __int64 type */
291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LONG64
292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_INT64   __int64
293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_UINT64  unsigned __int64
294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#elif defined( __WATCOMC__ )   /* Watcom C++ */
296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* Watcom doesn't provide 64-bit data types */
298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#elif defined( __MWERKS__ )    /* Metrowerks CodeWarrior */
300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LONG64
302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_INT64   long long int
303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_UINT64  unsigned long long int
304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#elif defined( __GNUC__ )
306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* GCC provides the `long long' type */
308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LONG64
309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_INT64   long long int
310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_UINT64  unsigned long long int
311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
312e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#endif /* _MSC_VER */
313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
314e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#endif /* FT_SIZEOF_LONG == (64 / FT_CHAR_BIT) */
315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef FT_LONG64
317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef FT_INT64   FT_Int64;
318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef FT_UINT64  FT_UInt64;
319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_BEGIN_STMNT  do {
323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_END_STMNT    } while ( 0 )
324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_DUMMY_STMNT  FT_BEGIN_STMNT FT_END_STMNT
325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef FT_MAKE_OPTION_SINGLE_OBJECT
328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LOCAL( x )      static  x
330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LOCAL_DEF( x )  static  x
331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#else
333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef __cplusplus
335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LOCAL( x )      extern "C"  x
336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LOCAL_DEF( x )  extern "C"  x
337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#else
338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LOCAL( x )      extern  x
339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_LOCAL_DEF( x )  x
340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* FT_MAKE_OPTION_SINGLE_OBJECT */
343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
344e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define FT_LOCAL_ARRAY( x )      extern const  x
345e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define FT_LOCAL_ARRAY_DEF( x )  const  x
346e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov
347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef FT_BASE
349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef __cplusplus
351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_BASE( x )  extern "C"  x
352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#else
353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_BASE( x )  extern  x
354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* !FT_BASE */
357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef FT_BASE_DEF
360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef __cplusplus
362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_BASE_DEF( x )  x
363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#else
364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_BASE_DEF( x )  x
365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* !FT_BASE_DEF */
368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef FT_EXPORT
371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef __cplusplus
373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_EXPORT( x )  extern "C"  x
374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#else
375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_EXPORT( x )  extern  x
376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* !FT_EXPORT */
379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
380ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef FT_EXPORT_DEF
382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef __cplusplus
384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_EXPORT_DEF( x )  extern "C"  x
385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#else
386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_EXPORT_DEF( x )  extern  x
387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* !FT_EXPORT_DEF */
390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
392ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef FT_EXPORT_VAR
393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef __cplusplus
395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_EXPORT_VAR( x )  extern "C"  x
396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#else
397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_EXPORT_VAR( x )  extern  x
398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* !FT_EXPORT_VAR */
401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* The following macros are needed to compile the library with a   */
403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* C++ compiler and with 16bit compilers.                          */
404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                 */
405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
406ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* This is special.  Within C++, you must specify `extern "C"' for */
407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* functions which are used via function pointers, and you also    */
408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* must do that for structures which contain function pointers to  */
409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* assure C linkage -- it's not possible to have (local) anonymous */
410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* functions which are accessed by (global) function pointers.     */
411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                 */
412ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                 */
413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* FT_CALLBACK_DEF is used to _define_ a callback function.        */
414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                 */
415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* FT_CALLBACK_TABLE is used to _declare_ a constant variable that */
416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* contains pointers to callback functions.                        */
417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                 */
418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* FT_CALLBACK_TABLE_DEF is used to _define_ a constant variable   */
419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* that contains pointers to callback functions.                   */
420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                 */
421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                 */
422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* Some 16bit compilers have to redefine these macros to insert    */
423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* the infamous `_cdecl' or `__fastcall' declarations.             */
424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                 */
425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef FT_CALLBACK_DEF
426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef __cplusplus
427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_CALLBACK_DEF( x )  extern "C"  x
428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#else
429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_CALLBACK_DEF( x )  static  x
430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* FT_CALLBACK_DEF */
432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef FT_CALLBACK_TABLE
434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef __cplusplus
435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_CALLBACK_TABLE      extern "C"
436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_CALLBACK_TABLE_DEF  extern "C"
437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#else
438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_CALLBACK_TABLE      extern
439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_CALLBACK_TABLE_DEF  /* nothing */
440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* FT_CALLBACK_TABLE */
442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
443ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
444ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFT_END_HEADER
445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
447ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* __FTCONFIG_H__ */
448ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
450ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* END */
451