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: winstances.cpp
15 * VERSION: see <boost/version.hpp>
16 * DESCRIPTION: regex unsigned short template instances (MSVC only).
17 */
18
19#define BOOST_REGEX_SOURCE
20#ifdef _MSC_VER
21#pragma warning(disable:4506) // 'no definition for inline function'
22#endif
23
24#include <boost/detail/workaround.hpp>
25#include <memory>
26#include <string>
27
28#if defined(_DLL_CPPLIB) && !defined(_M_CEE_PURE) && defined(_NATIVE_WCHAR_T_DEFINED) \
29 && !(defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION) || defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER))\
30 && BOOST_WORKAROUND(BOOST_MSVC, <1600)
31//
32// This is a horrible workaround, but without declaring these symbols extern we get
33// duplicate symbol errors when linking if the application is built without
34// /Zc:wchar_t
35//
36#ifdef _CRTIMP2_PURE
37# define BOOST_REGEX_STDLIB_DECL _CRTIMP2_PURE
38#else
39# define BOOST_REGEX_STDLIB_DECL _CRTIMP2
40#endif
41
42namespace std{
43
44#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
45template class BOOST_REGEX_STDLIB_DECL allocator<unsigned short>;
46template class BOOST_REGEX_STDLIB_DECL _String_val<unsigned short, allocator<unsigned short> >;
47template class BOOST_REGEX_STDLIB_DECL basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >;
48#endif
49
50#if BOOST_WORKAROUND(BOOST_MSVC, > 1300) && BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400))
51template<> BOOST_REGEX_STDLIB_DECL std::size_t __cdecl char_traits<unsigned short>::length(unsigned short const*);
52#endif
53
54template BOOST_REGEX_STDLIB_DECL bool __cdecl operator==(
55 const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
56 const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
57template BOOST_REGEX_STDLIB_DECL bool __cdecl operator==(
58 const unsigned short *,
59 const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
60template BOOST_REGEX_STDLIB_DECL bool __cdecl operator==(
61 const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
62 const unsigned short *);
63template BOOST_REGEX_STDLIB_DECL bool __cdecl operator<(
64 const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
65 const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
66template BOOST_REGEX_STDLIB_DECL bool __cdecl operator>(
67 const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
68 const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
69}
70#endif
71
72#include <boost/regex/config.hpp>
73
74#if !defined(BOOST_NO_WREGEX) && defined(BOOST_REGEX_HAS_OTHER_WCHAR_T) && !defined(BOOST_REGEX_NO_EXTERNAL_TEMPLATES)
75#define BOOST_REGEX_US_INSTANTIATE
76
77#include <boost/regex.hpp>
78
79#endif
80
81
82