From 68a8e90b3dab67d60763c2938146a39156e070a3 Mon Sep 17 00:00:00 2001 From: Howard Hinnant Date: Wed, 22 Sep 2010 15:29:08 +0000 Subject: [PATCH] visibility-decoration. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@114545 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/initializer_list | 2 +- include/iomanip | 21 +++++++++++++++++++++ include/ios | 20 +++++++++++++------- include/istream | 14 ++++++++------ 4 files changed, 43 insertions(+), 14 deletions(-) diff --git a/include/initializer_list b/include/initializer_list index 671aa271..16ffccc1 100644 --- a/include/initializer_list +++ b/include/initializer_list @@ -52,7 +52,7 @@ namespace std // purposefully not versioned { template -class initializer_list +class _LIBCPP_VISIBLE initializer_list { const _E* __begin_; size_t __size_; diff --git a/include/iomanip b/include/iomanip index 3efce132..020180fc 100644 --- a/include/iomanip +++ b/include/iomanip @@ -43,10 +43,12 @@ class __iom_t1 { ios_base::fmtflags __mask_; public: + _LIBCPP_INLINE_VISIBILITY explicit __iom_t1(ios_base::fmtflags __m) : __mask_(__m) {} template friend + _LIBCPP_INLINE_VISIBILITY basic_istream<_CharT, _Traits>& operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t1& __x) { @@ -56,6 +58,7 @@ public: template friend + _LIBCPP_INLINE_VISIBILITY basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t1& __x) { @@ -77,10 +80,12 @@ class __iom_t2 { ios_base::fmtflags __mask_; public: + _LIBCPP_INLINE_VISIBILITY explicit __iom_t2(ios_base::fmtflags __m) : __mask_(__m) {} template friend + _LIBCPP_INLINE_VISIBILITY basic_istream<_CharT, _Traits>& operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t2& __x) { @@ -90,6 +95,7 @@ public: template friend + _LIBCPP_INLINE_VISIBILITY basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t2& __x) { @@ -111,10 +117,12 @@ class __iom_t3 { int __base_; public: + _LIBCPP_INLINE_VISIBILITY explicit __iom_t3(int __b) : __base_(__b) {} template friend + _LIBCPP_INLINE_VISIBILITY basic_istream<_CharT, _Traits>& operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t3& __x) { @@ -127,6 +135,7 @@ public: template friend + _LIBCPP_INLINE_VISIBILITY basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t3& __x) { @@ -152,10 +161,12 @@ class __iom_t4 { _CharT __fill_; public: + _LIBCPP_INLINE_VISIBILITY explicit __iom_t4(_CharT __c) : __fill_(__c) {} template friend + _LIBCPP_INLINE_VISIBILITY basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t4& __x) { @@ -178,10 +189,12 @@ class __iom_t5 { int __n_; public: + _LIBCPP_INLINE_VISIBILITY explicit __iom_t5(int __n) : __n_(__n) {} template friend + _LIBCPP_INLINE_VISIBILITY basic_istream<_CharT, _Traits>& operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t5& __x) { @@ -191,6 +204,7 @@ public: template friend + _LIBCPP_INLINE_VISIBILITY basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t5& __x) { @@ -212,10 +226,12 @@ class __iom_t6 { int __n_; public: + _LIBCPP_INLINE_VISIBILITY explicit __iom_t6(int __n) : __n_(__n) {} template friend + _LIBCPP_INLINE_VISIBILITY basic_istream<_CharT, _Traits>& operator>>(basic_istream<_CharT, _Traits>& __is, const __iom_t6& __x) { @@ -225,6 +241,7 @@ public: template friend + _LIBCPP_INLINE_VISIBILITY basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t6& __x) { @@ -254,6 +271,7 @@ class __iom_t7 _MoneyT& __mon_; bool __intl_; public: + _LIBCPP_INLINE_VISIBILITY __iom_t7(_MoneyT& __mon, bool __intl) : __mon_(__mon), __intl_(__intl) {} @@ -313,6 +331,7 @@ class __iom_t8 const _MoneyT& __mon_; bool __intl_; public: + _LIBCPP_INLINE_VISIBILITY __iom_t8(const _MoneyT& __mon, bool __intl) : __mon_(__mon), __intl_(__intl) {} @@ -371,6 +390,7 @@ class __iom_t9 tm* __tm_; const _CharT* __fmt_; public: + _LIBCPP_INLINE_VISIBILITY __iom_t9(tm* __tm, const _CharT* __fmt) : __tm_(__tm), __fmt_(__fmt) {} @@ -431,6 +451,7 @@ class __iom_t10 const tm* __tm_; const _CharT* __fmt_; public: + _LIBCPP_INLINE_VISIBILITY __iom_t10(const tm* __tm, const _CharT* __fmt) : __tm_(__tm), __fmt_(__fmt) {} diff --git a/include/ios b/include/ios index 561c3511..76439ac2 100644 --- a/include/ios +++ b/include/ios @@ -222,7 +222,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD typedef ptrdiff_t streamsize; -class ios_base +class _LIBCPP_VISIBLE ios_base { public: class failure; @@ -323,6 +323,7 @@ public: void __set_failbit_and_consider_rethrow(); protected: + _LIBCPP_INLINE_VISIBILITY ios_base() {// purposefully does no initialization } @@ -370,7 +371,7 @@ private: }; //enum class io_errc -struct io_errc +struct _LIBCPP_VISIBLE io_errc { enum _ { stream = 1 @@ -381,9 +382,12 @@ enum _ { _LIBCPP_ALWAYS_INLINE operator int() const {return __v_;} }; -template <> struct is_error_code_enum : public true_type { }; -template <> struct is_error_code_enum : public true_type { }; +template <> +struct _LIBCPP_VISIBLE is_error_code_enum : public true_type { }; +template <> +struct _LIBCPP_VISIBLE is_error_code_enum : public true_type { }; +_LIBCPP_VISIBLE const error_category& iostream_category(); inline _LIBCPP_INLINE_VISIBILITY @@ -400,7 +404,7 @@ make_error_condition(io_errc __e) return error_condition(static_cast(__e), iostream_category()); } -class ios_base::failure +class _LIBCPP_EXCEPTION_ABI ios_base::failure : public system_error { public: @@ -409,7 +413,7 @@ public: virtual ~failure() throw(); }; -class ios_base::Init +class _LIBCPP_VISIBLE ios_base::Init { public: Init(); @@ -556,7 +560,7 @@ ios_base::exceptions(iostate __except) } template -class basic_ios +class _LIBCPP_VISIBLE basic_ios : public ios_base { public: @@ -604,12 +608,14 @@ public: char_type widen(char __c) const; protected: + _LIBCPP_ALWAYS_INLINE basic_ios() {// purposefully does no initialization } void init(basic_streambuf* __sb); void move(basic_ios& __rhs); #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES + _LIBCPP_ALWAYS_INLINE void move(basic_ios&& __rhs) {move(__rhs);} #endif void swap(basic_ios& __rhs); diff --git a/include/istream b/include/istream index d71ec55a..b96b6a36 100644 --- a/include/istream +++ b/include/istream @@ -160,7 +160,7 @@ template _LIBCPP_BEGIN_NAMESPACE_STD template -class basic_istream +class _LIBCPP_VISIBLE basic_istream : virtual public basic_ios<_CharT, _Traits> { streamsize __gc_; @@ -211,6 +211,7 @@ public: basic_istream& operator>>(void*& __p); // 27.7.1.3 Unformatted input: + _LIBCPP_INLINE_VISIBILITY streamsize gcount() const {return __gc_;} int_type get(); basic_istream& get(char_type& __c); @@ -237,7 +238,7 @@ public: }; template -class basic_istream<_CharT, _Traits>::sentry +class _LIBCPP_VISIBLE basic_istream<_CharT, _Traits>::sentry { bool __ok_; @@ -248,6 +249,7 @@ public: explicit sentry(basic_istream<_CharT, _Traits>& __is, bool __noskipws = false); // ~sentry() = default; + _LIBCPP_INLINE_VISIBILITY // explicit operator bool() const {return __ok_;} }; @@ -1477,7 +1479,7 @@ operator>>(basic_istream<_CharT, _Traits>&& __is, _Tp& __x) #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES template -class basic_iostream +class _LIBCPP_VISIBLE basic_iostream : public basic_istream<_CharT, _Traits>, public basic_ostream<_CharT, _Traits> { @@ -1647,7 +1649,7 @@ getline(basic_istream<_CharT, _Traits>& __is, } template -inline +inline _LIBCPP_INLINE_VISIBILITY basic_istream<_CharT, _Traits>& getline(basic_istream<_CharT, _Traits>& __is, basic_string<_CharT, _Traits, _Allocator>& __str) @@ -1658,7 +1660,7 @@ getline(basic_istream<_CharT, _Traits>& __is, #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES template -inline +inline _LIBCPP_INLINE_VISIBILITY basic_istream<_CharT, _Traits>& getline(basic_istream<_CharT, _Traits>&& __is, basic_string<_CharT, _Traits, _Allocator>& __str, _CharT __dlm) @@ -1667,7 +1669,7 @@ getline(basic_istream<_CharT, _Traits>&& __is, } template -inline +inline _LIBCPP_INLINE_VISIBILITY basic_istream<_CharT, _Traits>& getline(basic_istream<_CharT, _Traits>&& __is, basic_string<_CharT, _Traits, _Allocator>& __str)