xref: /dflybsd-src/contrib/gcc-4.7/libstdc++-v3/include/tr2/ratio (revision 04febcfb30580676d3e95f58a16c5137ee478b32)
1*e4b17023SJohn Marino// TR2 <ratio> -*- C++ -*-
2*e4b17023SJohn Marino
3*e4b17023SJohn Marino// Copyright (C) 2010, 2011 Free Software Foundation, Inc.
4*e4b17023SJohn Marino//
5*e4b17023SJohn Marino// This file is part of the GNU ISO C++ Library.  This library is free
6*e4b17023SJohn Marino// software; you can redistribute it and/or modify it under the
7*e4b17023SJohn Marino// terms of the GNU General Public License as published by the
8*e4b17023SJohn Marino// Free Software Foundation; either version 3, or (at your option)
9*e4b17023SJohn Marino// any later version.
10*e4b17023SJohn Marino
11*e4b17023SJohn Marino// This library is distributed in the hope that it will be useful,
12*e4b17023SJohn Marino// but WITHOUT ANY WARRANTY; without even the implied warranty of
13*e4b17023SJohn Marino// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14*e4b17023SJohn Marino// GNU General Public License for more details.
15*e4b17023SJohn Marino
16*e4b17023SJohn Marino// Under Section 7 of GPL version 3, you are granted additional
17*e4b17023SJohn Marino// permissions described in the GCC Runtime Library Exception, version
18*e4b17023SJohn Marino// 3.1, as published by the Free Software Foundation.
19*e4b17023SJohn Marino
20*e4b17023SJohn Marino// You should have received a copy of the GNU General Public License and
21*e4b17023SJohn Marino// a copy of the GCC Runtime Library Exception along with this program;
22*e4b17023SJohn Marino// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
23*e4b17023SJohn Marino// <http://www.gnu.org/licenses/>.
24*e4b17023SJohn Marino
25*e4b17023SJohn Marino/** @file tr2/ratio
26*e4b17023SJohn Marino *  This is a TR2 C++ Library header.
27*e4b17023SJohn Marino */
28*e4b17023SJohn Marino
29*e4b17023SJohn Marino#include <ratio>
30*e4b17023SJohn Marino
31*e4b17023SJohn Marinonamespace std _GLIBCXX_VISIBILITY(default)
32*e4b17023SJohn Marino{
33*e4b17023SJohn Marinonamespace tr2
34*e4b17023SJohn Marino{
35*e4b17023SJohn Marino_GLIBCXX_BEGIN_NAMESPACE_VERSION
36*e4b17023SJohn Marino
37*e4b17023SJohn Marino  template<intmax_t _Pn, size_t _Bit,
38*e4b17023SJohn Marino	     bool = _Bit < static_cast<size_t>
39*e4b17023SJohn Marino			  (std::numeric_limits<intmax_t>::digits)>
40*e4b17023SJohn Marino    struct __safe_lshift
41*e4b17023SJohn Marino    { static const intmax_t __value = 0; };
42*e4b17023SJohn Marino
43*e4b17023SJohn Marino    template<intmax_t _Pn, size_t _Bit>
44*e4b17023SJohn Marino      struct __safe_lshift<_Pn, _Bit, true>
45*e4b17023SJohn Marino      { static const intmax_t __value = _Pn << _Bit; };
46*e4b17023SJohn Marino
47*e4b17023SJohn Marino  /// Add binary prefixes (IEC 60027-2 A.2 and ISO/IEC 80000).
48*e4b17023SJohn Marino  typedef ratio<__safe_lshift<1, 10>::__value, 1> kibi;
49*e4b17023SJohn Marino  typedef ratio<__safe_lshift<1, 20>::__value, 1> mebi;
50*e4b17023SJohn Marino  typedef ratio<__safe_lshift<1, 30>::__value, 1> gibi;
51*e4b17023SJohn Marino  typedef ratio<__safe_lshift<1, 40>::__value, 1> tebi;
52*e4b17023SJohn Marino  typedef ratio<__safe_lshift<1, 50>::__value, 1> pebi;
53*e4b17023SJohn Marino  typedef ratio<__safe_lshift<1, 60>::__value, 1> exbi;
54*e4b17023SJohn Marino  //typedef ratio<__safe_lshift<1, 70>::__value, 1> zebi;
55*e4b17023SJohn Marino  //typedef ratio<__safe_lshift<1, 80>::__value, 1> yobi;
56*e4b17023SJohn Marino
57*e4b17023SJohn Marino_GLIBCXX_END_NAMESPACE_VERSION
58*e4b17023SJohn Marino}
59*e4b17023SJohn Marino}
60