summaryrefslogtreecommitdiffstats
path: root/contrib/libs/cxxsupp/libcxx/include/strstream
diff options
context:
space:
mode:
authorAndrey Khalyavin <[email protected]>2022-02-10 16:46:30 +0300
committerDaniil Cherednik <[email protected]>2022-02-10 16:46:30 +0300
commit4b839d0704ee9be1dabb0310a1f03af24963637b (patch)
tree1a2c5ffcf89eb53ecd79dbc9bc0a195c27404d0c /contrib/libs/cxxsupp/libcxx/include/strstream
parentf773626848a7c7456803654292e716b83d69cc12 (diff)
Restoring authorship annotation for Andrey Khalyavin <[email protected]>. Commit 2 of 2.
Diffstat (limited to 'contrib/libs/cxxsupp/libcxx/include/strstream')
-rw-r--r--contrib/libs/cxxsupp/libcxx/include/strstream808
1 files changed, 404 insertions, 404 deletions
diff --git a/contrib/libs/cxxsupp/libcxx/include/strstream b/contrib/libs/cxxsupp/libcxx/include/strstream
index de5cc4d6158..ca837aef670 100644
--- a/contrib/libs/cxxsupp/libcxx/include/strstream
+++ b/contrib/libs/cxxsupp/libcxx/include/strstream
@@ -1,407 +1,407 @@
-// -*- C++ -*-
-//===--------------------------- strstream --------------------------------===//
-//
+// -*- C++ -*-
+//===--------------------------- strstream --------------------------------===//
+//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef _LIBCPP_STRSTREAM
-#define _LIBCPP_STRSTREAM
-
-/*
- strstream synopsis
-
-class strstreambuf
- : public basic_streambuf<char>
-{
-public:
- explicit strstreambuf(streamsize alsize_arg = 0); // before C++20
- strstreambuf() : strstreambuf(0) {} // C++20
- explicit strstreambuf(streamsize alsize_arg); // C++20
-
- strstreambuf(void* (*palloc_arg)(size_t), void (*pfree_arg)(void*));
- strstreambuf(char* gnext_arg, streamsize n, char* pbeg_arg = nullptr);
- strstreambuf(const char* gnext_arg, streamsize n);
-
- strstreambuf(signed char* gnext_arg, streamsize n, signed char* pbeg_arg = nullptr);
- strstreambuf(const signed char* gnext_arg, streamsize n);
- strstreambuf(unsigned char* gnext_arg, streamsize n, unsigned char* pbeg_arg = nullptr);
- strstreambuf(const unsigned char* gnext_arg, streamsize n);
-
- strstreambuf(strstreambuf&& rhs);
- strstreambuf& operator=(strstreambuf&& rhs);
-
- virtual ~strstreambuf();
-
- void swap(strstreambuf& rhs);
-
- void freeze(bool freezefl = true);
- char* str();
- int pcount() const;
-
-protected:
- virtual int_type overflow (int_type c = EOF);
- virtual int_type pbackfail(int_type c = EOF);
- virtual int_type underflow();
- virtual pos_type seekoff(off_type off, ios_base::seekdir way,
- ios_base::openmode which = ios_base::in | ios_base::out);
- virtual pos_type seekpos(pos_type sp,
- ios_base::openmode which = ios_base::in | ios_base::out);
- virtual streambuf* setbuf(char* s, streamsize n);
-
-private:
- typedef T1 strstate; // exposition only
- static const strstate allocated; // exposition only
- static const strstate constant; // exposition only
- static const strstate dynamic; // exposition only
- static const strstate frozen; // exposition only
- strstate strmode; // exposition only
- streamsize alsize; // exposition only
- void* (*palloc)(size_t); // exposition only
- void (*pfree)(void*); // exposition only
-};
-
-class istrstream
- : public basic_istream<char>
-{
-public:
- explicit istrstream(const char* s);
- explicit istrstream(char* s);
- istrstream(const char* s, streamsize n);
- istrstream(char* s, streamsize n);
-
- virtual ~istrstream();
-
- strstreambuf* rdbuf() const;
- char *str();
-
-private:
- strstreambuf sb; // exposition only
-};
-
-class ostrstream
- : public basic_ostream<char>
-{
-public:
- ostrstream();
- ostrstream(char* s, int n, ios_base::openmode mode = ios_base::out);
-
- virtual ~ostrstream();
-
- strstreambuf* rdbuf() const;
- void freeze(bool freezefl = true);
- char* str();
- int pcount() const;
-
-private:
- strstreambuf sb; // exposition only
-};
-
-class strstream
- : public basic_iostream<char>
-{
-public:
- // Types
- typedef char char_type;
- typedef char_traits<char>::int_type int_type;
- typedef char_traits<char>::pos_type pos_type;
- typedef char_traits<char>::off_type off_type;
-
- // constructors/destructor
- strstream();
- strstream(char* s, int n, ios_base::openmode mode = ios_base::in | ios_base::out);
-
- virtual ~strstream();
-
- // Members:
- strstreambuf* rdbuf() const;
- void freeze(bool freezefl = true);
- int pcount() const;
- char* str();
-
-private:
- strstreambuf sb; // exposition only
-};
-
-} // std
-
-*/
-
-#include <__config>
-#include <istream>
-#include <ostream>
-
-#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
-#pragma GCC system_header
-#endif
-
-_LIBCPP_BEGIN_NAMESPACE_STD
-
-class _LIBCPP_TYPE_VIS strstreambuf
- : public streambuf
-{
-public:
-#ifndef _LIBCPP_CXX03_LANG
- strstreambuf() : strstreambuf(0) {}
- explicit strstreambuf(streamsize __alsize);
-#else
- explicit strstreambuf(streamsize __alsize = 0);
-#endif
- strstreambuf(void* (*__palloc)(size_t), void (*__pfree)(void*));
- strstreambuf(char* __gnext, streamsize __n, char* __pbeg = nullptr);
- strstreambuf(const char* __gnext, streamsize __n);
-
- strstreambuf(signed char* __gnext, streamsize __n, signed char* __pbeg = nullptr);
- strstreambuf(const signed char* __gnext, streamsize __n);
- strstreambuf(unsigned char* __gnext, streamsize __n, unsigned char* __pbeg = nullptr);
- strstreambuf(const unsigned char* __gnext, streamsize __n);
-
-#ifndef _LIBCPP_CXX03_LANG
- _LIBCPP_INLINE_VISIBILITY
- strstreambuf(strstreambuf&& __rhs);
- _LIBCPP_INLINE_VISIBILITY
- strstreambuf& operator=(strstreambuf&& __rhs);
-#endif // _LIBCPP_CXX03_LANG
-
- virtual ~strstreambuf();
-
- void swap(strstreambuf& __rhs);
-
- void freeze(bool __freezefl = true);
- char* str();
- int pcount() const;
-
-protected:
- virtual int_type overflow (int_type __c = EOF);
- virtual int_type pbackfail(int_type __c = EOF);
- virtual int_type underflow();
- virtual pos_type seekoff(off_type __off, ios_base::seekdir __way,
- ios_base::openmode __which = ios_base::in | ios_base::out);
- virtual pos_type seekpos(pos_type __sp,
- ios_base::openmode __which = ios_base::in | ios_base::out);
-
-private:
- typedef unsigned __mode_type;
- static const __mode_type __allocated = 0x01;
- static const __mode_type __constant = 0x02;
- static const __mode_type __dynamic = 0x04;
- static const __mode_type __frozen = 0x08;
- static const streamsize __default_alsize = 4096;
-
- __mode_type __strmode_;
- streamsize __alsize_;
- void* (*__palloc_)(size_t);
- void (*__pfree_)(void*);
-
- void __init(char* __gnext, streamsize __n, char* __pbeg);
-};
-
-#ifndef _LIBCPP_CXX03_LANG
-
-inline _LIBCPP_INLINE_VISIBILITY
-strstreambuf::strstreambuf(strstreambuf&& __rhs)
- : streambuf(__rhs),
- __strmode_(__rhs.__strmode_),
- __alsize_(__rhs.__alsize_),
- __palloc_(__rhs.__palloc_),
- __pfree_(__rhs.__pfree_)
-{
- __rhs.setg(nullptr, nullptr, nullptr);
- __rhs.setp(nullptr, nullptr);
-}
-
-inline _LIBCPP_INLINE_VISIBILITY
-strstreambuf&
-strstreambuf::operator=(strstreambuf&& __rhs)
-{
- if (eback() && (__strmode_ & __allocated) != 0 && (__strmode_ & __frozen) == 0)
- {
- if (__pfree_)
- __pfree_(eback());
- else
- delete [] eback();
- }
- streambuf::operator=(__rhs);
- __strmode_ = __rhs.__strmode_;
- __alsize_ = __rhs.__alsize_;
- __palloc_ = __rhs.__palloc_;
- __pfree_ = __rhs.__pfree_;
- __rhs.setg(nullptr, nullptr, nullptr);
- __rhs.setp(nullptr, nullptr);
- return *this;
-}
-
-#endif // _LIBCPP_CXX03_LANG
-
-class _LIBCPP_TYPE_VIS istrstream
- : public istream
-{
-public:
- _LIBCPP_INLINE_VISIBILITY
- explicit istrstream(const char* __s)
- : istream(&__sb_), __sb_(__s, 0) {}
- _LIBCPP_INLINE_VISIBILITY
- explicit istrstream(char* __s)
- : istream(&__sb_), __sb_(__s, 0) {}
- _LIBCPP_INLINE_VISIBILITY
- istrstream(const char* __s, streamsize __n)
- : istream(&__sb_), __sb_(__s, __n) {}
- _LIBCPP_INLINE_VISIBILITY
- istrstream(char* __s, streamsize __n)
- : istream(&__sb_), __sb_(__s, __n) {}
-
-#ifndef _LIBCPP_CXX03_LANG
- _LIBCPP_INLINE_VISIBILITY
- istrstream(istrstream&& __rhs)
- : istream(_VSTD::move(__rhs)),
- __sb_(_VSTD::move(__rhs.__sb_))
- {
- istream::set_rdbuf(&__sb_);
- }
-
- _LIBCPP_INLINE_VISIBILITY
- istrstream& operator=(istrstream&& __rhs)
- {
- istream::operator=(_VSTD::move(__rhs));
- __sb_ = _VSTD::move(__rhs.__sb_);
- return *this;
- }
-#endif // _LIBCPP_CXX03_LANG
-
- virtual ~istrstream();
-
- _LIBCPP_INLINE_VISIBILITY
- void swap(istrstream& __rhs)
- {
- istream::swap(__rhs);
- __sb_.swap(__rhs.__sb_);
- }
-
- _LIBCPP_INLINE_VISIBILITY
- strstreambuf* rdbuf() const {return const_cast<strstreambuf*>(&__sb_);}
- _LIBCPP_INLINE_VISIBILITY
- char *str() {return __sb_.str();}
-
-private:
- strstreambuf __sb_;
-};
-
-class _LIBCPP_TYPE_VIS ostrstream
- : public ostream
-{
-public:
- _LIBCPP_INLINE_VISIBILITY
- ostrstream()
- : ostream(&__sb_) {}
- _LIBCPP_INLINE_VISIBILITY
- ostrstream(char* __s, int __n, ios_base::openmode __mode = ios_base::out)
- : ostream(&__sb_),
- __sb_(__s, __n, __s + (__mode & ios::app ? _VSTD::strlen(__s) : 0))
- {}
-
-#ifndef _LIBCPP_CXX03_LANG
- _LIBCPP_INLINE_VISIBILITY
- ostrstream(ostrstream&& __rhs)
- : ostream(_VSTD::move(__rhs)),
- __sb_(_VSTD::move(__rhs.__sb_))
- {
- ostream::set_rdbuf(&__sb_);
- }
-
- _LIBCPP_INLINE_VISIBILITY
- ostrstream& operator=(ostrstream&& __rhs)
- {
- ostream::operator=(_VSTD::move(__rhs));
- __sb_ = _VSTD::move(__rhs.__sb_);
- return *this;
- }
-#endif // _LIBCPP_CXX03_LANG
-
- virtual ~ostrstream();
-
- _LIBCPP_INLINE_VISIBILITY
- void swap(ostrstream& __rhs)
- {
- ostream::swap(__rhs);
- __sb_.swap(__rhs.__sb_);
- }
-
- _LIBCPP_INLINE_VISIBILITY
- strstreambuf* rdbuf() const {return const_cast<strstreambuf*>(&__sb_);}
- _LIBCPP_INLINE_VISIBILITY
- void freeze(bool __freezefl = true) {__sb_.freeze(__freezefl);}
- _LIBCPP_INLINE_VISIBILITY
- char* str() {return __sb_.str();}
- _LIBCPP_INLINE_VISIBILITY
- int pcount() const {return __sb_.pcount();}
-
-private:
- strstreambuf __sb_; // exposition only
-};
-
-class _LIBCPP_TYPE_VIS strstream
- : public iostream
-{
-public:
- // Types
- typedef char char_type;
- typedef char_traits<char>::int_type int_type;
- typedef char_traits<char>::pos_type pos_type;
- typedef char_traits<char>::off_type off_type;
-
- // constructors/destructor
- _LIBCPP_INLINE_VISIBILITY
- strstream()
- : iostream(&__sb_) {}
- _LIBCPP_INLINE_VISIBILITY
- strstream(char* __s, int __n, ios_base::openmode __mode = ios_base::in | ios_base::out)
- : iostream(&__sb_),
- __sb_(__s, __n, __s + (__mode & ios::app ? _VSTD::strlen(__s) : 0))
- {}
-
-#ifndef _LIBCPP_CXX03_LANG
- _LIBCPP_INLINE_VISIBILITY
- strstream(strstream&& __rhs)
- : iostream(_VSTD::move(__rhs)),
- __sb_(_VSTD::move(__rhs.__sb_))
- {
- iostream::set_rdbuf(&__sb_);
- }
-
- _LIBCPP_INLINE_VISIBILITY
- strstream& operator=(strstream&& __rhs)
- {
- iostream::operator=(_VSTD::move(__rhs));
- __sb_ = _VSTD::move(__rhs.__sb_);
- return *this;
- }
-#endif // _LIBCPP_CXX03_LANG
-
- virtual ~strstream();
-
- _LIBCPP_INLINE_VISIBILITY
- void swap(strstream& __rhs)
- {
- iostream::swap(__rhs);
- __sb_.swap(__rhs.__sb_);
- }
-
- // Members:
- _LIBCPP_INLINE_VISIBILITY
- strstreambuf* rdbuf() const {return const_cast<strstreambuf*>(&__sb_);}
- _LIBCPP_INLINE_VISIBILITY
- void freeze(bool __freezefl = true) {__sb_.freeze(__freezefl);}
- _LIBCPP_INLINE_VISIBILITY
- int pcount() const {return __sb_.pcount();}
- _LIBCPP_INLINE_VISIBILITY
- char* str() {return __sb_.str();}
-
-private:
- strstreambuf __sb_; // exposition only
-};
-
-_LIBCPP_END_NAMESPACE_STD
-
-#endif // _LIBCPP_STRSTREAM
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef _LIBCPP_STRSTREAM
+#define _LIBCPP_STRSTREAM
+
+/*
+ strstream synopsis
+
+class strstreambuf
+ : public basic_streambuf<char>
+{
+public:
+ explicit strstreambuf(streamsize alsize_arg = 0); // before C++20
+ strstreambuf() : strstreambuf(0) {} // C++20
+ explicit strstreambuf(streamsize alsize_arg); // C++20
+
+ strstreambuf(void* (*palloc_arg)(size_t), void (*pfree_arg)(void*));
+ strstreambuf(char* gnext_arg, streamsize n, char* pbeg_arg = nullptr);
+ strstreambuf(const char* gnext_arg, streamsize n);
+
+ strstreambuf(signed char* gnext_arg, streamsize n, signed char* pbeg_arg = nullptr);
+ strstreambuf(const signed char* gnext_arg, streamsize n);
+ strstreambuf(unsigned char* gnext_arg, streamsize n, unsigned char* pbeg_arg = nullptr);
+ strstreambuf(const unsigned char* gnext_arg, streamsize n);
+
+ strstreambuf(strstreambuf&& rhs);
+ strstreambuf& operator=(strstreambuf&& rhs);
+
+ virtual ~strstreambuf();
+
+ void swap(strstreambuf& rhs);
+
+ void freeze(bool freezefl = true);
+ char* str();
+ int pcount() const;
+
+protected:
+ virtual int_type overflow (int_type c = EOF);
+ virtual int_type pbackfail(int_type c = EOF);
+ virtual int_type underflow();
+ virtual pos_type seekoff(off_type off, ios_base::seekdir way,
+ ios_base::openmode which = ios_base::in | ios_base::out);
+ virtual pos_type seekpos(pos_type sp,
+ ios_base::openmode which = ios_base::in | ios_base::out);
+ virtual streambuf* setbuf(char* s, streamsize n);
+
+private:
+ typedef T1 strstate; // exposition only
+ static const strstate allocated; // exposition only
+ static const strstate constant; // exposition only
+ static const strstate dynamic; // exposition only
+ static const strstate frozen; // exposition only
+ strstate strmode; // exposition only
+ streamsize alsize; // exposition only
+ void* (*palloc)(size_t); // exposition only
+ void (*pfree)(void*); // exposition only
+};
+
+class istrstream
+ : public basic_istream<char>
+{
+public:
+ explicit istrstream(const char* s);
+ explicit istrstream(char* s);
+ istrstream(const char* s, streamsize n);
+ istrstream(char* s, streamsize n);
+
+ virtual ~istrstream();
+
+ strstreambuf* rdbuf() const;
+ char *str();
+
+private:
+ strstreambuf sb; // exposition only
+};
+
+class ostrstream
+ : public basic_ostream<char>
+{
+public:
+ ostrstream();
+ ostrstream(char* s, int n, ios_base::openmode mode = ios_base::out);
+
+ virtual ~ostrstream();
+
+ strstreambuf* rdbuf() const;
+ void freeze(bool freezefl = true);
+ char* str();
+ int pcount() const;
+
+private:
+ strstreambuf sb; // exposition only
+};
+
+class strstream
+ : public basic_iostream<char>
+{
+public:
+ // Types
+ typedef char char_type;
+ typedef char_traits<char>::int_type int_type;
+ typedef char_traits<char>::pos_type pos_type;
+ typedef char_traits<char>::off_type off_type;
+
+ // constructors/destructor
+ strstream();
+ strstream(char* s, int n, ios_base::openmode mode = ios_base::in | ios_base::out);
+
+ virtual ~strstream();
+
+ // Members:
+ strstreambuf* rdbuf() const;
+ void freeze(bool freezefl = true);
+ int pcount() const;
+ char* str();
+
+private:
+ strstreambuf sb; // exposition only
+};
+
+} // std
+
+*/
+
+#include <__config>
+#include <istream>
+#include <ostream>
+
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
+#pragma GCC system_header
+#endif
+
+_LIBCPP_BEGIN_NAMESPACE_STD
+
+class _LIBCPP_TYPE_VIS strstreambuf
+ : public streambuf
+{
+public:
+#ifndef _LIBCPP_CXX03_LANG
+ strstreambuf() : strstreambuf(0) {}
+ explicit strstreambuf(streamsize __alsize);
+#else
+ explicit strstreambuf(streamsize __alsize = 0);
+#endif
+ strstreambuf(void* (*__palloc)(size_t), void (*__pfree)(void*));
+ strstreambuf(char* __gnext, streamsize __n, char* __pbeg = nullptr);
+ strstreambuf(const char* __gnext, streamsize __n);
+
+ strstreambuf(signed char* __gnext, streamsize __n, signed char* __pbeg = nullptr);
+ strstreambuf(const signed char* __gnext, streamsize __n);
+ strstreambuf(unsigned char* __gnext, streamsize __n, unsigned char* __pbeg = nullptr);
+ strstreambuf(const unsigned char* __gnext, streamsize __n);
+
+#ifndef _LIBCPP_CXX03_LANG
+ _LIBCPP_INLINE_VISIBILITY
+ strstreambuf(strstreambuf&& __rhs);
+ _LIBCPP_INLINE_VISIBILITY
+ strstreambuf& operator=(strstreambuf&& __rhs);
+#endif // _LIBCPP_CXX03_LANG
+
+ virtual ~strstreambuf();
+
+ void swap(strstreambuf& __rhs);
+
+ void freeze(bool __freezefl = true);
+ char* str();
+ int pcount() const;
+
+protected:
+ virtual int_type overflow (int_type __c = EOF);
+ virtual int_type pbackfail(int_type __c = EOF);
+ virtual int_type underflow();
+ virtual pos_type seekoff(off_type __off, ios_base::seekdir __way,
+ ios_base::openmode __which = ios_base::in | ios_base::out);
+ virtual pos_type seekpos(pos_type __sp,
+ ios_base::openmode __which = ios_base::in | ios_base::out);
+
+private:
+ typedef unsigned __mode_type;
+ static const __mode_type __allocated = 0x01;
+ static const __mode_type __constant = 0x02;
+ static const __mode_type __dynamic = 0x04;
+ static const __mode_type __frozen = 0x08;
+ static const streamsize __default_alsize = 4096;
+
+ __mode_type __strmode_;
+ streamsize __alsize_;
+ void* (*__palloc_)(size_t);
+ void (*__pfree_)(void*);
+
+ void __init(char* __gnext, streamsize __n, char* __pbeg);
+};
+
+#ifndef _LIBCPP_CXX03_LANG
+
+inline _LIBCPP_INLINE_VISIBILITY
+strstreambuf::strstreambuf(strstreambuf&& __rhs)
+ : streambuf(__rhs),
+ __strmode_(__rhs.__strmode_),
+ __alsize_(__rhs.__alsize_),
+ __palloc_(__rhs.__palloc_),
+ __pfree_(__rhs.__pfree_)
+{
+ __rhs.setg(nullptr, nullptr, nullptr);
+ __rhs.setp(nullptr, nullptr);
+}
+
+inline _LIBCPP_INLINE_VISIBILITY
+strstreambuf&
+strstreambuf::operator=(strstreambuf&& __rhs)
+{
+ if (eback() && (__strmode_ & __allocated) != 0 && (__strmode_ & __frozen) == 0)
+ {
+ if (__pfree_)
+ __pfree_(eback());
+ else
+ delete [] eback();
+ }
+ streambuf::operator=(__rhs);
+ __strmode_ = __rhs.__strmode_;
+ __alsize_ = __rhs.__alsize_;
+ __palloc_ = __rhs.__palloc_;
+ __pfree_ = __rhs.__pfree_;
+ __rhs.setg(nullptr, nullptr, nullptr);
+ __rhs.setp(nullptr, nullptr);
+ return *this;
+}
+
+#endif // _LIBCPP_CXX03_LANG
+
+class _LIBCPP_TYPE_VIS istrstream
+ : public istream
+{
+public:
+ _LIBCPP_INLINE_VISIBILITY
+ explicit istrstream(const char* __s)
+ : istream(&__sb_), __sb_(__s, 0) {}
+ _LIBCPP_INLINE_VISIBILITY
+ explicit istrstream(char* __s)
+ : istream(&__sb_), __sb_(__s, 0) {}
+ _LIBCPP_INLINE_VISIBILITY
+ istrstream(const char* __s, streamsize __n)
+ : istream(&__sb_), __sb_(__s, __n) {}
+ _LIBCPP_INLINE_VISIBILITY
+ istrstream(char* __s, streamsize __n)
+ : istream(&__sb_), __sb_(__s, __n) {}
+
+#ifndef _LIBCPP_CXX03_LANG
+ _LIBCPP_INLINE_VISIBILITY
+ istrstream(istrstream&& __rhs)
+ : istream(_VSTD::move(__rhs)),
+ __sb_(_VSTD::move(__rhs.__sb_))
+ {
+ istream::set_rdbuf(&__sb_);
+ }
+
+ _LIBCPP_INLINE_VISIBILITY
+ istrstream& operator=(istrstream&& __rhs)
+ {
+ istream::operator=(_VSTD::move(__rhs));
+ __sb_ = _VSTD::move(__rhs.__sb_);
+ return *this;
+ }
+#endif // _LIBCPP_CXX03_LANG
+
+ virtual ~istrstream();
+
+ _LIBCPP_INLINE_VISIBILITY
+ void swap(istrstream& __rhs)
+ {
+ istream::swap(__rhs);
+ __sb_.swap(__rhs.__sb_);
+ }
+
+ _LIBCPP_INLINE_VISIBILITY
+ strstreambuf* rdbuf() const {return const_cast<strstreambuf*>(&__sb_);}
+ _LIBCPP_INLINE_VISIBILITY
+ char *str() {return __sb_.str();}
+
+private:
+ strstreambuf __sb_;
+};
+
+class _LIBCPP_TYPE_VIS ostrstream
+ : public ostream
+{
+public:
+ _LIBCPP_INLINE_VISIBILITY
+ ostrstream()
+ : ostream(&__sb_) {}
+ _LIBCPP_INLINE_VISIBILITY
+ ostrstream(char* __s, int __n, ios_base::openmode __mode = ios_base::out)
+ : ostream(&__sb_),
+ __sb_(__s, __n, __s + (__mode & ios::app ? _VSTD::strlen(__s) : 0))
+ {}
+
+#ifndef _LIBCPP_CXX03_LANG
+ _LIBCPP_INLINE_VISIBILITY
+ ostrstream(ostrstream&& __rhs)
+ : ostream(_VSTD::move(__rhs)),
+ __sb_(_VSTD::move(__rhs.__sb_))
+ {
+ ostream::set_rdbuf(&__sb_);
+ }
+
+ _LIBCPP_INLINE_VISIBILITY
+ ostrstream& operator=(ostrstream&& __rhs)
+ {
+ ostream::operator=(_VSTD::move(__rhs));
+ __sb_ = _VSTD::move(__rhs.__sb_);
+ return *this;
+ }
+#endif // _LIBCPP_CXX03_LANG
+
+ virtual ~ostrstream();
+
+ _LIBCPP_INLINE_VISIBILITY
+ void swap(ostrstream& __rhs)
+ {
+ ostream::swap(__rhs);
+ __sb_.swap(__rhs.__sb_);
+ }
+
+ _LIBCPP_INLINE_VISIBILITY
+ strstreambuf* rdbuf() const {return const_cast<strstreambuf*>(&__sb_);}
+ _LIBCPP_INLINE_VISIBILITY
+ void freeze(bool __freezefl = true) {__sb_.freeze(__freezefl);}
+ _LIBCPP_INLINE_VISIBILITY
+ char* str() {return __sb_.str();}
+ _LIBCPP_INLINE_VISIBILITY
+ int pcount() const {return __sb_.pcount();}
+
+private:
+ strstreambuf __sb_; // exposition only
+};
+
+class _LIBCPP_TYPE_VIS strstream
+ : public iostream
+{
+public:
+ // Types
+ typedef char char_type;
+ typedef char_traits<char>::int_type int_type;
+ typedef char_traits<char>::pos_type pos_type;
+ typedef char_traits<char>::off_type off_type;
+
+ // constructors/destructor
+ _LIBCPP_INLINE_VISIBILITY
+ strstream()
+ : iostream(&__sb_) {}
+ _LIBCPP_INLINE_VISIBILITY
+ strstream(char* __s, int __n, ios_base::openmode __mode = ios_base::in | ios_base::out)
+ : iostream(&__sb_),
+ __sb_(__s, __n, __s + (__mode & ios::app ? _VSTD::strlen(__s) : 0))
+ {}
+
+#ifndef _LIBCPP_CXX03_LANG
+ _LIBCPP_INLINE_VISIBILITY
+ strstream(strstream&& __rhs)
+ : iostream(_VSTD::move(__rhs)),
+ __sb_(_VSTD::move(__rhs.__sb_))
+ {
+ iostream::set_rdbuf(&__sb_);
+ }
+
+ _LIBCPP_INLINE_VISIBILITY
+ strstream& operator=(strstream&& __rhs)
+ {
+ iostream::operator=(_VSTD::move(__rhs));
+ __sb_ = _VSTD::move(__rhs.__sb_);
+ return *this;
+ }
+#endif // _LIBCPP_CXX03_LANG
+
+ virtual ~strstream();
+
+ _LIBCPP_INLINE_VISIBILITY
+ void swap(strstream& __rhs)
+ {
+ iostream::swap(__rhs);
+ __sb_.swap(__rhs.__sb_);
+ }
+
+ // Members:
+ _LIBCPP_INLINE_VISIBILITY
+ strstreambuf* rdbuf() const {return const_cast<strstreambuf*>(&__sb_);}
+ _LIBCPP_INLINE_VISIBILITY
+ void freeze(bool __freezefl = true) {__sb_.freeze(__freezefl);}
+ _LIBCPP_INLINE_VISIBILITY
+ int pcount() const {return __sb_.pcount();}
+ _LIBCPP_INLINE_VISIBILITY
+ char* str() {return __sb_.str();}
+
+private:
+ strstreambuf __sb_; // exposition only
+};
+
+_LIBCPP_END_NAMESPACE_STD
+
+#endif // _LIBCPP_STRSTREAM