imgtools/imglib/boostlibrary/boost/regex/v4/sub_match.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         sub_match.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 template class sub_match.
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_SUB_MATCH_HPP
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    20
#define BOOST_REGEX_V4_SUB_MATCH_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
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    35
template <class BidiIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    36
struct sub_match : public std::pair<BidiIterator, BidiIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    37
{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    38
   typedef typename re_detail::regex_iterator_traits<BidiIterator>::value_type       value_type;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    39
#if defined(BOOST_NO_STD_ITERATOR_TRAITS) || defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    40
   typedef          std::ptrdiff_t                                                   difference_type;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    41
#else
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    42
   typedef typename re_detail::regex_iterator_traits<BidiIterator>::difference_type  difference_type;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    43
#endif
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    44
   typedef          BidiIterator                                                     iterator_type;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    45
   typedef          BidiIterator                                                     iterator;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    46
   typedef          BidiIterator                                                     const_iterator;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    47
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    48
   bool matched;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    49
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    50
   sub_match() : std::pair<BidiIterator, BidiIterator>(), matched(false) {}
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    51
   sub_match(BidiIterator i) : std::pair<BidiIterator, BidiIterator>(i, i), matched(false) {}
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    52
#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    53
               && !BOOST_WORKAROUND(BOOST_MSVC, < 1310)\
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    54
               && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551)\
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    55
               && !BOOST_WORKAROUND(__DECCXX_VER, BOOST_TESTED_AT(60590042))
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    56
   template <class T, class A>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    57
   operator std::basic_string<value_type, T, A> ()const
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    58
   {
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    59
      return std::basic_string<value_type, T, A>(this->first, this->second);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    60
   }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    61
#else
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    62
   operator std::basic_string<value_type> ()const
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    63
   {
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    64
      return str();
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    65
   }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    66
#endif
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    67
   difference_type BOOST_REGEX_CALL length()const
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    68
   {
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    69
      difference_type n = ::boost::re_detail::distance((BidiIterator)this->first, (BidiIterator)this->second);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    70
      return n;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    71
   }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    72
   std::basic_string<value_type> str()const
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    73
   {
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    74
      std::basic_string<value_type> result;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    75
      std::size_t len = ::boost::re_detail::distance((BidiIterator)this->first, (BidiIterator)this->second);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    76
      result.reserve(len);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    77
      BidiIterator i = this->first;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    78
      while(i != this->second)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    79
      {
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    80
         result.append(1, *i);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    81
         ++i;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    82
      }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    83
      return result;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    84
   }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    85
   int compare(const sub_match& s)const
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    86
   {
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    87
      if(matched != s.matched)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    88
         return static_cast<int>(matched) - static_cast<int>(s.matched);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    89
      return str().compare(s.str());
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    90
   }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    91
   int compare(const std::basic_string<value_type>& s)const
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    92
   {
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    93
      return str().compare(s);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    94
   }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    95
   int compare(const value_type* p)const
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    96
   {
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    97
      return str().compare(p);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    98
   }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    99
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   100
   bool operator==(const sub_match& that)const
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   101
   { return compare(that) == 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   102
   bool BOOST_REGEX_CALL operator !=(const sub_match& that)const
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   103
   { return compare(that) != 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   104
   bool operator<(const sub_match& that)const
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   105
   { return compare(that) < 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   106
   bool operator>(const sub_match& that)const
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   107
   { return compare(that) > 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   108
   bool operator<=(const sub_match& that)const
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   109
   { return compare(that) <= 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   110
   bool operator>=(const sub_match& that)const
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   111
   { return compare(that) >= 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   112
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   113
#ifdef BOOST_REGEX_MATCH_EXTRA
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   114
   typedef std::vector<sub_match<BidiIterator> > capture_sequence_type;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   115
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   116
   const capture_sequence_type& captures()const
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   117
   {
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   118
      if(!m_captures) 
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   119
         m_captures.reset(new capture_sequence_type());
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   120
      return *m_captures;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   121
   }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   122
   //
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   123
   // Private implementation API: DO NOT USE!
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   124
   //
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   125
   capture_sequence_type& get_captures()const
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   126
   {
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   127
      if(!m_captures) 
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   128
         m_captures.reset(new capture_sequence_type());
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   129
      return *m_captures;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   130
   }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   131
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   132
private:
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   133
   mutable boost::scoped_ptr<capture_sequence_type> m_captures;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   134
public:
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   135
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   136
#endif
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   137
   sub_match(const sub_match& that, bool 
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   138
#ifdef BOOST_REGEX_MATCH_EXTRA
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   139
      deep_copy
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   140
#endif
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   141
      = true
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   142
      ) 
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   143
      : std::pair<BidiIterator, BidiIterator>(that), 
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   144
        matched(that.matched) 
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   145
   {
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   146
#ifdef BOOST_REGEX_MATCH_EXTRA
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   147
      if(that.m_captures)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   148
         if(deep_copy)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   149
            m_captures.reset(new capture_sequence_type(*(that.m_captures)));
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   150
#endif
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   151
   }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   152
   sub_match& operator=(const sub_match& that)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   153
   {
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   154
      this->first = that.first;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   155
      this->second = that.second;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   156
      matched = that.matched;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   157
#ifdef BOOST_REGEX_MATCH_EXTRA
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   158
      if(that.m_captures)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   159
         get_captures() = *(that.m_captures);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   160
#endif
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   161
      return *this;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   162
   }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   163
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   164
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   165
#ifdef BOOST_OLD_REGEX_H
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   166
   //
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   167
   // the following are deprecated, do not use!!
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   168
   //
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   169
   operator int()const;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   170
   operator unsigned int()const;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   171
   operator short()const
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   172
   {
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   173
      return (short)(int)(*this);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   174
   }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   175
   operator unsigned short()const
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   176
   {
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   177
      return (unsigned short)(unsigned int)(*this);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   178
   }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   179
#endif
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   180
};
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   181
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   182
typedef sub_match<const char*> csub_match;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   183
typedef sub_match<std::string::const_iterator> ssub_match;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   184
#ifndef BOOST_NO_WREGEX
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   185
typedef sub_match<const wchar_t*> wcsub_match;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   186
typedef sub_match<std::wstring::const_iterator> wssub_match;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   187
#endif
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   188
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   189
// comparison to std::basic_string<> part 1:
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   190
template <class RandomAccessIterator, class traits, class Allocator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   191
inline bool operator == (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   192
                  const sub_match<RandomAccessIterator>& m)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   193
{ return s.compare(m.str()) == 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   194
template <class RandomAccessIterator, class traits, class Allocator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   195
inline bool operator != (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   196
                  const sub_match<RandomAccessIterator>& m)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   197
{ return s.compare(m.str()) != 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   198
template <class RandomAccessIterator, class traits, class Allocator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   199
inline bool operator < (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   200
                 const sub_match<RandomAccessIterator>& m)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   201
{ return s.compare(m.str()) < 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   202
template <class RandomAccessIterator, class traits, class Allocator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   203
inline bool operator <= (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   204
                  const sub_match<RandomAccessIterator>& m)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   205
{ return s.compare(m.str()) <= 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   206
template <class RandomAccessIterator, class traits, class Allocator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   207
inline bool operator >= (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   208
                  const sub_match<RandomAccessIterator>& m)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   209
{ return s.compare(m.str()) >= 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   210
template <class RandomAccessIterator, class traits, class Allocator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   211
inline bool operator > (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   212
                 const sub_match<RandomAccessIterator>& m)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   213
{ return s.compare(m.str()) > 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   214
// comparison to std::basic_string<> part 2:
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   215
template <class RandomAccessIterator, class traits, class Allocator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   216
inline bool operator == (const sub_match<RandomAccessIterator>& m,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   217
                  const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   218
{ return m.str().compare(s) == 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   219
template <class RandomAccessIterator, class traits, class Allocator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   220
inline bool operator != (const sub_match<RandomAccessIterator>& m,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   221
                  const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   222
{ return m.str().compare(s) != 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   223
template <class RandomAccessIterator, class traits, class Allocator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   224
inline bool operator < (const sub_match<RandomAccessIterator>& m,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   225
                  const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   226
{ return m.str().compare(s) < 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   227
template <class RandomAccessIterator, class traits, class Allocator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   228
inline bool operator > (const sub_match<RandomAccessIterator>& m,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   229
                  const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   230
{ return m.str().compare(s) > 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   231
template <class RandomAccessIterator, class traits, class Allocator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   232
inline bool operator <= (const sub_match<RandomAccessIterator>& m,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   233
                  const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   234
{ return m.str().compare(s) <= 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   235
template <class RandomAccessIterator, class traits, class Allocator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   236
inline bool operator >= (const sub_match<RandomAccessIterator>& m,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   237
                  const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   238
{ return m.str().compare(s) >= 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   239
// comparison to const charT* part 1:
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   240
template <class RandomAccessIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   241
inline bool operator == (const sub_match<RandomAccessIterator>& m,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   242
                  typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   243
{ return m.str().compare(s) == 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   244
template <class RandomAccessIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   245
inline bool operator != (const sub_match<RandomAccessIterator>& m,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   246
                  typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   247
{ return m.str().compare(s) != 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   248
template <class RandomAccessIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   249
inline bool operator > (const sub_match<RandomAccessIterator>& m,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   250
                  typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   251
{ return m.str().compare(s) > 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   252
template <class RandomAccessIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   253
inline bool operator < (const sub_match<RandomAccessIterator>& m,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   254
                  typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   255
{ return m.str().compare(s) < 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   256
template <class RandomAccessIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   257
inline bool operator >= (const sub_match<RandomAccessIterator>& m,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   258
                  typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   259
{ return m.str().compare(s) >= 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   260
template <class RandomAccessIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   261
inline bool operator <= (const sub_match<RandomAccessIterator>& m,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   262
                  typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   263
{ return m.str().compare(s) <= 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   264
// comparison to const charT* part 2:
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   265
template <class RandomAccessIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   266
inline bool operator == (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   267
                  const sub_match<RandomAccessIterator>& m)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   268
{ return m.str().compare(s) == 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   269
template <class RandomAccessIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   270
inline bool operator != (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   271
                  const sub_match<RandomAccessIterator>& m)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   272
{ return m.str().compare(s) != 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   273
template <class RandomAccessIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   274
inline bool operator < (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   275
                  const sub_match<RandomAccessIterator>& m)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   276
{ return m.str().compare(s) > 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   277
template <class RandomAccessIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   278
inline bool operator > (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   279
                  const sub_match<RandomAccessIterator>& m)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   280
{ return m.str().compare(s) < 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   281
template <class RandomAccessIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   282
inline bool operator <= (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   283
                  const sub_match<RandomAccessIterator>& m)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   284
{ return m.str().compare(s) >= 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   285
template <class RandomAccessIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   286
inline bool operator >= (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   287
                  const sub_match<RandomAccessIterator>& m)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   288
{ return m.str().compare(s) <= 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   289
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   290
// comparison to const charT& part 1:
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   291
template <class RandomAccessIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   292
inline bool operator == (const sub_match<RandomAccessIterator>& m,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   293
                  typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   294
{ return m.str().compare(0, m.length(), &s, 1) == 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   295
template <class RandomAccessIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   296
inline bool operator != (const sub_match<RandomAccessIterator>& m,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   297
                  typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   298
{ return m.str().compare(0, m.length(), &s, 1) != 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   299
template <class RandomAccessIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   300
inline bool operator > (const sub_match<RandomAccessIterator>& m,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   301
                  typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   302
{ return m.str().compare(0, m.length(), &s, 1) > 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   303
template <class RandomAccessIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   304
inline bool operator < (const sub_match<RandomAccessIterator>& m,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   305
                  typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   306
{ return m.str().compare(0, m.length(), &s, 1) < 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   307
template <class RandomAccessIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   308
inline bool operator >= (const sub_match<RandomAccessIterator>& m,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   309
                  typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   310
{ return m.str().compare(0, m.length(), &s, 1) >= 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   311
template <class RandomAccessIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   312
inline bool operator <= (const sub_match<RandomAccessIterator>& m,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   313
                  typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   314
{ return m.str().compare(0, m.length(), &s, 1) <= 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   315
// comparison to const charT* part 2:
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   316
template <class RandomAccessIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   317
inline bool operator == (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   318
                  const sub_match<RandomAccessIterator>& m)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   319
{ return m.str().compare(0, m.length(), &s, 1) == 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   320
template <class RandomAccessIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   321
inline bool operator != (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   322
                  const sub_match<RandomAccessIterator>& m)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   323
{ return m.str().compare(0, m.length(), &s, 1) != 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   324
template <class RandomAccessIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   325
inline bool operator < (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   326
                  const sub_match<RandomAccessIterator>& m)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   327
{ return m.str().compare(0, m.length(), &s, 1) > 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   328
template <class RandomAccessIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   329
inline bool operator > (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   330
                  const sub_match<RandomAccessIterator>& m)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   331
{ return m.str().compare(0, m.length(), &s, 1) < 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   332
template <class RandomAccessIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   333
inline bool operator <= (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   334
                  const sub_match<RandomAccessIterator>& m)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   335
{ return m.str().compare(0, m.length(), &s, 1) >= 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   336
template <class RandomAccessIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   337
inline bool operator >= (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   338
                  const sub_match<RandomAccessIterator>& m)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   339
{ return m.str().compare(0, m.length(), &s, 1) <= 0; }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   340
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   341
// addition operators:
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   342
template <class RandomAccessIterator, class traits, class Allocator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   343
inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator> 
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   344
operator + (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   345
                  const sub_match<RandomAccessIterator>& m)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   346
{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   347
   std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator> result;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   348
   result.reserve(s.size() + m.length() + 1);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   349
   return result.append(s).append(m.first, m.second);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   350
}
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   351
template <class RandomAccessIterator, class traits, class Allocator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   352
inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator> 
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   353
operator + (const sub_match<RandomAccessIterator>& m,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   354
            const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   355
{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   356
   std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator> result;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   357
   result.reserve(s.size() + m.length() + 1);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   358
   return result.append(m.first, m.second).append(s);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   359
}
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   360
#if !(defined(__GNUC__) && defined(BOOST_NO_STD_LOCALE))
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   361
template <class RandomAccessIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   362
inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type> 
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   363
operator + (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   364
                  const sub_match<RandomAccessIterator>& m)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   365
{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   366
   std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type> result;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   367
   result.reserve(std::char_traits<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>::length(s) + m.length() + 1);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   368
   return result.append(s).append(m.first, m.second);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   369
}
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   370
template <class RandomAccessIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   371
inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type> 
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   372
operator + (const sub_match<RandomAccessIterator>& m,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   373
            typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const * s)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   374
{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   375
   std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type> result;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   376
   result.reserve(std::char_traits<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>::length(s) + m.length() + 1);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   377
   return result.append(m.first, m.second).append(s);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   378
}
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   379
#else
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   380
// worwaround versions:
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   381
template <class RandomAccessIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   382
inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type> 
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   383
operator + (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   384
                  const sub_match<RandomAccessIterator>& m)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   385
{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   386
   return s + m.str();
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   387
}
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   388
template <class RandomAccessIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   389
inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type> 
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   390
operator + (const sub_match<RandomAccessIterator>& m,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   391
            typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const * s)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   392
{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   393
   return m.str() + s;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   394
}
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   395
#endif
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   396
template <class RandomAccessIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   397
inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type> 
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   398
operator + (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   399
                  const sub_match<RandomAccessIterator>& m)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   400
{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   401
   std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type> result;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   402
   result.reserve(m.length() + 2);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   403
   return result.append(1, s).append(m.first, m.second);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   404
}
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   405
template <class RandomAccessIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   406
inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type> 
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   407
operator + (const sub_match<RandomAccessIterator>& m,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   408
            typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   409
{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   410
   std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type> result;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   411
   result.reserve(m.length() + 2);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   412
   return result.append(m.first, m.second).append(1, s);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   413
}
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   414
template <class RandomAccessIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   415
inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type> 
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   416
operator + (const sub_match<RandomAccessIterator>& m1,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   417
            const sub_match<RandomAccessIterator>& m2)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   418
{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   419
   std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type> result;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   420
   result.reserve(m1.length() + m2.length() + 1);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   421
   return result.append(m1.first, m1.second).append(m2.first, m2.second);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   422
}
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   423
#ifndef BOOST_NO_STD_LOCALE
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   424
template <class charT, class traits, class RandomAccessIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   425
std::basic_ostream<charT, traits>&
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   426
   operator << (std::basic_ostream<charT, traits>& os,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   427
                const sub_match<RandomAccessIterator>& s)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   428
{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   429
   return (os << s.str());
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   430
}
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   431
#else
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   432
template <class RandomAccessIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   433
std::ostream& operator << (std::ostream& os,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   434
                           const sub_match<RandomAccessIterator>& s)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   435
{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   436
   return (os << s.str());
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   437
}
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   438
#endif
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   439
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   440
#ifdef BOOST_OLD_REGEX_H
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   441
namespace re_detail{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   442
template <class BidiIterator, class charT>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   443
int do_toi(BidiIterator i, BidiIterator j, char c, int radix)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   444
{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   445
   std::string s(i, j);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   446
   char* p;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   447
   int result = std::strtol(s.c_str(), &p, radix);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   448
   if(*p)raise_regex_exception("Bad sub-expression");
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   449
   return result;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   450
}
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   451
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   452
//
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   453
// helper:
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   454
template <class I, class charT>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   455
int do_toi(I& i, I j, charT c)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   456
{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   457
   int result = 0;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   458
   while((i != j) && (isdigit(*i)))
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   459
   {
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   460
      result = result*10 + (*i - '0');
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   461
      ++i;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   462
   }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   463
   return result;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   464
}
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   465
}
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   466
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   467
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   468
template <class BidiIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   469
sub_match<BidiIterator>::operator int()const
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   470
{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   471
   BidiIterator i = first;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   472
   BidiIterator j = second;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   473
   if(i == j)raise_regex_exception("Bad sub-expression");
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   474
   int neg = 1;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   475
   if((i != j) && (*i == '-'))
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   476
   {
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   477
      neg = -1;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   478
      ++i;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   479
   }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   480
   neg *= re_detail::do_toi(i, j, *i);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   481
   if(i != j)raise_regex_exception("Bad sub-expression");
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   482
   return neg;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   483
}
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   484
template <class BidiIterator>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   485
sub_match<BidiIterator>::operator unsigned int()const
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   486
{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   487
   BidiIterator i = first;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   488
   BidiIterator j = second;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   489
   if(i == j)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   490
      raise_regex_exception("Bad sub-expression");
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   491
   return re_detail::do_toi(i, j, *first);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   492
}
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   493
#endif
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   494
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   495
} // namespace boost
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   496
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   497
#ifdef BOOST_MSVC
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   498
#pragma warning(push)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   499
#pragma warning(disable: 4103)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   500
#endif
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   501
#ifdef BOOST_HAS_ABI_HEADERS
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   502
#  include BOOST_ABI_SUFFIX
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   503
#endif
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   504
#ifdef BOOST_MSVC
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   505
#pragma warning(pop)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   506
#endif
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   507
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   508
#endif
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   509