1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/ossrv/ossrv_pub/boost_apis/boost/wave/wave_config.hpp Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,403 @@
1.4 +/*=============================================================================
1.5 + Boost.Wave: A Standard compliant C++ preprocessor library
1.6 +
1.7 + Global application configuration
1.8 +
1.9 + http://www.boost.org/
1.10 +
1.11 + Copyright (c) 2001-2007 Hartmut Kaiser. Distributed under the Boost
1.12 + Software License, Version 1.0. (See accompanying file
1.13 + LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
1.14 +=============================================================================*/
1.15 +
1.16 +#if !defined(WAVE_CONFIG_HPP_F143F90A_A63F_4B27_AC41_9CA4F14F538D_INCLUDED)
1.17 +#define WAVE_CONFIG_HPP_F143F90A_A63F_4B27_AC41_9CA4F14F538D_INCLUDED
1.18 +
1.19 +#include <boost/config.hpp>
1.20 +#include <boost/detail/workaround.hpp>
1.21 +#include <boost/version.hpp>
1.22 +#include <boost/spirit/version.hpp>
1.23 +#include <boost/wave/wave_version.hpp>
1.24 +
1.25 +///////////////////////////////////////////////////////////////////////////////
1.26 +// Define the maximal include nesting depth allowed. If this value isn't
1.27 +// defined it defaults to 1024
1.28 +//
1.29 +// To define a new initial include nesting define the following constant
1.30 +// before including this file.
1.31 +//
1.32 +#if !defined(BOOST_WAVE_MAX_INCLUDE_LEVEL_DEPTH)
1.33 +#define BOOST_WAVE_MAX_INCLUDE_LEVEL_DEPTH 1024
1.34 +#endif
1.35 +
1.36 +///////////////////////////////////////////////////////////////////////////////
1.37 +// Decide, whether to support variadics and placemarkers
1.38 +//
1.39 +// To implement support variadics and placemarkers define the following to
1.40 +// something not equal to zero.
1.41 +//
1.42 +#if !defined(BOOST_WAVE_SUPPORT_VARIADICS_PLACEMARKERS)
1.43 +#define BOOST_WAVE_SUPPORT_VARIADICS_PLACEMARKERS 1
1.44 +#endif
1.45 +
1.46 +///////////////////////////////////////////////////////////////////////////////
1.47 +// Decide, whether to implement a #warning directive as an extension to the
1.48 +// C++ Standard (same as #error, but emits a warning, not an error)
1.49 +//
1.50 +// To disable the implementation of #warning directives, define the following
1.51 +// constant as zero before including this file.
1.52 +//
1.53 +#if !defined(BOOST_WAVE_SUPPORT_WARNING_DIRECTIVE)
1.54 +#define BOOST_WAVE_SUPPORT_WARNING_DIRECTIVE 1
1.55 +#endif
1.56 +
1.57 +///////////////////////////////////////////////////////////////////////////////
1.58 +// Decide, whether to implement #pragma once
1.59 +//
1.60 +// To disable the implementation of #pragma once, define the following
1.61 +// constant as zero before including this file.
1.62 +//
1.63 +#if !defined(BOOST_WAVE_SUPPORT_PRAGMA_ONCE)
1.64 +#define BOOST_WAVE_SUPPORT_PRAGMA_ONCE 1
1.65 +#endif
1.66 +
1.67 +///////////////////////////////////////////////////////////////////////////////
1.68 +// Decide, whether to implement #pragma message("")
1.69 +//
1.70 +// To disable the implementation of #pragma message(""), define the following
1.71 +// constant as zero before including this file.
1.72 +//
1.73 +#if !defined(BOOST_WAVE_SUPPORT_PRAGMA_MESSAGE)
1.74 +#define BOOST_WAVE_SUPPORT_PRAGMA_MESSAGE 1
1.75 +#endif
1.76 +
1.77 +///////////////////////////////////////////////////////////////////////////////
1.78 +// Decide, whether to implement #include_next
1.79 +// Please note, that this is an extension to the C++ Standard.
1.80 +//
1.81 +// To disable the implementation of #include_next, define the following
1.82 +// constant as zero before including this file.
1.83 +//
1.84 +#if !defined(BOOST_WAVE_SUPPORT_INCLUDE_NEXT)
1.85 +#define BOOST_WAVE_SUPPORT_INCLUDE_NEXT 1
1.86 +#endif
1.87 +
1.88 +///////////////////////////////////////////////////////////////////////////////
1.89 +// Undefine the following, to enable some MS specific language extensions:
1.90 +// __int8, __int16, __int32, __int64, __based, __declspec, __cdecl,
1.91 +// __fastcall, __stdcall, __try, __except, __finally, __leave, __inline,
1.92 +// __asm, #region, #endregion
1.93 +//
1.94 +// Note: By default this is enabled for Windows based systems, otherwise it's
1.95 +// disabled.
1.96 +#if !defined(BOOST_WAVE_SUPPORT_MS_EXTENSIONS)
1.97 +#if defined(BOOST_WINDOWS)
1.98 +#define BOOST_WAVE_SUPPORT_MS_EXTENSIONS 1
1.99 +#else
1.100 +#define BOOST_WAVE_SUPPORT_MS_EXTENSIONS 0
1.101 +#endif
1.102 +#endif
1.103 +
1.104 +///////////////////////////////////////////////////////////////////////////////
1.105 +// Allow the message body of the #error and #warning directives to be
1.106 +// preprocessed before the diagnostic is issued.
1.107 +//
1.108 +// To disable preprocessing of the body of #error and #warning directives,
1.109 +// define the following constant as zero before including this file.
1.110 +//
1.111 +#if !defined(BOOST_WAVE_PREPROCESS_ERROR_MESSAGE_BODY)
1.112 +#define BOOST_WAVE_PREPROCESS_ERROR_MESSAGE_BODY 1
1.113 +#endif
1.114 +
1.115 +///////////////////////////////////////////////////////////////////////////////
1.116 +// Allow the #pragma directives to be returned to the caller (optionally after
1.117 +// preprocessing the body)
1.118 +//
1.119 +// To disable the library to emit unknown #pragma directives, define the
1.120 +// following constant as zero before including this file.
1.121 +//
1.122 +#if !defined(BOOST_WAVE_EMIT_PRAGMA_DIRECTIVES)
1.123 +#define BOOST_WAVE_EMIT_PRAGMA_DIRECTIVES 1
1.124 +#endif
1.125 +
1.126 +///////////////////////////////////////////////////////////////////////////////
1.127 +// Allow the body of a #pragma directive to be preprocessed before the
1.128 +// directive is returned to the caller.
1.129 +//
1.130 +// To disable the preprocessing of the body of #pragma directives, define the
1.131 +// following constant as zero before including this file.
1.132 +//
1.133 +#if !defined(BOOST_WAVE_PREPROCESS_PRAGMA_BODY)
1.134 +#define BOOST_WAVE_PREPROCESS_PRAGMA_BODY 1
1.135 +#endif
1.136 +
1.137 +///////////////////////////////////////////////////////////////////////////////
1.138 +// Allow to define macros with the command line syntax (-DMACRO(x)=definition)
1.139 +//
1.140 +// To disable the the possibility to define macros based on the command line
1.141 +// syntax, define the following constant as zero before including this file.
1.142 +//
1.143 +#if !defined(BOOST_WAVE_ENABLE_COMMANDLINE_MACROS)
1.144 +#define BOOST_WAVE_ENABLE_COMMANDLINE_MACROS 1
1.145 +#endif
1.146 +
1.147 +///////////////////////////////////////////////////////////////////////////////
1.148 +// Define the pragma keyword to be used by the library to recognize its own
1.149 +// pragma's. If nothing else is defined, then 'wave' will be used as the
1.150 +// default keyword, i.e. the library recognizes all
1.151 +//
1.152 +// #pragma wave option [(argument)]
1.153 +//
1.154 +// and dispatches the handling to the interpret_pragma() preprocessing hook
1.155 +// function (see file: preprocessing_hooks.hpp). The arguments part of the
1.156 +// pragma is optional.
1.157 +// The BOOST_WAVE_PRAGMA_KEYWORD constant needs to be defined to
1.158 +// resolve as a string literal value.
1.159 +#if !defined(BOOST_WAVE_PRAGMA_KEYWORD)
1.160 +#define BOOST_WAVE_PRAGMA_KEYWORD "wave"
1.161 +#endif
1.162 +
1.163 +///////////////////////////////////////////////////////////////////////////////
1.164 +// Define the string type to be used to store the token values and the file
1.165 +// names inside a file_position template class
1.166 +//
1.167 +#if !defined(BOOST_WAVE_STRINGTYPE)
1.168 +
1.169 +#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) || \
1.170 + BOOST_WORKAROUND(__MWERKS__, < 0x3200) || \
1.171 + (defined(__DECCXX) && defined(__alpha)) || \
1.172 + defined(BOOST_WAVE_STRINGTYPE_USE_STDSTRING)
1.173 +
1.174 +// VC7 isn't able to compile the flex_string class, fall back to std::string
1.175 +// CW up to 8.3 chokes as well *sigh*
1.176 +// Tru64/CXX has linker problems when using flex_string
1.177 +#define BOOST_WAVE_STRINGTYPE std::string
1.178 +#if !defined(BOOST_WAVE_STRINGTYPE_USE_STDSTRING)
1.179 +#define BOOST_WAVE_STRINGTYPE_USE_STDSTRING 1
1.180 +#endif
1.181 +
1.182 +#else
1.183 +// use the following, if you have a fast std::allocator<char>
1.184 +#define BOOST_WAVE_STRINGTYPE boost::wave::util::flex_string< \
1.185 + char, std::char_traits<char>, std::allocator<char>, \
1.186 + boost::wave::util::CowString</*char, */\
1.187 + boost::wave::util::AllocatorStringStorage<char> \
1.188 + > \
1.189 + > \
1.190 + /**/
1.191 +
1.192 +/* #define BOOST_WAVE_STRINGTYPE boost::wave::util::flex_string< \
1.193 + char, std::char_traits<char>, boost::fast_pool_allocator<char>, \
1.194 + boost::wave::util::CowString<char, \
1.195 + boost::wave::util::AllocatorStringStorage<char, \
1.196 + boost::fast_pool_allocator<char> \
1.197 + > \
1.198 + > \
1.199 + > \
1.200 +*/ /**/
1.201 +
1.202 +// This include is needed for the flex_string class used in the
1.203 +// BOOST_WAVE_STRINGTYPE above.
1.204 +#include <boost/wave/util/flex_string.hpp>
1.205 +
1.206 +// This include is needed for the boost::fast_allocator class used in the
1.207 +// BOOST_WAVE_STRINGTYPE above.
1.208 +// Configure Boost.Pool thread support (for now: no thread support at all)
1.209 +//#define BOOST_NO_MT
1.210 +//#include <boost/pool/pool_alloc.hpp>
1.211 +
1.212 +// Use the following, if you want to incorporate Maxim Yegorushkin's
1.213 +// const_string library (http://sourceforge.net/projects/conststring/), which
1.214 +// may be even faster, than using the flex_string class from above
1.215 +//#define BOOST_WAVE_STRINGTYPE boost::const_string<char>
1.216 +//
1.217 +//#include <boost/const_string/const_string.hpp>
1.218 +//#include <boost/const_string/io.hpp>
1.219 +//#include <boost/const_string/concatenation.hpp>
1.220 +
1.221 +#endif // BOOST_WORKAROUND(_MSC_VER, <= 1300)
1.222 +#endif
1.223 +
1.224 +///////////////////////////////////////////////////////////////////////////////
1.225 +// The following definition forces the Spirit tree code to use list's instead
1.226 +// of vectors, which may be more efficient on some platforms
1.227 +// #define BOOST_SPIRIT_USE_LIST_FOR_TREES
1.228 +
1.229 +///////////////////////////////////////////////////////////////////////////////
1.230 +// The following definition forces the Spirit tree code to use boost pool
1.231 +// allocators in stead of the std::allocator for the vector/list's.
1.232 +// #define BOOST_SPIRIT_USE_BOOST_ALLOCATOR_FOR_TREES
1.233 +
1.234 +///////////////////////////////////////////////////////////////////////////////
1.235 +// Uncomment the following, if you need debug output, the
1.236 +// BOOST_SPIRIT_DEBUG_FLAGS_CPP constants below help to fine control the
1.237 +// amount of the generated debug output.
1.238 +//#define BOOST_SPIRIT_DEBUG
1.239 +
1.240 +///////////////////////////////////////////////////////////////////////////////
1.241 +// Debug flags for the Wave library, possible flags specified below.
1.242 +//
1.243 +// Note: These flags take effect only if the BOOST_SPIRIT_DEBUG constant
1.244 +// above is defined as well.
1.245 +#define BOOST_SPIRIT_DEBUG_FLAGS_CPP_GRAMMAR 0x0001
1.246 +#define BOOST_SPIRIT_DEBUG_FLAGS_TIME_CONVERSION 0x0002
1.247 +#define BOOST_SPIRIT_DEBUG_FLAGS_CPP_EXPR_GRAMMAR 0x0004
1.248 +#define BOOST_SPIRIT_DEBUG_FLAGS_INTLIT_GRAMMAR 0x0008
1.249 +#define BOOST_SPIRIT_DEBUG_FLAGS_CHLIT_GRAMMAR 0x0010
1.250 +#define BOOST_SPIRIT_DEBUG_FLAGS_DEFINED_GRAMMAR 0x0020
1.251 +#define BOOST_SPIRIT_DEBUG_FLAGS_PREDEF_MACROS_GRAMMAR 0x0040
1.252 +
1.253 +#if !defined(BOOST_SPIRIT_DEBUG_FLAGS_CPP)
1.254 +#define BOOST_SPIRIT_DEBUG_FLAGS_CPP 0 // default is no debugging
1.255 +#endif
1.256 +
1.257 +///////////////////////////////////////////////////////////////////////////////
1.258 +//
1.259 +// For all recognized preprocessor statements the output parse trees
1.260 +// formatted as xml are printed. The formatted parse trees are streamed to the
1.261 +// std::ostream defined by the WAVE_DUMP_PARSE_TREE_OUT constant.
1.262 +//
1.263 +// To enable the output of these parse trees, define the following constant
1.264 +// as zero something not equal to zero before including this file.
1.265 +//
1.266 +#if !defined(BOOST_WAVE_DUMP_PARSE_TREE)
1.267 +#define BOOST_WAVE_DUMP_PARSE_TREE 0
1.268 +#endif
1.269 +#if BOOST_WAVE_DUMP_PARSE_TREE != 0 && !defined(BOOST_WAVE_DUMP_PARSE_TREE_OUT)
1.270 +#define BOOST_WAVE_DUMP_PARSE_TREE_OUT std::cerr
1.271 +#endif
1.272 +
1.273 +///////////////////////////////////////////////////////////////////////////////
1.274 +//
1.275 +// For all #if and #elif directives the preprocessed expressions are printed.
1.276 +// These expressions are streamed to the std::ostream defined by the
1.277 +// BOOST_WAVE_DUMP_CONDITIONAL_EXPRESSIONS_OUT constant.
1.278 +//
1.279 +// To enable the output of the preprocessed expressions, define the following
1.280 +// constant as something not equal to zero before including this file.
1.281 +//
1.282 +#if !defined(BOOST_WAVE_DUMP_CONDITIONAL_EXPRESSIONS)
1.283 +#define BOOST_WAVE_DUMP_CONDITIONAL_EXPRESSIONS 0
1.284 +#endif
1.285 +#if BOOST_WAVE_DUMP_CONDITIONAL_EXPRESSIONS != 0 && \
1.286 + !defined(BOOST_WAVE_DUMP_CONDITIONAL_EXPRESSIONS_OUT)
1.287 +#define BOOST_WAVE_DUMP_CONDITIONAL_EXPRESSIONS_OUT std::cerr
1.288 +#endif
1.289 +
1.290 +///////////////////////////////////////////////////////////////////////////////
1.291 +// Decide, whether to use the separate compilation model for the instantiation
1.292 +// of the C++ lexer objects.
1.293 +//
1.294 +// If this is defined, you should explicitly instantiate the C++ lexer
1.295 +// template with the correct parameters in a separate compilation unit of
1.296 +// your program (see the file instantiate_re2c_lexer.cpp).
1.297 +//
1.298 +// To use the lexer inclusion model, define the following constant as
1.299 +// something not equal to zero before including this file.
1.300 +//
1.301 +#if !defined(BOOST_WAVE_SEPARATE_LEXER_INSTANTIATION)
1.302 +#define BOOST_WAVE_SEPARATE_LEXER_INSTANTIATION 1
1.303 +#endif
1.304 +
1.305 +///////////////////////////////////////////////////////////////////////////////
1.306 +// Decide, whether to use the separate compilation model for the instantiation
1.307 +// of the grammar objects.
1.308 +//
1.309 +// If this is defined, you should explicitly instantiate the grammar
1.310 +// templates with the correct parameters in a separate compilation unit of
1.311 +// your program (see the files instantiate_cpp_grammar.cpp et.al.).
1.312 +//
1.313 +// To use the grammar inclusion model, define the following constant as
1.314 +// something not equal to zero before including this file.
1.315 +//
1.316 +#if !defined(BOOST_WAVE_SEPARATE_GRAMMAR_INSTANTIATION)
1.317 +#define BOOST_WAVE_SEPARATE_GRAMMAR_INSTANTIATION 1
1.318 +#endif
1.319 +
1.320 +///////////////////////////////////////////////////////////////////////////////
1.321 +// Decide whether to use a strict C++ lexer.
1.322 +//
1.323 +// If this is defined to something != 0, then the C++ lexers recognize the
1.324 +// strict C99/C++ basic source character set. If it is not defined or defined
1.325 +// to zero, the C++ lexers recognize the '$' character as part of identifiers.
1.326 +//
1.327 +// The default is to recognize the '$' character as part of identifiers.
1.328 +//
1.329 +#if !defined(BOOST_WAVE_USE_STRICT_LEXER)
1.330 +#define BOOST_WAVE_USE_STRICT_LEXER 0
1.331 +#endif
1.332 +
1.333 +///////////////////////////////////////////////////////////////////////////////
1.334 +// Decide, whether the serialization of the wave::context class should be
1.335 +// supported
1.336 +//
1.337 +// If this is defined to something not equal to zero the generated code will
1.338 +// expose routines allowing to store and reload the internal state of the
1.339 +// wave::context object.
1.340 +//
1.341 +// To enable the availability of the serialization functionality, define the
1.342 +// following constant as something not equal to zero before including this file.
1.343 +//
1.344 +#if !defined(BOOST_WAVE_SERIALIZATION)
1.345 +#define BOOST_WAVE_SERIALIZATION 0
1.346 +#endif
1.347 +
1.348 +///////////////////////////////////////////////////////////////////////////////
1.349 +// configure Boost.Pool thread support (for now: no thread support at all)
1.350 +#if !defined(BOOST_NO_MT)
1.351 +#define BOOST_NO_MT
1.352 +#endif // !defined(BOOST_NO_MT)
1.353 +
1.354 +//#if !defined(BOOST_DISABLE_THREADS)
1.355 +//#define BOOST_DISABLE_THREADS
1.356 +//#endif // !defined(BOOST_DISABLE_THREADS)
1.357 +
1.358 +///////////////////////////////////////////////////////////////////////////////
1.359 +// Wave needs at least 4 parameters for phoenix actors
1.360 +#if !defined(PHOENIX_LIMIT)
1.361 +#define PHOENIX_LIMIT 6
1.362 +#endif
1.363 +#if PHOENIX_LIMIT < 6
1.364 +#error "Boost.Wave: the constant PHOENIX_LIMIT must be at least defined to 4" \
1.365 + " to compile the library."
1.366 +#endif
1.367 +
1.368 +///////////////////////////////////////////////////////////////////////////////
1.369 +// Set up dll import/export options
1.370 +#if defined(BOOST_HAS_DECLSPEC) && \
1.371 + (defined(BOOST_WAVE_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)) && \
1.372 + !defined(BOOST_WAVE_STATIC_LINK)
1.373 +
1.374 +#if defined(BOOST_WAVE_SOURCE)
1.375 +#define BOOST_WAVE_DECL __declspec(dllexport)
1.376 +#define BOOST_WAVE_BUILD_DLL
1.377 +#else
1.378 +#define BOOST_WAVE_DECL __declspec(dllimport)
1.379 +#endif
1.380 +
1.381 +#endif // building a shared library
1.382 +
1.383 +#ifndef BOOST_WAVE_DECL
1.384 +#define BOOST_WAVE_DECL
1.385 +#endif
1.386 +
1.387 +///////////////////////////////////////////////////////////////////////////////
1.388 +// Auto library naming
1.389 +#if BOOST_VERSION >= 103100
1.390 +// auto link features work beginning from Boost V1.31.0
1.391 +#if !defined(BOOST_WAVE_SOURCE) && !defined(BOOST_ALL_NO_LIB) && \
1.392 + !defined(BOOST_WAVE_NO_LIB)
1.393 +
1.394 +#define BOOST_LIB_NAME boost_wave
1.395 +
1.396 +// tell the auto-link code to select a dll when required:
1.397 +#if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_WAVE_DYN_LINK)
1.398 +#define BOOST_DYN_LINK
1.399 +#endif
1.400 +
1.401 +#include <boost/config/auto_link.hpp>
1.402 +
1.403 +#endif // auto-linking disabled
1.404 +#endif // BOOST_VERSION
1.405 +
1.406 +#endif // !defined(WAVE_CONFIG_HPP_F143F90A_A63F_4B27_AC41_9CA4F14F538D_INCLUDED)