annotate DEPENDENCIES/generic/include/boost/regex/config.hpp @ 133:4acb5d8d80b6 tip

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