imgtools/imglib/boostlibrary/boost/regex/v4/regex_raw_buffer.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         regex_raw_buffer.hpp
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    15
  *   VERSION      see <boost/version.hpp>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    16
  *   DESCRIPTION: Raw character buffer for regex code.
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    17
  *                Note this is an internal header file included
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    18
  *                by regex.hpp, do not include on its own.
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    19
  */
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    20
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    21
#ifndef BOOST_REGEX_RAW_BUFFER_HPP
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    22
#define BOOST_REGEX_RAW_BUFFER_HPP
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    23
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    24
#ifndef BOOST_REGEX_CONFIG_HPP
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    25
#include <boost/regex/config.hpp>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    26
#endif
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    27
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    28
#include <algorithm>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    29
#include <cstddef>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    30
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    31
namespace boost{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    32
   namespace re_detail{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    33
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    34
#ifdef BOOST_MSVC
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    35
#pragma warning(push)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    36
#pragma warning(disable: 4103)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    37
#endif
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    38
#ifdef BOOST_HAS_ABI_HEADERS
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    39
#  include BOOST_ABI_PREFIX
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    40
#endif
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    41
#ifdef BOOST_MSVC
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    42
#pragma warning(pop)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    43
#endif
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    44
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    45
struct empty_padding{};
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    46
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    47
union padding
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    48
{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    49
   void* p;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    50
   unsigned int i;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    51
};
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    52
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    53
template <int N>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    54
struct padding3
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    55
{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    56
   enum{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    57
      padding_size = 8,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    58
      padding_mask = 7
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    59
   };
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    60
};
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    61
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    62
template<>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    63
struct padding3<2>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    64
{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    65
   enum{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    66
      padding_size = 2,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    67
      padding_mask = 1
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    68
   };
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    69
};
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    70
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    71
template<>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    72
struct padding3<4>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    73
{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    74
   enum{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    75
      padding_size = 4,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    76
      padding_mask = 3
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    77
   };
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    78
};
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    79
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    80
template<>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    81
struct padding3<8>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    82
{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    83
   enum{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    84
      padding_size = 8,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    85
      padding_mask = 7
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    86
   };
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    87
};
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    88
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    89
template<>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    90
struct padding3<16>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    91
{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    92
   enum{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    93
      padding_size = 16,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    94
      padding_mask = 15
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    95
   };
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    96
};
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    97
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    98
enum{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    99
   padding_size = padding3<sizeof(padding)>::padding_size,
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   100
   padding_mask = padding3<sizeof(padding)>::padding_mask
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   101
};
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   102
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   103
//
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   104
// class raw_storage
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   105
// basically this is a simplified vector<unsigned char>
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   106
// this is used by basic_regex for expression storage
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   107
//
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   108
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   109
class BOOST_REGEX_DECL raw_storage
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   110
{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   111
public:
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   112
   typedef std::size_t           size_type;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   113
   typedef unsigned char*        pointer;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   114
private:
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   115
   pointer last, start, end;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   116
public:
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   117
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   118
   raw_storage();
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   119
   raw_storage(size_type n);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   120
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   121
   ~raw_storage()
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   122
   {
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   123
      ::operator delete(start);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   124
   }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   125
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   126
   void BOOST_REGEX_CALL resize(size_type n);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   127
   
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   128
   void* BOOST_REGEX_CALL extend(size_type n)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   129
   {
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   130
      if(size_type(last - end) < n)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   131
         resize(n + (end - start));
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   132
      register pointer result = end;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   133
      end += n;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   134
      return result;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   135
   }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   136
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   137
   void* BOOST_REGEX_CALL insert(size_type pos, size_type n);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   138
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   139
   size_type BOOST_REGEX_CALL size()
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   140
   {
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   141
      return end - start;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   142
   }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   143
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   144
   size_type BOOST_REGEX_CALL capacity()
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   145
   {
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   146
      return last - start;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   147
   }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   148
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   149
   void* BOOST_REGEX_CALL data()const
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   150
   {
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   151
      return start;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   152
   }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   153
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   154
   size_type BOOST_REGEX_CALL index(void* ptr)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   155
   {
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   156
      return static_cast<pointer>(ptr) - static_cast<pointer>(data());
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   157
   }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   158
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   159
   void BOOST_REGEX_CALL clear()
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   160
   {
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   161
      end = start;
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
   void BOOST_REGEX_CALL align()
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   165
   {
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   166
      // move end up to a boundary:
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   167
      end = start + (((end - start) + padding_mask) & ~padding_mask);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   168
   }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   169
   void swap(raw_storage& that)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   170
   {
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   171
      std::swap(start, that.start);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   172
      std::swap(end, that.end);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   173
      std::swap(last, that.last);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   174
  }
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   175
};
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   176
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   177
inline raw_storage::raw_storage()
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   178
{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   179
   last = start = end = 0;
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
inline raw_storage::raw_storage(size_type n)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   183
{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   184
   start = end = static_cast<pointer>(::operator new(n));
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   185
   BOOST_REGEX_NOEH_ASSERT(start)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   186
   last = start + n;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   187
}
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   188
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   189
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   190
#ifdef BOOST_MSVC
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   191
#pragma warning(push)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   192
#pragma warning(disable: 4103)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   193
#endif
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   194
#ifdef BOOST_HAS_ABI_HEADERS
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   195
#  include BOOST_ABI_SUFFIX
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   196
#endif
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   197
#ifdef BOOST_MSVC
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   198
#pragma warning(pop)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   199
#endif
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   200
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   201
} // namespace re_detail
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   202
} // namespace boost
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   203
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   204
#endif
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   205
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   206
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   207
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   208
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   209
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
   210