[cfe-commits] [libcxx] r114647 - in /libcxx/trunk/include: ratio regex

Howard Hinnant hhinnant at apple.com
Thu Sep 23 08:13:21 PDT 2010


Author: hhinnant
Date: Thu Sep 23 10:13:20 2010
New Revision: 114647

URL: http://llvm.org/viewvc/llvm-project?rev=114647&view=rev
Log:
visibility-decoration.

Modified:
    libcxx/trunk/include/ratio
    libcxx/trunk/include/regex

Modified: libcxx/trunk/include/ratio
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/ratio?rev=114647&r1=114646&r2=114647&view=diff
==============================================================================
--- libcxx/trunk/include/ratio (original)
+++ libcxx/trunk/include/ratio Thu Sep 23 10:13:20 2010
@@ -220,7 +220,7 @@
 };
 
 template <intmax_t _Num, intmax_t _Den = 1>
-class ratio
+class _LIBCPP_VISIBLE ratio
 {
     static_assert(__static_abs<_Num>::value >= 0, "ratio numerator is out of range");
     static_assert(_Den != 0, "ratio divide by 0");
@@ -260,7 +260,7 @@
 typedef ratio<1000000000000000000LL, 1LL> exa;
 
 template <class _R1, class _R2>
-struct ratio_multiply
+struct _LIBCPP_VISIBLE ratio_multiply
 {
 private:
     static const intmax_t __gcd_n1_d2 = __static_gcd<_R1::num, _R2::den>::value;
@@ -274,7 +274,7 @@
 };
 
 template <class _R1, class _R2>
-struct ratio_divide
+struct _LIBCPP_VISIBLE ratio_divide
 {
 private:
     static const intmax_t __gcd_n1_n2 = __static_gcd<_R1::num, _R2::num>::value;
@@ -288,7 +288,7 @@
 };
 
 template <class _R1, class _R2>
-struct ratio_add
+struct _LIBCPP_VISIBLE ratio_add
 {
 private:
     static const intmax_t __gcd_n1_n2 = __static_gcd<_R1::num, _R2::num>::value;
@@ -310,7 +310,7 @@
 };
 
 template <class _R1, class _R2>
-struct ratio_subtract
+struct _LIBCPP_VISIBLE ratio_subtract
 {
 private:
     static const intmax_t __gcd_n1_n2 = __static_gcd<_R1::num, _R2::num>::value;
@@ -334,11 +334,11 @@
 // ratio_equal
 
 template <class _R1, class _R2>
-struct ratio_equal
+struct _LIBCPP_VISIBLE ratio_equal
     : public integral_constant<bool, _R1::num == _R2::num && _R1::den == _R2::den> {};
 
 template <class _R1, class _R2>
-struct ratio_not_equal
+struct _LIBCPP_VISIBLE ratio_not_equal
     : public integral_constant<bool, !ratio_equal<_R1, _R2>::value> {};
 
 // ratio_less
@@ -397,19 +397,19 @@
 };
 
 template <class _R1, class _R2>
-struct ratio_less
+struct _LIBCPP_VISIBLE ratio_less
     : public integral_constant<bool, __ratio_less<_R1, _R2>::value> {};
 
 template <class _R1, class _R2>
-struct ratio_less_equal
+struct _LIBCPP_VISIBLE ratio_less_equal
     : public integral_constant<bool, !ratio_less<_R2, _R1>::value> {};
 
 template <class _R1, class _R2>
-struct ratio_greater
+struct _LIBCPP_VISIBLE ratio_greater
     : public integral_constant<bool, ratio_less<_R2, _R1>::value> {};
 
 template <class _R1, class _R2>
-struct ratio_greater_equal
+struct _LIBCPP_VISIBLE ratio_greater_equal
     : public integral_constant<bool, !ratio_less<_R1, _R2>::value> {};
 
 template <class _R1, class _R2>

Modified: libcxx/trunk/include/regex
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/regex?rev=114647&r1=114646&r2=114647&view=diff
==============================================================================
--- libcxx/trunk/include/regex (original)
+++ libcxx/trunk/include/regex Thu Sep 23 10:13:20 2010
@@ -717,10 +717,6 @@
 } // std
 */
 
-// temporary!
-#include <sstream>
-#include <cassert>
-
 #include <__config>
 #include <stdexcept>
 #include <__locale>
@@ -755,7 +751,7 @@
     egrep      = 1 << 8
 };
 
-inline
+inline _LIBCPP_INLINE_VISIBILITY
 /*constexpr*/
 syntax_option_type
 operator~(syntax_option_type __x)
@@ -763,7 +759,7 @@
     return syntax_option_type(~int(__x));
 }
 
-inline
+inline _LIBCPP_INLINE_VISIBILITY
 /*constexpr*/
 syntax_option_type
 operator&(syntax_option_type __x, syntax_option_type __y)
@@ -771,7 +767,7 @@
     return syntax_option_type(int(__x) & int(__y));
 }
 
-inline
+inline _LIBCPP_INLINE_VISIBILITY
 /*constexpr*/
 syntax_option_type
 operator|(syntax_option_type __x, syntax_option_type __y)
@@ -779,7 +775,7 @@
     return syntax_option_type(int(__x) | int(__y));
 }
 
-inline
+inline _LIBCPP_INLINE_VISIBILITY
 /*constexpr*/
 syntax_option_type
 operator^(syntax_option_type __x, syntax_option_type __y)
@@ -787,7 +783,7 @@
     return syntax_option_type(int(__x) ^ int(__y));
 }
 
-inline
+inline _LIBCPP_INLINE_VISIBILITY
 /*constexpr*/
 syntax_option_type&
 operator&=(syntax_option_type& __x, syntax_option_type __y)
@@ -796,7 +792,7 @@
     return __x;
 }
 
-inline
+inline _LIBCPP_INLINE_VISIBILITY
 /*constexpr*/
 syntax_option_type&
 operator|=(syntax_option_type& __x, syntax_option_type __y)
@@ -805,7 +801,7 @@
     return __x;
 }
 
-inline
+inline _LIBCPP_INLINE_VISIBILITY
 /*constexpr*/
 syntax_option_type&
 operator^=(syntax_option_type& __x, syntax_option_type __y)
@@ -834,7 +830,7 @@
     __no_update_pos   = 1 << 11
 };
 
-inline
+inline _LIBCPP_INLINE_VISIBILITY
 /*constexpr*/
 match_flag_type
 operator~(match_flag_type __x)
@@ -842,7 +838,7 @@
     return match_flag_type(~int(__x));
 }
 
-inline
+inline _LIBCPP_INLINE_VISIBILITY
 /*constexpr*/
 match_flag_type
 operator&(match_flag_type __x, match_flag_type __y)
@@ -850,7 +846,7 @@
     return match_flag_type(int(__x) & int(__y));
 }
 
-inline
+inline _LIBCPP_INLINE_VISIBILITY
 /*constexpr*/
 match_flag_type
 operator|(match_flag_type __x, match_flag_type __y)
@@ -858,7 +854,7 @@
     return match_flag_type(int(__x) | int(__y));
 }
 
-inline
+inline _LIBCPP_INLINE_VISIBILITY
 /*constexpr*/
 match_flag_type
 operator^(match_flag_type __x, match_flag_type __y)
@@ -866,7 +862,7 @@
     return match_flag_type(int(__x) ^ int(__y));
 }
 
-inline
+inline _LIBCPP_INLINE_VISIBILITY
 /*constexpr*/
 match_flag_type&
 operator&=(match_flag_type& __x, match_flag_type __y)
@@ -875,7 +871,7 @@
     return __x;
 }
 
-inline
+inline _LIBCPP_INLINE_VISIBILITY
 /*constexpr*/
 match_flag_type&
 operator|=(match_flag_type& __x, match_flag_type __y)
@@ -884,7 +880,7 @@
     return __x;
 }
 
-inline
+inline _LIBCPP_INLINE_VISIBILITY
 /*constexpr*/
 match_flag_type&
 operator^=(match_flag_type& __x, match_flag_type __y)
@@ -922,11 +918,12 @@
 public:
     explicit regex_error(regex_constants::error_type __ecode);
     virtual ~regex_error() throw();
+     _LIBCPP_INLINE_VISIBILITY
     regex_constants::error_type code() const {return __code_;}
 };
 
 template <class _CharT>
-struct regex_traits
+struct _LIBCPP_VISIBLE regex_traits
 {
 public:
     typedef _CharT                  char_type;
@@ -943,30 +940,37 @@
 public:
     regex_traits();
 
+    _LIBCPP_INLINE_VISIBILITY
     static size_t length(const char_type* __p)
         {return char_traits<char_type>::length(__p);}
+    _LIBCPP_INLINE_VISIBILITY
     char_type translate(char_type __c) const {return __c;}
     char_type translate_nocase(char_type __c) const;
     template <class _ForwardIterator>
         string_type
         transform(_ForwardIterator __f, _ForwardIterator __l) const;
     template <class _ForwardIterator>
+        _LIBCPP_INLINE_VISIBILITY
         string_type
         transform_primary( _ForwardIterator __f, _ForwardIterator __l) const
             {return __transform_primary(__f, __l, char_type());}
     template <class _ForwardIterator>
+        _LIBCPP_INLINE_VISIBILITY
         string_type
         lookup_collatename(_ForwardIterator __f, _ForwardIterator __l) const
             {return __lookup_collatename(__f, __l, char_type());}
     template <class _ForwardIterator>
+        _LIBCPP_INLINE_VISIBILITY
         char_class_type
         lookup_classname(_ForwardIterator __f, _ForwardIterator __l,
                          bool __icase = false) const
             {return __lookup_classname(__f, __l, __icase, char_type());}
     bool isctype(char_type __c, char_class_type __m) const;
+    _LIBCPP_INLINE_VISIBILITY
     int value(char_type __ch, int __radix) const
         {return __value(__ch, __radix);}
     locale_type imbue(locale_type __l);
+    _LIBCPP_INLINE_VISIBILITY
     locale_type getloc()const {return __loc_;}
 
 private:
@@ -996,6 +1000,7 @@
                            bool __icase, wchar_t) const;
 
     static int __value(unsigned char __ch, int __radix);
+    _LIBCPP_INLINE_VISIBILITY
     int __value(char __ch, int __radix) const
         {return __value(static_cast<unsigned char>(__ch), __radix);}
     int __value(wchar_t __ch, int __radix) const;
@@ -1215,7 +1220,7 @@
 }
 
 template <class _CharT>
-inline
+inline _LIBCPP_INLINE_VISIBILITY
 int
 regex_traits<_CharT>::__value(wchar_t __ch, int __radix) const
 {
@@ -1256,23 +1261,12 @@
     const __node<_CharT>* __node_;
     regex_constants::match_flag_type __flags_;
 
+    _LIBCPP_INLINE_VISIBILITY
     __state()
         : __do_(0), __first_(nullptr), __current_(nullptr), __last_(nullptr),
           __node_(nullptr), __flags_() {}
 };
 
-template <class _CharT>
-ostream&
-operator<<(ostream& os, const __state<_CharT>& c)
-{
-    os << c.__do_;
-    if (c.__node_)
-        os << ", " << c.__node_->speak();
-else
-        os << ", null";
-    return os;
-}
-
 // __node
 
 template <class _CharT>
@@ -1283,13 +1277,15 @@
 public:
     typedef _STD::__state<_CharT> __state;
 
+    _LIBCPP_INLINE_VISIBILITY
     __node() {}
+    _LIBCPP_INLINE_VISIBILITY
     virtual ~__node() {}
 
+    _LIBCPP_INLINE_VISIBILITY
     virtual void __exec(__state&) const {};
+    _LIBCPP_INLINE_VISIBILITY
     virtual void __exec_split(bool, __state&) const {};
-
-    virtual string speak() const {return "__node";}
 };
 
 // __end_state
@@ -1301,11 +1297,10 @@
 public:
     typedef _STD::__state<_CharT> __state;
 
+    _LIBCPP_INLINE_VISIBILITY
     __end_state() {}
 
     virtual void __exec(__state&) const;
-
-    virtual string speak() const {return "end state";}
 };
 
 template <class _CharT>
@@ -1324,10 +1319,13 @@
     __node<_CharT>* __first_;
 
 public:
+    _LIBCPP_INLINE_VISIBILITY
     explicit __has_one_state(__node<_CharT>* __s)
         : __first_(__s) {}
 
+    _LIBCPP_INLINE_VISIBILITY
     __node<_CharT>*  first() const {return __first_;}
+    _LIBCPP_INLINE_VISIBILITY
     __node<_CharT>*& first()       {return __first_;}
 };
 
@@ -1340,6 +1338,7 @@
     typedef __has_one_state<_CharT> base;
 
 public:
+    _LIBCPP_INLINE_VISIBILITY
     explicit __owns_one_state(__node<_CharT>* __s)
         : base(__s) {}
 
@@ -1363,12 +1362,11 @@
 public:
     typedef _STD::__state<_CharT> __state;
 
+    _LIBCPP_INLINE_VISIBILITY
     explicit __empty_state(__node<_CharT>* __s)
         : base(__s) {}
 
     virtual void __exec(__state&) const;
-
-    virtual string speak() const {return "empty state";}
 };
 
 template <class _CharT>
@@ -1390,12 +1388,11 @@
 public:
     typedef _STD::__state<_CharT> __state;
 
+    _LIBCPP_INLINE_VISIBILITY
     explicit __empty_non_own_state(__node<_CharT>* __s)
         : base(__s) {}
 
     virtual void __exec(__state&) const;
-
-    virtual string speak() const {return "empty non-owning state";}
 };
 
 template <class _CharT>
@@ -1417,12 +1414,11 @@
 public:
     typedef _STD::__state<_CharT> __state;
 
+    _LIBCPP_INLINE_VISIBILITY
     explicit __repeat_one_loop(__node<_CharT>* __s)
         : base(__s) {}
 
     virtual void __exec(__state&) const;
-
-    virtual string speak() const {return "repeat loop";}
 };
 
 template <class _CharT>
@@ -1444,12 +1440,15 @@
     base* __second_;
 
 public:
+    _LIBCPP_INLINE_VISIBILITY
     explicit __owns_two_states(__node<_CharT>* __s1, base* __s2)
         : base(__s1), __second_(__s2) {}
 
     virtual ~__owns_two_states();
 
+    _LIBCPP_INLINE_VISIBILITY
     base*  second() const {return __second_;}
+    _LIBCPP_INLINE_VISIBILITY
     base*& second()       {return __second_;}
 };
 
@@ -1477,6 +1476,7 @@
 public:
     typedef _STD::__state<_CharT> __state;
 
+    _LIBCPP_INLINE_VISIBILITY
     explicit __loop(unsigned __loop_id,
                           __node<_CharT>* __s1, __owns_one_state<_CharT>* __s2,
                           unsigned __mexp_begin, unsigned __mexp_end,
@@ -1490,17 +1490,8 @@
     virtual void __exec(__state& __s) const;
     virtual void __exec_split(bool __second, __state& __s) const;
 
-    virtual string speak() const
-    {
-        ostringstream os;
-        os << "loop "<< __loop_id_ << " {" << __min_ << ',' << __max_ << "}";
-        if (!__greedy_)
-            os << " not";
-        os << " greedy";
-        return os.str();
-    }
-
 private:
+    _LIBCPP_INLINE_VISIBILITY
     void __init_repeat(__state& __s) const
     {
         __s.__loop_data_[__loop_id_].second = __s.__current_;
@@ -1584,19 +1575,13 @@
 public:
     typedef _STD::__state<_CharT> __state;
 
+    _LIBCPP_INLINE_VISIBILITY
     explicit __alternate(__owns_one_state<_CharT>* __s1,
                          __owns_one_state<_CharT>* __s2)
         : base(__s1, __s2) {}
 
     virtual void __exec(__state& __s) const;
     virtual void __exec_split(bool __second, __state& __s) const;
-
-    virtual string speak() const
-    {
-        ostringstream os;
-        os << "__alternate";
-        return os.str();
-    }
 };
 
 template <class _CharT>
@@ -1629,17 +1614,11 @@
 public:
     typedef _STD::__state<_CharT> __state;
 
+    _LIBCPP_INLINE_VISIBILITY
     explicit __begin_marked_subexpression(unsigned __mexp, __node<_CharT>* __s)
         : base(__s), __mexp_(__mexp) {}
 
     virtual void __exec(__state&) const;
-
-    virtual string speak() const
-    {
-        ostringstream os;
-        os << "begin marked expr " << __mexp_;
-        return os.str();
-    }
 };
 
 template <class _CharT>
@@ -1663,17 +1642,11 @@
 public:
     typedef _STD::__state<_CharT> __state;
 
+    _LIBCPP_INLINE_VISIBILITY
     explicit __end_marked_subexpression(unsigned __mexp, __node<_CharT>* __s)
         : base(__s), __mexp_(__mexp) {}
 
     virtual void __exec(__state&) const;
-
-    virtual string speak() const
-    {
-        ostringstream os;
-        os << "end marked expr " << __mexp_;
-        return os.str();
-    }
 };
 
 template <class _CharT>
@@ -1698,17 +1671,11 @@
 public:
     typedef _STD::__state<_CharT> __state;
 
+    _LIBCPP_INLINE_VISIBILITY
     explicit __back_ref(unsigned __mexp, __node<_CharT>* __s)
         : base(__s), __mexp_(__mexp) {}
 
     virtual void __exec(__state&) const;
-
-    virtual string speak() const
-    {
-        ostringstream os;
-        os << "__back_ref " << __mexp_;
-        return os.str();
-    }
 };
 
 template <class _CharT>
@@ -1752,18 +1719,12 @@
 public:
     typedef _STD::__state<_CharT> __state;
 
+    _LIBCPP_INLINE_VISIBILITY
     explicit __back_ref_icase(const _Traits& __traits, unsigned __mexp,
                               __node<_CharT>* __s)
         : base(__s), __traits_(__traits), __mexp_(__mexp) {}
 
     virtual void __exec(__state&) const;
-
-    virtual string speak() const
-    {
-        ostringstream os;
-        os << "__back_ref_icase " << __mexp_;
-        return os.str();
-    }
 };
 
 template <class _CharT, class _Traits>
@@ -1813,18 +1774,12 @@
 public:
     typedef _STD::__state<_CharT> __state;
 
+    _LIBCPP_INLINE_VISIBILITY
     explicit __back_ref_collate(const _Traits& __traits, unsigned __mexp,
                               __node<_CharT>* __s)
         : base(__s), __traits_(__traits), __mexp_(__mexp) {}
 
     virtual void __exec(__state&) const;
-
-    virtual string speak() const
-    {
-        ostringstream os;
-        os << "__back_ref_collate " << __mexp_;
-        return os.str();
-    }
 };
 
 template <class _CharT, class _Traits>
@@ -1874,21 +1829,12 @@
 public:
     typedef _STD::__state<_CharT> __state;
 
+    _LIBCPP_INLINE_VISIBILITY
     explicit __word_boundary(const _Traits& __traits, bool __invert,
                              __node<_CharT>* __s)
         : base(__s), __traits_(__traits), __invert_(__invert) {}
 
     virtual void __exec(__state&) const;
-
-    virtual string speak() const
-    {
-        ostringstream os;
-        if (!__invert_)
-            os << "__word_boundary";
-        else
-            os << "not __word_boundary";
-        return os.str();
-    }
 };
 
 template <class _CharT, class _Traits>
@@ -1951,17 +1897,11 @@
 public:
     typedef _STD::__state<_CharT> __state;
 
+    _LIBCPP_INLINE_VISIBILITY
     __r_anchor(__node<_CharT>* __s)
         : base(__s) {}
 
     virtual void __exec(__state&) const;
-
-    virtual string speak() const
-    {
-        ostringstream os;
-        os << "right anchor";
-        return os.str();
-    }
 };
 
 template <class _CharT>
@@ -1991,17 +1931,11 @@
 public:
     typedef _STD::__state<_CharT> __state;
 
+    _LIBCPP_INLINE_VISIBILITY
     __match_any(__node<_CharT>* __s)
         : base(__s) {}
 
     virtual void __exec(__state&) const;
-
-    virtual string speak() const
-    {
-        ostringstream os;
-        os << "match any";
-        return os.str();
-    }
 };
 
 template <class _CharT>
@@ -2032,17 +1966,11 @@
 public:
     typedef _STD::__state<_CharT> __state;
 
+    _LIBCPP_INLINE_VISIBILITY
     __match_any_but_newline(__node<_CharT>* __s)
         : base(__s) {}
 
     virtual void __exec(__state&) const;
-
-    virtual string speak() const
-    {
-        ostringstream os;
-        os << "match any but newline";
-        return os.str();
-    }
 };
 
 // __match_char
@@ -2060,17 +1988,11 @@
 public:
     typedef _STD::__state<_CharT> __state;
 
+    _LIBCPP_INLINE_VISIBILITY
     __match_char(_CharT __c, __node<_CharT>* __s)
         : base(__s), __c_(__c) {}
 
     virtual void __exec(__state&) const;
-
-    virtual string speak() const
-    {
-        ostringstream os;
-        os << "match char " << __c_;
-        return os.str();
-    }
 };
 
 template <class _CharT>
@@ -2106,17 +2028,11 @@
 public:
     typedef _STD::__state<_CharT> __state;
 
+    _LIBCPP_INLINE_VISIBILITY
     __match_char_icase(const _Traits& __traits, _CharT __c, __node<_CharT>* __s)
         : base(__s), __traits_(__traits), __c_(__traits.translate_nocase(__c)) {}
 
     virtual void __exec(__state&) const;
-
-    virtual string speak() const
-    {
-        ostringstream os;
-        os << "match char icase " << __c_;
-        return os.str();
-    }
 };
 
 template <class _CharT, class _Traits>
@@ -2153,17 +2069,11 @@
 public:
     typedef _STD::__state<_CharT> __state;
 
+    _LIBCPP_INLINE_VISIBILITY
     __match_char_collate(const _Traits& __traits, _CharT __c, __node<_CharT>* __s)
         : base(__s), __traits_(__traits), __c_(__traits.translate(__c)) {}
 
     virtual void __exec(__state&) const;
-
-    virtual string speak() const
-    {
-        ostringstream os;
-        os << "match char icase " << __c_;
-        return os.str();
-    }
 };
 
 template <class _CharT, class _Traits>
@@ -2211,6 +2121,7 @@
 public:
     typedef _STD::__state<_CharT> __state;
 
+    _LIBCPP_INLINE_VISIBILITY
     __bracket_expression(const _Traits& __traits, __node<_CharT>* __s,
                                  bool __negate, bool __icase, bool __collate)
         : base(__s), __traits_(__traits), __mask_(), __neg_mask_(),
@@ -2219,8 +2130,10 @@
 
     virtual void __exec(__state&) const;
 
+    _LIBCPP_INLINE_VISIBILITY
     bool __negated() const {return __negate_;}
 
+    _LIBCPP_INLINE_VISIBILITY
     void __add_char(_CharT __c)
         {
             if (__icase_)
@@ -2230,6 +2143,7 @@
             else
                 __chars_.push_back(__c);
         }
+    _LIBCPP_INLINE_VISIBILITY
     void __add_neg_char(_CharT __c)
         {
             if (__icase_)
@@ -2239,6 +2153,7 @@
             else
                 __neg_chars_.push_back(__c);
         }
+    _LIBCPP_INLINE_VISIBILITY
     void __add_range(string_type __b, string_type __e)
         {
             if (__collate_)
@@ -2275,6 +2190,7 @@
                 __ranges_.push_back(make_pair(_STD::move(__b), _STD::move(__e)));
             }
         }
+    _LIBCPP_INLINE_VISIBILITY
     void __add_digraph(_CharT __c1, _CharT __c2)
         {
             if (__icase_)
@@ -2286,19 +2202,15 @@
             else
                 __digraphs_.push_back(make_pair(__c1, __c2));
         }
+    _LIBCPP_INLINE_VISIBILITY
     void __add_equivalence(const string_type& __s)
         {__equivalences_.push_back(__s);}
+    _LIBCPP_INLINE_VISIBILITY
     void __add_class(ctype_base::mask __mask)
         {__mask_ |= __mask;}
+    _LIBCPP_INLINE_VISIBILITY
     void __add_neg_class(ctype_base::mask __mask)
         {__neg_mask_ |= __mask;}
-
-    virtual string speak() const
-    {
-        ostringstream os;
-        os << "__bracket_expression ";
-        return os.str();
-    }
 };
 
 template <class _CharT, class _Traits>
@@ -2462,7 +2374,7 @@
 template <class, class> class __lookahead;
 
 template <class _CharT, class _Traits = regex_traits<_CharT> >
-class basic_regex
+class _LIBCPP_VISIBLE basic_regex
 {
 public:
     // types:
@@ -2497,14 +2409,17 @@
     static const/*expr*/ regex_constants::syntax_option_type egrep = regex_constants::egrep;
 
     // construct/copy/destroy:
+    _LIBCPP_INLINE_VISIBILITY
     basic_regex()
         : __flags_(), __marked_count_(0), __loop_count_(0), __open_count_(0),
           __end_(0), __left_anchor_(false)
         {}
+    _LIBCPP_INLINE_VISIBILITY
     explicit basic_regex(const value_type* __p, flag_type __f = regex_constants::ECMAScript)
         : __flags_(__f), __marked_count_(0), __loop_count_(0), __open_count_(0),
           __end_(0), __left_anchor_(false)
         {__parse(__p, __p + __traits_.length(__p));}
+    _LIBCPP_INLINE_VISIBILITY
     basic_regex(const value_type* __p, size_t __len, flag_type __f)
         : __flags_(__f), __marked_count_(0), __loop_count_(0), __open_count_(0),
           __end_(0), __left_anchor_(false)
@@ -2512,17 +2427,20 @@
 //     basic_regex(const basic_regex&) = default;
 //     basic_regex(basic_regex&&) = default;
     template <class _ST, class _SA>
+        _LIBCPP_INLINE_VISIBILITY
         explicit basic_regex(const basic_string<value_type, _ST, _SA>& __p,
                              flag_type __f = regex_constants::ECMAScript)
         : __flags_(__f), __marked_count_(0), __loop_count_(0), __open_count_(0),
           __end_(0), __left_anchor_(false)
         {__parse(__p.begin(), __p.end());}
     template <class _ForwardIterator>
+        _LIBCPP_INLINE_VISIBILITY
         basic_regex(_ForwardIterator __first, _ForwardIterator __last,
                     flag_type __f = regex_constants::ECMAScript)
         : __flags_(__f), __marked_count_(0), __loop_count_(0), __open_count_(0),
           __end_(0), __left_anchor_(false)
         {__parse(__first, __last);}
+    _LIBCPP_INLINE_VISIBILITY
     basic_regex(initializer_list<value_type> __il,
                 flag_type __f = regex_constants::ECMAScript)
         : __flags_(__f), __marked_count_(0), __loop_count_(0), __open_count_(0),
@@ -2533,27 +2451,35 @@
 
 //     basic_regex& operator=(const basic_regex&) = default;
 //     basic_regex& operator=(basic_regex&&) = default;
+    _LIBCPP_INLINE_VISIBILITY
     basic_regex& operator=(const value_type* __p)
         {return assign(__p);}
+    _LIBCPP_INLINE_VISIBILITY
     basic_regex& operator=(initializer_list<value_type> __il)
         {return assign(__il);}
     template <class _ST, class _SA>
+        _LIBCPP_INLINE_VISIBILITY
         basic_regex& operator=(const basic_string<value_type, _ST, _SA>& __p)
         {return assign(__p);}
 
     // assign:
+    _LIBCPP_INLINE_VISIBILITY
     basic_regex& assign(const basic_regex& __that)
         {return *this = __that;}
+    _LIBCPP_INLINE_VISIBILITY
     basic_regex& assign(const value_type* __p, flag_type __f = regex_constants::ECMAScript)
         {return assign(__p, __p + __traits_.length(__p), __f);}
+    _LIBCPP_INLINE_VISIBILITY
     basic_regex& assign(const value_type* __p, size_t __len, flag_type __f)
         {return assign(__p, __p + __len, __f);}
     template <class _ST, class _SA>
+        _LIBCPP_INLINE_VISIBILITY
         basic_regex& assign(const basic_string<value_type, _ST, _SA>& __s,
                             flag_type __f = regex_constants::ECMAScript)
             {return assign(__s.begin(), __s.end(), __f);}
 
     template <class _InputIterator>
+        _LIBCPP_INLINE_VISIBILITY
         typename enable_if
         <
              __is_input_iterator  <_InputIterator>::value &&
@@ -2568,6 +2494,7 @@
         }
 
 private:
+    _LIBCPP_INLINE_VISIBILITY
     void __member_init(flag_type __f)
     {
         __flags_ = __f;
@@ -2580,6 +2507,7 @@
 public:
 
     template <class _ForwardIterator>
+        _LIBCPP_INLINE_VISIBILITY
         typename enable_if
         <
             __is_forward_iterator<_ForwardIterator>::value,
@@ -2592,27 +2520,33 @@
             __parse(__first, __last);
         }
 
+    _LIBCPP_INLINE_VISIBILITY
     basic_regex& assign(initializer_list<value_type> __il,
                         flag_type __f = regex_constants::ECMAScript)
         {return assign(__il.begin(), __il.end(), __f);}
 
     // const operations:
+    _LIBCPP_INLINE_VISIBILITY
     unsigned mark_count() const {return __marked_count_;}
+    _LIBCPP_INLINE_VISIBILITY
     flag_type flags() const {return __flags_;}
 
     // locale:
+    _LIBCPP_INLINE_VISIBILITY
     locale_type imbue(locale_type __loc)
     {
         __member_init(ECMAScript);
         __start_.reset();
         return __traits_.imbue(__loc);
     }
+    _LIBCPP_INLINE_VISIBILITY
     locale_type getloc() const {return __traits_.getloc();}
 
     // swap:
     void swap(basic_regex& __r);
 
 private:
+    _LIBCPP_INLINE_VISIBILITY
     unsigned __loop_count() const {return __loop_count_;}
 
     template <class _ForwardIterator>
@@ -2755,14 +2689,17 @@
         __parse_awk_escape(_ForwardIterator __first, _ForwardIterator __last,
                           basic_string<_CharT>* __str = nullptr);
 
+    _LIBCPP_INLINE_VISIBILITY
     void __push_l_anchor() {__left_anchor_ = true;}
     void __push_r_anchor();
     void __push_match_any();
     void __push_match_any_but_newline();
+    _LIBCPP_INLINE_VISIBILITY
     void __push_greedy_inf_repeat(size_t __min, __owns_one_state<_CharT>* __s,
                                   unsigned __mexp_begin = 0, unsigned __mexp_end = 0)
         {__push_loop(__min, numeric_limits<size_t>::max(), __s,
                      __mexp_begin, __mexp_end);}
+    _LIBCPP_INLINE_VISIBILITY
     void __push_nongreedy_inf_repeat(size_t __min, __owns_one_state<_CharT>* __s,
                                   unsigned __mexp_begin = 0, unsigned __mexp_end = 0)
         {__push_loop(__min, numeric_limits<size_t>::max(), __s,
@@ -2895,20 +2832,11 @@
 public:
     typedef _STD::__state<_CharT> __state;
 
+    _LIBCPP_INLINE_VISIBILITY
     __lookahead(const basic_regex<_CharT, _Traits>& __exp, bool __invert, __node<_CharT>* __s)
         : base(__s), __exp_(__exp), __invert_(__invert) {}
 
     virtual void __exec(__state&) const;
-
-    virtual string speak() const
-    {
-        ostringstream os;
-        if (__invert_)
-            os << "not lookahead";
-        else
-            os << "lookahead";
-        return os.str();
-    }
 };
 
 template <class _CharT, class _Traits>
@@ -4744,7 +4672,7 @@
 // sub_match
 
 template <class _BidirectionalIterator>
-class sub_match
+class _LIBCPP_VISIBLE sub_match
     : public pair<_BidirectionalIterator, _BidirectionalIterator>
 {
 public:
@@ -4755,17 +4683,23 @@
 
     bool matched;
 
+    _LIBCPP_INLINE_VISIBILITY
     difference_type length() const
         {return matched ? _STD::distance(this->first, this->second) : 0;}
+    _LIBCPP_INLINE_VISIBILITY
     string_type str() const
         {return matched ? string_type(this->first, this->second) : string_type();}
+    _LIBCPP_INLINE_VISIBILITY
     operator string_type() const
         {return str();}
 
+    _LIBCPP_INLINE_VISIBILITY
     int compare(const sub_match& __s) const
         {return str().compare(__s.str());}
+    _LIBCPP_INLINE_VISIBILITY
     int compare(const string_type& __s) const
         {return str().compare(__s);}
+    _LIBCPP_INLINE_VISIBILITY
     int compare(const value_type* __s) const
         {return str().compare(__s);}
 };
@@ -5158,7 +5092,7 @@
 }
 
 template <class _BidirectionalIterator, class _Allocator>
-class match_results
+class _LIBCPP_VISIBLE match_results
 {
 public:
     typedef _Allocator                                        allocator_type;
@@ -5190,26 +5124,39 @@
 //    ~match_results() = default;
 
     // size:
+    _LIBCPP_INLINE_VISIBILITY
     size_type size() const {return __matches_.size();}
+    _LIBCPP_INLINE_VISIBILITY
     size_type max_size() const {return __matches_.max_size();}
+    _LIBCPP_INLINE_VISIBILITY
     bool empty() const {return size() == 0;}
 
     // element access:
+    _LIBCPP_INLINE_VISIBILITY
     difference_type length(size_type __sub = 0) const
         {return (*this)[__sub].length();}
+    _LIBCPP_INLINE_VISIBILITY
     difference_type position(size_type __sub = 0) const
         {return _STD::distance(__position_start_, (*this)[__sub].first);}
+    _LIBCPP_INLINE_VISIBILITY
     string_type str(size_type __sub = 0) const
         {return (*this)[__sub].str();}
+    _LIBCPP_INLINE_VISIBILITY
     const_reference operator[](size_type __n) const
         {return __n < __matches_.size() ? __matches_[__n] : __unmatched_;}
 
+    _LIBCPP_INLINE_VISIBILITY
     const_reference prefix() const {return __prefix_;}
+    _LIBCPP_INLINE_VISIBILITY
     const_reference suffix() const {return __suffix_;}
 
+    _LIBCPP_INLINE_VISIBILITY
     const_iterator begin() const {return empty() ? __matches_.end() : __matches_.begin() + 1;}
+    _LIBCPP_INLINE_VISIBILITY
     const_iterator end() const {return __matches_.end();}
+    _LIBCPP_INLINE_VISIBILITY
     const_iterator cbegin() const {return empty() ? __matches_.end() : __matches_.begin() + 1;}
+    _LIBCPP_INLINE_VISIBILITY
     const_iterator cend() const {return __matches_.end();}
 
     // format:
@@ -5219,11 +5166,13 @@
                const char_type* __fmt_last,
                regex_constants::match_flag_type __flags = regex_constants::format_default) const;
     template <class _OutputIter, class _ST, class _SA>
+        _LIBCPP_INLINE_VISIBILITY
         _OutputIter
         format(_OutputIter __out, const basic_string<char_type, _ST, _SA>& __fmt,
                regex_constants::match_flag_type __flags = regex_constants::format_default) const
             {return format(__out, __fmt.data(), __fmt.data() + __fmt.size(), __flags);}
     template <class _ST, class _SA>
+        _LIBCPP_INLINE_VISIBILITY
         basic_string<char_type, _ST, _SA>
         format(const basic_string<char_type, _ST, _SA>& __fmt,
                regex_constants::match_flag_type __flags = regex_constants::format_default) const
@@ -5233,6 +5182,7 @@
                    __flags);
             return __r;
         }
+    _LIBCPP_INLINE_VISIBILITY
     string_type
         format(const char_type* __fmt,
                regex_constants::match_flag_type __flags = regex_constants::format_default) const
@@ -5244,12 +5194,14 @@
         }
 
     // allocator:
+    _LIBCPP_INLINE_VISIBILITY
     allocator_type get_allocator() const {return __matches_.get_allocator();}
 
     // swap:
     void swap(match_results& __m);
 
     template <class _B, class _A>
+        _LIBCPP_INLINE_VISIBILITY
         void __assign(_BidirectionalIterator __f, _BidirectionalIterator __l,
                       const match_results<_B, _A>& __m, bool __no_update_pos)
     {
@@ -5917,7 +5869,7 @@
 template <class _BidirectionalIterator,
           class _CharT = typename iterator_traits<_BidirectionalIterator>::value_type,
           class _Traits = regex_traits<_CharT> >
-class regex_iterator
+class _LIBCPP_VISIBLE regex_iterator
 {
 public:
     typedef basic_regex<_CharT, _Traits>          regex_type;
@@ -5941,12 +5893,16 @@
                    regex_constants::match_flag_type __m = regex_constants::match_default);
 
     bool operator==(const regex_iterator& __x) const;
+    _LIBCPP_INLINE_VISIBILITY
     bool operator!=(const regex_iterator& __x) const {return !(*this == __x);}
 
+    _LIBCPP_INLINE_VISIBILITY
     reference operator*() const {return  __match_;}
+    _LIBCPP_INLINE_VISIBILITY
     pointer operator->() const  {return &__match_;}
 
     regex_iterator& operator++();
+    _LIBCPP_INLINE_VISIBILITY
     regex_iterator operator++(int)
     {
         regex_iterator __t(*this);
@@ -6025,7 +5981,7 @@
 template <class _BidirectionalIterator,
           class _CharT = typename iterator_traits<_BidirectionalIterator>::value_type,
           class _Traits = regex_traits<_CharT> >
-class regex_token_iterator
+class _LIBCPP_VISIBLE regex_token_iterator
 {
 public:
     typedef basic_regex<_CharT, _Traits>      regex_type;
@@ -6070,12 +6026,16 @@
     regex_token_iterator& operator=(const regex_token_iterator&);
 
     bool operator==(const regex_token_iterator& __x) const;
+    _LIBCPP_INLINE_VISIBILITY
     bool operator!=(const regex_token_iterator& __x) const {return !(*this == __x);}
 
+    _LIBCPP_INLINE_VISIBILITY
     const value_type& operator*() const {return *__result_;}
+    _LIBCPP_INLINE_VISIBILITY
     const value_type* operator->() const {return __result_;}
 
     regex_token_iterator& operator++();
+    _LIBCPP_INLINE_VISIBILITY
     regex_token_iterator operator++(int)
     {
         regex_token_iterator __t(*this);





More information about the cfe-commits mailing list