| sl@0 |      1 | /*
 | 
| sl@0 |      2 |  *
 | 
| sl@0 |      3 |  * Copyright (c) 1998-2002
 | 
| sl@0 |      4 |  * John Maddock
 | 
| sl@0 |      5 |  *
 | 
| sl@0 |      6 |  * Use, modification and distribution are subject to the
 | 
| sl@0 |      7 |  * Boost Software License, Version 1.0. (See accompanying file
 | 
| sl@0 |      8 |  * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 | 
| sl@0 |      9 |  *
 | 
| sl@0 |     10 |  */
 | 
| sl@0 |     11 | 
 | 
| sl@0 |     12 |  /*
 | 
| sl@0 |     13 |   *   LOCATION:    see http://www.boost.org for most recent version.
 | 
| sl@0 |     14 |   *   FILE         instances.cpp
 | 
| sl@0 |     15 |   *   VERSION      see <boost/version.hpp>
 | 
| sl@0 |     16 |   *   DESCRIPTION: Defines those template instances that are placed in the
 | 
| sl@0 |     17 |   *                library rather than in the users object files.
 | 
| sl@0 |     18 |   */
 | 
| sl@0 |     19 | 
 | 
| sl@0 |     20 | //
 | 
| sl@0 |     21 | // note no include guard, we may include this multiple times:
 | 
| sl@0 |     22 | //
 | 
| sl@0 |     23 | #ifndef BOOST_REGEX_NO_EXTERNAL_TEMPLATES
 | 
| sl@0 |     24 | 
 | 
| sl@0 |     25 | namespace boost{
 | 
| sl@0 |     26 | 
 | 
| sl@0 |     27 | //
 | 
| sl@0 |     28 | // this header can be included multiple times, each time with
 | 
| sl@0 |     29 | // a different character type, BOOST_REGEX_CHAR_T must be defined
 | 
| sl@0 |     30 | // first:
 | 
| sl@0 |     31 | //
 | 
| sl@0 |     32 | #ifndef BOOST_REGEX_CHAR_T
 | 
| sl@0 |     33 | #  error "BOOST_REGEX_CHAR_T not defined"
 | 
| sl@0 |     34 | #endif
 | 
| sl@0 |     35 | 
 | 
| sl@0 |     36 | #ifndef BOOST_REGEX_TRAITS_T
 | 
| sl@0 |     37 | #  define BOOST_REGEX_TRAITS_T , boost::regex_traits<BOOST_REGEX_CHAR_T >
 | 
| sl@0 |     38 | #endif
 | 
| sl@0 |     39 | 
 | 
| sl@0 |     40 | //
 | 
| sl@0 |     41 | // what follows is compiler specific:
 | 
| sl@0 |     42 | //
 | 
| sl@0 |     43 | 
 | 
| sl@0 |     44 | #if  defined(__BORLANDC__) && (__BORLANDC__ < 0x600)
 | 
| sl@0 |     45 | 
 | 
| sl@0 |     46 | #ifdef BOOST_HAS_ABI_HEADERS
 | 
| sl@0 |     47 | #  include BOOST_ABI_PREFIX
 | 
| sl@0 |     48 | #endif
 | 
| sl@0 |     49 | 
 | 
| sl@0 |     50 | #  ifndef BOOST_REGEX_INSTANTIATE
 | 
| sl@0 |     51 | #     pragma option push -Jgx
 | 
| sl@0 |     52 | #  endif
 | 
| sl@0 |     53 | 
 | 
| sl@0 |     54 | template class BOOST_REGEX_DECL basic_regex< BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >;
 | 
| sl@0 |     55 | template class BOOST_REGEX_DECL match_results< const BOOST_REGEX_CHAR_T* >;
 | 
| sl@0 |     56 | #ifndef BOOST_NO_STD_ALLOCATOR
 | 
| sl@0 |     57 | template class BOOST_REGEX_DECL ::boost::re_detail::perl_matcher<BOOST_REGEX_CHAR_T const *, match_results< const BOOST_REGEX_CHAR_T* >::allocator_type BOOST_REGEX_TRAITS_T >;
 | 
| sl@0 |     58 | #endif
 | 
| sl@0 |     59 | 
 | 
| sl@0 |     60 | #  ifndef BOOST_REGEX_INSTANTIATE
 | 
| sl@0 |     61 | #     pragma option pop
 | 
| sl@0 |     62 | #  endif
 | 
| sl@0 |     63 | 
 | 
| sl@0 |     64 | #ifdef BOOST_HAS_ABI_HEADERS
 | 
| sl@0 |     65 | #  include BOOST_ABI_SUFFIX
 | 
| sl@0 |     66 | #endif
 | 
| sl@0 |     67 | 
 | 
| sl@0 |     68 | #elif defined(BOOST_MSVC) || defined(__ICL)
 | 
| sl@0 |     69 | 
 | 
| sl@0 |     70 | #  ifndef BOOST_REGEX_INSTANTIATE
 | 
| sl@0 |     71 | #     ifdef __GNUC__
 | 
| sl@0 |     72 | #        define template __extension__ extern template
 | 
| sl@0 |     73 | #     else
 | 
| sl@0 |     74 | #        define template extern template
 | 
| sl@0 |     75 | #     endif
 | 
| sl@0 |     76 | #  endif
 | 
| sl@0 |     77 | 
 | 
| sl@0 |     78 | #  ifdef BOOST_MSVC
 | 
| sl@0 |     79 | #     pragma warning(push)
 | 
| sl@0 |     80 | #     pragma warning(disable : 4251 4231 4660)
 | 
| sl@0 |     81 | #  endif
 | 
| sl@0 |     82 | 
 | 
| sl@0 |     83 | template class BOOST_REGEX_DECL basic_regex< BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >;
 | 
| sl@0 |     84 | 
 | 
| sl@0 |     85 | #if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
 | 
| sl@0 |     86 | template class BOOST_REGEX_DECL match_results< const BOOST_REGEX_CHAR_T* >;
 | 
| sl@0 |     87 | #endif
 | 
| sl@0 |     88 | #ifndef BOOST_NO_STD_ALLOCATOR
 | 
| sl@0 |     89 | template class BOOST_REGEX_DECL ::boost::re_detail::perl_matcher<BOOST_REGEX_CHAR_T const *, match_results< const BOOST_REGEX_CHAR_T* >::allocator_type BOOST_REGEX_TRAITS_T >;
 | 
| sl@0 |     90 | #endif
 | 
| sl@0 |     91 | #if !(defined(BOOST_DINKUMWARE_STDLIB) && (BOOST_DINKUMWARE_STDLIB <= 1))\
 | 
| sl@0 |     92 |    && !(defined(BOOST_INTEL_CXX_VERSION) && (BOOST_INTEL_CXX_VERSION <= 800))\
 | 
| sl@0 |     93 |    && !(defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION))\
 | 
| sl@0 |     94 |    && !defined(BOOST_REGEX_ICU_INSTANCES)
 | 
| sl@0 |     95 | #if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
 | 
| sl@0 |     96 | template class BOOST_REGEX_DECL match_results< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator >;
 | 
| sl@0 |     97 | #endif
 | 
| sl@0 |     98 | #ifndef BOOST_NO_STD_ALLOCATOR
 | 
| sl@0 |     99 | template class BOOST_REGEX_DECL ::boost::re_detail::perl_matcher< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator, match_results< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator >::allocator_type, boost::regex_traits<BOOST_REGEX_CHAR_T > >;
 | 
| sl@0 |    100 | #endif
 | 
| sl@0 |    101 | #endif
 | 
| sl@0 |    102 | 
 | 
| sl@0 |    103 | 
 | 
| sl@0 |    104 | #  ifdef BOOST_MSVC
 | 
| sl@0 |    105 | #     pragma warning(pop)
 | 
| sl@0 |    106 | #  endif
 | 
| sl@0 |    107 | 
 | 
| sl@0 |    108 | #  ifdef template
 | 
| sl@0 |    109 | #     undef template
 | 
| sl@0 |    110 | #  endif
 | 
| sl@0 |    111 | 
 | 
| sl@0 |    112 | #elif (defined(__GNUC__) && (__GNUC__ >= 3))
 | 
| sl@0 |    113 | 
 | 
| sl@0 |    114 | #  ifndef BOOST_REGEX_INSTANTIATE
 | 
| sl@0 |    115 | #     define template __extension__ extern template
 | 
| sl@0 |    116 | #  endif
 | 
| sl@0 |    117 | 
 | 
| sl@0 |    118 | #if !defined(BOOST_NO_STD_LOCALE) && !defined(BOOST_REGEX_ICU_INSTANCES)
 | 
| sl@0 |    119 | namespace re_detail{
 | 
| sl@0 |    120 | template BOOST_REGEX_DECL
 | 
| sl@0 |    121 | std::locale cpp_regex_traits_base<BOOST_REGEX_CHAR_T>::imbue(const std::locale& l);
 | 
| sl@0 |    122 | 
 | 
| sl@0 |    123 | template BOOST_REGEX_DECL
 | 
| sl@0 |    124 | cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::string_type 
 | 
| sl@0 |    125 |    cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::transform_primary(const BOOST_REGEX_CHAR_T* p1, const BOOST_REGEX_CHAR_T* p2) const;
 | 
| sl@0 |    126 | template BOOST_REGEX_DECL
 | 
| sl@0 |    127 | cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::string_type 
 | 
| sl@0 |    128 |    cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::transform(const BOOST_REGEX_CHAR_T* p1, const BOOST_REGEX_CHAR_T* p2) const;
 | 
| sl@0 |    129 | template BOOST_REGEX_DECL
 | 
| sl@0 |    130 | cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::string_type 
 | 
| sl@0 |    131 |    cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::lookup_collatename(const BOOST_REGEX_CHAR_T* p1, const BOOST_REGEX_CHAR_T* p2) const;
 | 
| sl@0 |    132 | template BOOST_REGEX_DECL
 | 
| sl@0 |    133 | void cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::init();
 | 
| sl@0 |    134 | template BOOST_REGEX_DECL
 | 
| sl@0 |    135 | cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::char_class_type 
 | 
| sl@0 |    136 |    cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::lookup_classname_imp(const BOOST_REGEX_CHAR_T* p1, const BOOST_REGEX_CHAR_T* p2) const;
 | 
| sl@0 |    137 | #ifdef BOOST_REGEX_BUGGY_CTYPE_FACET
 | 
| sl@0 |    138 | template BOOST_REGEX_DECL
 | 
| sl@0 |    139 | bool cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::isctype(const BOOST_REGEX_CHAR_T c, char_class_type mask) const;
 | 
| sl@0 |    140 | #endif
 | 
| sl@0 |    141 | } // namespace
 | 
| sl@0 |    142 | template BOOST_REGEX_DECL
 | 
| sl@0 |    143 | int cpp_regex_traits<BOOST_REGEX_CHAR_T>::toi(const BOOST_REGEX_CHAR_T*& first, const BOOST_REGEX_CHAR_T* last, int radix)const;
 | 
| sl@0 |    144 | template BOOST_REGEX_DECL
 | 
| sl@0 |    145 | std::string cpp_regex_traits<BOOST_REGEX_CHAR_T>::catalog_name(const std::string& name);
 | 
| sl@0 |    146 | template BOOST_REGEX_DECL
 | 
| sl@0 |    147 | std::string& cpp_regex_traits<BOOST_REGEX_CHAR_T>::get_catalog_name_inst();
 | 
| sl@0 |    148 | template BOOST_REGEX_DECL
 | 
| sl@0 |    149 | std::string cpp_regex_traits<BOOST_REGEX_CHAR_T>::get_catalog_name();
 | 
| sl@0 |    150 | #ifdef BOOST_HAS_THREADS
 | 
| sl@0 |    151 | template BOOST_REGEX_DECL
 | 
| sl@0 |    152 | static_mutex& cpp_regex_traits<BOOST_REGEX_CHAR_T>::get_mutex_inst();
 | 
| sl@0 |    153 | #endif
 | 
| sl@0 |    154 | #endif
 | 
| sl@0 |    155 | 
 | 
| sl@0 |    156 | template BOOST_REGEX_DECL basic_regex<BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >& 
 | 
| sl@0 |    157 |    basic_regex<BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >::do_assign(
 | 
| sl@0 |    158 |       const BOOST_REGEX_CHAR_T* p1, 
 | 
| sl@0 |    159 |       const BOOST_REGEX_CHAR_T* p2, 
 | 
| sl@0 |    160 |       flag_type f);
 | 
| sl@0 |    161 | template BOOST_REGEX_DECL basic_regex<BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >::locale_type BOOST_REGEX_CALL 
 | 
| sl@0 |    162 |    basic_regex<BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >::imbue(locale_type l);
 | 
| sl@0 |    163 | 
 | 
| sl@0 |    164 | template BOOST_REGEX_DECL void BOOST_REGEX_CALL 
 | 
| sl@0 |    165 |    match_results<const BOOST_REGEX_CHAR_T*>::maybe_assign(
 | 
| sl@0 |    166 |       const match_results<const BOOST_REGEX_CHAR_T*>& m);
 | 
| sl@0 |    167 | 
 | 
| sl@0 |    168 | namespace re_detail{
 | 
| sl@0 |    169 | template BOOST_REGEX_DECL void perl_matcher<BOOST_REGEX_CHAR_T const *, match_results< const BOOST_REGEX_CHAR_T* >::allocator_type BOOST_REGEX_TRAITS_T >::construct_init(
 | 
| sl@0 |    170 |       const basic_regex<BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >& e, match_flag_type f);
 | 
| sl@0 |    171 | template BOOST_REGEX_DECL bool perl_matcher<BOOST_REGEX_CHAR_T const *, match_results< const BOOST_REGEX_CHAR_T* >::allocator_type BOOST_REGEX_TRAITS_T >::match();
 | 
| sl@0 |    172 | template BOOST_REGEX_DECL bool perl_matcher<BOOST_REGEX_CHAR_T const *, match_results< const BOOST_REGEX_CHAR_T* >::allocator_type BOOST_REGEX_TRAITS_T >::find();
 | 
| sl@0 |    173 | } // namespace
 | 
| sl@0 |    174 | 
 | 
| sl@0 |    175 | #if (defined(__GLIBCPP__) || defined(__GLIBCXX__)) \
 | 
| sl@0 |    176 |    && !defined(BOOST_REGEX_ICU_INSTANCES)\
 | 
| sl@0 |    177 |    && !defined(__SGI_STL_PORT)\
 | 
| sl@0 |    178 |    && !defined(_STLPORT_VERSION)
 | 
| sl@0 |    179 | // std:basic_string<>::const_iterator instances as well:
 | 
| sl@0 |    180 | template BOOST_REGEX_DECL void BOOST_REGEX_CALL 
 | 
| sl@0 |    181 |    match_results<std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator>::maybe_assign(
 | 
| sl@0 |    182 |       const match_results<std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator>& m);
 | 
| sl@0 |    183 | 
 | 
| sl@0 |    184 | namespace re_detail{
 | 
| sl@0 |    185 | template BOOST_REGEX_DECL void perl_matcher<std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator, match_results< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator >::allocator_type, boost::regex_traits<BOOST_REGEX_CHAR_T > >::construct_init(
 | 
| sl@0 |    186 |       const basic_regex<BOOST_REGEX_CHAR_T>& e, match_flag_type f);
 | 
| sl@0 |    187 | template BOOST_REGEX_DECL bool perl_matcher<std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator, match_results< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator >::allocator_type, boost::regex_traits<BOOST_REGEX_CHAR_T > >::match();
 | 
| sl@0 |    188 | template BOOST_REGEX_DECL bool perl_matcher<std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator, match_results< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator >::allocator_type, boost::regex_traits<BOOST_REGEX_CHAR_T > >::find();
 | 
| sl@0 |    189 | } // namespace
 | 
| sl@0 |    190 | #endif
 | 
| sl@0 |    191 | 
 | 
| sl@0 |    192 | #  ifdef template
 | 
| sl@0 |    193 | #     undef template
 | 
| sl@0 |    194 | #  endif
 | 
| sl@0 |    195 | 
 | 
| sl@0 |    196 | 
 | 
| sl@0 |    197 | #endif
 | 
| sl@0 |    198 | 
 | 
| sl@0 |    199 | } // namespace boost
 | 
| sl@0 |    200 | 
 | 
| sl@0 |    201 | #endif // BOOST_REGEX_NO_EXTERNAL_TEMPLATES
 | 
| sl@0 |    202 | 
 | 
| sl@0 |    203 | 
 | 
| sl@0 |    204 | 
 | 
| sl@0 |    205 | 
 | 
| sl@0 |    206 | 
 |