1878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/* 2878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org ****************************************************************************** 3878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * 4878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * Copyright (C) 1997-2010, International Business Machines 5878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * Corporation and others. All Rights Reserved. 6878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * 7878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org ****************************************************************************** 8878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * 9878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * FILE NAME : platform.h 10878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * 11878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * Date Name Description 12878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * 05/13/98 nos Creation (content moved here from ptypes.h). 13878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * 03/02/99 stephen Added AS400 support. 14878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * 03/30/99 stephen Added Linux support. 15878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * 04/13/99 stephen Reworked for autoconf. 16878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org ****************************************************************************** 17878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org */ 18878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 19878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org /** 20878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * \file 21878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * \brief Configuration constants for the Windows platform 22878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org */ 23878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 24878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** Define the platform we're on. */ 25878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#ifndef U_WINDOWS 26878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_WINDOWS 27878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 28878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 29763fff3b5360213b5f0e18d099b9dac867181b57bungeman@chromium.org#if _MSC_VER >= 1600 3035e00e4a09eb84db0900dba7fc61c8108b61b6d4scottmg@chromium.org#include <stdint.h> 3135e00e4a09eb84db0900dba7fc61c8108b61b6d4scottmg@chromium.org#endif 3235e00e4a09eb84db0900dba7fc61c8108b61b6d4scottmg@chromium.org 33878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#if defined(__BORLANDC__) 34878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_HAVE_PLACEMENT_NEW 0 35878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define __STDC_CONSTANT_MACROS 36878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 37878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 38878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** _MSC_VER is used to detect the Microsoft compiler. */ 39878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#if defined(_MSC_VER) 40878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_INT64_IS_LONG_LONG 0 41878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#else 42878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_INT64_IS_LONG_LONG 1 43878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 44878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 45878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** Define whether inttypes.h is available */ 46878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#ifndef U_HAVE_INTTYPES_H 47878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org# if defined(__BORLANDC__) || defined(__MINGW32__) 48878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org# define U_HAVE_INTTYPES_H 1 49878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org# else 50878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org# define U_HAVE_INTTYPES_H 0 51878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org# endif 52878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 53878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 54878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** 55878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * Define what support for C++ streams is available. 56878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * If U_IOSTREAM_SOURCE is set to 199711, then <iostream> is available 57878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * (1997711 is the date the ISO/IEC C++ FDIS was published), and then 58878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * one should qualify streams using the std namespace in ICU header 59878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * files. 60878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * If U_IOSTREAM_SOURCE is set to 198506, then <iostream.h> is 61878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * available instead (198506 is the date when Stroustrup published 62878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * "An Extensible I/O Facility for C++" at the summer USENIX conference). 63878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * If U_IOSTREAM_SOURCE is 0, then C++ streams are not available and 64878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * support for them will be silently suppressed in ICU. 65878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * 66878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org */ 67878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 68878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#ifndef U_IOSTREAM_SOURCE 69878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_IOSTREAM_SOURCE 199711 70878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 71878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 72878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** @{ 73878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * Determines whether specific types are available */ 74878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#ifndef U_HAVE_INT8_T 75878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_HAVE_INT8_T U_HAVE_INTTYPES_H 76878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 77878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 78878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#ifndef U_HAVE_UINT8_T 79878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_HAVE_UINT8_T U_HAVE_INTTYPES_H 80878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 81878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 82878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#ifndef U_HAVE_INT16_T 83878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_HAVE_INT16_T U_HAVE_INTTYPES_H 84878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 85878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 86878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#ifndef U_HAVE_UINT16_T 87878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_HAVE_UINT16_T U_HAVE_INTTYPES_H 88878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 89878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 90878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#ifndef U_HAVE_INT32_T 91878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_HAVE_INT32_T U_HAVE_INTTYPES_H 92878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 93878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 94878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#ifndef U_HAVE_UINT32_T 95878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_HAVE_UINT32_T U_HAVE_INTTYPES_H 96878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 97878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 98878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#ifndef U_HAVE_INT64_T 99878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_HAVE_INT64_T U_HAVE_INTTYPES_H 100878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 101878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 102878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#ifndef U_HAVE_UINT64_T 103878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_HAVE_UINT64_T U_HAVE_INTTYPES_H 104878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 105878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 106878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** @} */ 107878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 108878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** Define 64 bit limits */ 109878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#if !U_INT64_IS_LONG_LONG 110878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org# ifndef INT64_C 111878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org# define INT64_C(x) ((int64_t)x) 112878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org# endif 113878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org# ifndef UINT64_C 114878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org# define UINT64_C(x) ((uint64_t)x) 115878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org# endif 116878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** else use the umachine.h definition */ 117878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 118878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 119878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/*===========================================================================*/ 120878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** @{ 121878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * Generic data types */ 122878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/*===========================================================================*/ 123878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 124878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** If your platform does not have the <inttypes.h> header, you may 125878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org need to edit the typedefs below. */ 126878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#if U_HAVE_INTTYPES_H 127878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#include <inttypes.h> 128878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#else /* U_HAVE_INTTYPES_H */ 129878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 130878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#if ! U_HAVE_INT8_T 131878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.orgtypedef signed char int8_t; 132878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 133878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 134878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#if ! U_HAVE_UINT8_T 135878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.orgtypedef unsigned char uint8_t; 136878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 137878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 138878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#if ! U_HAVE_INT16_T 139878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.orgtypedef signed short int16_t; 140878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 141878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 142878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#if ! U_HAVE_UINT16_T 143878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.orgtypedef unsigned short uint16_t; 144878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 145878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 146878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#if ! U_HAVE_INT32_T 147878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.orgtypedef signed int int32_t; 148878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 149878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 150878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#if ! U_HAVE_UINT32_T 151878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.orgtypedef unsigned int uint32_t; 152878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 153878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 154878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#if ! U_HAVE_INT64_T 155878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#if U_INT64_IS_LONG_LONG 156878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org typedef signed long long int64_t; 157878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#else 158878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org typedef signed __int64 int64_t; 159878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 160878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 161878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 162878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#if ! U_HAVE_UINT64_T 163878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#if U_INT64_IS_LONG_LONG 164878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org typedef unsigned long long uint64_t; 165878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#else 166878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org typedef unsigned __int64 uint64_t; 167878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 168878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 169878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 170878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 171878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** 172878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * @} 173878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org */ 174878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 175878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/*===========================================================================*/ 176878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** Compiler and environment features */ 177878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/*===========================================================================*/ 178878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 179878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** Define whether namespace is supported */ 180878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#ifndef U_HAVE_NAMESPACE 181878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_HAVE_NAMESPACE 1 182878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 183878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 184878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** Determines the endianness of the platform */ 185878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_IS_BIG_ENDIAN 0 186878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 187878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** 1 or 0 to enable or disable threads. If undefined, default is: enable threads. */ 188878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#ifndef ICU_USE_THREADS 189878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define ICU_USE_THREADS 1 190878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 191878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 192878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** 0 or 1 to enable or disable auto cleanup of libraries. If undefined, default is: disabled. */ 193878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#ifndef UCLN_NO_AUTO_CLEANUP 194878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define UCLN_NO_AUTO_CLEANUP 1 195878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 196878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 197878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/* On strong memory model CPUs (e.g. x86 CPUs), we use a safe & quick double check mutex lock. */ 198878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** 199878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.orgMicrosoft can define _M_IX86, _M_AMD64 (before Visual Studio 8) or _M_X64 (starting in Visual Studio 8). 200878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.orgIntel can define _M_IX86 or _M_X64 201878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org*/ 202878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#if defined(_M_IX86) || defined(_M_AMD64) || defined(_M_X64) || (defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))) 203878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define UMTX_STRONG_MEMORY_MODEL 1 204878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 205878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 206878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** Enable or disable debugging options **/ 207878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#ifndef U_DEBUG 208878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#ifdef _DEBUG 209878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_DEBUG 1 210878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#else 211878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_DEBUG 0 212878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 213878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 214878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 215878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** Enable or disable release options **/ 216878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#ifndef U_RELEASE 217878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#ifdef NDEBUG 218878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_RELEASE 1 219878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#else 220878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_RELEASE 0 221878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 222878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 223878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 224878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** Determine whether to disable renaming or not. This overrides the 225878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org setting in umachine.h which is for all platforms. */ 226878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#ifndef U_DISABLE_RENAMING 227878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_DISABLE_RENAMING 0 228878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 229878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 230878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** Determine whether to override new and delete. */ 231878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#ifndef U_OVERRIDE_CXX_ALLOCATION 232878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_OVERRIDE_CXX_ALLOCATION 1 233878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 234878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** Determine whether to override placement new and delete for STL. */ 235878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#ifndef U_HAVE_PLACEMENT_NEW 236878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_HAVE_PLACEMENT_NEW 1 237878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 238878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** Determine whether to override new and delete for MFC. */ 239878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#if !defined(U_HAVE_DEBUG_LOCATION_NEW) && defined(_MSC_VER) 240878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_HAVE_DEBUG_LOCATION_NEW 1 241878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 242878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 243878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** Determine whether to enable tracing. */ 244878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#ifndef U_ENABLE_TRACING 245878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_ENABLE_TRACING 0 246878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 247878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 248878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** Do we allow ICU users to use the draft APIs by default? */ 249878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#ifndef U_DEFAULT_SHOW_DRAFT 250878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_DEFAULT_SHOW_DRAFT 1 251878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 252878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 253878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** @{ Define the library suffix in a C syntax. */ 254878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#ifndef U_HAVE_LIB_SUFFIX 255878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_HAVE_LIB_SUFFIX 0 256878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 257878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#ifndef U_LIB_SUFFIX_C_NAME 258878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_LIB_SUFFIX_C_NAME 259878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 260878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#ifndef U_LIB_SUFFIX_C_NAME_STRING 261878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_LIB_SUFFIX_C_NAME_STRING "" 262878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 263878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** @} */ 264878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 265878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/*===========================================================================*/ 266878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** @{ Information about wchar support */ 267878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/*===========================================================================*/ 268878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 269878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_HAVE_WCHAR_H 1 270878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_SIZEOF_WCHAR_T 2 271878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 272878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_HAVE_WCSCPY 1 273878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 274878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** @} */ 275878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 276878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** 277878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * \def U_DECLARE_UTF16 278878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * Do not use this macro. Use the UNICODE_STRING or U_STRING_DECL macros 279878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * instead. 280878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * @internal 281878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org */ 282878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#if 1 283878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_DECLARE_UTF16(string) L ## string 284878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 285878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 286878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/*===========================================================================*/ 287878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** @{ Information about POSIX support */ 288878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/*===========================================================================*/ 289878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 290878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** 291878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * @internal 292878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org */ 293878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#if 1 294878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_TZSET _tzset 295878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 296878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** 297878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * @internal 298878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org */ 299878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#if 1 300878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_TIMEZONE _timezone 301878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 302878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** 303878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * @internal 304878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org */ 305878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#if 1 306878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_TZNAME _tzname 307878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 308878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** 309878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * @internal 310878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org */ 311878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#if 1 312878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_DAYLIGHT _daylight 313878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 314878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 315878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_HAVE_MMAP 0 316878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_HAVE_POPEN 0 317878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 318878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#ifndef U_ENABLE_DYLOAD 319878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_ENABLE_DYLOAD 1 320878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 321878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 322878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 323878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** @} */ 324878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 325878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/*===========================================================================*/ 326878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** @{ Symbol import-export control */ 327878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/*===========================================================================*/ 328878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 329878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#ifdef U_STATIC_IMPLEMENTATION 330878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_EXPORT 331878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#else 332878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_EXPORT __declspec(dllexport) 333878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 334878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_EXPORT2 __cdecl 335878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_IMPORT __declspec(dllimport) 336878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** @} */ 337878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 338878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/*===========================================================================*/ 339878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** @{ Code alignment and C function inlining */ 340878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/*===========================================================================*/ 341878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 342878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#ifndef U_INLINE 343878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org# ifdef __cplusplus 344878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org# define U_INLINE inline 345878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org# else 346878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org# define U_INLINE __inline 347878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org# endif 348878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 349878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 350878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#if defined(_MSC_VER) && defined(_M_IX86) && !defined(_MANAGED) 351878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_ALIGN_CODE(val) __asm align val 352878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#else 353878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_ALIGN_CODE(val) 354878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 355878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 356878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** 357878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org * Flag for workaround of MSVC 2003 optimization bugs 358878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org */ 359878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#if defined(_MSC_VER) && (_MSC_VER < 1400) 360878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_HAVE_MSVC_2003_OR_EARLIER 361878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 362878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 363878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 364878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** @} */ 365878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 366878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/*===========================================================================*/ 367878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** @{ Programs used by ICU code */ 368878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/*===========================================================================*/ 369878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 370878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#ifndef U_MAKE 371878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_MAKE "nmake" 372878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#define U_MAKE_IS_NMAKE 1 373878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org#endif 374878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 375878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org/** @} */ 376878ab27c8e23bae140344313af953fe99cf89b3jshin@chromium.org 377