📄 config.hpp
字号:
* If there are no exceptions then we must report critical-errors* the only way we know how; by terminating.*/# define BOOST_REGEX_NOEH_ASSERT(x)\if(0 == (x))\{\ std::string s("Error: critical regex++ failure in: ");\ s.append(#x);\ std::runtime_error e(s);\ boost::throw_exception(e);\}#else/** With exceptions then error handling is taken care of and* there is no need for these checks:*/# define BOOST_REGEX_NOEH_ASSERT(x)#endif/***************************************************************************** * * Debugging / tracing support: * ****************************************************************************/#if defined(BOOST_REGEX_DEBUG) && defined(__cplusplus)# include <iostream>using std::cout;using std::cin;using std::cerr;using std::endl;using std::hex;using std::dec;# ifndef jm_assert# define jm_assert(x) assert(x)# endif# ifndef jm_trace# define jm_trace(x) cerr << x << endl;# endif# ifndef jm_instrument# define jm_instrument jm_trace(__FILE__<<"#"<<__LINE__)# endifnamespace boost{ namespace re_detail{class debug_guard{public: char g1[32]; const char* pc; char* pnc; const char* file; int line; char g2[32]; debug_guard(const char* f, int l, const char* p1 = 0, char* p2 = 0); ~debug_guard();};# define BOOST_RE_GUARD_STACK boost::re_detail::debug_guard sg(__FILE__, __LINE__);# define BOOST_RE_GUARD_GLOBAL(x) const char g1##x[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, }; char g2##x[32]; boost::debug_guard g3##x(__FILE__, __LINE__, g1##x, g2##x); } // namespace re_detail} // namespace boost#else# define jm_assert(x)# define jm_trace(x)# define BOOST_RE_GUARD_STACK# define BOOST_RE_GUARD_GLOBAL(x)# ifndef jm_instrument# define jm_instrument# endif#endif/***************************************************************************** * * Stack protection under MS Windows: * ****************************************************************************/#if !defined(BOOST_REGEX_NO_W32) && !defined(BOOST_REGEX_V3)# if(defined(_WIN32) || defined(_WIN64) || defined(_WINCE)) \ && !defined(__GNUC__) \ && !(defined(__BORLANDC__) && (__BORLANDC__ >= 0x600)) \ && !(defined(__MWERKS__) && (__MWERKS__ <= 0x3003))# define BOOST_REGEX_HAS_MS_STACK_GUARD# endif#elif defined(BOOST_REGEX_HAS_MS_STACK_GUARD)# undef BOOST_REGEX_HAS_MS_STACK_GUARD#endif#if defined(__cplusplus) && defined(BOOST_REGEX_HAS_MS_STACK_GUARD)namespace boost{namespace re_detail{BOOST_REGEX_DECL void BOOST_REGEX_CALL reset_stack_guard_page();}}#endif/***************************************************************************** * * Error handling: * ****************************************************************************/#if defined(__cplusplus)namespace boost{namespace re_detail{BOOST_REGEX_DECL void BOOST_REGEX_CALL raise_regex_exception(const std::string& s);template <class traits>void raise_error(const traits& t, unsigned code){ (void)t; // warning suppression raise_regex_exception(t.error_string(code));}}}#endif/***************************************************************************** * * Algorithm selection and configuration: * ****************************************************************************/#if !defined(BOOST_REGEX_RECURSIVE) && !defined(BOOST_REGEX_NON_RECURSIVE)# if defined(BOOST_REGEX_HAS_MS_STACK_GUARD) && !defined(_STLP_DEBUG) && !defined(__STL_DEBUG)# define BOOST_REGEX_RECURSIVE# else# define BOOST_REGEX_NON_RECURSIVE# endif#endif#ifdef BOOST_REGEX_NON_RECURSIVE# ifdef BOOST_REGEX_RECURSIVE# error "Can't set both BOOST_REGEX_RECURSIVE and BOOST_REGEX_NON_RECURSIVE"# endif# ifndef BOOST_REGEX_BLOCKSIZE# define BOOST_REGEX_BLOCKSIZE 4096# endif# if BOOST_REGEX_BLOCKSIZE < 512# error "BOOST_REGEX_BLOCKSIZE must be at least 512"# endif# ifndef BOOST_REGEX_MAX_BLOCKS# define BOOST_REGEX_MAX_BLOCKS 1024# endif# ifdef BOOST_REGEX_HAS_MS_STACK_GUARD# undef BOOST_REGEX_HAS_MS_STACK_GUARD# endif# ifndef BOOST_REGEX_MAX_CACHE_BLOCKS# define BOOST_REGEX_MAX_CACHE_BLOCKS 16# endif#endif/***************************************************************************** * * Fix broken compilers that wrongly #define some symbols: * ****************************************************************************/#ifdef __cplusplus// the following may be defined as macros; this is// incompatable with std::something syntax, we have// no choice but to undef them?#ifdef sprintf#undef sprintf#endif#ifdef swprintf#undef swprintf#endif#endif/***************************************************************************** * * Fix broken broken namespace support: * ****************************************************************************/#if defined(BOOST_NO_STDC_NAMESPACE) && defined(__cplusplus)namespace std{ using ::ptrdiff_t; using ::size_t; using ::sprintf; using ::abs; using ::setlocale;# ifndef BOOST_NO_WREGEX# ifndef BOOST_NO_SWPRINTF using ::swprintf;# endif using ::wcstombs; using ::mbstowcs;# if !defined(BOOST_NO_STD_LOCALE) && !defined (__STL_NO_NATIVE_MBSTATE_T) && !defined(_STLP_NO_NATIVE_MBSTATE_T) using ::mbstate_t;# endif# endif /* BOOST_NO_WREGEX */ using ::fseek; using ::fread; using ::ftell; using ::fopen; using ::fclose; using ::FILE;#ifdef BOOST_NO_EXCEPTIONS using ::fprintf; using ::abort;#endif}#endif/***************************************************************************** * * helper functions pointer_construct/pointer_destroy: * ****************************************************************************/#ifdef __cplusplusnamespace boost{ namespace re_detail{#ifdef BOOST_MSVC#pragma warning (push)#pragma warning (disable : 4100)#endiftemplate <class T>inline void pointer_destroy(T* p){ p->~T(); (void)p; }#ifdef BOOST_MSVC#pragma warning (pop)#endiftemplate <class T>inline void pointer_construct(T* p, const T& t){ new (p) T(t); }}} // namespaces#endif/***************************************************************************** * * helper memory allocation functions: * ****************************************************************************/#if defined(__cplusplus) && defined(BOOST_REGEX_NON_RECURSIVE)namespace boost{ namespace re_detail{BOOST_REGEX_DECL void* BOOST_REGEX_CALL get_mem_block();BOOST_REGEX_DECL void BOOST_REGEX_CALL put_mem_block(void*);}} // namespaces#endif/***************************************************************************** * * Diagnostics: * ****************************************************************************/#ifdef BOOST_REGEX_CONFIG_INFOBOOST_REGEX_DECL void BOOST_REGEX_CALL print_regex_library_info();#endif#if defined(BOOST_REGEX_DIAG)# pragma message ("BOOST_REGEX_DECL set as: " BOOST_STRINGIZE(BOOST_REGEX_DECL))# pragma message ("BOOST_REGEX_CALL set as: " BOOST_STRINGIZE(BOOST_REGEX_CALL))# pragma message ("BOOST_REGEX_CCALL set as: " BOOST_STRINGIZE(BOOST_REGEX_CCALL))#ifdef BOOST_REGEX_USE_C_LOCALE# pragma message ("Using C locale in regex traits class")#elif BOOST_REGEX_USE_CPP_LOCALE# pragma message ("Using C++ locale in regex traits class")#else# pragma message ("Using Win32 locale in regex traits class")#endif#ifdef BOOST_REGEX_DYN_LINK# pragma message ("Dynamic linking enabled")#endif#ifdef BOOST_REGEX_NO_LIB# pragma message ("Auto-linking disabled")#endif#ifdef BOOST_REGEX_NO_EXTERNAL_TEMPLATES# pragma message ("Extern templates disabled")#endif#ifdef BOOST_REGEX_V3# pragma message ("Using Version 3 regex code")#else# pragma message ("Using Version 4 regex code")#endif#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -