summaryrefslogtreecommitdiff
path: root/libstdc++-v3/shadow/bits/std_cfloat.h
blob: 44f24625c02cb4efe4d30e1d63f533c422f274ce (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
// -*- C++ -*- header wrapper.

// Copyright (C) 1997-1999 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library.  This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.

// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING.  If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.

// As a special exception, you may use this file as part of a free software
// library without restriction.  Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License.  This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.

//
// ISO C++ 14882: 18.2.2  Implementation properties: C library
//

#ifndef _CPP_CFLOAT
#define _CPP_CFLOAT 1

#if 0  /* 1998-09-29 */
# ifdef __GLIBC__
// For GNU libc we must also include this one:
#  include <fenv.h>
# endif
#endif

  namespace _C_legacy {
    extern "C" {
#     define _IN_C_LEGACY_
#     pragma system_header
#     include_next <float.h>
    }

    inline int _CPP_FLT_ROUNDS_capture() { return FLT_ROUNDS; }

    // FLT_RADIX is OK as-is.
    // const int     _CPP_FLT_RADIX_capture() { return FLT_RADIX; }
 
    inline int _CPP_FLT_MANT_DIG_capture() { return FLT_MANT_DIG; }
    inline int _CPP_DBL_MANT_DIG_capture() { return DBL_MANT_DIG; }
    inline int _CPP_LDBL_MANT_DIG_capture() { return LDBL_MANT_DIG; }

    inline int _CPP_FLT_DIG_capture() { return FLT_DIG; }
    inline int _CPP_DBL_DIG_capture() { return DBL_DIG; }
    inline int _CPP_LDBL_DIG_capture() { return LDBL_DIG; }

    inline int _CPP_FLT_MIN_EXP_capture() { return FLT_MIN_EXP; }
    inline int _CPP_DBL_MIN_EXP_capture() { return DBL_MIN_EXP; }
    inline int _CPP_LDBL_MIN_EXP_capture() { return LDBL_MIN_EXP; }

    inline int _CPP_FLT_MIN_10_EXP_capture() { return FLT_MIN_10_EXP; }
    inline int _CPP_DBL_MIN_10_EXP_capture() { return DBL_MIN_10_EXP; }
    inline int _CPP_LDBL_MIN_10_EXP_capture() { return LDBL_MIN_10_EXP; }

    inline int _CPP_FLT_MAX_EXP_capture() { return FLT_MAX_EXP; }
    inline int _CPP_DBL_MAX_EXP_capture() { return DBL_MAX_EXP; }
    inline int _CPP_LDBL_MAX_EXP_capture() { return LDBL_MAX_EXP; }

    inline int _CPP_FLT_MAX_10_EXP_capture() { return FLT_MAX_10_EXP; }
    inline int _CPP_DBL_MAX_10_EXP_capture() { return DBL_MAX_10_EXP; }
    inline int _CPP_LDBL_MAX_10_EXP_capture() { return LDBL_MAX_10_EXP; }

    inline float _CPP_FLT_MAX_capture() { return FLT_MAX; }
    inline double _CPP_DBL_MAX_capture() { return DBL_MAX; }
    inline long double _CPP_LDBL_MAX_capture() { return LDBL_MAX; }

    inline float _CPP_FLT_EPSILON_capture() { return FLT_EPSILON; }
    inline double _CPP_DBL_EPSILON_capture() { return DBL_EPSILON; }
    inline long double _CPP_LDBL_EPSILON_capture() { return LDBL_EPSILON; }

    inline float _CPP_FLT_MIN_capture() { return FLT_MIN; }
    inline double _CPP_DBL_MIN_capture() { return DBL_MIN; }
    inline long double _CPP_LDBL_MIN_capture() { return LDBL_MIN; }

    namespace _C_shadow { }
  } // close namespace ::_C_legacy::

# undef FLT_ROUNDS
# define FLT_ROUNDS ::_C_legacy::_CPP_FLT_ROUNDS_capture() 

// # undef FLT_RADIX  // OK as-is.

# undef FLT_MANT_DIG
# define FLT_MANT_DIG ::_C_legacy::_CPP_FLT_MANT_DIG_capture()
# undef DBL_MANT_DIG
# define DBL_MANT_DIG ::_C_legacy::_CPP_DBL_MANT_DIG_capture()
# undef LDBL_MANT_DIG
# define LDBL_MANT_DIG ::_C_legacy::_CPP_LDBL_MANT_DIG_capture()

# undef FLT_DIG
# define FLT_DIG ::_C_legacy::_CPP_FLT_DIG_capture()
# undef DBL_DIG
# define DBL_DIG ::_C_legacy::_CPP_DBL_DIG_capture()
# undef LDBL_DIG
# define LDBL_DIG ::_C_legacy::_CPP_LDBL_DIG_capture()

# undef FLT_MIN_MIN_DIG
# define FLT_MIN_MIN_DIG ::_C_legacy::_CPP_FLT_MIN_MIN_DIG_capture()
# undef DBL_MIN_MIN_DIG
# define DBL_MIN_MIN_DIG ::_C_legacy::_CPP_DBL_MIN_MIN_DIG_capture()
# undef LDBL_MIN_MIN_DIG
# define LDBL_MIN_MIN_DIG ::_C_legacy::_CPP_LDBL_MIN_MIN_DIG_capture()

# undef FLT_MIN_EXP
# define FLT_MIN_EXP ::_C_legacy::_CPP_FLT_MIN_EXP_capture()
# undef DBL_MIN_EXP
# define DBL_MIN_EXP ::_C_legacy::_CPP_DBL_MIN_EXP_capture()
# undef LDBL_MIN_EXP
# define LDBL_MIN_EXP ::_C_legacy::_CPP_LDBL_MIN_EXP_capture()

# undef FLT_MIN_10_EXP
# define FLT_MIN_10_EXP ::_C_legacy::_CPP_FLT_MIN_10_EXP_capture()
# undef DBL_MIN_10_EXP
# define DBL_MIN_10_EXP _::_C_legacy::CPP_DBL_MIN_10_EXP_capture()
# undef LDBL_MIN_10_EXP
# define LDBL_MIN_10_EXP ::_C_legacy::_CPP_LDBL_MIN_10_EXP_capture()

# undef FLT_MAX_EXP
# define FLT_MAX_EXP ::_C_legacy::_CPP_FLT_MAX_EXP_capture()
# undef DBL_MAX_EXP
# define DBL_MAX_EXP ::_C_legacy::_CPP_DBL_MAX_EXP_capture()
# undef LDBL_MAX_EXP
# define LDBL_MAX_EXP ::_C_legacy::_CPP_LDBL_MAX_EXP_capture()

# undef FLT_MAX_10_EXP
# define FLT_MAX_10_EXP ::_C_legacy::_CPP_FLT_MAX_10_EXP_capture()
# undef DBL_MAX_10_EXP
# define DBL_MAX_10_EXP ::_C_legacy::_CPP_DBL_MAX_10_EXP_capture()
# undef LDBL_MAX_10_EXP
# define LDBL_MAX_10_EXP ::_C_legacy::_CPP_LDBL_MAX_10_EXP_capture()

# undef FLT_MAX
# define FLT_MAX ::_C_legacy::_CPP_FLT_MAX_capture()
# undef DBL_MAX
# define DBL_MAX ::_C_legacy::_CPP_DBL_MAX_capture()
# undef LDBL_MAX
# define LDBL_MAX ::_C_legacy::_CPP_LDBL_MAX_capture()

# undef FLT_EPSILON
# define FLT_EPSILON ::_C_legacy::_CPP_FLT_EPSILON_capture()
# undef DBL_EPSILON
# define DBL_EPSILON ::_C_legacy::_CPP_DBL_EPSILON_capture()
# undef LDBL_EPSILON
# define LDBL_EPSILON ::_C_legacy::_CPP_LDBL_EPSILON_capture()

# undef FLT_MIN
# define FLT_MIN ::_C_legacy::_CPP_FLT_MIN_capture()
# undef DBL_MIN
# define DBL_MIN ::_C_legacy::_CPP_DBL_MIN_capture()
# undef LDBL_MIN
# define LDBL_MIN ::_C_legacy::_CPP_LDBL_MIN_capture()

  namespace _C_legacy {
    namespace _C_shadow {
    }
  }
  namespace std {
  } // close namespace std::
  
  namespace _C_legacy {
    namespace _C_shadow {
    }
  }

# undef _IN_C_LEGACY_

#endif