Effort to reduce the number of exported symbols

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@122057 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/string b/include/string
index 3056a6b..92f0ed1 100644
--- a/include/string
+++ b/include/string
@@ -1028,33 +1028,43 @@
 public:
     static const size_type npos = -1;
 
-    basic_string();
-    explicit basic_string(const allocator_type& __a);
+    _LIBCPP_INLINE_VISIBILITY basic_string();
+    _LIBCPP_INLINE_VISIBILITY explicit basic_string(const allocator_type& __a);
     basic_string(const basic_string& __str);
     basic_string(const basic_string& __str, const allocator_type& __a);
 #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
     basic_string(basic_string&& __str);
     basic_string(basic_string&& __str, const allocator_type& __a);
 #endif  // _LIBCPP_HAS_NO_RVALUE_REFERENCES
-    basic_string(const_pointer __s);
+    _LIBCPP_INLINE_VISIBILITY basic_string(const_pointer __s);
+    _LIBCPP_INLINE_VISIBILITY
     basic_string(const_pointer __s, const allocator_type& __a);
+    _LIBCPP_INLINE_VISIBILITY
     basic_string(const_pointer __s, size_type __n);
+    _LIBCPP_INLINE_VISIBILITY
     basic_string(const_pointer __s, size_type __n, const allocator_type& __a);
+    _LIBCPP_INLINE_VISIBILITY
     basic_string(size_type __n, value_type __c);
+    _LIBCPP_INLINE_VISIBILITY
     basic_string(size_type __n, value_type __c, const allocator_type& __a);
     basic_string(const basic_string& __str, size_type __pos, size_type __n = npos,
                  const allocator_type& __a = allocator_type());
     template<class _InputIterator>
+        _LIBCPP_INLINE_VISIBILITY
         basic_string(_InputIterator __first, _InputIterator __last);
     template<class _InputIterator>
+        _LIBCPP_INLINE_VISIBILITY
         basic_string(_InputIterator __first, _InputIterator __last, const allocator_type& __a);
+    _LIBCPP_INLINE_VISIBILITY
     basic_string(initializer_list<value_type> __il);
+    _LIBCPP_INLINE_VISIBILITY
     basic_string(initializer_list<value_type> __il, const allocator_type& __a);
 
     ~basic_string();
 
     basic_string& operator=(const basic_string& __str);
 #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
+    _LIBCPP_INLINE_VISIBILITY
     basic_string& operator=(basic_string&& __str);
 #endif
     _LIBCPP_INLINE_VISIBILITY basic_string& operator=(const_pointer __s)         {return assign(__s);}
@@ -1086,7 +1096,7 @@
     _LIBCPP_INLINE_VISIBILITY size_type size() const
         {return __is_long() ? __get_long_size() : __get_short_size();}
     _LIBCPP_INLINE_VISIBILITY size_type length() const {return size();}
-    size_type max_size() const;
+    _LIBCPP_INLINE_VISIBILITY size_type max_size() const;
     _LIBCPP_INLINE_VISIBILITY size_type capacity() const
         {return (__is_long() ? __get_long_cap() : __min_cap) - 1;}
 
@@ -1096,6 +1106,7 @@
     void reserve(size_type res_arg = 0);
     _LIBCPP_INLINE_VISIBILITY
     void shrink_to_fit() {reserve();}
+    _LIBCPP_INLINE_VISIBILITY
     void clear();
     _LIBCPP_INLINE_VISIBILITY bool empty() const {return size() == 0;}
 
@@ -1110,6 +1121,7 @@
     _LIBCPP_INLINE_VISIBILITY basic_string& operator+=(value_type __c)            {push_back(__c); return *this;}
     _LIBCPP_INLINE_VISIBILITY basic_string& operator+=(initializer_list<value_type> __il) {return append(__il);}
 
+    _LIBCPP_INLINE_VISIBILITY
     basic_string& append(const basic_string& __str);
     basic_string& append(const basic_string& __str, size_type __pos, size_type __n);
     basic_string& append(const_pointer __s, size_type __n);
@@ -1134,12 +1146,14 @@
     basic_string& append(initializer_list<value_type> __il) {return append(__il.begin(), __il.size());}
 
     void push_back(value_type __c);
+    _LIBCPP_INLINE_VISIBILITY
     void pop_back();
-    reference       front();
-    const_reference front() const;
-    reference       back();
-    const_reference back() const;
+    _LIBCPP_INLINE_VISIBILITY reference       front();
+    _LIBCPP_INLINE_VISIBILITY const_reference front() const;
+    _LIBCPP_INLINE_VISIBILITY reference       back();
+    _LIBCPP_INLINE_VISIBILITY const_reference back() const;
 
+    _LIBCPP_INLINE_VISIBILITY
     basic_string& assign(const basic_string& __str);
     basic_string& assign(const basic_string& __str, size_type __pos, size_type __n);
     basic_string& assign(const_pointer __s, size_type __n);
@@ -1163,12 +1177,14 @@
     _LIBCPP_INLINE_VISIBILITY
     basic_string& assign(initializer_list<value_type> __il) {return assign(__il.begin(), __il.size());}
 
+    _LIBCPP_INLINE_VISIBILITY
     basic_string& insert(size_type __pos1, const basic_string& __str);
     basic_string& insert(size_type __pos1, const basic_string& __str, size_type __pos2, size_type __n);
     basic_string& insert(size_type __pos, const_pointer __s, size_type __n);
     basic_string& insert(size_type __pos, const_pointer __s);
     basic_string& insert(size_type __pos, size_type __n, value_type __c);
     iterator      insert(const_iterator __pos, value_type __c);
+    _LIBCPP_INLINE_VISIBILITY
     iterator      insert(const_iterator __pos, size_type __n, value_type __c);
     template<class _InputIterator>
         typename enable_if
@@ -1190,17 +1206,24 @@
                     {return insert(__pos, __il.begin(), __il.end());}
 
     basic_string& erase(size_type __pos = 0, size_type __n = npos);
+    _LIBCPP_INLINE_VISIBILITY
     iterator      erase(const_iterator __pos);
+    _LIBCPP_INLINE_VISIBILITY
     iterator      erase(const_iterator __first, const_iterator __last);
 
+    _LIBCPP_INLINE_VISIBILITY
     basic_string& replace(size_type __pos1, size_type __n1, const basic_string& __str);
     basic_string& replace(size_type __pos1, size_type __n1, const basic_string& __str, size_type __pos2, size_type __n2);
     basic_string& replace(size_type __pos, size_type __n1, const_pointer __s, size_type __n2);
     basic_string& replace(size_type __pos, size_type __n1, const_pointer __s);
     basic_string& replace(size_type __pos, size_type __n1, size_type __n2, value_type __c);
+    _LIBCPP_INLINE_VISIBILITY
     basic_string& replace(const_iterator __i1, const_iterator __i2, const basic_string& __str);
+    _LIBCPP_INLINE_VISIBILITY
     basic_string& replace(const_iterator __i1, const_iterator __i2, const_pointer __s, size_type __n);
+    _LIBCPP_INLINE_VISIBILITY
     basic_string& replace(const_iterator __i1, const_iterator __i2, const_pointer __s);
+    _LIBCPP_INLINE_VISIBILITY
     basic_string& replace(const_iterator __i1, const_iterator __i2, size_type __n, value_type __c);
     template<class _InputIterator>
         typename enable_if
@@ -1214,8 +1237,10 @@
         {return replace(__i1, __i2, __il.begin(), __il.end());}
 
     size_type copy(pointer __s, size_type __n, size_type __pos = 0) const;
+    _LIBCPP_INLINE_VISIBILITY
     basic_string substr(size_type __pos = 0, size_type __n = npos) const;
 
+    _LIBCPP_INLINE_VISIBILITY
     void swap(basic_string& __str);
 
     _LIBCPP_INLINE_VISIBILITY const_pointer c_str() const {return data();}
@@ -1223,44 +1248,62 @@
 
     _LIBCPP_INLINE_VISIBILITY allocator_type get_allocator() const {return __alloc();}
 
+    _LIBCPP_INLINE_VISIBILITY
     size_type find(const basic_string& __str, size_type __pos = 0) const;
     size_type find(const_pointer __s, size_type __pos, size_type __n) const;
+    _LIBCPP_INLINE_VISIBILITY
     size_type find(const_pointer __s, size_type __pos = 0) const;
     size_type find(value_type __c, size_type __pos = 0) const;
 
+    _LIBCPP_INLINE_VISIBILITY
     size_type rfind(const basic_string& __str, size_type __pos = npos) const;
     size_type rfind(const_pointer __s, size_type __pos, size_type __n) const;
+    _LIBCPP_INLINE_VISIBILITY
     size_type rfind(const_pointer __s, size_type __pos = npos) const;
     size_type rfind(value_type __c, size_type __pos = npos) const;
 
+    _LIBCPP_INLINE_VISIBILITY
     size_type find_first_of(const basic_string& __str, size_type __pos = 0) const;
     size_type find_first_of(const_pointer __s, size_type __pos, size_type __n) const;
+    _LIBCPP_INLINE_VISIBILITY
     size_type find_first_of(const_pointer __s, size_type __pos = 0) const;
+    _LIBCPP_INLINE_VISIBILITY
     size_type find_first_of(value_type __c, size_type __pos = 0) const;
 
+    _LIBCPP_INLINE_VISIBILITY
     size_type find_last_of(const basic_string& __str, size_type __pos = npos) const;
     size_type find_last_of(const_pointer __s, size_type __pos, size_type __n) const;
+    _LIBCPP_INLINE_VISIBILITY
     size_type find_last_of(const_pointer __s, size_type __pos = npos) const;
+    _LIBCPP_INLINE_VISIBILITY
     size_type find_last_of(value_type __c, size_type __pos = npos) const;
 
+    _LIBCPP_INLINE_VISIBILITY
     size_type find_first_not_of(const basic_string& __str, size_type __pos = 0) const;
     size_type find_first_not_of(const_pointer __s, size_type __pos, size_type __n) const;
+    _LIBCPP_INLINE_VISIBILITY
     size_type find_first_not_of(const_pointer __s, size_type __pos = 0) const;
+    _LIBCPP_INLINE_VISIBILITY
     size_type find_first_not_of(value_type __c, size_type __pos = 0) const;
 
+    _LIBCPP_INLINE_VISIBILITY
     size_type find_last_not_of(const basic_string& __str, size_type __pos = npos) const;
     size_type find_last_not_of(const_pointer __s, size_type __pos, size_type __n) const;
+    _LIBCPP_INLINE_VISIBILITY
     size_type find_last_not_of(const_pointer __s, size_type __pos = npos) const;
+    _LIBCPP_INLINE_VISIBILITY
     size_type find_last_not_of(value_type __c, size_type __pos = npos) const;
 
+    _LIBCPP_INLINE_VISIBILITY
     int compare(const basic_string& __str) const;
+    _LIBCPP_INLINE_VISIBILITY
     int compare(size_type __pos1, size_type __n1, const basic_string& __str) const;
     int compare(size_type __pos1, size_type __n1, const basic_string& __str, size_type __pos2, size_type __n2) const;
     int compare(const_pointer __s) const;
     int compare(size_type __pos1, size_type __n1, const_pointer __s) const;
     int compare(size_type __pos1, size_type __n1, const_pointer __s, size_type __n2) const;
 
-    bool __invariants() const;
+    _LIBCPP_INLINE_VISIBILITY bool __invariants() const;
 private:
     _LIBCPP_INLINE_VISIBILITY allocator_type&       __alloc()       {return __r_.second();}
     _LIBCPP_INLINE_VISIBILITY const allocator_type& __alloc() const {return __r_.second();}
@@ -1338,6 +1381,7 @@
                                size_type __n_copy,  size_type __n_del,
                                size_type __n_add, const_pointer __p_new_stuff);
 
+    _LIBCPP_INLINE_VISIBILITY
     void __erase_to_end(size_type __pos);
 
     _LIBCPP_INLINE_VISIBILITY
@@ -1361,7 +1405,9 @@
         {}
 
 #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
+    _LIBCPP_INLINE_VISIBILITY
     void __move_assign(basic_string& __str, false_type);
+    _LIBCPP_INLINE_VISIBILITY
     void __move_assign(basic_string& __str, true_type);
 #endif
 
@@ -1380,8 +1426,8 @@
     static void __swap_alloc(allocator_type& __x, allocator_type& __y, false_type)
         {}
 
-    void __invalidate_all_iterators();
-    void __invalidate_iterators_past(size_type);
+    _LIBCPP_INLINE_VISIBILITY void __invalidate_all_iterators();
+    _LIBCPP_INLINE_VISIBILITY void __invalidate_iterators_past(size_type);
 
     friend basic_string operator+<>(const basic_string&, const basic_string&);
     friend basic_string operator+<>(const value_type*, const basic_string&);
@@ -1741,7 +1787,6 @@
 }
 
 template <class _CharT, class _Traits, class _Allocator>
-_LIBCPP_INLINE_VISIBILITY inline
 basic_string<_CharT, _Traits, _Allocator>::~basic_string()
 {
     __invalidate_all_iterators();
@@ -3204,6 +3249,7 @@
 // __invariants
 
 template<class _CharT, class _Traits, class _Allocator>
+_LIBCPP_INLINE_VISIBILITY inline
 bool
 basic_string<_CharT, _Traits, _Allocator>::__invariants() const
 {