OpenCores
URL https://opencores.org/ocsvn/altor32/altor32/trunk

Subversion Repositories altor32

[/] [altor32/] [trunk/] [gcc-x64/] [or1knd-elf/] [or1knd-elf/] [include/] [c++/] [4.8.0/] [iomanip] - Blame information for rev 35

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 35 ultra_embe
// Standard stream manipulators -*- C++ -*-
2
 
3
// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
4
// 2006, 2007, 2008, 2009, 2010, 2011
5
// Free Software Foundation, Inc.
6
//
7
// This file is part of the GNU ISO C++ Library.  This library is free
8
// software; you can redistribute it and/or modify it under the
9
// terms of the GNU General Public License as published by the
10
// Free Software Foundation; either version 3, or (at your option)
11
// any later version.
12
 
13
// This library is distributed in the hope that it will be useful,
14
// but WITHOUT ANY WARRANTY; without even the implied warranty of
15
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
// GNU General Public License for more details.
17
 
18
// Under Section 7 of GPL version 3, you are granted additional
19
// permissions described in the GCC Runtime Library Exception, version
20
// 3.1, as published by the Free Software Foundation.
21
 
22
// You should have received a copy of the GNU General Public License and
23
// a copy of the GCC Runtime Library Exception along with this program;
24
// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
25
// .
26
 
27
/** @file include/iomanip
28
 *  This is a Standard C++ Library header.
29
 */
30
 
31
//
32
// ISO C++ 14882: 27.6.3  Standard manipulators
33
//
34
 
35
#ifndef _GLIBCXX_IOMANIP
36
#define _GLIBCXX_IOMANIP 1
37
 
38
#pragma GCC system_header
39
 
40
#include 
41
#include 
42
#include 
43
 
44
#if __cplusplus >= 201103L
45
#include 
46
#endif
47
 
48
namespace std _GLIBCXX_VISIBILITY(default)
49
{
50
_GLIBCXX_BEGIN_NAMESPACE_VERSION
51
 
52
  // [27.6.3] standard manipulators
53
  // Also see DR 183.
54
 
55
  struct _Resetiosflags { ios_base::fmtflags _M_mask; };
56
 
57
  /**
58
   *  @brief  Manipulator for @c setf.
59
   *  @param  __mask  A format flags mask.
60
   *
61
   *  Sent to a stream object, this manipulator resets the specified flags,
62
   *  via @e stream.setf(0,__mask).
63
  */
64
  inline _Resetiosflags
65
  resetiosflags(ios_base::fmtflags __mask)
66
  { return { __mask }; }
67
 
68
  template
69
    inline basic_istream<_CharT, _Traits>&
70
    operator>>(basic_istream<_CharT, _Traits>& __is, _Resetiosflags __f)
71
    {
72
      __is.setf(ios_base::fmtflags(0), __f._M_mask);
73
      return __is;
74
    }
75
 
76
  template
77
    inline basic_ostream<_CharT, _Traits>&
78
    operator<<(basic_ostream<_CharT, _Traits>& __os, _Resetiosflags __f)
79
    {
80
      __os.setf(ios_base::fmtflags(0), __f._M_mask);
81
      return __os;
82
    }
83
 
84
 
85
  struct _Setiosflags { ios_base::fmtflags _M_mask; };
86
 
87
  /**
88
   *  @brief  Manipulator for @c setf.
89
   *  @param  __mask  A format flags mask.
90
   *
91
   *  Sent to a stream object, this manipulator sets the format flags
92
   *  to @a __mask.
93
  */
94
  inline _Setiosflags
95
  setiosflags(ios_base::fmtflags __mask)
96
  { return { __mask }; }
97
 
98
  template
99
    inline basic_istream<_CharT, _Traits>&
100
    operator>>(basic_istream<_CharT, _Traits>& __is, _Setiosflags __f)
101
    {
102
      __is.setf(__f._M_mask);
103
      return __is;
104
    }
105
 
106
  template
107
    inline basic_ostream<_CharT, _Traits>&
108
    operator<<(basic_ostream<_CharT, _Traits>& __os, _Setiosflags __f)
109
    {
110
      __os.setf(__f._M_mask);
111
      return __os;
112
    }
113
 
114
 
115
  struct _Setbase { int _M_base; };
116
 
117
  /**
118
   *  @brief  Manipulator for @c setf.
119
   *  @param  __base  A numeric base.
120
   *
121
   *  Sent to a stream object, this manipulator changes the
122
   *  @c ios_base::basefield flags to @c oct, @c dec, or @c hex when @a base
123
   *  is 8, 10, or 16, accordingly, and to 0 if @a __base is any other value.
124
  */
125
  inline _Setbase
126
  setbase(int __base)
127
  { return { __base }; }
128
 
129
  template
130
    inline basic_istream<_CharT, _Traits>&
131
    operator>>(basic_istream<_CharT, _Traits>& __is, _Setbase __f)
132
    {
133
      __is.setf(__f._M_base ==  8 ? ios_base::oct :
134
                __f._M_base == 10 ? ios_base::dec :
135
                __f._M_base == 16 ? ios_base::hex :
136
                ios_base::fmtflags(0), ios_base::basefield);
137
      return __is;
138
    }
139
 
140
  template
141
    inline basic_ostream<_CharT, _Traits>&
142
    operator<<(basic_ostream<_CharT, _Traits>& __os, _Setbase __f)
143
    {
144
      __os.setf(__f._M_base ==  8 ? ios_base::oct :
145
                __f._M_base == 10 ? ios_base::dec :
146
                __f._M_base == 16 ? ios_base::hex :
147
                ios_base::fmtflags(0), ios_base::basefield);
148
      return __os;
149
    }
150
 
151
 
152
  template
153
    struct _Setfill { _CharT _M_c; };
154
 
155
  /**
156
   *  @brief  Manipulator for @c fill.
157
   *  @param  __c  The new fill character.
158
   *
159
   *  Sent to a stream object, this manipulator calls @c fill(__c) for that
160
   *  object.
161
  */
162
  template
163
    inline _Setfill<_CharT>
164
    setfill(_CharT __c)
165
    { return { __c }; }
166
 
167
  template
168
    inline basic_istream<_CharT, _Traits>&
169
    operator>>(basic_istream<_CharT, _Traits>& __is, _Setfill<_CharT> __f)
170
    {
171
      __is.fill(__f._M_c);
172
      return __is;
173
    }
174
 
175
  template
176
    inline basic_ostream<_CharT, _Traits>&
177
    operator<<(basic_ostream<_CharT, _Traits>& __os, _Setfill<_CharT> __f)
178
    {
179
      __os.fill(__f._M_c);
180
      return __os;
181
    }
182
 
183
 
184
  struct _Setprecision { int _M_n; };
185
 
186
  /**
187
   *  @brief  Manipulator for @c precision.
188
   *  @param  __n  The new precision.
189
   *
190
   *  Sent to a stream object, this manipulator calls @c precision(__n) for
191
   *  that object.
192
  */
193
  inline _Setprecision
194
  setprecision(int __n)
195
  { return { __n }; }
196
 
197
  template
198
    inline basic_istream<_CharT, _Traits>&
199
    operator>>(basic_istream<_CharT, _Traits>& __is, _Setprecision __f)
200
    {
201
      __is.precision(__f._M_n);
202
      return __is;
203
    }
204
 
205
  template
206
    inline basic_ostream<_CharT, _Traits>&
207
    operator<<(basic_ostream<_CharT, _Traits>& __os, _Setprecision __f)
208
    {
209
      __os.precision(__f._M_n);
210
      return __os;
211
    }
212
 
213
 
214
  struct _Setw { int _M_n; };
215
 
216
  /**
217
   *  @brief  Manipulator for @c width.
218
   *  @param  __n  The new width.
219
   *
220
   *  Sent to a stream object, this manipulator calls @c width(__n) for
221
   *  that object.
222
  */
223
  inline _Setw
224
  setw(int __n)
225
  { return { __n }; }
226
 
227
  template
228
    inline basic_istream<_CharT, _Traits>&
229
    operator>>(basic_istream<_CharT, _Traits>& __is, _Setw __f)
230
    {
231
      __is.width(__f._M_n);
232
      return __is;
233
    }
234
 
235
  template
236
    inline basic_ostream<_CharT, _Traits>&
237
    operator<<(basic_ostream<_CharT, _Traits>& __os, _Setw __f)
238
    {
239
      __os.width(__f._M_n);
240
      return __os;
241
    }
242
 
243
#if __cplusplus >= 201103L
244
 
245
  template
246
    struct _Get_money { _MoneyT& _M_mon; bool _M_intl; };
247
 
248
  /**
249
   *  @brief  Extended manipulator for extracting money.
250
   *  @param  __mon  Either long double or a specialization of @c basic_string.
251
   *  @param  __intl A bool indicating whether international format
252
   *                 is to be used.
253
   *
254
   *  Sent to a stream object, this manipulator extracts @a __mon.
255
  */
256
  template
257
    inline _Get_money<_MoneyT>
258
    get_money(_MoneyT& __mon, bool __intl = false)
259
    { return { __mon, __intl }; }
260
 
261
  template
262
    basic_istream<_CharT, _Traits>&
263
    operator>>(basic_istream<_CharT, _Traits>& __is, _Get_money<_MoneyT> __f)
264
    {
265
      typename basic_istream<_CharT, _Traits>::sentry __cerb(__is, false);
266
      if (__cerb)
267
        {
268
          ios_base::iostate __err = ios_base::goodbit;
269
          __try
270
            {
271
              typedef istreambuf_iterator<_CharT, _Traits>   _Iter;
272
              typedef money_get<_CharT, _Iter>               _MoneyGet;
273
 
274
              const _MoneyGet& __mg = use_facet<_MoneyGet>(__is.getloc());
275
              __mg.get(_Iter(__is.rdbuf()), _Iter(), __f._M_intl,
276
                       __is, __err, __f._M_mon);
277
            }
278
          __catch(__cxxabiv1::__forced_unwind&)
279
            {
280
              __is._M_setstate(ios_base::badbit);
281
              __throw_exception_again;
282
            }
283
          __catch(...)
284
            { __is._M_setstate(ios_base::badbit); }
285
          if (__err)
286
            __is.setstate(__err);
287
        }
288
      return __is;
289
    }
290
 
291
 
292
  template
293
    struct _Put_money { const _MoneyT& _M_mon; bool _M_intl; };
294
 
295
  /**
296
   *  @brief  Extended manipulator for inserting money.
297
   *  @param  __mon  Either long double or a specialization of @c basic_string.
298
   *  @param  __intl A bool indicating whether international format
299
   *                 is to be used.
300
   *
301
   *  Sent to a stream object, this manipulator inserts @a __mon.
302
  */
303
  template
304
    inline _Put_money<_MoneyT>
305
    put_money(const _MoneyT& __mon, bool __intl = false)
306
    { return { __mon, __intl }; }
307
 
308
  template
309
    basic_ostream<_CharT, _Traits>&
310
    operator<<(basic_ostream<_CharT, _Traits>& __os, _Put_money<_MoneyT> __f)
311
    {
312
      typename basic_ostream<_CharT, _Traits>::sentry __cerb(__os);
313
      if (__cerb)
314
        {
315
          ios_base::iostate __err = ios_base::goodbit;
316
          __try
317
            {
318
              typedef ostreambuf_iterator<_CharT, _Traits>   _Iter;
319
              typedef money_put<_CharT, _Iter>               _MoneyPut;
320
 
321
              const _MoneyPut& __mp = use_facet<_MoneyPut>(__os.getloc());
322
              if (__mp.put(_Iter(__os.rdbuf()), __f._M_intl, __os,
323
                           __os.fill(), __f._M_mon).failed())
324
                __err |= ios_base::badbit;
325
            }
326
          __catch(__cxxabiv1::__forced_unwind&)
327
            {
328
              __os._M_setstate(ios_base::badbit);
329
              __throw_exception_again;
330
            }
331
          __catch(...)
332
            { __os._M_setstate(ios_base::badbit); }
333
          if (__err)
334
            __os.setstate(__err);
335
        }
336
      return __os;
337
    }
338
 
339
#endif
340
 
341
  // Inhibit implicit instantiations for required instantiations,
342
  // which are defined via explicit instantiations elsewhere.
343
  // NB:  This syntax is a GNU extension.
344
#if _GLIBCXX_EXTERN_TEMPLATE
345
  extern template ostream& operator<<(ostream&, _Setfill);
346
  extern template ostream& operator<<(ostream&, _Setiosflags);
347
  extern template ostream& operator<<(ostream&, _Resetiosflags);
348
  extern template ostream& operator<<(ostream&, _Setbase);
349
  extern template ostream& operator<<(ostream&, _Setprecision);
350
  extern template ostream& operator<<(ostream&, _Setw);
351
  extern template istream& operator>>(istream&, _Setfill);
352
  extern template istream& operator>>(istream&, _Setiosflags);
353
  extern template istream& operator>>(istream&, _Resetiosflags);
354
  extern template istream& operator>>(istream&, _Setbase);
355
  extern template istream& operator>>(istream&, _Setprecision);
356
  extern template istream& operator>>(istream&, _Setw);
357
 
358
#ifdef _GLIBCXX_USE_WCHAR_T
359
  extern template wostream& operator<<(wostream&, _Setfill);
360
  extern template wostream& operator<<(wostream&, _Setiosflags);
361
  extern template wostream& operator<<(wostream&, _Resetiosflags);
362
  extern template wostream& operator<<(wostream&, _Setbase);
363
  extern template wostream& operator<<(wostream&, _Setprecision);
364
  extern template wostream& operator<<(wostream&, _Setw);
365
  extern template wistream& operator>>(wistream&, _Setfill);
366
  extern template wistream& operator>>(wistream&, _Setiosflags);
367
  extern template wistream& operator>>(wistream&, _Resetiosflags);
368
  extern template wistream& operator>>(wistream&, _Setbase);
369
  extern template wistream& operator>>(wistream&, _Setprecision);
370
  extern template wistream& operator>>(wistream&, _Setw);
371
#endif
372
#endif
373
 
374
_GLIBCXX_END_NAMESPACE_VERSION
375
} // namespace
376
 
377
#endif /* _GLIBCXX_IOMANIP */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.