imgtools/imglib/boostlibrary/boost/regex/config.hpp
changeset 600 6d08f4a05d93
equal deleted inserted replaced
599:fa7a3cc6effd 600:6d08f4a05d93
       
     1 /*
       
     2  *
       
     3  * Copyright (c) 1998-2002
       
     4  * John Maddock
       
     5  *
       
     6  * Use, modification and distribution are subject to the
       
     7  * Boost Software License, Version 1.0. (See accompanying file
       
     8  * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       
     9  *
       
    10  */
       
    11 
       
    12  /*
       
    13   *   LOCATION:    see http://www.boost.org for most recent version.
       
    14   *   FILE         config.hpp
       
    15   *   VERSION      see <boost/version.hpp>
       
    16   *   DESCRIPTION: regex extended config setup.
       
    17   */
       
    18 
       
    19 #ifndef BOOST_REGEX_CONFIG_HPP
       
    20 #define BOOST_REGEX_CONFIG_HPP
       
    21 /*
       
    22  * Borland C++ Fix/error check
       
    23  * this has to go *before* we include any std lib headers:
       
    24  */
       
    25 #if defined(__BORLANDC__)
       
    26 #  include <boost/regex/config/borland.hpp>
       
    27 #endif
       
    28 
       
    29 /*****************************************************************************
       
    30  *
       
    31  *  Include all the headers we need here:
       
    32  *
       
    33  ****************************************************************************/
       
    34 
       
    35 #ifdef __cplusplus
       
    36 
       
    37 #  ifndef BOOST_REGEX_USER_CONFIG
       
    38 #     define BOOST_REGEX_USER_CONFIG <boost/regex/user.hpp>
       
    39 #  endif
       
    40 
       
    41 #  include BOOST_REGEX_USER_CONFIG
       
    42 
       
    43 #  include <boost/config.hpp>
       
    44 
       
    45 #else
       
    46    /*
       
    47     * C build,
       
    48     * don't include <boost/config.hpp> because that may
       
    49     * do C++ specific things in future...
       
    50     */
       
    51 #  include <stdlib.h>
       
    52 #  include <stddef.h>
       
    53 #  ifdef _MSC_VER
       
    54 #     define BOOST_MSVC _MSC_VER
       
    55 #  endif
       
    56 #endif
       
    57 
       
    58 /*****************************************************************************
       
    59  *
       
    60  *  Boilerplate regex config options:
       
    61  *
       
    62  ****************************************************************************/
       
    63 
       
    64 /* Obsolete macro, use BOOST_VERSION instead: */
       
    65 #define BOOST_RE_VERSION 320
       
    66 
       
    67 /* fix: */
       
    68 #if defined(_UNICODE) && !defined(UNICODE)
       
    69 #define UNICODE
       
    70 #endif
       
    71 
       
    72 /*
       
    73  * Fix for gcc prior to 3.4: std::ctype<wchar_t> doesn't allow
       
    74  * masks to be combined, for example:
       
    75  * std::use_facet<std::ctype<wchar_t> >.is(std::ctype_base::lower|std::ctype_base::upper, L'a');
       
    76  * returns *false*.
       
    77  */
       
    78 #ifdef __GLIBCPP__
       
    79 #  define BOOST_REGEX_BUGGY_CTYPE_FACET
       
    80 #endif
       
    81 
       
    82 /*
       
    83  * Intel C++ before 8.0 ends up with unresolved externals unless we turn off
       
    84  * extern template support:
       
    85  */
       
    86 #if defined(BOOST_INTEL) && defined(__cplusplus) && (BOOST_INTEL <= 800)
       
    87 #  define BOOST_REGEX_NO_EXTERNAL_TEMPLATES
       
    88 #endif
       
    89 /*
       
    90  * Visual C++ doesn't support external templates with C++ extensions turned off:
       
    91  */
       
    92 #if defined(_MSC_VER) && !defined(_MSC_EXTENSIONS)
       
    93 #  define BOOST_REGEX_NO_EXTERNAL_TEMPLATES
       
    94 #endif
       
    95 
       
    96 /*
       
    97  * If there isn't good enough wide character support then there will
       
    98  * be no wide character regular expressions:
       
    99  */
       
   100 #if (defined(BOOST_NO_CWCHAR) || defined(BOOST_NO_CWCTYPE) || defined(BOOST_NO_STD_WSTRING))
       
   101 #  if !defined(BOOST_NO_WREGEX)
       
   102 #     define BOOST_NO_WREGEX
       
   103 #  endif
       
   104 #else
       
   105 #  if defined(__sgi) && (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION))
       
   106       /* STLPort on IRIX is misconfigured: <cwctype> does not compile
       
   107        * as a temporary fix include <wctype.h> instead and prevent inclusion
       
   108        * of STLPort version of <cwctype> */
       
   109 #     include <wctype.h>
       
   110 #     define __STLPORT_CWCTYPE
       
   111 #     define _STLP_CWCTYPE
       
   112 #  endif
       
   113 
       
   114 #ifdef __cplusplus
       
   115 #  include <boost/regex/config/cwchar.hpp>
       
   116 #endif
       
   117 
       
   118 #endif
       
   119 
       
   120 /*
       
   121  * If Win32 support has been disabled for boost in general, then
       
   122  * it is for regex in particular:
       
   123  */
       
   124 #if defined(BOOST_DISABLE_WIN32) && !defined(BOOST_REGEX_NO_W32)
       
   125 #  define BOOST_REGEX_NO_W32
       
   126 #endif
       
   127 
       
   128 /* disable our own file-iterators and mapfiles if we can't
       
   129  * support them: */
       
   130 #if !defined(BOOST_HAS_DIRENT_H) && !(defined(_WIN32) && !defined(BOOST_REGEX_NO_W32))
       
   131 #  define BOOST_REGEX_NO_FILEITER
       
   132 #endif
       
   133 
       
   134 /* backwards compatibitity: */
       
   135 #if defined(BOOST_RE_NO_LIB)
       
   136 #  define BOOST_REGEX_NO_LIB
       
   137 #endif
       
   138 
       
   139 #if defined(__GNUC__) && (defined(_WIN32) || defined(__CYGWIN__))
       
   140 /* gcc on win32 has problems if you include <windows.h>
       
   141    (sporadically generates bad code). */
       
   142 #  define BOOST_REGEX_NO_W32
       
   143 #endif
       
   144 #if defined(__COMO__) && !defined(BOOST_REGEX_NO_W32) && !defined(_MSC_EXTENSIONS)
       
   145 #  define BOOST_REGEX_NO_W32
       
   146 #endif
       
   147 
       
   148 /*****************************************************************************
       
   149  *
       
   150  *  Wide character workarounds:
       
   151  *
       
   152  ****************************************************************************/
       
   153 
       
   154 /*
       
   155  * define BOOST_REGEX_HAS_OTHER_WCHAR_T when wchar_t is a native type, but the users
       
   156  * code may be built with wchar_t as unsigned short: basically when we're building
       
   157  * with MSVC and the /Zc:wchar_t option we place some extra unsigned short versions
       
   158  * of the non-inline functions in the library, so that users can still link to the lib,
       
   159  * irrespective of whether their own code is built with /Zc:wchar_t.
       
   160  */
       
   161 #if defined(__cplusplus) && (defined(BOOST_MSVC) || defined(__ICL)) && !defined(BOOST_NO_INTRINSIC_WCHAR_T) && defined(BOOST_WINDOWS) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION) && !defined(BOOST_RWSTD_VER)
       
   162 #  define BOOST_REGEX_HAS_OTHER_WCHAR_T
       
   163 #  ifdef BOOST_MSVC
       
   164 #     pragma warning(push)
       
   165 #     pragma warning(disable : 4251 4231 4660)
       
   166 #  endif
       
   167 #  ifdef _DLL
       
   168 #     include <string>
       
   169       extern template class __declspec(dllimport) std::basic_string<unsigned short>;
       
   170 #  endif
       
   171 #  ifdef BOOST_MSVC
       
   172 #     pragma warning(pop)
       
   173 #  endif
       
   174 #endif
       
   175 
       
   176 
       
   177 /*****************************************************************************
       
   178  *
       
   179  *  Set up dll import/export options:
       
   180  *
       
   181  ****************************************************************************/
       
   182 
       
   183 #if defined(BOOST_HAS_DECLSPEC) && (defined(BOOST_REGEX_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)) && !defined(BOOST_REGEX_STATIC_LINK)
       
   184 #  if defined(BOOST_REGEX_SOURCE)
       
   185 #     define BOOST_REGEX_DECL __declspec(dllexport)
       
   186 #     define BOOST_REGEX_BUILD_DLL
       
   187 #  else
       
   188 #     define BOOST_REGEX_DECL __declspec(dllimport)
       
   189 #  endif
       
   190 #endif
       
   191 
       
   192 #ifndef BOOST_REGEX_DECL
       
   193 #  define BOOST_REGEX_DECL
       
   194 #endif
       
   195 
       
   196 #if !defined(BOOST_REGEX_NO_LIB) && !defined(BOOST_REGEX_SOURCE) && !defined(BOOST_ALL_NO_LIB) && defined(__cplusplus)
       
   197 #  define BOOST_LIB_NAME boost_regex
       
   198 #  if defined(BOOST_REGEX_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)
       
   199 #     define BOOST_DYN_LINK
       
   200 #  endif
       
   201 #  ifdef BOOST_REGEX_DIAG
       
   202 #     define BOOST_LIB_DIAGNOSTIC
       
   203 #  endif
       
   204 #  include <boost/config/auto_link.hpp>
       
   205 #endif
       
   206 
       
   207 /*****************************************************************************
       
   208  *
       
   209  *  Set up function call type:
       
   210  *
       
   211  ****************************************************************************/
       
   212 
       
   213 #if defined(BOOST_MSVC) && (BOOST_MSVC >= 1200) && defined(_MSC_EXTENSIONS)
       
   214 #if defined(_DEBUG) || defined(__MSVC_RUNTIME_CHECKS) || defined(_MANAGED)
       
   215 #  define BOOST_REGEX_CALL __cdecl
       
   216 #else
       
   217 #  define BOOST_REGEX_CALL __fastcall
       
   218 #endif
       
   219 #  define BOOST_REGEX_CCALL __cdecl
       
   220 #endif
       
   221 
       
   222 #if defined(__BORLANDC__) && !defined(BOOST_DISABLE_WIN32)
       
   223 #  define BOOST_REGEX_CALL __fastcall
       
   224 #  define BOOST_REGEX_CCALL __stdcall
       
   225 #endif
       
   226 
       
   227 #ifndef BOOST_REGEX_CALL
       
   228 #  define BOOST_REGEX_CALL
       
   229 #endif
       
   230 #ifndef BOOST_REGEX_CCALL
       
   231 #define BOOST_REGEX_CCALL
       
   232 #endif
       
   233 
       
   234 /*****************************************************************************
       
   235  *
       
   236  *  Set up localisation model:
       
   237  *
       
   238  ****************************************************************************/
       
   239 
       
   240 /* backwards compatibility: */
       
   241 #ifdef BOOST_RE_LOCALE_C
       
   242 #  define BOOST_REGEX_USE_C_LOCALE
       
   243 #endif
       
   244 
       
   245 #ifdef BOOST_RE_LOCALE_CPP
       
   246 #  define BOOST_REGEX_USE_CPP_LOCALE
       
   247 #endif
       
   248 
       
   249 /* Win32 defaults to native Win32 locale: */
       
   250 #if defined(_WIN32) && !defined(BOOST_REGEX_USE_WIN32_LOCALE) && !defined(BOOST_REGEX_USE_C_LOCALE) && !defined(BOOST_REGEX_USE_CPP_LOCALE) && !defined(BOOST_REGEX_NO_W32)
       
   251 #  define BOOST_REGEX_USE_WIN32_LOCALE
       
   252 #endif
       
   253 /* otherwise use C++ locale if supported: */
       
   254 #if !defined(BOOST_REGEX_USE_WIN32_LOCALE) && !defined(BOOST_REGEX_USE_C_LOCALE) && !defined(BOOST_REGEX_USE_CPP_LOCALE) && !defined(BOOST_NO_STD_LOCALE)
       
   255 #  define BOOST_REGEX_USE_CPP_LOCALE
       
   256 #endif
       
   257 /* otherwise use C+ locale: */
       
   258 #if !defined(BOOST_REGEX_USE_WIN32_LOCALE) && !defined(BOOST_REGEX_USE_C_LOCALE) && !defined(BOOST_REGEX_USE_CPP_LOCALE)
       
   259 #  define BOOST_REGEX_USE_C_LOCALE
       
   260 #endif
       
   261 
       
   262 #ifndef BOOST_REGEX_MAX_STATE_COUNT
       
   263 #  define BOOST_REGEX_MAX_STATE_COUNT 100000000
       
   264 #endif
       
   265 
       
   266 
       
   267 /*****************************************************************************
       
   268  *
       
   269  *  Error Handling for exception free compilers:
       
   270  *
       
   271  ****************************************************************************/
       
   272 
       
   273 #ifdef BOOST_NO_EXCEPTIONS
       
   274 /*
       
   275  * If there are no exceptions then we must report critical-errors
       
   276  * the only way we know how; by terminating.
       
   277  */
       
   278 #include <stdexcept>
       
   279 #include <string>
       
   280 #include <boost/throw_exception.hpp>
       
   281 
       
   282 #  define BOOST_REGEX_NOEH_ASSERT(x)\
       
   283 if(0 == (x))\
       
   284 {\
       
   285    std::string s("Error: critical regex++ failure in: ");\
       
   286    s.append(#x);\
       
   287    std::runtime_error e(s);\
       
   288    boost::throw_exception(e);\
       
   289 }
       
   290 #else
       
   291 /*
       
   292  * With exceptions then error handling is taken care of and
       
   293  * there is no need for these checks:
       
   294  */
       
   295 #  define BOOST_REGEX_NOEH_ASSERT(x)
       
   296 #endif
       
   297 
       
   298 
       
   299 /*****************************************************************************
       
   300  *
       
   301  *  Stack protection under MS Windows:
       
   302  *
       
   303  ****************************************************************************/
       
   304 
       
   305 #if !defined(BOOST_REGEX_NO_W32) && !defined(BOOST_REGEX_V3)
       
   306 #  if(defined(_WIN32) || defined(_WIN64) || defined(_WINCE)) \
       
   307         && !defined(__GNUC__) \
       
   308         && !(defined(__BORLANDC__) && (__BORLANDC__ >= 0x600)) \
       
   309         && !(defined(__MWERKS__) && (__MWERKS__ <= 0x3003))
       
   310 #     define BOOST_REGEX_HAS_MS_STACK_GUARD
       
   311 #  endif
       
   312 #elif defined(BOOST_REGEX_HAS_MS_STACK_GUARD)
       
   313 #  undef BOOST_REGEX_HAS_MS_STACK_GUARD
       
   314 #endif
       
   315 
       
   316 #if defined(__cplusplus) && defined(BOOST_REGEX_HAS_MS_STACK_GUARD)
       
   317 
       
   318 namespace boost{
       
   319 namespace re_detail{
       
   320 
       
   321 BOOST_REGEX_DECL void BOOST_REGEX_CALL reset_stack_guard_page();
       
   322 
       
   323 }
       
   324 }
       
   325 
       
   326 #endif
       
   327 
       
   328 
       
   329 /*****************************************************************************
       
   330  *
       
   331  *  Algorithm selection and configuration:
       
   332  *
       
   333  ****************************************************************************/
       
   334 
       
   335 #if !defined(BOOST_REGEX_RECURSIVE) && !defined(BOOST_REGEX_NON_RECURSIVE)
       
   336 #  if defined(BOOST_REGEX_HAS_MS_STACK_GUARD) && !defined(_STLP_DEBUG) && !defined(__STL_DEBUG) && !(defined(BOOST_MSVC) && (BOOST_MSVC >= 1400))
       
   337 #     define BOOST_REGEX_RECURSIVE
       
   338 #  else
       
   339 #     define BOOST_REGEX_NON_RECURSIVE
       
   340 #  endif
       
   341 #endif
       
   342 
       
   343 #ifdef BOOST_REGEX_NON_RECURSIVE
       
   344 #  ifdef BOOST_REGEX_RECURSIVE
       
   345 #     error "Can't set both BOOST_REGEX_RECURSIVE and BOOST_REGEX_NON_RECURSIVE"
       
   346 #  endif
       
   347 #  ifndef BOOST_REGEX_BLOCKSIZE
       
   348 #     define BOOST_REGEX_BLOCKSIZE 4096
       
   349 #  endif
       
   350 #  if BOOST_REGEX_BLOCKSIZE < 512
       
   351 #     error "BOOST_REGEX_BLOCKSIZE must be at least 512"
       
   352 #  endif
       
   353 #  ifndef BOOST_REGEX_MAX_BLOCKS
       
   354 #     define BOOST_REGEX_MAX_BLOCKS 1024
       
   355 #  endif
       
   356 #  ifdef BOOST_REGEX_HAS_MS_STACK_GUARD
       
   357 #     undef BOOST_REGEX_HAS_MS_STACK_GUARD
       
   358 #  endif
       
   359 #  ifndef BOOST_REGEX_MAX_CACHE_BLOCKS
       
   360 #     define BOOST_REGEX_MAX_CACHE_BLOCKS 16
       
   361 #  endif
       
   362 #endif
       
   363 
       
   364 
       
   365 /*****************************************************************************
       
   366  *
       
   367  *  helper memory allocation functions:
       
   368  *
       
   369  ****************************************************************************/
       
   370 
       
   371 #if defined(__cplusplus) && defined(BOOST_REGEX_NON_RECURSIVE)
       
   372 namespace boost{ namespace re_detail{
       
   373 
       
   374 BOOST_REGEX_DECL void* BOOST_REGEX_CALL get_mem_block();
       
   375 BOOST_REGEX_DECL void BOOST_REGEX_CALL put_mem_block(void*);
       
   376 
       
   377 }} /* namespaces */
       
   378 #endif
       
   379 
       
   380 /*****************************************************************************
       
   381  *
       
   382  *  Diagnostics:
       
   383  *
       
   384  ****************************************************************************/
       
   385 
       
   386 #ifdef BOOST_REGEX_CONFIG_INFO
       
   387 BOOST_REGEX_DECL void BOOST_REGEX_CALL print_regex_library_info();
       
   388 #endif
       
   389 
       
   390 #if defined(BOOST_REGEX_DIAG)
       
   391 #  pragma message ("BOOST_REGEX_DECL" BOOST_STRINGIZE(=BOOST_REGEX_DECL))
       
   392 #  pragma message ("BOOST_REGEX_CALL" BOOST_STRINGIZE(=BOOST_REGEX_CALL))
       
   393 #  pragma message ("BOOST_REGEX_CCALL" BOOST_STRINGIZE(=BOOST_REGEX_CCALL))
       
   394 #ifdef BOOST_REGEX_USE_C_LOCALE
       
   395 #  pragma message ("Using C locale in regex traits class")
       
   396 #elif BOOST_REGEX_USE_CPP_LOCALE
       
   397 #  pragma message ("Using C++ locale in regex traits class")
       
   398 #else
       
   399 #  pragma message ("Using Win32 locale in regex traits class")
       
   400 #endif
       
   401 #if defined(BOOST_REGEX_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)
       
   402 #  pragma message ("Dynamic linking enabled")
       
   403 #endif
       
   404 #if defined(BOOST_REGEX_NO_LIB) || defined(BOOST_ALL_NO_LIB)
       
   405 #  pragma message ("Auto-linking disabled")
       
   406 #endif
       
   407 #ifdef BOOST_REGEX_NO_EXTERNAL_TEMPLATES
       
   408 #  pragma message ("Extern templates disabled")
       
   409 #endif
       
   410 
       
   411 #endif
       
   412 
       
   413 #endif
       
   414 
       
   415 
       
   416 
       
   417