Skip to content

Commit 9275c09

Browse files
committed
test _LIBCPP_HIDE_FROM_ABI on sentry methods
1 parent 47f81a8 commit 9275c09

File tree

2 files changed

+38
-47
lines changed

2 files changed

+38
-47
lines changed

libcxx/include/__ostream/basic_ostream.h

Lines changed: 19 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -186,37 +186,31 @@ class basic_ostream<_CharT, _Traits>::sentry {
186186
basic_ostream<_CharT, _Traits>& __os_;
187187

188188
public:
189-
explicit sentry(basic_ostream<_CharT, _Traits>& __os);
190-
~sentry();
191-
sentry(const sentry&) = delete;
192-
sentry& operator=(const sentry&) = delete;
193-
194-
_LIBCPP_HIDE_FROM_ABI explicit operator bool() const { return __ok_; }
195-
};
196-
197-
template <class _CharT, class _Traits>
198-
basic_ostream<_CharT, _Traits>::sentry::sentry(basic_ostream<_CharT, _Traits>& __os) : __ok_(false), __os_(__os) {
199-
if (__os.good()) {
200-
if (__os.tie())
201-
__os.tie()->flush();
202-
__ok_ = true;
189+
_LIBCPP_HIDE_FROM_ABI explicit sentry(basic_ostream<_CharT, _Traits>& __os) : __ok_(false), __os_(__os) {
190+
if (__os.good()) {
191+
if (__os.tie())
192+
__os.tie()->flush();
193+
__ok_ = true;
194+
}
203195
}
204-
}
205-
206-
template <class _CharT, class _Traits>
207-
basic_ostream<_CharT, _Traits>::sentry::~sentry() {
208-
if (__os_.rdbuf() && __os_.good() && (__os_.flags() & ios_base::unitbuf) && uncaught_exceptions() == 0) {
196+
_LIBCPP_HIDE_FROM_ABI ~sentry() {
197+
if (__os_.rdbuf() && __os_.good() && (__os_.flags() & ios_base::unitbuf) && uncaught_exceptions() == 0) {
209198
# if _LIBCPP_HAS_EXCEPTIONS
210-
try {
199+
try {
211200
# endif // _LIBCPP_HAS_EXCEPTIONS
212-
if (__os_.rdbuf()->pubsync() == -1)
213-
__os_.setstate(ios_base::badbit);
201+
if (__os_.rdbuf()->pubsync() == -1)
202+
__os_.setstate(ios_base::badbit);
214203
# if _LIBCPP_HAS_EXCEPTIONS
215-
} catch (...) {
216-
}
204+
} catch (...) {
205+
}
217206
# endif // _LIBCPP_HAS_EXCEPTIONS
207+
}
218208
}
219-
}
209+
_LIBCPP_HIDE_FROM_ABI sentry(const sentry&) = delete;
210+
_LIBCPP_HIDE_FROM_ABI sentry& operator=(const sentry&) = delete;
211+
212+
_LIBCPP_HIDE_FROM_ABI explicit operator bool() const { return __ok_; }
213+
};
220214

221215
template <class _CharT, class _Traits>
222216
basic_ostream<_CharT, _Traits>::basic_ostream(basic_ostream&& __rhs) {

libcxx/include/istream

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,25 @@ class basic_istream<_CharT, _Traits>::sentry {
309309
bool __ok_;
310310

311311
public:
312-
explicit sentry(basic_istream<_CharT, _Traits>& __is, bool __noskipws = false);
312+
_LIBCPP_HIDE_FROM_ABI explicit sentry(basic_istream<_CharT, _Traits>& __is, bool __noskipws = false) : __ok_(false) {
313+
if (__is.good()) {
314+
if (__is.tie())
315+
__is.tie()->flush();
316+
if (!__noskipws && (__is.flags() & ios_base::skipws)) {
317+
typedef istreambuf_iterator<_CharT, _Traits> _Ip;
318+
const ctype<_CharT>& __ct = std::use_facet<ctype<_CharT> >(__is.getloc());
319+
_Ip __i(__is);
320+
_Ip __eof;
321+
for (; __i != __eof; ++__i)
322+
if (!__ct.is(__ct.space, *__i))
323+
break;
324+
if (__i == __eof)
325+
__is.setstate(ios_base::failbit | ios_base::eofbit);
326+
}
327+
__ok_ = __is.good();
328+
} else
329+
__is.setstate(ios_base::failbit);
330+
}
313331
// ~sentry() = default;
314332

315333
_LIBCPP_HIDE_FROM_ABI explicit operator bool() const { return __ok_; }
@@ -318,27 +336,6 @@ public:
318336
sentry& operator=(const sentry&) = delete;
319337
};
320338

321-
template <class _CharT, class _Traits>
322-
basic_istream<_CharT, _Traits>::sentry::sentry(basic_istream<_CharT, _Traits>& __is, bool __noskipws) : __ok_(false) {
323-
if (__is.good()) {
324-
if (__is.tie())
325-
__is.tie()->flush();
326-
if (!__noskipws && (__is.flags() & ios_base::skipws)) {
327-
typedef istreambuf_iterator<_CharT, _Traits> _Ip;
328-
const ctype<_CharT>& __ct = std::use_facet<ctype<_CharT> >(__is.getloc());
329-
_Ip __i(__is);
330-
_Ip __eof;
331-
for (; __i != __eof; ++__i)
332-
if (!__ct.is(__ct.space, *__i))
333-
break;
334-
if (__i == __eof)
335-
__is.setstate(ios_base::failbit | ios_base::eofbit);
336-
}
337-
__ok_ = __is.good();
338-
} else
339-
__is.setstate(ios_base::failbit);
340-
}
341-
342339
template <class _CharT, class _Traits>
343340
basic_istream<_CharT, _Traits>::basic_istream(basic_istream&& __rhs) : __gc_(__rhs.__gc_) {
344341
__rhs.__gc_ = 0;

0 commit comments

Comments
 (0)