]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - libstdc++-v3/include/bits/basic_ios.h
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / include / bits / basic_ios.h
index 6fd0653617bcef7176360419fa870bf7d0afc19d..318e41b7c55e89e9d7ff8c0332fa5f74efbebc7f 100644 (file)
@@ -1,8 +1,6 @@
 // Iostreams base classes -*- C++ -*-
 
-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-// 2006, 2007, 2008, 2009, 2010, 2011
-// Free Software Foundation, Inc.
+// Copyright (C) 1997-2017 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
 #include <bits/locale_classes.h>
 #include <bits/locale_facets.h>
 #include <bits/streambuf_iterator.h>
+#include <bits/move.h>
 
-_GLIBCXX_BEGIN_NAMESPACE(std)
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   template<typename _Facet>
     inline const _Facet&
@@ -50,11 +51,15 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
       return *__f;
     }
 
-  // 27.4.5  Template class basic_ios
   /**
-   *  @brief  Virtual base class for all stream classes.
+   *  @brief Template class basic_ios, virtual base class for all
+   *  stream classes. 
    *  @ingroup io
    *
+   *  @tparam _CharT  Type of character stream.
+   *  @tparam _Traits  Traits for character type, defaults to
+   *                   char_traits<_CharT>.
+   *
    *  Most of the member functions called dispatched on stream objects
    *  (e.g., @c std::cout.foo(bar);) are consolidated in this class.
   */
@@ -65,7 +70,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
       //@{
       /**
        *  These are standard types.  They permit a standardized way of
-       *  referring to names of (or names dependant on) the template
+       *  referring to names of (or names dependent on) the template
        *  parameters, which are specific to the implementation.
       */
       typedef _CharT                                 char_type;
@@ -108,8 +113,13 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
        *  This allows you to write constructs such as
        *  <code>if (!a_stream) ...</code> and <code>while (a_stream) ...</code>
       */
+#if __cplusplus >= 201103L
+      explicit operator bool() const
+      { return !this->fail(); }
+#else
       operator void*() const
       { return this->fail() ? 0 : const_cast<basic_ios*>(this); }
+#endif
 
       bool
       operator!() const
@@ -129,7 +139,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
 
       /**
        *  @brief  [Re]sets the error state.
-       *  @param  state  The new state flag(s) to set.
+       *  @param  __state  The new state flag(s) to set.
        *
        *  See std::ios_base::iostate for the possible bit values.  Most
        *  users will not need to pass an argument.
@@ -139,7 +149,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
 
       /**
        *  @brief  Sets additional flags in the error state.
-       *  @param  state  The additional state flag(s) to set.
+       *  @param  __state  The additional state flag(s) to set.
        *
        *  See std::ios_base::iostate for the possible bit values.
       */
@@ -214,7 +224,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
 
       /**
        *  @brief  Throwing exceptions on errors.
-       *  @param  except  The new exceptions mask.
+       *  @param  __except  The new exceptions mask.
        *
        *  By default, error flags are set silently.  You can set an
        *  exceptions mask for each stream; if a bit in the mask becomes set
@@ -287,7 +297,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
 
       /**
        *  @brief  Ties this stream to an output stream.
-       *  @param  tiestr  The output stream.
+       *  @param  __tiestr  The output stream.
        *  @return  The previously tied output stream, or NULL if the stream
        *           was not tied.
        *
@@ -313,7 +323,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
 
       /**
        *  @brief  Changing the underlying buffer.
-       *  @param  sb  The new stream buffer.
+       *  @param  __sb  The new stream buffer.
        *  @return  The previous stream buffer.
        *
        *  Associates a new buffer with the current stream, and clears the
@@ -369,7 +379,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
 
       /**
        *  @brief  Sets a new @a empty character.
-       *  @param  ch  The new character.
+       *  @param  __ch  The new character.
        *  @return  The previous fill character.
        *
        *  The fill character is used to fill out space when P+ characters
@@ -387,7 +397,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
       // Locales:
       /**
        *  @brief  Moves to a new locale.
-       *  @param  loc  The new locale.
+       *  @param  __loc  The new locale.
        *  @return  The previous locale.
        *
        *  Calls @c ios_base::imbue(loc), and if a stream buffer is associated
@@ -401,8 +411,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
 
       /**
        *  @brief  Squeezes characters.
-       *  @param  c  The character to narrow.
-       *  @param  dfault  The character to narrow.
+       *  @param  __c  The character to narrow.
+       *  @param  __dfault  The character to narrow.
        *  @return  The narrowed character.
        *
        *  Maps a character of @c char_type to a character of @c char,
@@ -422,7 +432,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
 
       /**
        *  @brief  Widens characters.
-       *  @param  c  The character to widen.
+       *  @param  __c  The character to widen.
        *  @return  The widened character.
        *
        *  Maps a character of @c char to a character of @c char_type.
@@ -461,11 +471,47 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
       void
       init(basic_streambuf<_CharT, _Traits>* __sb);
 
+#if __cplusplus >= 201103L
+      basic_ios(const basic_ios&) = delete;
+      basic_ios& operator=(const basic_ios&) = delete;
+
+      void
+      move(basic_ios& __rhs)
+      {
+       ios_base::_M_move(__rhs);
+       _M_cache_locale(_M_ios_locale);
+       this->tie(__rhs.tie(nullptr));
+       _M_fill = __rhs._M_fill;
+       _M_fill_init = __rhs._M_fill_init;
+       _M_streambuf = nullptr;
+      }
+
+      void
+      move(basic_ios&& __rhs)
+      { this->move(__rhs); }
+
+      void
+      swap(basic_ios& __rhs) noexcept
+      {
+       ios_base::_M_swap(__rhs);
+       _M_cache_locale(_M_ios_locale);
+       __rhs._M_cache_locale(__rhs._M_ios_locale);
+       std::swap(_M_tie, __rhs._M_tie);
+       std::swap(_M_fill, __rhs._M_fill);
+       std::swap(_M_fill_init, __rhs._M_fill_init);
+      }
+
+      void
+      set_rdbuf(basic_streambuf<_CharT, _Traits>* __sb)
+      { _M_streambuf = __sb; }
+#endif
+
       void
       _M_cache_locale(const locale& __loc);
     };
 
-_GLIBCXX_END_NAMESPACE
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
 
 #include <bits/basic_ios.tcc>