annotate DEPENDENCIES/generic/include/boost/regex/v4/iterator_traits.hpp @ 125:34e428693f5d vext

Vext -> Repoint
author Chris Cannam
date Thu, 14 Jun 2018 11:15:39 +0100
parents c530137014c0
children
rev   line source
Chris@16 1 /*
Chris@16 2 *
Chris@16 3 * Copyright (c) 1998-2002
Chris@16 4 * John Maddock
Chris@16 5 *
Chris@16 6 * Use, modification and distribution are subject to the
Chris@16 7 * Boost Software License, Version 1.0. (See accompanying file
Chris@16 8 * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Chris@16 9 *
Chris@16 10 */
Chris@16 11
Chris@16 12 /*
Chris@16 13 * LOCATION: see http://www.boost.org for most recent version.
Chris@16 14 * FILE iterator_traits.cpp
Chris@16 15 * VERSION see <boost/version.hpp>
Chris@16 16 * DESCRIPTION: Declares iterator traits workarounds.
Chris@16 17 */
Chris@16 18
Chris@16 19 #ifndef BOOST_REGEX_V4_ITERATOR_TRAITS_HPP
Chris@16 20 #define BOOST_REGEX_V4_ITERATOR_TRAITS_HPP
Chris@16 21
Chris@16 22 #ifdef BOOST_MSVC
Chris@16 23 #pragma warning(push)
Chris@16 24 #pragma warning(disable: 4103)
Chris@16 25 #endif
Chris@16 26 #ifdef BOOST_HAS_ABI_HEADERS
Chris@16 27 # include BOOST_ABI_PREFIX
Chris@16 28 #endif
Chris@16 29 #ifdef BOOST_MSVC
Chris@16 30 #pragma warning(pop)
Chris@16 31 #endif
Chris@16 32
Chris@16 33 namespace boost{
Chris@16 34 namespace re_detail{
Chris@16 35
Chris@101 36 #if defined(BOOST_NO_STD_ITERATOR_TRAITS)
Chris@16 37
Chris@16 38 template <class T>
Chris@16 39 struct regex_iterator_traits
Chris@16 40 {
Chris@16 41 typedef typename T::iterator_category iterator_category;
Chris@16 42 typedef typename T::value_type value_type;
Chris@16 43 #if !defined(BOOST_NO_STD_ITERATOR)
Chris@16 44 typedef typename T::difference_type difference_type;
Chris@16 45 typedef typename T::pointer pointer;
Chris@16 46 typedef typename T::reference reference;
Chris@16 47 #else
Chris@16 48 typedef std::ptrdiff_t difference_type;
Chris@16 49 typedef value_type* pointer;
Chris@16 50 typedef value_type& reference;
Chris@16 51 #endif
Chris@16 52 };
Chris@16 53
Chris@16 54 template <class T>
Chris@16 55 struct pointer_iterator_traits
Chris@16 56 {
Chris@16 57 typedef std::ptrdiff_t difference_type;
Chris@16 58 typedef T value_type;
Chris@16 59 typedef T* pointer;
Chris@16 60 typedef T& reference;
Chris@16 61 typedef std::random_access_iterator_tag iterator_category;
Chris@16 62 };
Chris@16 63 template <class T>
Chris@16 64 struct const_pointer_iterator_traits
Chris@16 65 {
Chris@16 66 typedef std::ptrdiff_t difference_type;
Chris@16 67 typedef T value_type;
Chris@16 68 typedef const T* pointer;
Chris@16 69 typedef const T& reference;
Chris@16 70 typedef std::random_access_iterator_tag iterator_category;
Chris@16 71 };
Chris@16 72
Chris@16 73 template<>
Chris@16 74 struct regex_iterator_traits<char*> : pointer_iterator_traits<char>{};
Chris@16 75 template<>
Chris@16 76 struct regex_iterator_traits<const char*> : const_pointer_iterator_traits<char>{};
Chris@16 77 template<>
Chris@16 78 struct regex_iterator_traits<wchar_t*> : pointer_iterator_traits<wchar_t>{};
Chris@16 79 template<>
Chris@16 80 struct regex_iterator_traits<const wchar_t*> : const_pointer_iterator_traits<wchar_t>{};
Chris@16 81 //
Chris@16 82 // the follwoing are needed for ICU support:
Chris@16 83 //
Chris@16 84 template<>
Chris@16 85 struct regex_iterator_traits<unsigned char*> : pointer_iterator_traits<char>{};
Chris@16 86 template<>
Chris@16 87 struct regex_iterator_traits<const unsigned char*> : const_pointer_iterator_traits<char>{};
Chris@16 88 template<>
Chris@16 89 struct regex_iterator_traits<int*> : pointer_iterator_traits<int>{};
Chris@16 90 template<>
Chris@16 91 struct regex_iterator_traits<const int*> : const_pointer_iterator_traits<int>{};
Chris@16 92
Chris@16 93 #ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
Chris@16 94 template<>
Chris@16 95 struct regex_iterator_traits<unsigned short*> : pointer_iterator_traits<unsigned short>{};
Chris@16 96 template<>
Chris@16 97 struct regex_iterator_traits<const unsigned short*> : const_pointer_iterator_traits<unsigned short>{};
Chris@16 98 #endif
Chris@16 99
Chris@16 100 #if defined(__SGI_STL_PORT) && defined(__STL_DEBUG)
Chris@16 101 template<>
Chris@16 102 struct regex_iterator_traits<std::string::iterator> : pointer_iterator_traits<char>{};
Chris@16 103 template<>
Chris@16 104 struct regex_iterator_traits<std::string::const_iterator> : const_pointer_iterator_traits<char>{};
Chris@16 105 #ifndef BOOST_NO_STD_WSTRING
Chris@16 106 template<>
Chris@16 107 struct regex_iterator_traits<std::wstring::iterator> : pointer_iterator_traits<wchar_t>{};
Chris@16 108 template<>
Chris@16 109 struct regex_iterator_traits<std::wstring::const_iterator> : const_pointer_iterator_traits<wchar_t>{};
Chris@16 110 #endif // BOOST_NO_WSTRING
Chris@16 111 #endif // stport
Chris@16 112
Chris@16 113 #else
Chris@16 114
Chris@16 115 template <class T>
Chris@16 116 struct regex_iterator_traits : public std::iterator_traits<T> {};
Chris@16 117
Chris@16 118 #endif
Chris@16 119
Chris@16 120 } // namespace re_detail
Chris@16 121 } // namespace boost
Chris@16 122
Chris@16 123 #ifdef BOOST_MSVC
Chris@16 124 #pragma warning(push)
Chris@16 125 #pragma warning(disable: 4103)
Chris@16 126 #endif
Chris@16 127 #ifdef BOOST_HAS_ABI_HEADERS
Chris@16 128 # include BOOST_ABI_SUFFIX
Chris@16 129 #endif
Chris@16 130 #ifdef BOOST_MSVC
Chris@16 131 #pragma warning(pop)
Chris@16 132 #endif
Chris@16 133
Chris@16 134 #endif
Chris@16 135