Home | History | Annotate | Download | only in bridge
      1 /* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      2 /* ***** BEGIN LICENSE BLOCK *****
      3  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
      4  *
      5  * The contents of this file are subject to the Mozilla Public License Version
      6  * 1.1 (the "License"); you may not use this file except in compliance with
      7  * the License. You may obtain a copy of the License at
      8  * http://www.mozilla.org/MPL/
      9  *
     10  * Software distributed under the License is distributed on an "AS IS" basis,
     11  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
     12  * for the specific language governing rights and limitations under the
     13  * License.
     14  *
     15  * The Original Code is mozilla.org code.
     16  *
     17  * The Initial Developer of the Original Code is
     18  * mozilla.org.
     19  * Portions created by the Initial Developer are Copyright (C) 2004
     20  * the Initial Developer. All Rights Reserved.
     21  *
     22  * Contributor(s):
     23  *   Johnny Stenback <jst (at) mozilla.org> (Original author)
     24  *
     25  * Alternatively, the contents of this file may be used under the terms of
     26  * either the GNU General Public License Version 2 or later (the "GPL"), or
     27  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
     28  * in which case the provisions of the GPL or the LGPL are applicable instead
     29  * of those above. If you wish to allow use of your version of this file only
     30  * under the terms of either the GPL or the LGPL, and not to allow others to
     31  * use your version of this file under the terms of the MPL, indicate your
     32  * decision by deleting the provisions above and replace them with the notice
     33  * and other provisions required by the GPL or the LGPL. If you do not delete
     34  * the provisions above, a recipient may use your version of this file under
     35  * the terms of any one of the MPL, the GPL or the LGPL.
     36  *
     37  * ***** END LICENSE BLOCK ***** */
     38 
     39 #ifndef nptypes_h_
     40 #define nptypes_h_
     41 
     42 /*
     43  * Header file for ensuring that C99 types ([u]int32_t, [u]int64_t and bool) and
     44  * true/false macros are available.
     45  */
     46 
     47 #if defined(WIN32) || defined(OS2)
     48   /*
     49    * Win32 and OS/2 don't know C99, so define [u]int_16/32/64 here. The bool
     50    * is predefined tho, both in C and C++.
     51    */
     52   typedef short int16_t;
     53   typedef unsigned short uint16_t;
     54   typedef int int32_t;
     55   typedef unsigned int uint32_t;
     56   typedef long long int64_t;
     57   typedef unsigned long long uint64_t;
     58 #elif defined(_AIX) || defined(__sun) || defined(__osf__) || defined(IRIX) || defined(HPUX)
     59   /*
     60    * AIX and SunOS ship a inttypes.h header that defines [u]int32_t,
     61    * but not bool for C.
     62    */
     63   #include <inttypes.h>
     64 
     65   #ifndef __cplusplus
     66     typedef int bool;
     67     #define true   1
     68     #define false  0
     69   #endif
     70 #elif defined(bsdi) || defined(FREEBSD) || defined(OPENBSD)
     71   /*
     72    * BSD/OS, FreeBSD, and OpenBSD ship sys/types.h that define int32_t and
     73    * u_int32_t.
     74    */
     75   #include <sys/types.h>
     76 
     77   /*
     78    * BSD/OS ships no header that defines uint32_t, nor bool (for C)
     79    */
     80   #if defined(bsdi)
     81   typedef u_int32_t uint32_t;
     82   typedef u_int64_t uint64_t;
     83 
     84   #if !defined(__cplusplus)
     85     typedef int bool;
     86     #define true   1
     87     #define false  0
     88   #endif
     89   #else
     90   /*
     91    * FreeBSD and OpenBSD define uint32_t and bool.
     92    */
     93     #include <inttypes.h>
     94     #include <stdbool.h>
     95   #endif
     96 #elif defined(BEOS)
     97   #include <inttypes.h>
     98 #else
     99   /*
    100    * For those that ship a standard C99 stdint.h header file, include
    101    * it. Can't do the same for stdbool.h tho, since some systems ship
    102    * with a stdbool.h file that doesn't compile!
    103    */
    104   #include <stdint.h>
    105 
    106   #ifndef __cplusplus
    107     #if !defined(__GNUC__) || (__GNUC__ > 2 || __GNUC_MINOR__ > 95)
    108       #include <stdbool.h>
    109     #else
    110       /*
    111        * GCC 2.91 can't deal with a typedef for bool, but a #define
    112        * works.
    113        */
    114       #define bool int
    115       #define true   1
    116       #define false  0
    117     #endif
    118   #endif
    119 #endif
    120 
    121 #endif /* nptypes_h_ */
    122