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