/*
*******************************************************************************
*
*   Copyright (C) 1997-1999, International Business Machines
*   Corporation and others.  All Rights Reserved.
*
*******************************************************************************
*
*  FILE NAME : platform.h
*
*   Date        Name        Description
*   05/13/98    nos         Creation (content moved here from ptypes.h).
*   03/02/99    stephen     Added AS400 support.
*   03/30/99    stephen     Added Linux support.
*   04/13/99    stephen     Reworked for autoconf.
*******************************************************************************
*/

/* Define the platform we're on. */
#ifndef @platform@
#define @platform@
#endif

/* Define whether inttypes.h is available */
#ifndef HAVE_INTTYPES_H
#define HAVE_INTTYPES_H @HAVE_INTTYPES_H@
#endif

/*
 * Define what support for C++ streams is available.
 *     If U_IOSTREAM_SOURCE is set to 199711, then <iostream> is available
 * (1997711 is the date the ISO/IEC C++ FDIS was published), and then
 * one should qualify streams using the std namespace in ICU header
 * files.
 *     If U_IOSTREAM_SOURCE is set to 198506, then <iostream.h> is
 * available instead (198506 is the date when Stroustrup published
 * "An Extensible I/O Facility for C++" at the summer USENIX conference).
 *     If U_IOSTREAM_SOURCE is 0, then C++ streams are not available and
 * support for them will be silently suppressed in ICU.
 *
 */

#define U_IOSTREAM_SOURCE @U_IOSTREAM_SOURCE@

/* Determines whether specific types are available */
#ifndef HAVE_INT8_T
#define HAVE_INT8_T @HAVE_INT8_T@
#endif

#ifndef HAVE_UINT8_T
#define HAVE_UINT8_T @HAVE_UINT8_T@
#endif

#ifndef HAVE_INT16_T
#define HAVE_INT16_T @HAVE_INT16_T@
#endif

#ifndef HAVE_UINT16_T
#define HAVE_UINT16_T @HAVE_UINT16_T@
#endif

#ifndef HAVE_INT32_T
#define HAVE_INT32_T @HAVE_INT32_T@
#endif

#ifndef HAVE_UINT32_T
#define HAVE_UINT32_T @HAVE_UINT32_T@
#endif

#ifndef HAVE_BOOL_T
#define HAVE_BOOL_T @HAVE_BOOL_T@
#endif

/* Determines the endianness of the platform */
#define U_IS_BIG_ENDIAN @U_IS_BIG_ENDIAN@

#define HAVE_DLOPEN @HAVE_DLOPEN@

/* 1 or 0 to enable or disable threads.  If undefined, default is: enable threads. */
#define ICU_USE_THREADS @ICU_USE_THREADS@

/*===========================================================================*/
/* Platform/Language determination                                           */
/*===========================================================================*/

#ifdef macintosh
#ifdef XP_MAC
#undef XP_MAC
#endif
#define XP_MAC 1
#include <string.h>
#endif

/*===========================================================================*/
/* Generic data types                                                        */
/*===========================================================================*/

/* If your platform does not have the <inttypes.h> header, you may
   need to edit the typedefs below. */
#if HAVE_INTTYPES_H
#include <inttypes.h>
#else
#include <sys/types.h>
#if STDC_HEADERS
#include <stdlib.h>
#include <stddef.h>
#endif

#if ! HAVE_INT8_T
typedef signed char int8_t;
#endif

#if ! HAVE_UINT8_T
typedef unsigned char uint8_t;
#endif

#if ! HAVE_INT16_T
typedef signed short int16_t;
#endif

#if ! HAVE_UINT16_T
typedef unsigned short uint16_t;
#endif

#if ! HAVE_INT32_T
#   if defined(_LP64)
      typedef signed int  int32_t;
#   else
      typedef signed long int32_t;
#   endif
#endif

#if ! HAVE_UINT32_T
#   if defined(_LP64)
      typedef unsigned int  uint32_t;
#   else
      typedef unsigned long uint32_t;
#   endif
#endif

#endif

#include <limits.h>

#if defined(_LP64)
#   define T_INT32_MAX (INT_MAX)
#   define T_INT32_MIN (INT_MIN)
#else
#   define T_INT32_MAX (LONG_MAX)
#   define T_INT32_MIN (LONG_MIN)
#endif

/*===========================================================================*/
/* Character data types                                                      */
/*===========================================================================*/

#ifdef OS390
#   define U_CHARSET_FAMILY 1
#endif

/*===========================================================================*/
/* Information about wchar support                                           */
/*===========================================================================*/

#define U_HAVE_WCHAR_H		@U_HAVE_WCHAR_H@
#define U_SIZEOF_WCHAR_T	@U_SIZEOF_WCHAR_T@

/*===========================================================================*/
/* Symbol import-export control                                              */
/*===========================================================================*/

#define U_EXPORT
#define U_EXPORT2
#define U_IMPORT
