1// Explicit instantiation file.
2
3// Copyright (C) 2020-2022 Free Software Foundation, Inc.
4//
5// This file is part of the GNU ISO C++ Library.  This library is free
6// software; you can redistribute it and/or modify it under the
7// terms of the GNU General Public License as published by the
8// Free Software Foundation; either version 3, or (at your option)
9// any later version.
10
11// This library is distributed in the hope that it will be useful,
12// but WITHOUT ANY WARRANTY; without even the implied warranty of
13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14// GNU General Public License for more details.
15
16// Under Section 7 of GPL version 3, you are granted additional
17// permissions described in the GCC Runtime Library Exception, version
18// 3.1, as published by the Free Software Foundation.
19
20// You should have received a copy of the GNU General Public License and
21// a copy of the GCC Runtime Library Exception along with this program;
22// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
23// <http://www.gnu.org/licenses/>.
24
25//
26// ISO C++ 14882:
27//
28
29// Instantiations in this file are only for the new SSO std::string ABI.
30#define _GLIBCXX_USE_CXX11_ABI 1
31
32#include <sstream>
33
34#if _GLIBCXX_USE_CXX11_ABI
35namespace std _GLIBCXX_VISIBILITY(default)
36{
37_GLIBCXX_BEGIN_NAMESPACE_VERSION
38
39template basic_stringbuf<char>::basic_stringbuf(const allocator_type&);
40template basic_stringbuf<char>::basic_stringbuf(ios_base::openmode,
41						const allocator_type&);
42template basic_stringbuf<char>::basic_stringbuf(__string_type&&,
43						ios_base::openmode);
44template basic_stringbuf<char>::basic_stringbuf(basic_stringbuf&&,
45						const allocator_type&);
46template basic_stringbuf<char>::basic_stringbuf(basic_stringbuf&&,
47						const allocator_type&,
48						__xfer_bufptrs&&);
49template basic_stringbuf<char>::allocator_type
50basic_stringbuf<char>::get_allocator() const noexcept;
51template string
52basic_stringbuf<char>::str() const &;
53template string
54basic_stringbuf<char>::str() &&;
55template string_view
56basic_stringbuf<char>::view() const noexcept;
57template void
58basic_stringbuf<char>::str(string&&);
59
60template basic_istringstream<char>::basic_istringstream(ios_base::openmode,
61							const allocator_type&);
62template basic_istringstream<char>::basic_istringstream(__string_type&&,
63							ios_base::openmode);
64template string
65basic_istringstream<char>::str() const &;
66template string
67basic_istringstream<char>::str() &&;
68template string_view
69basic_istringstream<char>::view() const noexcept;
70template void
71basic_istringstream<char>::str(string&&);
72
73template basic_ostringstream<char>::basic_ostringstream(ios_base::openmode,
74							const allocator_type&);
75template basic_ostringstream<char>::basic_ostringstream(__string_type&&,
76							ios_base::openmode);
77template string
78basic_ostringstream<char>::str() const &;
79template string
80basic_ostringstream<char>::str() &&;
81template string_view
82basic_ostringstream<char>::view() const noexcept;
83template void
84basic_ostringstream<char>::str(string&&);
85
86template basic_stringstream<char>::basic_stringstream(ios_base::openmode,
87						      const allocator_type&);
88template basic_stringstream<char>::basic_stringstream(__string_type&&,
89						      ios_base::openmode);
90template string
91basic_stringstream<char>::str() const &;
92template string
93basic_stringstream<char>::str() &&;
94template string_view
95basic_stringstream<char>::view() const noexcept;
96template void
97basic_stringstream<char>::str(string&&);
98
99#ifdef _GLIBCXX_USE_WCHAR_T
100template basic_stringbuf<wchar_t>::basic_stringbuf(const allocator_type&);
101template basic_stringbuf<wchar_t>::basic_stringbuf(ios_base::openmode,
102						   const allocator_type&);
103template basic_stringbuf<wchar_t>::basic_stringbuf(__string_type&&,
104						   ios_base::openmode);
105template basic_stringbuf<wchar_t>::basic_stringbuf(basic_stringbuf&&,
106						   const allocator_type&);
107template basic_stringbuf<wchar_t>::basic_stringbuf(basic_stringbuf&&,
108						   const allocator_type&,
109						   __xfer_bufptrs&&);
110template basic_stringbuf<wchar_t>::allocator_type
111basic_stringbuf<wchar_t>::get_allocator() const noexcept;
112
113template wstring
114basic_stringbuf<wchar_t>::str() const &;
115template wstring
116basic_stringbuf<wchar_t>::str() &&;
117template wstring_view
118basic_stringbuf<wchar_t>::view() const noexcept;
119template void
120basic_stringbuf<wchar_t>::str(wstring&&);
121
122template basic_istringstream<wchar_t>::basic_istringstream(ios_base::openmode,
123							   const allocator_type&);
124template basic_istringstream<wchar_t>::basic_istringstream(__string_type&&,
125							   ios_base::openmode);
126template wstring
127basic_istringstream<wchar_t>::str() const &;
128template wstring
129basic_istringstream<wchar_t>::str() &&;
130template wstring_view
131basic_istringstream<wchar_t>::view() const noexcept;
132template void
133basic_istringstream<wchar_t>::str(wstring&&);
134
135template basic_ostringstream<wchar_t>::basic_ostringstream(ios_base::openmode,
136							   const allocator_type&);
137template basic_ostringstream<wchar_t>::basic_ostringstream(__string_type&&,
138							   ios_base::openmode);
139template wstring
140basic_ostringstream<wchar_t>::str() const &;
141template wstring
142basic_ostringstream<wchar_t>::str() &&;
143template wstring_view
144basic_ostringstream<wchar_t>::view() const noexcept;
145template void
146basic_ostringstream<wchar_t>::str(wstring&&);
147
148template basic_stringstream<wchar_t>::basic_stringstream(ios_base::openmode,
149							 const allocator_type&);
150template basic_stringstream<wchar_t>::basic_stringstream(__string_type&&,
151							 ios_base::openmode);
152template wstring
153basic_stringstream<wchar_t>::str() const &;
154template wstring
155basic_stringstream<wchar_t>::str() &&;
156template wstring_view
157basic_stringstream<wchar_t>::view() const noexcept;
158template void
159basic_stringstream<wchar_t>::str(wstring&&);
160#endif
161
162_GLIBCXX_END_NAMESPACE_VERSION
163}
164
165#endif //_GLIBCXX_USE_CXX11_ABI
166