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