89#define U_PF_WINDOWS 1000
91#define U_PF_MINGW 1800
97#define U_PF_CYGWIN 1900
100#define U_PF_HPUX 2100
102#define U_PF_SOLARIS 2600
108#define U_PF_IRIX 3200
117#define U_PF_DARWIN 3500
119#define U_PF_IPHONE 3550
123#define U_PF_LINUX 4000
130#define U_PF_BROWSER_NATIVE_CLIENT 4020
132#define U_PF_ANDROID 4050
135#define U_PF_OS390 9000
137#define U_PF_OS400 9400
141#elif defined(__MINGW32__)
142# define U_PLATFORM U_PF_MINGW
143#elif defined(__CYGWIN__)
144# define U_PLATFORM U_PF_CYGWIN
145#elif defined(WIN32) || defined(_WIN32) || defined(WIN64) || defined(_WIN64)
146# define U_PLATFORM U_PF_WINDOWS
147#elif defined(__ANDROID__)
148# define U_PLATFORM U_PF_ANDROID
150# include <android/api-level.h>
151#elif defined(__native_client__)
152# define U_PLATFORM U_PF_BROWSER_NATIVE_CLIENT
153#elif defined(linux) || defined(__linux__) || defined(__linux)
154# define U_PLATFORM U_PF_LINUX
155#elif defined(__APPLE__) && defined(__MACH__)
156# include <TargetConditionals.h>
157# if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE
158# define U_PLATFORM U_PF_IPHONE
160# define U_PLATFORM U_PF_DARWIN
162#elif defined(BSD) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__MirBSD__)
163# if defined(__FreeBSD__)
164# include <sys/endian.h>
166# define U_PLATFORM U_PF_BSD
167#elif defined(sun) || defined(__sun)
169# define U_PLATFORM U_PF_SOLARIS
170# if defined(__GNUC__)
175# include <sys/isa_defs.h>
177#elif defined(_AIX) || defined(__TOS_AIX__)
178# define U_PLATFORM U_PF_AIX
179#elif defined(_hpux) || defined(hpux) || defined(__hpux)
180# define U_PLATFORM U_PF_HPUX
181#elif defined(sgi) || defined(__sgi)
182# define U_PLATFORM U_PF_IRIX
183#elif defined(__QNX__) || defined(__QNXNTO__)
184# define U_PLATFORM U_PF_QNX
185#elif defined(__TOS_MVS__)
186# define U_PLATFORM U_PF_OS390
187#elif defined(__OS400__) || defined(__TOS_OS400__)
188# define U_PLATFORM U_PF_OS400
190# define U_PLATFORM U_PF_UNKNOWN
211#ifdef U_PLATFORM_USES_ONLY_WIN32_API
213#elif (U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_MINGW) || defined(CYGWINMSVC)
214# define U_PLATFORM_USES_ONLY_WIN32_API 1
217# define U_PLATFORM_USES_ONLY_WIN32_API 0
226#ifdef U_PLATFORM_HAS_WIN32_API
228#elif U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
229# define U_PLATFORM_HAS_WIN32_API 1
231# define U_PLATFORM_HAS_WIN32_API 0
240#ifdef U_PLATFORM_IMPLEMENTS_POSIX
242#elif U_PLATFORM_USES_ONLY_WIN32_API
243# define U_PLATFORM_IMPLEMENTS_POSIX 0
245# define U_PLATFORM_IMPLEMENTS_POSIX 1
253#ifdef U_PLATFORM_IS_LINUX_BASED
255#elif U_PF_LINUX <= U_PLATFORM && U_PLATFORM <= 4499
256# define U_PLATFORM_IS_LINUX_BASED 1
258# define U_PLATFORM_IS_LINUX_BASED 0
266#ifdef U_PLATFORM_IS_DARWIN_BASED
268#elif U_PF_DARWIN <= U_PLATFORM && U_PLATFORM <= U_PF_IPHONE
269# define U_PLATFORM_IS_DARWIN_BASED 1
271# define U_PLATFORM_IS_DARWIN_BASED 0
281#ifdef U_HAVE_STDINT_H
283#elif U_PLATFORM_USES_ONLY_WIN32_API
284# if defined(__BORLANDC__) || U_PLATFORM == U_PF_MINGW || (defined(_MSC_VER) && _MSC_VER>=1600)
286# define U_HAVE_STDINT_H 1
288# define U_HAVE_STDINT_H 0
290#elif U_PLATFORM == U_PF_SOLARIS
292# define U_HAVE_STDINT_H 0
293#elif U_PLATFORM == U_PF_AIX && !defined(_AIX51) && defined(_POWER)
295# define U_HAVE_STDINT_H 0
297# define U_HAVE_STDINT_H 1
306#ifdef U_HAVE_INTTYPES_H
308#elif U_PLATFORM == U_PF_SOLARIS
310# define U_HAVE_INTTYPES_H 1
311#elif U_PLATFORM == U_PF_AIX && !defined(_AIX51) && defined(_POWER)
313# define U_HAVE_INTTYPES_H 1
316# define U_HAVE_INTTYPES_H U_HAVE_STDINT_H
340#ifndef U_IOSTREAM_SOURCE
341#define U_IOSTREAM_SOURCE 199711
349#ifdef U_HAVE_STD_STRING
352# define U_HAVE_STD_STRING 1
370# define U_GCC_MAJOR_MINOR (__GNUC__ * 100 + __GNUC_MINOR__)
372# define U_GCC_MAJOR_MINOR 0
380#ifdef U_IS_BIG_ENDIAN
382#elif defined(BYTE_ORDER) && defined(BIG_ENDIAN)
383# define U_IS_BIG_ENDIAN (BYTE_ORDER == BIG_ENDIAN)
384#elif defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__)
386# define U_IS_BIG_ENDIAN (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
387#elif defined(__BIG_ENDIAN__) || defined(_BIG_ENDIAN)
388# define U_IS_BIG_ENDIAN 1
389#elif defined(__LITTLE_ENDIAN__) || defined(_LITTLE_ENDIAN)
390# define U_IS_BIG_ENDIAN 0
391#elif U_PLATFORM == U_PF_OS390 || U_PLATFORM == U_PF_OS400 || defined(__s390__) || defined(__s390x__)
393# define U_IS_BIG_ENDIAN 1
394#elif defined(_PA_RISC1_0) || defined(_PA_RISC1_1) || defined(_PA_RISC2_0)
396# define U_IS_BIG_ENDIAN 1
397#elif defined(sparc) || defined(__sparc) || defined(__sparc__)
399# define U_IS_BIG_ENDIAN 1
401# define U_IS_BIG_ENDIAN 0
409#ifdef U_HAVE_PLACEMENT_NEW
411#elif defined(__BORLANDC__)
412# define U_HAVE_PLACEMENT_NEW 0
414# define U_HAVE_PLACEMENT_NEW 1
423#ifdef U_HAVE_DEBUG_LOCATION_NEW
425#elif defined(_MSC_VER)
426# define U_HAVE_DEBUG_LOCATION_NEW 1
428# define U_HAVE_DEBUG_LOCATION_NEW 0
432#ifndef __has_attribute
433# define __has_attribute(x) 0
435#ifndef __has_cpp_attribute
436# define __has_cpp_attribute(x) 0
439# define __has_builtin(x) 0
442# define __has_feature(x) 0
444#ifndef __has_extension
445# define __has_extension(x) 0
448# define __has_warning(x) 0
456#if defined(__GNUC__) && __GNUC__>=3
457# define U_MALLOC_ATTR __attribute__ ((__malloc__))
459# define U_MALLOC_ATTR
467#if (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))) || __has_attribute(alloc_size)
468# define U_ALLOC_SIZE_ATTR(X) __attribute__ ((alloc_size(X)))
469# define U_ALLOC_SIZE_ATTR2(X,Y) __attribute__ ((alloc_size(X,Y)))
471# define U_ALLOC_SIZE_ATTR(X)
472# define U_ALLOC_SIZE_ATTR2(X,Y)
481#ifdef U_CPLUSPLUS_VERSION
482# if U_CPLUSPLUS_VERSION != 0 && !defined(__cplusplus)
483# undef U_CPLUSPLUS_VERSION
484# define U_CPLUSPLUS_VERSION 0
487#elif !defined(__cplusplus)
488# define U_CPLUSPLUS_VERSION 0
489#elif __cplusplus >= 201402L
490# define U_CPLUSPLUS_VERSION 14
491#elif __cplusplus >= 201103L
492# define U_CPLUSPLUS_VERSION 11
495# define U_CPLUSPLUS_VERSION 1
504#ifdef U_HAVE_RVALUE_REFERENCES
506#elif U_CPLUSPLUS_VERSION >= 11 || __has_feature(cxx_rvalue_references) \
507 || defined(__GXX_EXPERIMENTAL_CXX0X__) \
508 || (defined(_MSC_VER) && _MSC_VER >= 1600)
509# define U_HAVE_RVALUE_REFERENCES 1
511# define U_HAVE_RVALUE_REFERENCES 0
523#elif defined(_HAS_EXCEPTIONS) && !_HAS_EXCEPTIONS
525#elif U_CPLUSPLUS_VERSION >= 11 || __has_feature(cxx_noexcept) || __has_extension(cxx_noexcept) \
526 || (defined(_MSC_VER) && _MSC_VER >= 1900)
527# define U_NOEXCEPT noexcept
539# if __has_cpp_attribute(clang::fallthrough) || \
540 (__has_feature(cxx_attributes) && __has_warning("-Wimplicit-fallthrough"))
541# define U_FALLTHROUGH [[clang::fallthrough]]
543# define U_FALLTHROUGH
546# define U_FALLTHROUGH
560#define U_ASCII_FAMILY 0
566#define U_EBCDIC_FAMILY 1
610#ifdef U_CHARSET_FAMILY
612#elif U_PLATFORM == U_PF_OS390 && (!defined(__CHARSET_LIB) || !__CHARSET_LIB)
613# define U_CHARSET_FAMILY U_EBCDIC_FAMILY
614#elif U_PLATFORM == U_PF_OS400 && !defined(__UTF32__)
615# define U_CHARSET_FAMILY U_EBCDIC_FAMILY
617# define U_CHARSET_FAMILY U_ASCII_FAMILY
640#ifdef U_CHARSET_IS_UTF8
642#elif U_PLATFORM == U_PF_ANDROID || U_PLATFORM_IS_DARWIN_BASED
643# define U_CHARSET_IS_UTF8 1
645# define U_CHARSET_IS_UTF8 0
662#elif U_PLATFORM == U_PF_ANDROID && __ANDROID_API__ < 9
668# define U_HAVE_WCHAR_H 0
670# define U_HAVE_WCHAR_H 1
679#ifdef U_SIZEOF_WCHAR_T
681#elif (U_PLATFORM == U_PF_ANDROID && __ANDROID_API__ < 9)
686# define U_SIZEOF_WCHAR_T 1
687#elif U_PLATFORM_HAS_WIN32_API || U_PLATFORM == U_PF_CYGWIN
688# define U_SIZEOF_WCHAR_T 2
689#elif U_PLATFORM == U_PF_AIX
699# define U_SIZEOF_WCHAR_T 4
701# define U_SIZEOF_WCHAR_T 2
703#elif U_PLATFORM == U_PF_OS390
710# define U_SIZEOF_WCHAR_T 4
712# define U_SIZEOF_WCHAR_T 2
714#elif U_PLATFORM == U_PF_OS400
715# if defined(__UTF32__)
721# define U_SIZEOF_WCHAR_T 4
722# elif defined(__UCS2__)
728# define U_SIZEOF_WCHAR_T 2
735# define U_SIZEOF_WCHAR_T 2
738# define U_SIZEOF_WCHAR_T 4
742#define U_HAVE_WCSCPY U_HAVE_WCHAR_H
755#ifdef U_HAVE_CHAR16_T
766# if U_CPLUSPLUS_VERSION >= 11 || (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L)
767# define U_HAVE_CHAR16_T 1
769# define U_HAVE_CHAR16_T 0
780#ifdef U_DECLARE_UTF16
782#elif U_HAVE_CHAR16_T \
783 || (defined(__xlC__) && defined(__IBM_UTF_LITERAL) && U_SIZEOF_WCHAR_T != 2) \
784 || (defined(__HP_aCC) && __HP_aCC >= 035000) \
785 || (defined(__HP_cc) && __HP_cc >= 111106)
786# define U_DECLARE_UTF16(string) u ## string
787#elif U_SIZEOF_WCHAR_T == 2 \
788 && (U_CHARSET_FAMILY == 0 || (U_PF_OS390 <= U_PLATFORM && U_PLATFORM <= U_PF_OS400 && defined(__UCS2__)))
789# define U_DECLARE_UTF16(string) L ## string
802#elif defined(U_STATIC_IMPLEMENTATION)
804#elif defined(__GNUC__)
805# define U_EXPORT __attribute__((visibility("default")))
806#elif (defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x550) \
807 || (defined(__SUNPRO_C) && __SUNPRO_C >= 0x550)
808# define U_EXPORT __global
811#elif defined(_MSC_VER)
812# define U_EXPORT __declspec(dllexport)
820#elif defined(_MSC_VER)
821# define U_EXPORT2 __cdecl
828#elif defined(_MSC_VER)
830# define U_IMPORT __declspec(dllimport)
846#if U_PLATFORM == U_PF_OS390 && defined(__cplusplus)
847# define U_CALLCONV __cdecl
849# define U_CALLCONV U_EXPORT2
User-configurable settings.
C API: definitions of ICU version numbers.