|  | // Written in the D programming language. | 
|  |  | 
|  | /** | 
|  | * | 
|  | D constrains integral types to specific sizes. But efficiency | 
|  | of different sizes varies from machine to machine, | 
|  | pointer sizes vary, and the maximum integer size varies. | 
|  | <b>stdint</b> offers a portable way of trading off size | 
|  | vs efficiency, in a manner compatible with the <tt>stdint.h</tt> | 
|  | definitions in C. | 
|  |  | 
|  | In the table below, the $(B exact alias)es are types of exactly the | 
|  | specified number of bits. | 
|  | The $(B at least alias)es are at least the specified number of bits | 
|  | large, and can be larger. | 
|  | The $(B fast alias)es are the fastest integral type supported by the | 
|  | processor that is at least as wide as the specified number of bits. | 
|  |  | 
|  | The aliases are: | 
|  |  | 
|  | $(ATABLE $(TR | 
|  | $(TH Exact Alias) | 
|  | $(TH Description) | 
|  | $(TH At Least Alias) | 
|  | $(TH Description) | 
|  | $(TH Fast Alias) | 
|  | $(TH Description) | 
|  | )$(TR | 
|  | $(TD int8_t) | 
|  | $(TD exactly 8 bits signed) | 
|  | $(TD int_least8_t) | 
|  | $(TD at least 8 bits signed) | 
|  | $(TD int_fast8_t) | 
|  | $(TD fast 8 bits signed) | 
|  | )$(TR | 
|  | $(TD uint8_t) | 
|  | $(TD exactly 8 bits unsigned) | 
|  | $(TD uint_least8_t) | 
|  | $(TD at least 8 bits unsigned) | 
|  | $(TD uint_fast8_t) | 
|  | $(TD fast 8 bits unsigned) | 
|  |  | 
|  | )$(TR | 
|  | $(TD int16_t) | 
|  | $(TD exactly 16 bits signed) | 
|  | $(TD int_least16_t) | 
|  | $(TD at least 16 bits signed) | 
|  | $(TD int_fast16_t) | 
|  | $(TD fast 16 bits signed) | 
|  | )$(TR | 
|  | $(TD uint16_t) | 
|  | $(TD exactly 16 bits unsigned) | 
|  | $(TD uint_least16_t) | 
|  | $(TD at least 16 bits unsigned) | 
|  | $(TD uint_fast16_t) | 
|  | $(TD fast 16 bits unsigned) | 
|  |  | 
|  | )$(TR | 
|  | $(TD int32_t) | 
|  | $(TD exactly 32 bits signed) | 
|  | $(TD int_least32_t) | 
|  | $(TD at least 32 bits signed) | 
|  | $(TD int_fast32_t) | 
|  | $(TD fast 32 bits signed) | 
|  | )$(TR | 
|  | $(TD uint32_t) | 
|  | $(TD exactly 32 bits unsigned) | 
|  | $(TD uint_least32_t) | 
|  | $(TD at least 32 bits unsigned) | 
|  | $(TD uint_fast32_t) | 
|  | $(TD fast 32 bits unsigned) | 
|  |  | 
|  | )$(TR | 
|  | $(TD int64_t) | 
|  | $(TD exactly 64 bits signed) | 
|  | $(TD int_least64_t) | 
|  | $(TD at least 64 bits signed) | 
|  | $(TD int_fast64_t) | 
|  | $(TD fast 64 bits signed) | 
|  | )$(TR | 
|  | $(TD uint64_t) | 
|  | $(TD exactly 64 bits unsigned) | 
|  | $(TD uint_least64_t) | 
|  | $(TD at least 64 bits unsigned) | 
|  | $(TD uint_fast64_t) | 
|  | $(TD fast 64 bits unsigned) | 
|  | )) | 
|  |  | 
|  | The ptr aliases are integral types guaranteed to be large enough | 
|  | to hold a pointer without losing bits: | 
|  |  | 
|  | $(ATABLE $(TR | 
|  | $(TH Alias) | 
|  | $(TH Description) | 
|  | )$(TR | 
|  | $(TD intptr_t) | 
|  | $(TD signed integral type large enough to hold a pointer) | 
|  | )$(TR | 
|  | $(TD uintptr_t) | 
|  | $(TD unsigned integral type large enough to hold a pointer) | 
|  | )) | 
|  |  | 
|  | The max aliases are the largest integral types: | 
|  |  | 
|  | $(ATABLE $(TR | 
|  | $(TH Alias) | 
|  | $(TH Description) | 
|  | )$(TR | 
|  | $(TD intmax_t) | 
|  | $(TD the largest signed integral type) | 
|  | )$(TR | 
|  | $(TD uintmax_t) | 
|  | $(TD the largest unsigned integral type) | 
|  | )) | 
|  |  | 
|  | * Macros: | 
|  | *  ATABLE=<table border="1" cellspacing="0" cellpadding="5">$0</table> | 
|  | * | 
|  | * Copyright: Copyright The D Language Foundation 2000 - 2009. | 
|  | * License:   $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0). | 
|  | * Authors:   $(HTTP digitalmars.com, Walter Bright) | 
|  | * Source:    $(PHOBOSSRC std/stdint.d) | 
|  | */ | 
|  | /*          Copyright The D Language Foundation 2000 - 2009. | 
|  | * Distributed under the Boost Software License, Version 1.0. | 
|  | *    (See accompanying file LICENSE_1_0.txt or copy at | 
|  | *          http://www.boost.org/LICENSE_1_0.txt) | 
|  | */ | 
|  | module std.stdint; | 
|  |  | 
|  | public import core.stdc.stdint; |