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#include "unicode/platform.h"
26
27/*===========================================================================*/
28/* Generic data types                                                        */
29/*===========================================================================*/
30
31/* If your platform does not have the <inttypes.h> header, you may
32   need to edit the typedefs below. */
33#if U_HAVE_INTTYPES_H
34
35/* autoconf 2.13 sometimes can't properly find the data types in <inttypes.h> */
36/* os/390 needs <inttypes.h>, but it doesn't have int8_t, and it sometimes */
37/* doesn't have uint8_t depending on the OS version. */
38/* So we have this work around. */
39#ifdef OS390
40/* The features header is needed to get (u)int64_t sometimes. */
41#include <features.h>
42#if ! U_HAVE_INT8_T
43typedef signed char int8_t;
44#endif
45#if !defined(__uint8_t)
46#define __uint8_t 1
47typedef unsigned char uint8_t;
48#endif
49#endif /* OS390 */
50
51#include <inttypes.h>
52
53#else /* U_HAVE_INTTYPES_H */
54
55#if ! U_HAVE_INT8_T
56typedef signed char int8_t;
57#endif
58
59#if ! U_HAVE_UINT8_T
60typedef unsigned char uint8_t;
61#endif
62
63#if ! U_HAVE_INT16_T
64typedef signed short int16_t;
65#endif
66
67#if ! U_HAVE_UINT16_T
68typedef unsigned short uint16_t;
69#endif
70
71#if ! U_HAVE_INT32_T
72typedef signed int int32_t;
73#endif
74
75#if ! U_HAVE_UINT32_T
76typedef unsigned int uint32_t;
77#endif
78
79#if ! U_HAVE_INT64_T
80    typedef signed long long int64_t;
81/* else we may not have a 64-bit type */
82#endif
83
84#if ! U_HAVE_UINT64_T
85    typedef unsigned long long uint64_t;
86/* else we may not have a 64-bit type */
87#endif
88
89#endif /* U_HAVE_INTTYPES_H */
90
91#endif /* _PTYPES_H */
92
93