Home | History | Annotate | Download | only in unicode
      1 /*
      2 ******************************************************************************
      3 *
      4 *   Copyright (C) 1997-2010, International Business Machines
      5 *   Corporation and others.  All Rights Reserved.
      6 *
      7 ******************************************************************************
      8 *
      9 *  FILE NAME : ptypes.h
     10 *
     11 *   Date        Name        Description
     12 *   05/13/98    nos         Creation (content moved here from ptypes.h).
     13 *   03/02/99    stephen     Added AS400 support.
     14 *   03/30/99    stephen     Added Linux support.
     15 *   04/13/99    stephen     Reworked for autoconf.
     16 *   09/18/08    srl         Moved basic types back to ptypes.h from platform.h
     17 ******************************************************************************
     18 */
     19 
     20 #ifndef _PTYPES_H
     21 #define _PTYPES_H
     22 
     23 #include <sys/types.h>
     24 
     25 #if defined(__APPLE__)
     26 #   include "unicode/pmac.h"
     27 #elif defined(ANDROID)
     28 #   include "unicode/pandroid.h"
     29 #elif defined(__linux__)
     30 #   include "unicode/plinux.h"
     31 #elif defined(__FreeBSD__)
     32 #   include "unicode/pfreebsd.h"
     33 #elif defined(__OpenBSD__)
     34 #   include "unicode/popenbsd.h"
     35 #else
     36 #   include "unicode/platform.h"
     37 #endif
     38 
     39 /*===========================================================================*/
     40 /* Generic data types                                                        */
     41 /*===========================================================================*/
     42 
     43 /* If your platform does not have the <inttypes.h> header, you may
     44    need to edit the typedefs below. */
     45 #if U_HAVE_INTTYPES_H
     46 
     47 /* autoconf 2.13 sometimes can't properly find the data types in <inttypes.h> */
     48 /* os/390 needs <inttypes.h>, but it doesn't have int8_t, and it sometimes */
     49 /* doesn't have uint8_t depending on the OS version. */
     50 /* So we have this work around. */
     51 #ifdef OS390
     52 /* The features header is needed to get (u)int64_t sometimes. */
     53 #include <features.h>
     54 #if ! U_HAVE_INT8_T
     55 typedef signed char int8_t;
     56 #endif
     57 #if !defined(__uint8_t)
     58 #define __uint8_t 1
     59 typedef unsigned char uint8_t;
     60 #endif
     61 #endif /* OS390 */
     62 
     63 #include <inttypes.h>
     64 
     65 #else /* U_HAVE_INTTYPES_H */
     66 
     67 #if ! U_HAVE_INT8_T
     68 typedef signed char int8_t;
     69 #endif
     70 
     71 #if ! U_HAVE_UINT8_T
     72 typedef unsigned char uint8_t;
     73 #endif
     74 
     75 #if ! U_HAVE_INT16_T
     76 typedef signed short int16_t;
     77 #endif
     78 
     79 #if ! U_HAVE_UINT16_T
     80 typedef unsigned short uint16_t;
     81 #endif
     82 
     83 #if ! U_HAVE_INT32_T
     84 typedef signed int int32_t;
     85 #endif
     86 
     87 #if ! U_HAVE_UINT32_T
     88 typedef unsigned int uint32_t;
     89 #endif
     90 
     91 #if ! U_HAVE_INT64_T
     92     typedef signed long long int64_t;
     93 /* else we may not have a 64-bit type */
     94 #endif
     95 
     96 #if ! U_HAVE_UINT64_T
     97     typedef unsigned long long uint64_t;
     98 /* else we may not have a 64-bit type */
     99 #endif
    100 
    101 #endif /* U_HAVE_INTTYPES_H */
    102 
    103 #endif /* _PTYPES_H */
    104