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