121939df44de1705786c545cd1bf519d47250322dBen Murdoch/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
221939df44de1705786c545cd1bf519d47250322dBen Murdoch/* ***** BEGIN LICENSE BLOCK *****
321939df44de1705786c545cd1bf519d47250322dBen Murdoch * Version: MPL 1.1/GPL 2.0/LGPL 2.1
421939df44de1705786c545cd1bf519d47250322dBen Murdoch *
521939df44de1705786c545cd1bf519d47250322dBen Murdoch * The contents of this file are subject to the Mozilla Public License Version
621939df44de1705786c545cd1bf519d47250322dBen Murdoch * 1.1 (the "License"); you may not use this file except in compliance with
721939df44de1705786c545cd1bf519d47250322dBen Murdoch * the License. You may obtain a copy of the License at
821939df44de1705786c545cd1bf519d47250322dBen Murdoch * http://www.mozilla.org/MPL/
921939df44de1705786c545cd1bf519d47250322dBen Murdoch *
1021939df44de1705786c545cd1bf519d47250322dBen Murdoch * Software distributed under the License is distributed on an "AS IS" basis,
1121939df44de1705786c545cd1bf519d47250322dBen Murdoch * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
1221939df44de1705786c545cd1bf519d47250322dBen Murdoch * for the specific language governing rights and limitations under the
1321939df44de1705786c545cd1bf519d47250322dBen Murdoch * License.
1421939df44de1705786c545cd1bf519d47250322dBen Murdoch *
1521939df44de1705786c545cd1bf519d47250322dBen Murdoch * The Original Code is mozilla.org code.
1621939df44de1705786c545cd1bf519d47250322dBen Murdoch *
1721939df44de1705786c545cd1bf519d47250322dBen Murdoch * The Initial Developer of the Original Code is
1821939df44de1705786c545cd1bf519d47250322dBen Murdoch * mozilla.org.
1921939df44de1705786c545cd1bf519d47250322dBen Murdoch * Portions created by the Initial Developer are Copyright (C) 2004
2021939df44de1705786c545cd1bf519d47250322dBen Murdoch * the Initial Developer. All Rights Reserved.
2121939df44de1705786c545cd1bf519d47250322dBen Murdoch *
2221939df44de1705786c545cd1bf519d47250322dBen Murdoch * Contributor(s):
2321939df44de1705786c545cd1bf519d47250322dBen Murdoch *   Johnny Stenback <jst@mozilla.org> (Original author)
2421939df44de1705786c545cd1bf519d47250322dBen Murdoch *
2521939df44de1705786c545cd1bf519d47250322dBen Murdoch * Alternatively, the contents of this file may be used under the terms of
2621939df44de1705786c545cd1bf519d47250322dBen Murdoch * either the GNU General Public License Version 2 or later (the "GPL"), or
2721939df44de1705786c545cd1bf519d47250322dBen Murdoch * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
2821939df44de1705786c545cd1bf519d47250322dBen Murdoch * in which case the provisions of the GPL or the LGPL are applicable instead
2921939df44de1705786c545cd1bf519d47250322dBen Murdoch * of those above. If you wish to allow use of your version of this file only
3021939df44de1705786c545cd1bf519d47250322dBen Murdoch * under the terms of either the GPL or the LGPL, and not to allow others to
3121939df44de1705786c545cd1bf519d47250322dBen Murdoch * use your version of this file under the terms of the MPL, indicate your
3221939df44de1705786c545cd1bf519d47250322dBen Murdoch * decision by deleting the provisions above and replace them with the notice
3321939df44de1705786c545cd1bf519d47250322dBen Murdoch * and other provisions required by the GPL or the LGPL. If you do not delete
3421939df44de1705786c545cd1bf519d47250322dBen Murdoch * the provisions above, a recipient may use your version of this file under
3521939df44de1705786c545cd1bf519d47250322dBen Murdoch * the terms of any one of the MPL, the GPL or the LGPL.
3621939df44de1705786c545cd1bf519d47250322dBen Murdoch *
3721939df44de1705786c545cd1bf519d47250322dBen Murdoch * ***** END LICENSE BLOCK ***** */
3821939df44de1705786c545cd1bf519d47250322dBen Murdoch
3981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#ifndef nptypes_h_
4081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#define nptypes_h_
4121939df44de1705786c545cd1bf519d47250322dBen Murdoch
4221939df44de1705786c545cd1bf519d47250322dBen Murdoch/*
4381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch * Header file for ensuring that C99 types ([u]int32_t, [u]int64_t and bool) and
4481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch * true/false macros are available.
4521939df44de1705786c545cd1bf519d47250322dBen Murdoch */
4621939df44de1705786c545cd1bf519d47250322dBen Murdoch
4721939df44de1705786c545cd1bf519d47250322dBen Murdoch#if defined(WIN32) || defined(OS2)
4821939df44de1705786c545cd1bf519d47250322dBen Murdoch  /*
4981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch   * Win32 and OS/2 don't know C99, so define [u]int_16/32/64 here. The bool
5021939df44de1705786c545cd1bf519d47250322dBen Murdoch   * is predefined tho, both in C and C++.
5121939df44de1705786c545cd1bf519d47250322dBen Murdoch   */
5221939df44de1705786c545cd1bf519d47250322dBen Murdoch  typedef short int16_t;
5321939df44de1705786c545cd1bf519d47250322dBen Murdoch  typedef unsigned short uint16_t;
5421939df44de1705786c545cd1bf519d47250322dBen Murdoch  typedef int int32_t;
5521939df44de1705786c545cd1bf519d47250322dBen Murdoch  typedef unsigned int uint32_t;
5681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch  typedef long long int64_t;
5781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch  typedef unsigned long long uint64_t;
5821939df44de1705786c545cd1bf519d47250322dBen Murdoch#elif defined(_AIX) || defined(__sun) || defined(__osf__) || defined(IRIX) || defined(HPUX)
5921939df44de1705786c545cd1bf519d47250322dBen Murdoch  /*
6021939df44de1705786c545cd1bf519d47250322dBen Murdoch   * AIX and SunOS ship a inttypes.h header that defines [u]int32_t,
6121939df44de1705786c545cd1bf519d47250322dBen Murdoch   * but not bool for C.
6221939df44de1705786c545cd1bf519d47250322dBen Murdoch   */
6321939df44de1705786c545cd1bf519d47250322dBen Murdoch  #include <inttypes.h>
6421939df44de1705786c545cd1bf519d47250322dBen Murdoch
6521939df44de1705786c545cd1bf519d47250322dBen Murdoch  #ifndef __cplusplus
6621939df44de1705786c545cd1bf519d47250322dBen Murdoch    typedef int bool;
6781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    #define true   1
6881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    #define false  0
6921939df44de1705786c545cd1bf519d47250322dBen Murdoch  #endif
7021939df44de1705786c545cd1bf519d47250322dBen Murdoch#elif defined(bsdi) || defined(FREEBSD) || defined(OPENBSD)
7121939df44de1705786c545cd1bf519d47250322dBen Murdoch  /*
7221939df44de1705786c545cd1bf519d47250322dBen Murdoch   * BSD/OS, FreeBSD, and OpenBSD ship sys/types.h that define int32_t and
7321939df44de1705786c545cd1bf519d47250322dBen Murdoch   * u_int32_t.
7421939df44de1705786c545cd1bf519d47250322dBen Murdoch   */
7521939df44de1705786c545cd1bf519d47250322dBen Murdoch  #include <sys/types.h>
7621939df44de1705786c545cd1bf519d47250322dBen Murdoch
7721939df44de1705786c545cd1bf519d47250322dBen Murdoch  /*
7821939df44de1705786c545cd1bf519d47250322dBen Murdoch   * BSD/OS ships no header that defines uint32_t, nor bool (for C)
7921939df44de1705786c545cd1bf519d47250322dBen Murdoch   */
8021939df44de1705786c545cd1bf519d47250322dBen Murdoch  #if defined(bsdi)
8121939df44de1705786c545cd1bf519d47250322dBen Murdoch  typedef u_int32_t uint32_t;
8281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch  typedef u_int64_t uint64_t;
8321939df44de1705786c545cd1bf519d47250322dBen Murdoch
8421939df44de1705786c545cd1bf519d47250322dBen Murdoch  #if !defined(__cplusplus)
8521939df44de1705786c545cd1bf519d47250322dBen Murdoch    typedef int bool;
8681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    #define true   1
8781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    #define false  0
8821939df44de1705786c545cd1bf519d47250322dBen Murdoch  #endif
8921939df44de1705786c545cd1bf519d47250322dBen Murdoch  #else
9021939df44de1705786c545cd1bf519d47250322dBen Murdoch  /*
9121939df44de1705786c545cd1bf519d47250322dBen Murdoch   * FreeBSD and OpenBSD define uint32_t and bool.
9221939df44de1705786c545cd1bf519d47250322dBen Murdoch   */
9321939df44de1705786c545cd1bf519d47250322dBen Murdoch    #include <inttypes.h>
9421939df44de1705786c545cd1bf519d47250322dBen Murdoch    #include <stdbool.h>
9521939df44de1705786c545cd1bf519d47250322dBen Murdoch  #endif
9621939df44de1705786c545cd1bf519d47250322dBen Murdoch#elif defined(BEOS)
9721939df44de1705786c545cd1bf519d47250322dBen Murdoch  #include <inttypes.h>
9821939df44de1705786c545cd1bf519d47250322dBen Murdoch#else
9921939df44de1705786c545cd1bf519d47250322dBen Murdoch  /*
10021939df44de1705786c545cd1bf519d47250322dBen Murdoch   * For those that ship a standard C99 stdint.h header file, include
10121939df44de1705786c545cd1bf519d47250322dBen Murdoch   * it. Can't do the same for stdbool.h tho, since some systems ship
10221939df44de1705786c545cd1bf519d47250322dBen Murdoch   * with a stdbool.h file that doesn't compile!
10321939df44de1705786c545cd1bf519d47250322dBen Murdoch   */
10421939df44de1705786c545cd1bf519d47250322dBen Murdoch  #include <stdint.h>
10521939df44de1705786c545cd1bf519d47250322dBen Murdoch
10621939df44de1705786c545cd1bf519d47250322dBen Murdoch  #ifndef __cplusplus
10721939df44de1705786c545cd1bf519d47250322dBen Murdoch    #if !defined(__GNUC__) || (__GNUC__ > 2 || __GNUC_MINOR__ > 95)
10821939df44de1705786c545cd1bf519d47250322dBen Murdoch      #include <stdbool.h>
10921939df44de1705786c545cd1bf519d47250322dBen Murdoch    #else
11021939df44de1705786c545cd1bf519d47250322dBen Murdoch      /*
11121939df44de1705786c545cd1bf519d47250322dBen Murdoch       * GCC 2.91 can't deal with a typedef for bool, but a #define
11221939df44de1705786c545cd1bf519d47250322dBen Murdoch       * works.
11321939df44de1705786c545cd1bf519d47250322dBen Murdoch       */
11421939df44de1705786c545cd1bf519d47250322dBen Murdoch      #define bool int
11581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch      #define true   1
11681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch      #define false  0
11721939df44de1705786c545cd1bf519d47250322dBen Murdoch    #endif
11821939df44de1705786c545cd1bf519d47250322dBen Murdoch  #endif
11921939df44de1705786c545cd1bf519d47250322dBen Murdoch#endif
12081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch
12181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#endif /* nptypes_h_ */
122