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