1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164
|
/*
*
* Copyright (c) 2003
* John Maddock
*
* Use, modification and distribution are subject to the
* Boost Software License, Version 1.0. (See accompanying file
* LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
*
*/
//
// This define keep ICU in it's own namespace: helps us to track bugs that would
// otherwise go unnoticed:
//
#define U_USING_ICU_NAMESPACE 0
#include <boost/regex/config.hpp>
#if defined(BOOST_MSVC)
// this lets us compile at warning level 4 without seeing concept-check related warnings
# pragma warning(disable:4100)
#endif
#ifdef __BORLANDC__
#pragma option -w-8019 -w-8004 -w-8008
#endif
#ifdef BOOST_HAS_ICU
#include <boost/regex/icu.hpp>
#include <boost/detail/workaround.hpp>
#if !BOOST_WORKAROUND(_MSC_VER, < 1310) && !defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__GNUC__, < 3)
#include <boost/regex/concepts.hpp>
#endif
int main()
{
// VC6 and VC7 can't cope with the iterator architypes,
// don't bother testing as it doesn't work:
#if !BOOST_WORKAROUND(_MSC_VER, < 1310) && !defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__GNUC__, < 3)
boost::function_requires<
boost::RegexTraitsConcept<
boost::icu_regex_traits
>
>();
boost::function_requires<
boost::BoostRegexConcept<
boost::u32regex
>
>();
//
// Now test additional function overloads:
//
bool b;
unsigned long buf[2] = { 0, };
const void* pb = buf;
typedef boost::bidirectional_iterator_archetype<char> utf8_arch1;
typedef boost::bidirectional_iterator_archetype<unsigned char> utf8_arch2;
typedef boost::bidirectional_iterator_archetype<UChar> utf16_arch;
typedef boost::bidirectional_iterator_archetype<wchar_t> wchar_arch;
boost::match_results<utf8_arch1> m1;
boost::match_results<utf8_arch2> m2;
boost::match_results<utf16_arch> m3;
boost::match_results<wchar_arch> m4;
boost::match_results<const char*> cm1;
boost::match_results<const unsigned char*> cm2;
boost::match_results<const UChar*> cm3;
boost::match_results<const wchar_t*> cm4;
boost::match_results<std::string::const_iterator> sm1;
boost::match_results<std::wstring::const_iterator> sm2;
boost::u32regex e1;
boost::regex_constants::match_flag_type flgs = boost::regex_constants::match_default;
std::string s1;
std::wstring s2;
U_NAMESPACE_QUALIFIER UnicodeString us;
b = boost::u32regex_match(utf8_arch1(), utf8_arch1(), m1, e1, flgs);
b = boost::u32regex_match(utf8_arch1(), utf8_arch1(), m1, e1);
b = boost::u32regex_match(utf8_arch2(), utf8_arch2(), m2, e1, flgs);
b = boost::u32regex_match(utf8_arch2(), utf8_arch2(), m2, e1);
b = boost::u32regex_match(utf16_arch(), utf16_arch(), m3, e1, flgs);
b = boost::u32regex_match(utf16_arch(), utf16_arch(), m3, e1);
b = boost::u32regex_match(wchar_arch(), wchar_arch(), m4, e1, flgs);
b = boost::u32regex_match(wchar_arch(), wchar_arch(), m4, e1);
b = boost::u32regex_match((const char*)(pb), cm1, e1, flgs);
b = boost::u32regex_match((const char*)(pb), cm1, e1);
b = boost::u32regex_match((const unsigned char*)(pb), cm2, e1, flgs);
b = boost::u32regex_match((const unsigned char*)(pb), cm2, e1);
b = boost::u32regex_match((const UChar*)(pb), cm3, e1, flgs);
b = boost::u32regex_match((const UChar*)(pb), cm3, e1);
b = boost::u32regex_match((const wchar_t*)(pb), cm4, e1, flgs);
b = boost::u32regex_match((const wchar_t*)(pb), cm4, e1);
b = boost::u32regex_match(s1, sm1, e1, flgs);
b = boost::u32regex_match(s1, sm1, e1);
b = boost::u32regex_match(s2, sm2, e1, flgs);
b = boost::u32regex_match(s2, sm2, e1);
b = boost::u32regex_match(us, cm3, e1, flgs);
b = boost::u32regex_match(us, cm3, e1);
b = boost::u32regex_search(utf8_arch1(), utf8_arch1(), m1, e1, flgs);
b = boost::u32regex_search(utf8_arch1(), utf8_arch1(), m1, e1);
b = boost::u32regex_search(utf8_arch2(), utf8_arch2(), m2, e1, flgs);
b = boost::u32regex_search(utf8_arch2(), utf8_arch2(), m2, e1);
b = boost::u32regex_search(utf16_arch(), utf16_arch(), m3, e1, flgs);
b = boost::u32regex_search(utf16_arch(), utf16_arch(), m3, e1);
b = boost::u32regex_search(wchar_arch(), wchar_arch(), m4, e1, flgs);
b = boost::u32regex_search(wchar_arch(), wchar_arch(), m4, e1);
b = boost::u32regex_search((const char*)(pb), cm1, e1, flgs);
b = boost::u32regex_search((const char*)(pb), cm1, e1);
b = boost::u32regex_search((const unsigned char*)(pb), cm2, e1, flgs);
b = boost::u32regex_search((const unsigned char*)(pb), cm2, e1);
b = boost::u32regex_search((const UChar*)(pb), cm3, e1, flgs);
b = boost::u32regex_search((const UChar*)(pb), cm3, e1);
b = boost::u32regex_search((const wchar_t*)(pb), cm4, e1, flgs);
b = boost::u32regex_search((const wchar_t*)(pb), cm4, e1);
b = boost::u32regex_search(s1, sm1, e1, flgs);
b = boost::u32regex_search(s1, sm1, e1);
b = boost::u32regex_search(s2, sm2, e1, flgs);
b = boost::u32regex_search(s2, sm2, e1);
b = boost::u32regex_search(us, cm3, e1, flgs);
b = boost::u32regex_search(us, cm3, e1);
boost::output_iterator_archetype<char> out1 = boost::detail::dummy_constructor();
out1 = boost::u32regex_replace(out1, utf8_arch1(), utf8_arch1(), e1, (const char*)(pb), flgs);
boost::output_iterator_archetype<unsigned char> out2 = boost::detail::dummy_constructor();
out2 = boost::u32regex_replace(out2, utf8_arch2(), utf8_arch2(), e1, (const unsigned char*)(pb), flgs);
boost::output_iterator_archetype<UChar> out3 = boost::detail::dummy_constructor();
out3 = boost::u32regex_replace(out3, utf16_arch(), utf16_arch(), e1, (const UChar*)(pb), flgs);
boost::output_iterator_archetype<wchar_t> out4 = boost::detail::dummy_constructor();
out4 = boost::u32regex_replace(out4, wchar_arch(), wchar_arch(), e1, (const wchar_t*)(pb), flgs);
out1 = boost::u32regex_replace(out1, utf8_arch1(), utf8_arch1(), e1, s1, flgs);
out2 = boost::u32regex_replace(out2, utf8_arch2(), utf8_arch2(), e1, s1, flgs);
out3 = boost::u32regex_replace(out3, utf16_arch(), utf16_arch(), e1, s1, flgs);
out4 = boost::u32regex_replace(out4, wchar_arch(), wchar_arch(), e1, s1, flgs);
out1 = boost::u32regex_replace(out1, utf8_arch1(), utf8_arch1(), e1, s2, flgs);
out2 = boost::u32regex_replace(out2, utf8_arch2(), utf8_arch2(), e1, s2, flgs);
out3 = boost::u32regex_replace(out3, utf16_arch(), utf16_arch(), e1, s2, flgs);
out4 = boost::u32regex_replace(out4, wchar_arch(), wchar_arch(), e1, s2, flgs);
out1 = boost::u32regex_replace(out1, utf8_arch1(), utf8_arch1(), e1, us, flgs);
out2 = boost::u32regex_replace(out2, utf8_arch2(), utf8_arch2(), e1, us, flgs);
out3 = boost::u32regex_replace(out3, utf16_arch(), utf16_arch(), e1, us, flgs);
out4 = boost::u32regex_replace(out4, wchar_arch(), wchar_arch(), e1, us, flgs);
// string overloads:
s1 = boost::u32regex_replace(s1, e1, (const char*)(pb), flgs);
s2 = boost::u32regex_replace(s2, e1, (const wchar_t*)(pb), flgs);
s1 = boost::u32regex_replace(s1, e1, s1, flgs);
s2 = boost::u32regex_replace(s2, e1, s2, flgs);
s1 = boost::u32regex_replace(s1, e1, (const char*)(pb));
s2 = boost::u32regex_replace(s2, e1, (const wchar_t*)(pb));
s1 = boost::u32regex_replace(s1, e1, s1);
s2 = boost::u32regex_replace(s2, e1, s2);
#endif
return 0;
}
#else
int main()
{
return 0;
}
#endif
|