visibility-decoration.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@114486 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/deque b/include/deque
index 94844cb..6a1a552 100644
--- a/include/deque
+++ b/include/deque
@@ -159,7 +159,7 @@
 
 template <class _ValueType, class _Pointer, class _Reference, class _MapPointer,
           class _DiffType, _DiffType _BlockSize>
-class __deque_iterator;
+class _LIBCPP_VISIBLE __deque_iterator;
 
 template <class _RAIter,
           class _V2, class _P2, class _R2, class _M2, class _D2, _D2 _B2>
@@ -251,7 +251,7 @@
 
 template <class _ValueType, class _Pointer, class _Reference, class _MapPointer,
           class _DiffType, _DiffType _BlockSize>
-class __deque_iterator
+class _LIBCPP_VISIBLE __deque_iterator
 {
     typedef _MapPointer __map_iterator;
 public:
@@ -399,9 +399,9 @@
         : __m_iter_(__m), __ptr_(__p) {}
 
     template <class _Tp, class _A> friend class __deque_base;
-    template <class _Tp, class _A> friend class deque;
+    template <class _Tp, class _A> friend class _LIBCPP_VISIBLE deque;
     template <class _V, class _P, class _R, class _MP, class _D, _D>
-        friend class __deque_iterator;
+        friend class _LIBCPP_VISIBLE __deque_iterator;
 
     template <class _RAIter,
               class _V2, class _P2, class _R2, class _M2, class _D2, _D2 _B2>
@@ -941,6 +941,7 @@
 
     bool __invariants() const;
 
+    _LIBCPP_INLINE_VISIBILITY
     void __move_assign(__deque_base& __c)
     {
         __map_ = _STD::move(__c.__map_);
@@ -950,28 +951,35 @@
         __c.__start_ = __c.size() = 0;
     }
 
+    _LIBCPP_INLINE_VISIBILITY
     void __move_assign_alloc(__deque_base& __c)
         {__move_assign_alloc(__c, integral_constant<bool,
                       __alloc_traits::propagate_on_container_move_assignment::value>());}
 
 private:
+    _LIBCPP_INLINE_VISIBILITY
     void __move_assign_alloc(const __deque_base& __c, true_type)
         {
             __alloc() = _STD::move(__c.__alloc());
         }
 
+    _LIBCPP_INLINE_VISIBILITY
     void __move_assign_alloc(const __deque_base& __c, false_type)
         {}
 
+    _LIBCPP_INLINE_VISIBILITY
     static void __swap_alloc(allocator_type& __x, allocator_type& __y)
         {__swap_alloc(__x, __y, integral_constant<bool,
                       __alloc_traits::propagate_on_container_swap::value>());}
 
+    _LIBCPP_INLINE_VISIBILITY
     static void __swap_alloc(allocator_type& __x, allocator_type& __y, true_type)
         {
             using _STD::swap;
             swap(__x, __y);
         }
+
+    _LIBCPP_INLINE_VISIBILITY
     static void __swap_alloc(allocator_type& __x, allocator_type& __y, false_type)
         {}
 };
@@ -1127,7 +1135,7 @@
 }
 
 template <class _Tp, class _Allocator = allocator<_Tp> >
-class deque
+class _LIBCPP_VISIBLE deque
     : private __deque_base<_Tp, _Allocator>
 {
 public:
@@ -1169,6 +1177,7 @@
     deque(initializer_list<value_type> __il, const allocator_type& __a);
 
     deque& operator=(const deque& __c);
+    _LIBCPP_INLINE_VISIBILITY
     deque& operator=(initializer_list<value_type> __il) {assign(__il); return *this;}
 
 #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
@@ -1185,34 +1194,48 @@
         void assign(_RAIter __f, _RAIter __l,
                     typename enable_if<__is_random_access_iterator<_RAIter>::value>::type* = 0);
     void assign(size_type __n, const value_type& __v);
+    _LIBCPP_INLINE_VISIBILITY
     void assign(initializer_list<value_type> __il) {assign(__il.begin(), __il.end());}
 
     allocator_type get_allocator() const;
 
     // iterators:
 
+    _LIBCPP_INLINE_VISIBILITY
     iterator       begin()       {return __base::begin();}
+    _LIBCPP_INLINE_VISIBILITY
     const_iterator begin() const {return __base::begin();}
+    _LIBCPP_INLINE_VISIBILITY
     iterator       end()         {return __base::end();}
+    _LIBCPP_INLINE_VISIBILITY
     const_iterator end()   const {return __base::end();}
 
+    _LIBCPP_INLINE_VISIBILITY
     reverse_iterator       rbegin()       {return       reverse_iterator(__base::end());}
+    _LIBCPP_INLINE_VISIBILITY
     const_reverse_iterator rbegin() const {return const_reverse_iterator(__base::end());}
+    _LIBCPP_INLINE_VISIBILITY
     reverse_iterator       rend()         {return       reverse_iterator(__base::begin());}
+    _LIBCPP_INLINE_VISIBILITY
     const_reverse_iterator rend()   const {return const_reverse_iterator(__base::begin());}
 
+    _LIBCPP_INLINE_VISIBILITY
     const_iterator         cbegin()  const {return __base::begin();}
+    _LIBCPP_INLINE_VISIBILITY
     const_iterator         cend()    const {return __base::end();}
+    _LIBCPP_INLINE_VISIBILITY
     const_reverse_iterator crbegin() const {return const_reverse_iterator(__base::end());}
+    _LIBCPP_INLINE_VISIBILITY
     const_reverse_iterator crend()   const {return const_reverse_iterator(__base::begin());}
 
     // capacity:
     _LIBCPP_INLINE_VISIBILITY size_type size() const {return __base::size();}
+    _LIBCPP_INLINE_VISIBILITY
     size_type max_size() const {return __alloc_traits::max_size(__base::__alloc());}
     void resize(size_type __n);
     void resize(size_type __n, const value_type& __v);
     void shrink_to_fit();
-    bool empty() const {return __base::size() == 0;}
+    _LIBCPP_INLINE_VISIBILITY bool empty() const {return __base::size() == 0;}
 
     // element access:
     reference operator[](size_type __i);
@@ -1246,6 +1269,7 @@
     template <class _BiIter>
         iterator insert (const_iterator __p, _BiIter __f, _BiIter __l,
                          typename enable_if<__is_bidirectional_iterator<_BiIter>::value>::type* = 0);
+    _LIBCPP_INLINE_VISIBILITY
     iterator insert(const_iterator __p, initializer_list<value_type> __il)
         {return insert(__p, __il.begin(), __il.end());}
     void pop_front();
@@ -1256,20 +1280,25 @@
     void swap(deque& __c);
     void clear();
 
+    _LIBCPP_INLINE_VISIBILITY
     bool __invariants() const {return __base::__invariants();}
 private:
+    _LIBCPP_INLINE_VISIBILITY
     static size_type __recommend_blocks(size_type __n)
     {
         return __n / __base::__block_size + (__n % __base::__block_size != 0);
     }
+    _LIBCPP_INLINE_VISIBILITY
     size_type __capacity() const
     {
         return __base::__map_.size() == 0 ? 0 : __base::__map_.size() * __base::__block_size - 1;
     }
+    _LIBCPP_INLINE_VISIBILITY
     size_type __front_spare() const
     {
         return __base::__start_;
     }
+    _LIBCPP_INLINE_VISIBILITY
     size_type __back_spare() const
     {
         return __capacity() - (__base::__start_ + __base::size());
@@ -1298,10 +1327,12 @@
     void __move_construct_backward_and_check(iterator __f, iterator __l,
                                              iterator __r, const_pointer& __vt);
 
+    _LIBCPP_INLINE_VISIBILITY
     void __copy_assign_alloc(const deque& __c)
         {__copy_assign_alloc(__c, integral_constant<bool,
                       __alloc_traits::propagate_on_container_copy_assignment::value>());}
 
+    _LIBCPP_INLINE_VISIBILITY
     void __copy_assign_alloc(const deque& __c, true_type)
         {
             if (__base::__alloc() != __c.__alloc())
@@ -1313,6 +1344,7 @@
             __base::__map_.__alloc() = __c.__map_.__alloc();
         }
 
+    _LIBCPP_INLINE_VISIBILITY
     void __copy_assign_alloc(const deque& __c, false_type)
         {}
 
@@ -1401,14 +1433,14 @@
 #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
 
 template <class _Tp, class _Allocator>
-inline
+inline _LIBCPP_INLINE_VISIBILITY
 deque<_Tp, _Allocator>::deque(deque&& __c)
     : __base(_STD::move(__c))
 {
 }
 
 template <class _Tp, class _Allocator>
-inline
+inline _LIBCPP_INLINE_VISIBILITY
 deque<_Tp, _Allocator>::deque(deque&& __c, const allocator_type& __a)
     : __base(_STD::move(__c), __a)
 {
@@ -1420,7 +1452,7 @@
 }
 
 template <class _Tp, class _Allocator>
-inline
+inline _LIBCPP_INLINE_VISIBILITY
 deque<_Tp, _Allocator>&
 deque<_Tp, _Allocator>::operator=(deque&& __c)
 {
@@ -1501,7 +1533,7 @@
 }
 
 template <class _Tp, class _Allocator>
-inline
+inline _LIBCPP_INLINE_VISIBILITY
 _Allocator
 deque<_Tp, _Allocator>::get_allocator() const
 {
@@ -1560,7 +1592,7 @@
 }
 
 template <class _Tp, class _Allocator>
-inline
+inline _LIBCPP_INLINE_VISIBILITY
 typename deque<_Tp, _Allocator>::reference
 deque<_Tp, _Allocator>::operator[](size_type __i)
 {
@@ -1569,7 +1601,7 @@
 }
 
 template <class _Tp, class _Allocator>
-inline
+inline _LIBCPP_INLINE_VISIBILITY
 typename deque<_Tp, _Allocator>::const_reference
 deque<_Tp, _Allocator>::operator[](size_type __i) const
 {
@@ -1578,7 +1610,7 @@
 }
 
 template <class _Tp, class _Allocator>
-inline
+inline _LIBCPP_INLINE_VISIBILITY
 typename deque<_Tp, _Allocator>::reference
 deque<_Tp, _Allocator>::at(size_type __i)
 {
@@ -1589,7 +1621,7 @@
 }
 
 template <class _Tp, class _Allocator>
-inline
+inline _LIBCPP_INLINE_VISIBILITY
 typename deque<_Tp, _Allocator>::const_reference
 deque<_Tp, _Allocator>::at(size_type __i) const
 {
@@ -1600,7 +1632,7 @@
 }
 
 template <class _Tp, class _Allocator>
-inline
+inline _LIBCPP_INLINE_VISIBILITY
 typename deque<_Tp, _Allocator>::reference
 deque<_Tp, _Allocator>::front()
 {
@@ -1609,7 +1641,7 @@
 }
 
 template <class _Tp, class _Allocator>
-inline
+inline _LIBCPP_INLINE_VISIBILITY
 typename deque<_Tp, _Allocator>::const_reference
 deque<_Tp, _Allocator>::front() const
 {
@@ -1618,7 +1650,7 @@
 }
 
 template <class _Tp, class _Allocator>
-inline
+inline _LIBCPP_INLINE_VISIBILITY
 typename deque<_Tp, _Allocator>::reference
 deque<_Tp, _Allocator>::back()
 {
@@ -1627,7 +1659,7 @@
 }
 
 template <class _Tp, class _Allocator>
-inline
+inline _LIBCPP_INLINE_VISIBILITY
 typename deque<_Tp, _Allocator>::const_reference
 deque<_Tp, _Allocator>::back() const
 {
@@ -2665,7 +2697,7 @@
 }
 
 template <class _Tp, class _Allocator>
-inline
+inline _LIBCPP_INLINE_VISIBILITY
 void
 deque<_Tp, _Allocator>::swap(deque& __c)
 {
@@ -2673,7 +2705,7 @@
 }
 
 template <class _Tp, class _Allocator>
-inline
+inline _LIBCPP_INLINE_VISIBILITY
 void
 deque<_Tp, _Allocator>::clear()
 {