os/ossrv/ossrv_pub/boost_apis/boost/wave/wave_config.hpp
changeset 0 bde4ae8d615e
     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)