basictypes.h revision 116680a4aac90f2aa7413d9095a592090648e557
15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// found in the LICENSE file. 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// This file contains definitions of our old basic integral types 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// ((u)int{8,16,32,64}) and further includes. I recommend that you use the C99 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// standard types instead, and include <stdint.h>/<stddef.h>/etc. as needed. 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Note that the macros and macro-like constructs that were formerly defined in 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// this file are now available separately in base/macros.h. 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef BASE_BASICTYPES_H_ 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define BASE_BASICTYPES_H_ 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include <limits.h> // So we can set the bounds of our types. 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include <stddef.h> // For size_t. 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include <stdint.h> // For intptr_t. 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "base/macros.h" 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "base/port.h" // Types that only need exist on certain systems. 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// DEPRECATED: Please use (u)int{8,16,32,64}_t instead (and include <stdint.h>). 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)typedef int8_t int8; 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)typedef uint8_t uint8; 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)typedef int16_t int16; 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)typedef int32_t int32; 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)typedef uint16_t uint16; 2753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)typedef uint32_t uint32; 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)// TODO(vtl): Figure what's up with the 64-bit types. Can we just define them as 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// |int64_t|/|uint64_t|? 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// The NSPR system headers define 64-bit as |long| when possible, except on 325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Mac OS X. In order to not have typedef mismatches, we do the same on LP64. 335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// 345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// On Mac OS X, |long long| is used for 64-bit types for compatibility with 355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// <inttypes.h> format macros even in the LP64 model. 365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#if defined(__LP64__) && !defined(OS_MACOSX) && !defined(OS_OPENBSD) 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)typedef long int64; 385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)typedef unsigned long uint64; 395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#else 405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)typedef long long int64; 415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)typedef unsigned long long uint64; 425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// DEPRECATED: Please use std::numeric_limits (from <limits>) instead. 455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)const uint8 kuint8max = 0xFF; 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)const uint16 kuint16max = 0xFFFF; 47const uint32 kuint32max = 0xFFFFFFFF; 48const uint64 kuint64max = 0xFFFFFFFFFFFFFFFFULL; 49const int8 kint8min = -0x7F - 1; 50const int8 kint8max = 0x7F; 51const int16 kint16min = -0x7FFF - 1; 52const int16 kint16max = 0x7FFF; 53const int32 kint32min = -0x7FFFFFFF - 1; 54const int32 kint32max = 0x7FFFFFFF; 55const int64 kint64min = -0x7FFFFFFFFFFFFFFFLL - 1; 56const int64 kint64max = 0x7FFFFFFFFFFFFFFFLL; 57 58#endif // BASE_BASICTYPES_H_ 59