ossrv_pub/boost_apis/boost/regex/config.hpp
changeset 0 e4d67989cc36
equal deleted inserted replaced
-1:000000000000 0:e4d67989cc36
       
     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 /*
       
    91  * If there isn't good enough wide character support then there will
       
    92  * be no wide character regular expressions:
       
    93  */
       
    94 #if (defined(BOOST_NO_CWCHAR) || defined(BOOST_NO_CWCTYPE) || defined(BOOST_NO_STD_WSTRING))
       
    95 #  if !defined(BOOST_NO_WREGEX)
       
    96 #     define BOOST_NO_WREGEX
       
    97 #  endif
       
    98 #else
       
    99 #  if defined(__sgi) && (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION))
       
   100       /* STLPort on IRIX is misconfigured: <cwctype> does not compile
       
   101        * as a temporary fix include <wctype.h> instead and prevent inclusion
       
   102        * of STLPort version of <cwctype> */
       
   103 #     include <wctype.h>
       
   104 #     define __STLPORT_CWCTYPE
       
   105 #     define _STLP_CWCTYPE
       
   106 #  endif
       
   107 
       
   108 #ifdef __cplusplus
       
   109 #  include <boost/regex/config/cwchar.hpp>
       
   110 #endif
       
   111 
       
   112 #endif
       
   113 
       
   114 /*
       
   115  * If Win32 support has been disabled for boost in general, then
       
   116  * it is for regex in particular:
       
   117  */
       
   118 #if defined(BOOST_DISABLE_WIN32) && !defined(BOOST_REGEX_NO_W32)
       
   119 #  define BOOST_REGEX_NO_W32
       
   120 #endif
       
   121 
       
   122 /* disable our own file-iterators and mapfiles if we can't
       
   123  * support them: */
       
   124 #if !defined(BOOST_HAS_DIRENT_H) && !(defined(_WIN32) && !defined(BOOST_REGEX_NO_W32))
       
   125 #  define BOOST_REGEX_NO_FILEITER
       
   126 #endif
       
   127 
       
   128 /* backwards compatibitity: */
       
   129 #if defined(BOOST_RE_NO_LIB)
       
   130 #  define BOOST_REGEX_NO_LIB
       
   131 #endif
       
   132 
       
   133 #if defined(__GNUC__) && (defined(_WIN32) || defined(__CYGWIN__))
       
   134 /* gcc on win32 has problems if you include <windows.h>
       
   135    (sporadically generates bad code). */
       
   136 #  define BOOST_REGEX_NO_W32
       
   137 #endif
       
   138 #if defined(__COMO__) && !defined(BOOST_REGEX_NO_W32) && !defined(_MSC_EXTENSIONS)
       
   139 #  define BOOST_REGEX_NO_W32
       
   140 #endif
       
   141 
       
   142 /*****************************************************************************
       
   143  *
       
   144  *  Wide character workarounds:
       
   145  *
       
   146  ****************************************************************************/
       
   147 
       
   148 /*
       
   149  * define BOOST_REGEX_HAS_OTHER_WCHAR_T when wchar_t is a native type, but the users
       
   150  * code may be built with wchar_t as unsigned short: basically when we're building
       
   151  * with MSVC and the /Zc:wchar_t option we place some extra unsigned short versions
       
   152  * of the non-inline functions in the library, so that users can still link to the lib,
       
   153  * irrespective of whether their own code is built with /Zc:wchar_t.
       
   154  */
       
   155 #if defined(__cplusplus) && (defined(BOOST_MSVC) || defined(__ICL)) && !defined(BOOST_NO_INTRINSIC_WCHAR_T) && defined(BOOST_WINDOWS) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
       
   156 #  define BOOST_REGEX_HAS_OTHER_WCHAR_T
       
   157 #  ifdef BOOST_MSVC
       
   158 #     pragma warning(push)
       
   159 #     pragma warning(disable : 4251 4231 4660)
       
   160 #  endif
       
   161 #  ifdef _DLL
       
   162 #     include <string>
       
   163       extern template class __declspec(dllimport) std::basic_string<unsigned short>;
       
   164 #  endif
       
   165 #  ifdef BOOST_MSVC
       
   166 #     pragma warning(pop)
       
   167 #  endif
       
   168 #endif
       
   169 
       
   170 
       
   171 /*****************************************************************************
       
   172  *
       
   173  *  Set up dll import/export options:
       
   174  *
       
   175  ****************************************************************************/
       
   176 
       
   177 #if defined(BOOST_HAS_DECLSPEC) && (defined(BOOST_REGEX_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)) && !defined(BOOST_REGEX_STATIC_LINK)
       
   178 #  if defined(BOOST_REGEX_SOURCE)
       
   179 #     define BOOST_REGEX_DECL __declspec(dllexport)
       
   180 #     define BOOST_REGEX_BUILD_DLL
       
   181 #  else
       
   182 #     define BOOST_REGEX_DECL __declspec(dllimport)
       
   183 #  endif
       
   184 #endif
       
   185 
       
   186 #ifndef BOOST_REGEX_DECL
       
   187 #  define BOOST_REGEX_DECL
       
   188 #endif
       
   189 
       
   190 #if !defined(BOOST_REGEX_NO_LIB) && !defined(BOOST_REGEX_SOURCE) && !defined(BOOST_ALL_NO_LIB) && defined(__cplusplus)
       
   191 #  define BOOST_LIB_NAME boost_regex
       
   192 #  if defined(BOOST_REGEX_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)
       
   193 #     define BOOST_DYN_LINK
       
   194 #  endif
       
   195 #  ifdef BOOST_REGEX_DIAG
       
   196 #     define BOOST_LIB_DIAGNOSTIC
       
   197 #  endif
       
   198 #  include <boost/config/auto_link.hpp>
       
   199 #endif
       
   200 
       
   201 /*****************************************************************************
       
   202  *
       
   203  *  Set up function call type:
       
   204  *
       
   205  ****************************************************************************/
       
   206 
       
   207 #if defined(BOOST_MSVC) && (BOOST_MSVC >= 1200) && defined(_MSC_EXTENSIONS)
       
   208 #if defined(_DEBUG) || defined(__MSVC_RUNTIME_CHECKS) || defined(_MANAGED)
       
   209 #  define BOOST_REGEX_CALL __cdecl
       
   210 #else
       
   211 #  define BOOST_REGEX_CALL __fastcall
       
   212 #endif
       
   213 #  define BOOST_REGEX_CCALL __cdecl
       
   214 #endif
       
   215 
       
   216 #if defined(__BORLANDC__) && !defined(BOOST_DISABLE_WIN32)
       
   217 #  define BOOST_REGEX_CALL __fastcall
       
   218 #  define BOOST_REGEX_CCALL __stdcall
       
   219 #endif
       
   220 
       
   221 #ifndef BOOST_REGEX_CALL
       
   222 #  define BOOST_REGEX_CALL
       
   223 #endif
       
   224 #ifndef BOOST_REGEX_CCALL
       
   225 #define BOOST_REGEX_CCALL
       
   226 #endif
       
   227 
       
   228 /*****************************************************************************
       
   229  *
       
   230  *  Set up localisation model:
       
   231  *
       
   232  ****************************************************************************/
       
   233 
       
   234 /* backwards compatibility: */
       
   235 #ifdef BOOST_RE_LOCALE_C
       
   236 #  define BOOST_REGEX_USE_C_LOCALE
       
   237 #endif
       
   238 
       
   239 #ifdef BOOST_RE_LOCALE_CPP
       
   240 #  define BOOST_REGEX_USE_CPP_LOCALE
       
   241 #endif
       
   242 
       
   243 /* Win32 defaults to native Win32 locale: */
       
   244 #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)
       
   245 #  define BOOST_REGEX_USE_WIN32_LOCALE
       
   246 #endif
       
   247 /* otherwise use C++ locale if supported: */
       
   248 #if !defined(BOOST_REGEX_USE_WIN32_LOCALE) && !defined(BOOST_REGEX_USE_C_LOCALE) && !defined(BOOST_REGEX_USE_CPP_LOCALE) && !defined(BOOST_NO_STD_LOCALE)
       
   249 #  define BOOST_REGEX_USE_CPP_LOCALE
       
   250 #endif
       
   251 /* otherwise use C+ locale: */
       
   252 #if !defined(BOOST_REGEX_USE_WIN32_LOCALE) && !defined(BOOST_REGEX_USE_C_LOCALE) && !defined(BOOST_REGEX_USE_CPP_LOCALE)
       
   253 #  define BOOST_REGEX_USE_C_LOCALE
       
   254 #endif
       
   255 
       
   256 #ifndef BOOST_REGEX_MAX_STATE_COUNT
       
   257 #  define BOOST_REGEX_MAX_STATE_COUNT 100000000
       
   258 #endif
       
   259 
       
   260 
       
   261 /*****************************************************************************
       
   262  *
       
   263  *  Error Handling for exception free compilers:
       
   264  *
       
   265  ****************************************************************************/
       
   266 
       
   267 #ifdef BOOST_NO_EXCEPTIONS
       
   268 /*
       
   269  * If there are no exceptions then we must report critical-errors
       
   270  * the only way we know how; by terminating.
       
   271  */
       
   272 #include <stdexcept>
       
   273 #include <string>
       
   274 #include <boost/throw_exception.hpp>
       
   275 
       
   276 #  define BOOST_REGEX_NOEH_ASSERT(x)\
       
   277 if(0 == (x))\
       
   278 {\
       
   279    std::string s("Error: critical regex++ failure in: ");\
       
   280    s.append(#x);\
       
   281    std::runtime_error e(s);\
       
   282    boost::throw_exception(e);\
       
   283 }
       
   284 #else
       
   285 /*
       
   286  * With exceptions then error handling is taken care of and
       
   287  * there is no need for these checks:
       
   288  */
       
   289 #  define BOOST_REGEX_NOEH_ASSERT(x)
       
   290 #endif
       
   291 
       
   292 
       
   293 /*****************************************************************************
       
   294  *
       
   295  *  Stack protection under MS Windows:
       
   296  *
       
   297  ****************************************************************************/
       
   298 
       
   299 #if !defined(BOOST_REGEX_NO_W32) && !defined(BOOST_REGEX_V3)
       
   300 #  if(defined(_WIN32) || defined(_WIN64) || defined(_WINCE)) \
       
   301         && !defined(__GNUC__) \
       
   302         && !(defined(__BORLANDC__) && (__BORLANDC__ >= 0x600)) \
       
   303         && !(defined(__MWERKS__) && (__MWERKS__ <= 0x3003))
       
   304 #     define BOOST_REGEX_HAS_MS_STACK_GUARD
       
   305 #  endif
       
   306 #elif defined(BOOST_REGEX_HAS_MS_STACK_GUARD)
       
   307 #  undef BOOST_REGEX_HAS_MS_STACK_GUARD
       
   308 #endif
       
   309 
       
   310 #if defined(__cplusplus) && defined(BOOST_REGEX_HAS_MS_STACK_GUARD)
       
   311 
       
   312 namespace boost{
       
   313 namespace re_detail{
       
   314 
       
   315 BOOST_REGEX_DECL void BOOST_REGEX_CALL reset_stack_guard_page();
       
   316 
       
   317 }
       
   318 }
       
   319 
       
   320 #endif
       
   321 
       
   322 
       
   323 /*****************************************************************************
       
   324  *
       
   325  *  Algorithm selection and configuration:
       
   326  *
       
   327  ****************************************************************************/
       
   328 
       
   329 #if !defined(BOOST_REGEX_RECURSIVE) && !defined(BOOST_REGEX_NON_RECURSIVE)
       
   330 #  if defined(BOOST_REGEX_HAS_MS_STACK_GUARD) && !defined(_STLP_DEBUG) && !defined(__STL_DEBUG) && !(defined(BOOST_MSVC) && (BOOST_MSVC >= 1400))
       
   331 #     define BOOST_REGEX_RECURSIVE
       
   332 #  else
       
   333 #     define BOOST_REGEX_NON_RECURSIVE
       
   334 #  endif
       
   335 #endif
       
   336 
       
   337 #ifdef BOOST_REGEX_NON_RECURSIVE
       
   338 #  ifdef BOOST_REGEX_RECURSIVE
       
   339 #     error "Can't set both BOOST_REGEX_RECURSIVE and BOOST_REGEX_NON_RECURSIVE"
       
   340 #  endif
       
   341 #  ifndef BOOST_REGEX_BLOCKSIZE
       
   342 #     define BOOST_REGEX_BLOCKSIZE 4096
       
   343 #  endif
       
   344 #  if BOOST_REGEX_BLOCKSIZE < 512
       
   345 #     error "BOOST_REGEX_BLOCKSIZE must be at least 512"
       
   346 #  endif
       
   347 #  ifndef BOOST_REGEX_MAX_BLOCKS
       
   348 #     define BOOST_REGEX_MAX_BLOCKS 1024
       
   349 #  endif
       
   350 #  ifdef BOOST_REGEX_HAS_MS_STACK_GUARD
       
   351 #     undef BOOST_REGEX_HAS_MS_STACK_GUARD
       
   352 #  endif
       
   353 #  ifndef BOOST_REGEX_MAX_CACHE_BLOCKS
       
   354 #     define BOOST_REGEX_MAX_CACHE_BLOCKS 16
       
   355 #  endif
       
   356 #endif
       
   357 
       
   358 
       
   359 /*****************************************************************************
       
   360  *
       
   361  *  helper memory allocation functions:
       
   362  *
       
   363  ****************************************************************************/
       
   364 
       
   365 #if defined(__cplusplus) && defined(BOOST_REGEX_NON_RECURSIVE)
       
   366 namespace boost{ namespace re_detail{
       
   367 
       
   368 BOOST_REGEX_DECL void* BOOST_REGEX_CALL get_mem_block();
       
   369 BOOST_REGEX_DECL void BOOST_REGEX_CALL put_mem_block(void*);
       
   370 
       
   371 }} /* namespaces */
       
   372 #endif
       
   373 
       
   374 /*****************************************************************************
       
   375  *
       
   376  *  Diagnostics:
       
   377  *
       
   378  ****************************************************************************/
       
   379 
       
   380 #ifdef BOOST_REGEX_CONFIG_INFO
       
   381 BOOST_REGEX_DECL void BOOST_REGEX_CALL print_regex_library_info();
       
   382 #endif
       
   383 
       
   384 #if defined(BOOST_REGEX_DIAG)
       
   385 #  pragma message ("BOOST_REGEX_DECL" BOOST_STRINGIZE(=BOOST_REGEX_DECL))
       
   386 #  pragma message ("BOOST_REGEX_CALL" BOOST_STRINGIZE(=BOOST_REGEX_CALL))
       
   387 #  pragma message ("BOOST_REGEX_CCALL" BOOST_STRINGIZE(=BOOST_REGEX_CCALL))
       
   388 #ifdef BOOST_REGEX_USE_C_LOCALE
       
   389 #  pragma message ("Using C locale in regex traits class")
       
   390 #elif BOOST_REGEX_USE_CPP_LOCALE
       
   391 #  pragma message ("Using C++ locale in regex traits class")
       
   392 #else
       
   393 #  pragma message ("Using Win32 locale in regex traits class")
       
   394 #endif
       
   395 #if defined(BOOST_REGEX_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)
       
   396 #  pragma message ("Dynamic linking enabled")
       
   397 #endif
       
   398 #if defined(BOOST_REGEX_NO_LIB) || defined(BOOST_ALL_NO_LIB)
       
   399 #  pragma message ("Auto-linking disabled")
       
   400 #endif
       
   401 #ifdef BOOST_REGEX_NO_EXTERNAL_TEMPLATES
       
   402 #  pragma message ("Extern templates disabled")
       
   403 #endif
       
   404 
       
   405 #endif
       
   406 
       
   407 #endif
       
   408 
       
   409 
       
   410 
       
   411