| /* |
| ******************************************************************************* |
| * |
| * Copyright (C) 1999-2000, International Business Machines |
| * Corporation and others. All Rights Reserved. |
| * |
| ******************************************************************************* |
| * file name: umachine.h |
| * encoding: US-ASCII |
| * tab size: 8 (not used) |
| * indentation:4 |
| * |
| * created on: 1999sep13 |
| * created by: Markus W. Scherer |
| * |
| * This file defines basic types and constants for utf.h to be |
| * platform-independent. umachine.h and utf.h are included into |
| * utypes.h to provide all the general definitions for ICU. |
| * All of these definitions used to be in utypes.h before |
| * the UTF-handling macros made this unmaintainable. |
| */ |
| |
| #ifndef __UMACHINE_H__ |
| #define __UMACHINE_H__ |
| |
| /*===========================================================================*/ |
| /* Include platform-dependent definitions */ |
| /* which are contained in the platform-specific file platform.h */ |
| /*===========================================================================*/ |
| |
| #if defined(WIN32) || defined(_WIN32) || defined(WIN64) || defined(_WIN64) |
| # include "unicode/pwin32.h" |
| #elif defined(__OS2__) |
| # include "unicode/pos2.h" |
| #elif defined(__OS400__) |
| # include "unicode/pos400.h" |
| #else |
| # include "unicode/platform.h" |
| #endif |
| |
| /*===========================================================================*/ |
| /* XP_CPLUSPLUS is a cross-platform symbol which should be defined when */ |
| /* using C++. It should not be defined when compiling under C. */ |
| /*===========================================================================*/ |
| |
| #ifdef __cplusplus |
| # ifndef XP_CPLUSPLUS |
| # define XP_CPLUSPLUS |
| # endif |
| #else |
| # undef XP_CPLUSPLUS |
| #endif |
| |
| /*===========================================================================*/ |
| /* For C wrappers, we use the symbol U_CAPI. */ |
| /* This works properly if the includer is C or C++. */ |
| /* Functions are declared U_CAPI return-type U_EXPORT2 function-name() ... */ |
| /*===========================================================================*/ |
| |
| #ifdef XP_CPLUSPLUS |
| # define U_CFUNC extern "C" |
| # define U_CDECL_BEGIN extern "C" { |
| # define U_CDECL_END } |
| #else |
| # define U_CFUNC |
| # define U_CDECL_BEGIN |
| # define U_CDECL_END |
| #endif |
| #define U_CAPI U_CFUNC U_EXPORT |
| |
| /*===========================================================================*/ |
| /* limits for int32_t etc., like in POSIX inttypes.h */ |
| /*===========================================================================*/ |
| |
| #ifndef INT8_MIN |
| # define INT8_MIN (-128) |
| #endif |
| #ifndef INT16_MIN |
| # define INT16_MIN (-32767-1) |
| #endif |
| #ifndef INT32_MIN |
| # define INT32_MIN (-2147483647-1) |
| #endif |
| |
| #ifndef INT8_MAX |
| # define INT8_MAX (127) |
| #endif |
| #ifndef INT16_MAX |
| # define INT16_MAX (32767) |
| #endif |
| #ifndef INT32_MAX |
| # define INT32_MAX (2147483647) |
| #endif |
| |
| #ifndef UINT8_MAX |
| # define UINT8_MAX (255U) |
| #endif |
| #ifndef UINT16_MAX |
| # define UINT16_MAX (65535U) |
| #endif |
| #ifndef UINT32_MAX |
| # define UINT32_MAX (4294967295U)... |
| #endif |
| |
| #if defined(__64BIT__) || defined(_LONG_LONG) || defined(_LP64) || defined(WIN64) || defined(_WIN64) |
| # ifndef INT64_MIN |
| # define INT64_MIN (-9223372036854775807-1) |
| # endif |
| # ifndef INT64_MAX |
| # define INT64_MAX (9223372036854775807) |
| # endif |
| # ifndef UINT64_MAX |
| # define UINT64_MAX (18446744073709551615) |
| # endif |
| # ifndef INTMAX_MIN |
| # define INTMAX_MIN INT64_MIN |
| # endif |
| # ifndef INTMAX_MAX |
| # define INTMAX_MAX INT64_MAX |
| # endif |
| # ifndef UINTMAX_MAX |
| # define UINTMAX_MAX UINT64_MAX |
| # endif |
| #else |
| # ifndef INTMAX_MIN |
| # define INTMAX_MIN INT32_MIN |
| # endif |
| # ifndef INTMAX_MAX |
| # define INTMAX_MAX INT32_MAX |
| # endif |
| # ifndef UINTMAX_MAX |
| # define UINTMAX_MAX UINT32_MAX |
| # endif |
| #endif |
| |
| /*===========================================================================*/ |
| /* Boolean data type */ |
| /*===========================================================================*/ |
| |
| #if !HAVE_BOOL_T |
| typedef int8_t bool_t; |
| #endif |
| |
| typedef int8_t UBool; |
| |
| #ifndef TRUE |
| # define TRUE 1 |
| #endif |
| #ifndef FALSE |
| # define FALSE 0 |
| #endif |
| |
| #endif |