blob: d6f61a5a5ae07fa2b4248cb466a4b2570a58c39f [file] [log] [blame]
// Boost config.hpp configuration test program file -----------------------//
// (C) Copyright John Maddock 2001 - 2003.
// (C) Copyright Jens Maurer 2001.
// (C) Copyright Peter Dimov 2001.
// (C) Copyright Darin Adler 2001.
// (C) Copyright Beman Dawes 2002.
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/libs/config for most recent version.
//
// Revision $Id: config_info.cpp 65703 2010-10-01 09:19:44Z johnmaddock $
//
#include <boost/config.hpp>
#include <boost/version.hpp>
#include <iostream>
#include <iomanip>
#include <string.h>
#include <limits.h>
#include <stdlib.h>
#include <stddef.h>
#ifdef BOOST_HAS_UNISTD_H
#include <unistd.h>
#endif
static unsigned int indent = 4;
static unsigned int width = 40;
using std::cout;
using std::istream;
void print_macro(const char* name, const char* value)
{
// if name == value+1 then then macro is not defined,
// in which case we don't print anything:
if(0 != strcmp(name, value+1))
{
for(unsigned i = 0; i < indent; ++i) std::cout.put(' ');
std::cout << std::setw(width);
cout.setf(istream::left, istream::adjustfield);
std::cout << name;
if(value[1])
{
// macro has a value:
std::cout << value << "\n";
}
else
{
// macro is defined but has no value:
std::cout << " [no value]\n";
}
}
}
#define PRINT_MACRO(X) print_macro(#X, BOOST_STRINGIZE(=X))
template <class T>
void print_expression(const char* expression, T val)
{
for(unsigned i = 0; i < indent; ++i) std::cout.put(' ');
std::cout << std::setw(width);
std::cout.setf(istream::left, istream::adjustfield);
std::cout << expression << "=" << val << std::endl;
}
#define PRINT_EXPRESSION(E) print_expression(#E, E);
template <class T>
void print_byte_order(const char* what, T /* t */ )
{
T val = 0;
unsigned i;
for(i = 1; i < sizeof(T); ++i)
{
val |= (CHAR_BIT * static_cast<T>(i)) << (CHAR_BIT * static_cast<T>(i));
}
const char* p = reinterpret_cast<const char*>(&val);
for(i = 0; i < indent; ++i) std::cout.put(' ');
std::cout << std::setw(width);
std::cout.setf(istream::left, istream::adjustfield);
std::cout << what << "=";
for(i = 0; i < sizeof(T); ++i)
{
std::cout << (int)p[i] << " ";
}
std::cout << std::endl;
}
#define PRINT_ORDER(T) print_byte_order(BOOST_STRINGIZE(byte order for type T), T())
template <class T>
void print_sign(const char* what, T t)
{
t = static_cast<T>(-1); // cast suppresses warnings
for(unsigned i = 0; i < indent; ++i) std::cout.put(' ');
std::cout << "Type " << what << " is " << ((t > 0) ? "unsigned" : "signed") << std::endl;
}
#define PRINT_SIGN(T) print_sign(#T, T())
void print_compiler_macros()
{
std::cout << BOOST_COMPILER << "\n";
// Borland options:
PRINT_MACRO(__BORLANDC__);
PRINT_MACRO(__CDECL__);
PRINT_MACRO(_CHAR_UNSIGNED);
PRINT_MACRO(__CODEGUARD__);
PRINT_MACRO(__CONSOLE__);
PRINT_MACRO(_CPPUNWIND);
PRINT_MACRO(__cplusplus);
PRINT_MACRO(__FLAT__);
PRINT_MACRO(__FUNC__);
PRINT_MACRO(_M_IX86);
PRINT_MACRO(__MSDOS__);
PRINT_MACRO(__MT__ );
PRINT_MACRO(__PASCAL__);
PRINT_MACRO(__STDC__);
PRINT_MACRO(__TLS__);
PRINT_MACRO(_WCHAR_T);
PRINT_MACRO(_Windows);
PRINT_MACRO(__WIN32__);
PRINT_MACRO(_WIN32);
PRINT_MACRO(_WIN64);
PRINT_MACRO(_WIN32_WCE);
PRINT_MACRO(WIN32);
PRINT_MACRO(_RTLDLL);
PRINT_MACRO(__DEBUG);
// Internal MSVC 7 error workaround (Peter Dimov)
#ifndef _NATIVE_WCHAR_T_DEFINED
PRINT_MACRO(_WCHAR_T_DEFINED);
#endif
// MSVC macros:
PRINT_MACRO(_CPPRTTI);
PRINT_MACRO(_DLL);
PRINT_MACRO(_M_ALPHA);
PRINT_MACRO(_M_MPPC);
PRINT_MACRO(_M_MRX000);
PRINT_MACRO(_M_PPC);
PRINT_MACRO(_MFC_VER);
PRINT_MACRO(_MSC_EXTENSIONS);
PRINT_MACRO(_MSC_VER);
PRINT_MACRO(_MSC_FULL_VER);
PRINT_MACRO(_MT);
PRINT_MACRO(_NATIVE_WCHAR_T_DEFINED);
// GNUC options:
PRINT_MACRO(__GNUC__);
PRINT_MACRO(__GNUC_MINOR__);
PRINT_MACRO(__GNUC_PATCHLEVEL__);
PRINT_MACRO(__STDC_VERSION__);
PRINT_MACRO(__GNUG__);
PRINT_MACRO(__STRICT_ANSI__);
PRINT_MACRO(__GXX_EXPERIMENTAL_CXX0X__);
PRINT_MACRO(__VERSION__);
PRINT_MACRO(__OPTIMIZE__);
PRINT_MACRO(__CHAR_UNSIGNED__);
PRINT_MACRO(__REGISTER_PREFIX__);
PRINT_MACRO(__USER_LABEL_PREFIX__);
PRINT_MACRO(__GNUPRO__);
PRINT_MACRO(__EXCEPTIONS);
PRINT_MACRO(__FreeBSD__);
PRINT_MACRO(__FreeBSD_cc_version);
PRINT_MACRO(__ELF__);
PRINT_MACRO(__GNUPRO__);
PRINT_MACRO(unix);
PRINT_MACRO(bsd);
PRINT_MACRO(vax);
PRINT_MACRO(mc68000);
PRINT_MACRO(m68k);
PRINT_MACRO(M68020);
PRINT_MACRO(_AM29K);
PRINT_MACRO(ns32000);
PRINT_MACRO(sun);
PRINT_MACRO(pyr);
PRINT_MACRO(sequent);
PRINT_MACRO(__i386__);
PRINT_MACRO(__sparc);
PRINT_MACRO(__sparc__);
PRINT_MACRO(__powerpc__);
PRINT_MACRO(__hppa);
PRINT_MACRO(__CYGWIN__);
PRINT_MACRO(__MINGW32__);
// HP aCC:
PRINT_MACRO(__HP_aCC);
PRINT_MACRO(_HPACC_);
PRINT_MACRO(__LP64__);
PRINT_MACRO(__RISC2_0__);
PRINT_MACRO(__STDCPP__);
PRINT_MACRO(__hppa);
PRINT_MACRO(__hpux);
PRINT_MACRO(__hp9000s800);
PRINT_MACRO(__hp9000s700);
PRINT_MACRO(_PA_RISC1_1);
PRINT_MACRO(__HPUX_SOURCE);
PRINT_MACRO(_INCLUDE__STDC_A1_SOURCE);
// SGI IRIX:
PRINT_MACRO(__sgi);
PRINT_MACRO(_COMPILER_VERSION);
// Sunpro:
PRINT_MACRO(__SUNPRO_CC);
PRINT_MACRO(__SUNPRO_CC_COMPAT);
PRINT_MACRO(__BUILTIN_VA_ARG_INCR);
PRINT_MACRO(__sun);
PRINT_MACRO(__SVR4);
PRINT_MACRO(__unix);
PRINT_MACRO(__sparcv9);
PRINT_MACRO(__i386);
PRINT_MACRO(i386);
// Metrowerks
PRINT_MACRO(__MWERKS__);
PRINT_MACRO(__MSL__);
PRINT_MACRO(__MSL_CPP__);
PRINT_MACRO(__A5__);
PRINT_MACRO(__embedded_cplusplus);
PRINT_MACRO(__fourbyteints__);
PRINT_MACRO(__IEEEdoubles__);
PRINT_MACRO(__MC68K__);
PRINT_MACRO(__MC68020__);
PRINT_MACRO(__MC68881__);
PRINT_MACRO(__MIPS__);
PRINT_MACRO(__MIPS_ISA2__);
PRINT_MACRO(__MIPS_ISA3__);
PRINT_MACRO(__MIPS_ISA4__);
PRINT_MACRO(__MWBROWSER__);
PRINT_MACRO(__profile__);
PRINT_MACRO(__powerc);
PRINT_MACRO(_powerc);
PRINT_MACRO(__POWERPC__);
PRINT_MACRO(macintosh);
PRINT_MACRO(__MACH__);
PRINT_MACRO(__APPLE__);
PRINT_MACRO(__APPLE_CC__);
// MPW (MrCpp and SCpp)
PRINT_MACRO(__MRC__);
PRINT_MACRO(__SC__);
PRINT_MACRO(__FPCE__);
PRINT_MACRO(__FPCE_IEEE__);
PRINT_MACRO(MPW_CPLUS);
PRINT_MACRO(MPW_C);
PRINT_MACRO(__MC601);
PRINT_MACRO(__POWERPC);
PRINT_MACRO(__useAppleExts__);
PRINT_MACRO(powerc);
PRINT_MACRO(MC68000);
PRINT_MACRO(THINK_PLUS);
PRINT_MACRO(mc68881);
PRINT_MACRO(__FAR_CODE__);
PRINT_MACRO(__FAR_DATA__);
PRINT_MACRO(__CFM68K__);
// EDG
PRINT_MACRO(__EDG__);
PRINT_MACRO(__EDG_VERSION__);
PRINT_MACRO(c_plusplus); // indication for strict mode
PRINT_MACRO(_BOOL);
PRINT_MACRO(_EXPLICIT);
PRINT_MACRO(__SIGNED_CHARS__);
PRINT_MACRO(_TYPENAME);
PRINT_MACRO(_WCHAR_T);
PRINT_MACRO(__ARRAY_OPERATORS);
PRINT_MACRO(__EDG_ABI_COMPATIBILITY_VERSION);
PRINT_MACRO(__EDG_IMPLICIT_USING_STD);
PRINT_MACRO(__EDG_RUNTIME_USES_NAMESPACES);
PRINT_MACRO(__BOOL_DEFINED);
PRINT_MACRO(__RTTI);
PRINT_MACRO(__PLACEMENT_DELETE);
PRINT_MACRO(__NO_LONG_LONG);
// Intel options:
PRINT_MACRO(__INTEL__);
PRINT_MACRO(__ICC);
PRINT_MACRO(__ICL);
PRINT_MACRO(__ECC);
PRINT_MACRO(__INTEL_COMPILER);
PRINT_MACRO(__INITIAL_POINTER_SIZE);
PRINT_MACRO(_INTEGRAL_MAX_BITS);
PRINT_MACRO(__INTEL_COMPILER_BUILD_DATE);
PRINT_MACRO(__INTEL_MS_COMPAT_LEVEL);
PRINT_MACRO(__LONG_DOUBLE_SIZE__);
PRINT_MACRO(_M_X64);
PRINT_MACRO(_OPENMP);
PRINT_MACRO(_OPENMPT);
PRINT_MACRO(_PGO_INSTRUMENT);
PRINT_MACRO(__QMSPP_);
// misc compilers not covered so far:
PRINT_MACRO(__USLC__);
PRINT_MACRO(__DECCXX);
PRINT_MACRO(__IBMCPP__);
PRINT_MACRO(_REENTRANT);
PRINT_MACRO(_PTHREADS);
PRINT_MACRO(__STDC_HOSTED__);
PRINT_MACRO(__COMO__);
PRINT_MACRO(__COMO_VERSION__);
PRINT_MACRO(__DM__);
PRINT_MACRO(__osf__);
PRINT_MACRO(__OSF__);
PRINT_MACRO(__QNXNTO__);
PRINT_MACRO(__QNX__);
PRINT_MACRO(_NTO_VERSION);
PRINT_MACRO(__OPEN64__);
PRINT_MACRO(__open64);
}
void print_stdlib_macros()
{
std::cout << BOOST_STDLIB << std::endl;
#ifdef _RWSTD_VER
// Rogue Wave 2.x config options:
PRINT_MACRO(__NO_EDG_EXCEPTION_CLASSES);
PRINT_MACRO(_RWSTD_ALLOCATOR);
PRINT_MACRO(_RWSTD_BAD_ALLOC_DEFINED);
PRINT_MACRO(_RWSTD_BAD_EXCEPTION_DEFINED);
PRINT_MACRO(_RWSTD_BOUNDS_CHECKING);
PRINT_MACRO(_RWSTD_COMPILE_INSTANTIATE);
PRINT_MACRO(_RWSTD_DEFAULT_PRECISION);
PRINT_MACRO(_RWSTD_EXCEPTION_DEFINED);
PRINT_MACRO(_RWSTD_EXCEPTION_HANDLER_IN_STD);
PRINT_MACRO(_RWSTD_EXCEPTION_PREDEFINED);
PRINT_MACRO(_RWSTD_FLT_ROUNDS_IS_CONSTANT);
PRINT_MACRO(_RWSTD_LOCALIZED_ERRORS);
PRINT_MACRO(_RWSTD_MESSAGE);
PRINT_MACRO(_RWSTD_MUTEXATTR_DEFAULT);
PRINT_MACRO(_RWSTD_NO_ANSI_SPRINTF);
PRINT_MACRO(_RWSTD_NO_ARG_MATCH);
PRINT_MACRO(_RWSTD_NO_BAD_CAST);
PRINT_MACRO(_RWSTD_NO_BASE_CLASS_MATCH);
PRINT_MACRO(_RWSTD_NO_BOOL);
PRINT_MACRO(_RWSTD_NO_BUILTIN_CTOR);
PRINT_MACRO(_RWSTD_NO_CATOPEN_CATGETS);
PRINT_MACRO(_RWSTD_NO_CLASS_PARTIAL_SPEC);
PRINT_MACRO(_RWSTD_NO_COMPLEX_DEFAULT_TEMPLATES);
PRINT_MACRO(_RWSTD_NO_COMPLICATED_EXCEPTIONS);
PRINT_MACRO(_RWSTD_NO_COMPLICATED_TYPEDEF);
PRINT_MACRO(_RWSTD_NO_CONST_INST);
PRINT_MACRO(_RWSTD_NO_CTOR_RETURN);
PRINT_MACRO(_RWSTD_NO_DEFAULT_FOR_TPARAM);
PRINT_MACRO(_RWSTD_NO_DEFAULT_TEMPLATE_ARGS);
PRINT_MACRO(_RWSTD_NO_DESTROY_BUILTIN);
PRINT_MACRO(_RWSTD_NO_DESTROY_NONBUILTIN);
PRINT_MACRO(_RWSTD_NO_EMBEDDED_TYPEDEF);
PRINT_MACRO(_RWSTD_NO_EX_SPEC);
PRINT_MACRO(_RWSTD_NO_EXCEPTIONS);
PRINT_MACRO(_RWSTD_NO_EXPLICIT);
PRINT_MACRO(_RWSTD_NO_EXPLICIT_ARG);
PRINT_MACRO(_RWSTD_NO_EXPLICIT_FUNC_INSTANTIATION);
PRINT_MACRO(_RWSTD_NO_EXPLICIT_INSTANTIATION);
PRINT_MACRO(_RWSTD_NO_EXTENSION);
PRINT_MACRO(_RWSTD_NO_FORWARD_SPECIALIZATIONS);
PRINT_MACRO(_RWSTD_NO_FPOS_T);
PRINT_MACRO(_RWSTD_NO_FRIEND_TEMPLATES);
PRINT_MACRO(_RWSTD_NO_FUNC_PARTIAL_SPEC);
PRINT_MACRO(_RWSTD_NO_GETTIMEOFDAY);
PRINT_MACRO(_RWSTD_NO_GLOBAL_TZ);
PRINT_MACRO(_RWSTD_NO_INHERITED_TYPEDEFS);
PRINT_MACRO(_RWSTD_NO_INIT_CONST_TEMPLATE_REF_ARG);
PRINT_MACRO(_RWSTD_NO_INT_TYPEDEF);
PRINT_MACRO(_RWSTD_NO_LDIV);
PRINT_MACRO(_RWSTD_NO_LEADING_UNDERSCORE);
PRINT_MACRO(_RWSTD_NO_LOCALE);
PRINT_MACRO(_RWSTD_NO_LONG_NAME);
PRINT_MACRO(_RWSTD_NO_LONGDOUBLE);
PRINT_MACRO(_RWSTD_NO_MBSTATE_T);
PRINT_MACRO(_RWSTD_NO_MEM_CLASS_TEMPLATES);
PRINT_MACRO(_RWSTD_NO_MEMBER_TEMPLATES);
PRINT_MACRO(_RWSTD_NO_MEMBER_TYPE_TPARAM);
PRINT_MACRO(_RWSTD_NO_MEMBER_WO_DEF_CTOR);
PRINT_MACRO(_RWSTD_NO_MEMMOVE);
PRINT_MACRO(_RWSTD_NO_MULTI_DIM_ARRAY);
PRINT_MACRO(_RWSTD_NO_MUTABLE);
PRINT_MACRO(_RWSTD_NO_NAME_INJECTION);
PRINT_MACRO(_RWSTD_NO_NAMESPACE);
PRINT_MACRO(_RWSTD_NO_NESTING_TEMPLATES);
PRINT_MACRO(_RWSTD_NO_NEW_BRACKETS);
PRINT_MACRO(_RWSTD_NO_NEW_DECL);
PRINT_MACRO(_RWSTD_NO_NEW_HEADER);
PRINT_MACRO(_RWSTD_NO_NEW_TEMPLATE_SYNTAX);
PRINT_MACRO(_RWSTD_NO_NONCLASS_ARROW_RETURN);
PRINT_MACRO(_RWSTD_NO_NONTYPE_ARGS);
PRINT_MACRO(_RWSTD_NO_ONLY_NEEDED_INSTANTIATION);
PRINT_MACRO(_RWSTD_NO_OVERLOAD_C_POW);
PRINT_MACRO(_RWSTD_NO_OVERLOAD_OF_TEMPLATE_FUNCTION);
PRINT_MACRO(_RWSTD_NO_OVERLOAD_WCHAR);
PRINT_MACRO(_RWSTD_NO_PART_SPEC_OVERLOAD);
PRINT_MACRO(_RWSTD_NO_RET_TEMPLATE);
PRINT_MACRO(_RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES);
PRINT_MACRO(_RWSTD_NO_STATIC_CAST);
PRINT_MACRO(_RWSTD_NO_STATIC_DEF);
PRINT_MACRO(_RWSTD_NO_STATIC_DEF2);
PRINT_MACRO(_RWSTD_NO_STATIC_DEF3);
PRINT_MACRO(_RWSTD_NO_STATIC_MEM_DEF);
PRINT_MACRO(_RWSTD_NO_STI_SIMPLE);
PRINT_MACRO(_RWSTD_NO_STI_TEMPLATE);
PRINT_MACRO(_RWSTD_NO_STREAM_LONG_DOUBLE);
PRINT_MACRO(_RWSTD_NO_STRFTIME_CAPC);
PRINT_MACRO(_RWSTD_NO_STRICT_TEMPLATE_INSTANTIATE);
PRINT_MACRO(_RWSTD_NO_SWPRINTF);
PRINT_MACRO(_RWSTD_NO_TEMPLATE_ON_RETURN_TYPE);
PRINT_MACRO(_RWSTD_NO_TEMPLATE_TEMPLATE);
PRINT_MACRO(_RWSTD_NO_THREADS);
PRINT_MACRO(_RWSTD_NO_THROW_SPEC_ON_NEW);
PRINT_MACRO(_RWSTD_NO_THROW_WITH_SHARED);
PRINT_MACRO(_RWSTD_NO_TYPEDEF_INST);
PRINT_MACRO(_RWSTD_NO_TYPEDEF_OVERLOAD);
PRINT_MACRO(_RWSTD_NO_TYPENAME);
PRINT_MACRO(_RWSTD_NO_UNDEFINED_FRIEND);
PRINT_MACRO(_RWSTD_NO_UNINITIALIZED_STATIC_DEF);
PRINT_MACRO(_RWSTD_NO_WCHAR_H);
PRINT_MACRO(_RWSTD_NO_WCTYPE_H);
PRINT_MACRO(_RWSTD_NO_WIDE_CHAR);
PRINT_MACRO(_RWSTD_NO_WINT_TYPE);
PRINT_MACRO(_RWSTD_NO_WSTR);
PRINT_MACRO(_RWSTD_NOT_ALL_WSTR_CFUNCTIONS);
PRINT_MACRO(_RWSTD_POSIX_D10_THREADS);
PRINT_MACRO(_RWSTD_POSIX_THREADS);
PRINT_MACRO(_RWSTD_REQUIRES_IEEEFP);
PRINT_MACRO(_RWSTD_SOLARIS_THREADS);
PRINT_MACRO(_RWSTD_STRUCT_TM_TZ);
PRINT_MACRO(_RWSTD_WIDE_STRING_NULL_PROBLEM);
#elif defined(__STD_RWCOMPILER_H__)
// Rogue Wave 1.x std lib:
PRINT_MACRO(__NO_EDG_EXCEPTION_CLASSES);
PRINT_MACRO(RWSTD_ALLOCATOR);
PRINT_MACRO(RWSTD_BAD_ALLOC_DEFINED);
PRINT_MACRO(RWSTD_BAD_EXCEPTION_DEFINED);
PRINT_MACRO(RWSTD_BOUNDS_CHECKING);
PRINT_MACRO(RWSTD_COMPILE_INSTANTIATE);
PRINT_MACRO(RWSTD_DEFAULT_PRECISION);
PRINT_MACRO(RWSTD_EXCEPTION_DEFINED);
PRINT_MACRO(RWSTD_EXCEPTION_HANDLER_IN_STD);
PRINT_MACRO(RWSTD_EXCEPTION_PREDEFINED);
PRINT_MACRO(RWSTD_FLT_ROUNDS_IS_CONSTANT);
PRINT_MACRO(RWSTD_LOCALIZED_ERRORS);
PRINT_MACRO(RWSTD_MESSAGE);
PRINT_MACRO(RWSTD_MUTEXATTR_DEFAULT);
PRINT_MACRO(RWSTD_NO_ANSI_SPRINTF);
PRINT_MACRO(RWSTD_NO_ARG_MATCH);
PRINT_MACRO(RWSTD_NO_BAD_CAST);
PRINT_MACRO(RWSTD_NO_BASE_CLASS_MATCH);
PRINT_MACRO(RWSTD_NO_BOOL);
PRINT_MACRO(RWSTD_NO_BUILTIN_CTOR);
PRINT_MACRO(RWSTD_NO_CATOPEN_CATGETS);
PRINT_MACRO(RWSTD_NO_CLASS_PARTIAL_SPEC);
PRINT_MACRO(RWSTD_NO_COMPLEX_DEFAULT_TEMPLATES);
PRINT_MACRO(RWSTD_NO_COMPLICATED_EXCEPTIONS);
PRINT_MACRO(RWSTD_NO_COMPLICATED_TYPEDEF);
PRINT_MACRO(RWSTD_NO_CONST_INST);
PRINT_MACRO(RWSTD_NO_CTOR_RETURN);
PRINT_MACRO(RWSTD_NO_DEFAULT_FOR_TPARAM);
PRINT_MACRO(RWSTD_NO_DEFAULT_TEMPLATE_ARGS);
PRINT_MACRO(RWSTD_NO_DESTROY_BUILTIN);
PRINT_MACRO(RWSTD_NO_DESTROY_NONBUILTIN);
PRINT_MACRO(RWSTD_NO_EMBEDDED_TYPEDEF);
PRINT_MACRO(RWSTD_NO_EX_SPEC);
PRINT_MACRO(RWSTD_NO_EXCEPTIONS);
PRINT_MACRO(RWSTD_NO_EXPLICIT);
PRINT_MACRO(RWSTD_NO_EXPLICIT_ARG);
PRINT_MACRO(RWSTD_NO_EXPLICIT_FUNC_INSTANTIATION);
PRINT_MACRO(RWSTD_NO_EXPLICIT_INSTANTIATION);
PRINT_MACRO(RWSTD_NO_EXTENSION);
PRINT_MACRO(RWSTD_NO_FORWARD_SPECIALIZATIONS);
PRINT_MACRO(RWSTD_NO_FPOS_T);
PRINT_MACRO(RWSTD_NO_FRIEND_TEMPLATES);
PRINT_MACRO(RWSTD_NO_FUNC_PARTIAL_SPEC);
PRINT_MACRO(RWSTD_NO_GETTIMEOFDAY);
PRINT_MACRO(RWSTD_NO_GLOBAL_TZ);
PRINT_MACRO(RWSTD_NO_INHERITED_TYPEDEFS);
PRINT_MACRO(RWSTD_NO_INIT_CONST_TEMPLATE_REF_ARG);
PRINT_MACRO(RWSTD_NO_INT_TYPEDEF);
PRINT_MACRO(RWSTD_NO_LDIV);
PRINT_MACRO(RWSTD_NO_LEADING_UNDERSCORE);
PRINT_MACRO(RWSTD_NO_LOCALE);
PRINT_MACRO(RWSTD_NO_LONG_NAME);
PRINT_MACRO(RWSTD_NO_LONGDOUBLE);
PRINT_MACRO(RWSTD_NO_MBSTATE_T);
PRINT_MACRO(RWSTD_NO_MEM_CLASS_TEMPLATES);
PRINT_MACRO(RWSTD_NO_MEMBER_TEMPLATES);
PRINT_MACRO(RWSTD_NO_MEMBER_TYPE_TPARAM);
PRINT_MACRO(RWSTD_NO_MEMBER_WO_DEF_CTOR);
PRINT_MACRO(RWSTD_NO_MEMMOVE);
PRINT_MACRO(RWSTD_NO_MULTI_DIM_ARRAY);
PRINT_MACRO(RWSTD_NO_MUTABLE);
PRINT_MACRO(RWSTD_NO_NAME_INJECTION);
PRINT_MACRO(RWSTD_NO_NAMESPACE);
PRINT_MACRO(RWSTD_NO_NESTING_TEMPLATES);
PRINT_MACRO(RWSTD_NO_NEW_BRACKETS);
PRINT_MACRO(RWSTD_NO_NEW_DECL);
PRINT_MACRO(RWSTD_NO_NEW_HEADER);
PRINT_MACRO(RWSTD_NO_NEW_TEMPLATE_SYNTAX);
PRINT_MACRO(RWSTD_NO_NONCLASS_ARROW_RETURN);
PRINT_MACRO(RWSTD_NO_NONTYPE_ARGS);
PRINT_MACRO(RWSTD_NO_ONLY_NEEDED_INSTANTIATION);
PRINT_MACRO(RWSTD_NO_OVERLOAD_C_POW);
PRINT_MACRO(RWSTD_NO_OVERLOAD_OF_TEMPLATE_FUNCTION);
PRINT_MACRO(RWSTD_NO_OVERLOAD_WCHAR);
PRINT_MACRO(RWSTD_NO_PART_SPEC_OVERLOAD);
PRINT_MACRO(RWSTD_NO_RET_TEMPLATE);
PRINT_MACRO(RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES);
PRINT_MACRO(RWSTD_NO_STATIC_CAST);
PRINT_MACRO(RWSTD_NO_STATIC_DEF);
PRINT_MACRO(RWSTD_NO_STATIC_DEF2);
PRINT_MACRO(RWSTD_NO_STATIC_DEF3);
PRINT_MACRO(RWSTD_NO_STATIC_MEM_DEF);
PRINT_MACRO(RWSTD_NO_STI_SIMPLE);
PRINT_MACRO(RWSTD_NO_STI_TEMPLATE);
PRINT_MACRO(RWSTD_NO_STREAM_LONG_DOUBLE);
PRINT_MACRO(RWSTD_NO_STRFTIME_CAPC);
PRINT_MACRO(RWSTD_NO_STRICT_TEMPLATE_INSTANTIATE);
PRINT_MACRO(RWSTD_NO_SWPRINTF);
PRINT_MACRO(RWSTD_NO_TEMPLATE_ON_RETURN_TYPE);
PRINT_MACRO(RWSTD_NO_TEMPLATE_TEMPLATE);
PRINT_MACRO(RWSTD_NO_THREADS);
PRINT_MACRO(RWSTD_NO_THROW_SPEC_ON_NEW);
PRINT_MACRO(RWSTD_NO_THROW_WITH_SHARED);
PRINT_MACRO(RWSTD_NO_TYPEDEF_INST);
PRINT_MACRO(RWSTD_NO_TYPEDEF_OVERLOAD);
PRINT_MACRO(RWSTD_NO_TYPENAME);
PRINT_MACRO(RWSTD_NO_UNDEFINED_FRIEND);
PRINT_MACRO(RWSTD_NO_UNINITIALIZED_STATIC_DEF);
PRINT_MACRO(RWSTD_NO_WCHAR_H);
PRINT_MACRO(RWSTD_NO_WCTYPE_H);
PRINT_MACRO(RWSTD_NO_WIDE_CHAR);
PRINT_MACRO(RWSTD_NO_WINT_TYPE);
PRINT_MACRO(RWSTD_NO_WSTR);
PRINT_MACRO(RWSTD_NOT_ALL_WSTR_CFUNCTIONS);
PRINT_MACRO(RWSTD_POSIX_D10_THREADS);
PRINT_MACRO(RWSTD_POSIX_THREADS);
PRINT_MACRO(RWSTD_REQUIRES_IEEEFP);
PRINT_MACRO(RWSTD_SOLARIS_THREADS);
PRINT_MACRO(RWSTD_STRUCT_TM_TZ);
PRINT_MACRO(RWSTD_WIDE_STRING_NULL_PROBLEM);
#endif
// Dinkumware options:
PRINT_MACRO(_CPPLIB_VER);
PRINT_MACRO(_GLOBAL_USING);
PRINT_MACRO(_HAS_EXCEPTIONS);
PRINT_MACRO(_HAS_MEMBER_TEMPLATES_REBIND);
PRINT_MACRO(_HAS_TEMPLATE_PARTIAL_ORDERING);
// STLPort and generic SGI STL options:
PRINT_MACRO(__SGI_STL_NO_ARROW_OPERATOR);
PRINT_MACRO(__SGI_STL_OWN_IOSTREAMS);
PRINT_MACRO(__SGI_STL_PORT);
PRINT_MACRO(__STL_AUTOMATIC_TYPE_TRAITS);
PRINT_MACRO(__STL_BASE_MATCH_BUG);
PRINT_MACRO(__STL_BASE_TYPEDEF_BUG);
PRINT_MACRO(__STL_BASE_TYPEDEF_OUTSIDE_BUG);
PRINT_MACRO(__STL_BROKEN_USING_DIRECTIVE);
PRINT_MACRO(__STL_CONST_CONSTRUCTOR_BUG);
PRINT_MACRO(__STL_DEBUG);
PRINT_MACRO(__STL_DEBUG_ALLOC);
PRINT_MACRO(__STL_DEFAULT_CONSTRUCTOR_BUG);
PRINT_MACRO(__STL_DEFAULT_TYPE_PARAM);
PRINT_MACRO(__STL_DONT_REDEFINE_STD);
PRINT_MACRO(__STL_DONT_USE_BOOL_TYPEDEF);
PRINT_MACRO(__STL_HAS_NO_EXCEPTIONS);
PRINT_MACRO(__STL_HAS_NO_NAMESPACES);
PRINT_MACRO(__STL_HAS_NO_NEW_C_HEADERS);
PRINT_MACRO(__STL_HAS_NO_NEW_IOSTREAMS);
PRINT_MACRO(__STL_IMPORT_VENDOR_CSTD);
PRINT_MACRO(__STL_LIMITED_DEFAULT_TEMPLATES);
PRINT_MACRO(__STL_LINK_TIME_INSTANTIATION);
PRINT_MACRO(__STL_LONG_LONG);
PRINT_MACRO(__STL_LOOP_INLINE_PROBLEMS);
PRINT_MACRO(__STL_MEMBER_POINTER_PARAM_BUG);
PRINT_MACRO(__STL_NEED_EXPLICIT);
PRINT_MACRO(__STL_NEED_MUTABLE);
PRINT_MACRO(__STL_NEED_TYPENAME);
PRINT_MACRO(__STL_NESTED_TYPE_PARAM_BUG);
PRINT_MACRO(__STL_NO_BAD_ALLOC);
PRINT_MACRO(__STL_NO_BOOL);
PRINT_MACRO(__STL_NO_CLASS_PARTIAL_SPECIALIZATION);
PRINT_MACRO(__STL_NO_CSTD_FUNCTION_IMPORTS);
PRINT_MACRO(__STL_NO_DEFAULT_NON_TYPE_PARAM);
PRINT_MACRO(__STL_NO_EXCEPTION_HEADER);
PRINT_MACRO(__STL_NO_EXCEPTION_SPEC);
PRINT_MACRO(__STL_NO_EXCEPTIONS);
PRINT_MACRO(__STL_NO_EXPLICIT_FUNCTION_TMPL_ARGS);
PRINT_MACRO(__STL_NO_FRIEND_TEMPLATES);
PRINT_MACRO(__STL_NO_FUNCTION_TMPL_PARTIAL_ORDER);
PRINT_MACRO(__STL_NO_IOSTREAMS);
PRINT_MACRO(__STL_NO_LONG_DOUBLE);
PRINT_MACRO(__STL_NO_MEMBER_TEMPLATE_CLASSES);
PRINT_MACRO(__STL_NO_MEMBER_TEMPLATE_KEYWORD);
PRINT_MACRO(__STL_NO_MEMBER_TEMPLATES);
PRINT_MACRO(__STL_NO_METHOD_SPECIALIZATION);
PRINT_MACRO(__STL_NO_NAMESPACES);
PRINT_MACRO(__STL_NO_NEW_IOSTREAMS);
PRINT_MACRO(__STL_NO_NEW_NEW_HEADER);
PRINT_MACRO(__STL_NO_NEW_STYLE_CASTS);
PRINT_MACRO(__STL_NO_PARTIAL_SPECIALIZATION_SYNTAX);
PRINT_MACRO(__STL_NO_QUALIFIED_FRIENDS);
PRINT_MACRO(__STL_NO_RELOPS_NAMESPACE);
PRINT_MACRO(__STL_NO_SGI_IOSTREAMS);
PRINT_MACRO(__STL_NO_STATIC_TEMPLATE_DATA);
PRINT_MACRO(__STL_NO_TEMPLATE_CONVERSIONS);
PRINT_MACRO(__STL_NO_WCHAR_T);
PRINT_MACRO(__STL_NON_TYPE_TMPL_PARAM_BUG);
PRINT_MACRO(__STL_NONTEMPL_BASE_MATCH_BUG);
PRINT_MACRO(__STL_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS);
PRINT_MACRO(__STL_RAND48);
PRINT_MACRO(__STL_STATIC_ARRAY_BUG);
PRINT_MACRO(__STL_STATIC_CONST_INIT_BUG);
PRINT_MACRO(__STL_STATIC_CONST_INIT_BUG);
PRINT_MACRO(__STL_THROW_RETURN_BUG);
PRINT_MACRO(__STL_TRIVIAL_CONSTRUCTOR_BUG);
PRINT_MACRO(__STL_TRIVIAL_DESTRUCTOR_BUG);
PRINT_MACRO(__STL_UNINITIALIZABLE_PRIVATE);
PRINT_MACRO(__STL_USE_ABBREVS);
PRINT_MACRO(__STL_USE_DEFALLOC);
PRINT_MACRO(__STL_USE_MALLOC);
PRINT_MACRO(__STL_USE_NEW_C_HEADERS);
PRINT_MACRO(__STL_USE_NEW_IOSTREAMS);
PRINT_MACRO(__STL_USE_NEWALLOC);
PRINT_MACRO(__STL_USE_OWN_NAMESPACE);
PRINT_MACRO(__STL_USE_SGI_ALLOCATORS);
PRINT_MACRO(__STL_WCHAR_T_IS_USHORT);
PRINT_MACRO(__STL_WEAK_ATTRIBUTE);
PRINT_MACRO(__STL_YVALS_H);
PRINT_MACRO(_NOTHREADS);
PRINT_MACRO(_PTHREADS);
#if defined(__SGI_STL_PORT) && (__SGI_STL_PORT > 0x0400)
PRINT_MACRO(_STLP_AUTOMATIC_TYPE_TRAITS);
PRINT_MACRO(_STLP_BASE_MATCH_BUG);
PRINT_MACRO(_STLP_BASE_TYPEDEF_BUG);
PRINT_MACRO(_STLP_BASE_TYPEDEF_OUTSIDE_BUG);
PRINT_MACRO(_STLP_BROKEN_USING_DIRECTIVE);
PRINT_MACRO(_STLP_CONST_CONSTRUCTOR_BUG);
PRINT_MACRO(_STLP_DEBUG);
PRINT_MACRO(_STLP_DEBUG_ALLOC);
PRINT_MACRO(_STLP_DEFAULT_CONSTRUCTOR_BUG);
PRINT_MACRO(_STLP_DEFAULT_TYPE_PARAM);
PRINT_MACRO(_STLP_DONT_REDEFINE_STD);
PRINT_MACRO(_STLP_DONT_USE_BOOL_TYPEDEF);
PRINT_MACRO(_STLP_HAS_NO_EXCEPTIONS);
PRINT_MACRO(_STLP_HAS_NO_NAMESPACES);
PRINT_MACRO(_STLP_HAS_NO_NEW_C_HEADERS);
PRINT_MACRO(_STLP_HAS_NO_NEW_IOSTREAMS);
PRINT_MACRO(_STLP_IMPORT_VENDOR_CSTD);
PRINT_MACRO(_STLP_LIMITED_DEFAULT_TEMPLATES);
PRINT_MACRO(_STLP_LINK_TIME_INSTANTIATION);
PRINT_MACRO(_STLP_LONG_LONG);
PRINT_MACRO(_STLP_LOOP_INLINE_PROBLEMS);
PRINT_MACRO(_STLP_MEMBER_POINTER_PARAM_BUG);
PRINT_MACRO(_STLP_NEED_EXPLICIT);
PRINT_MACRO(_STLP_NEED_MUTABLE);
PRINT_MACRO(_STLP_NEED_TYPENAME);
PRINT_MACRO(_STLP_NESTED_TYPE_PARAM_BUG);
PRINT_MACRO(_STLP_NO_ARROW_OPERATOR);
PRINT_MACRO(_STLP_NO_BAD_ALLOC);
PRINT_MACRO(_STLP_NO_BOOL);
PRINT_MACRO(_STLP_NO_CLASS_PARTIAL_SPECIALIZATION);
PRINT_MACRO(_STLP_NO_CSTD_FUNCTION_IMPORTS);
PRINT_MACRO(_STLP_NO_DEFAULT_NON_TYPE_PARAM);
PRINT_MACRO(_STLP_NO_EXCEPTION_HEADER);
PRINT_MACRO(_STLP_NO_EXCEPTION_SPEC);
PRINT_MACRO(_STLP_NO_EXCEPTIONS);
PRINT_MACRO(_STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS);
PRINT_MACRO(_STLP_NO_FRIEND_TEMPLATES);
PRINT_MACRO(_STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER);
PRINT_MACRO(_STLP_NO_IOSTREAMS);
PRINT_MACRO(_STLP_NO_LONG_DOUBLE);
PRINT_MACRO(_STLP_NO_MEMBER_TEMPLATE_CLASSES);
PRINT_MACRO(_STLP_NO_MEMBER_TEMPLATE_KEYWORD);
PRINT_MACRO(_STLP_NO_MEMBER_TEMPLATES);
PRINT_MACRO(_STLP_NO_METHOD_SPECIALIZATION);
PRINT_MACRO(_STLP_NO_NAMESPACES);
PRINT_MACRO(_STLP_NO_NEW_IOSTREAMS);
PRINT_MACRO(_STLP_NO_NEW_NEW_HEADER);
PRINT_MACRO(_STLP_NO_NEW_STYLE_CASTS);
PRINT_MACRO(_STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX);
PRINT_MACRO(_STLP_NO_QUALIFIED_FRIENDS);
PRINT_MACRO(_STLP_NO_RELOPS_NAMESPACE);
PRINT_MACRO(_STLP_NO_SGI_IOSTREAMS);
PRINT_MACRO(_STLP_NO_STATIC_TEMPLATE_DATA);
PRINT_MACRO(_STLP_NO_TEMPLATE_CONVERSIONS);
PRINT_MACRO(_STLP_NO_WCHAR_T);
PRINT_MACRO(_STLP_NON_TYPE_TMPL_PARAM_BUG);
PRINT_MACRO(_STLP_NONTEMPL_BASE_MATCH_BUG);
PRINT_MACRO(_STLP_OWN_IOSTREAMS);
PRINT_MACRO(_STLP_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS);
PRINT_MACRO(_STLP_RAND48);
PRINT_MACRO(_STLP_STATIC_ARRAY_BUG);
PRINT_MACRO(_STLP_STATIC_CONST_INIT_BUG);
PRINT_MACRO(_STLP_STATIC_CONST_INIT_BUG);
PRINT_MACRO(_STLP_THROW_RETURN_BUG);
PRINT_MACRO(_STLP_TRIVIAL_CONSTRUCTOR_BUG);
PRINT_MACRO(_STLP_TRIVIAL_DESTRUCTOR_BUG);
PRINT_MACRO(_STLP_UNINITIALIZABLE_PRIVATE);
PRINT_MACRO(_STLP_USE_ABBREVS);
PRINT_MACRO(_STLP_USE_DEFALLOC);
PRINT_MACRO(_STLP_USE_MALLOC);
PRINT_MACRO(_STLP_USE_NEW_C_HEADERS);
PRINT_MACRO(_STLP_USE_NEWALLOC);
PRINT_MACRO(_STLP_USE_OWN_NAMESPACE);
PRINT_MACRO(_STLP_USE_SGI_ALLOCATORS);
PRINT_MACRO(_STLP_WCHAR_T_IS_USHORT);
PRINT_MACRO(_STLP_WEAK_ATTRIBUTE);
PRINT_MACRO(_STLP_YVALS_H);
#endif
PRINT_MACRO(__GLIBCPP__);
PRINT_MACRO(_GLIBCPP_USE_WCHAR_T);
PRINT_MACRO(_GLIBCPP_VERSION);
PRINT_MACRO(__GLIBCXX__);
PRINT_MACRO(_GLIBCXX_USE_WCHAR_T);
PRINT_MACRO(_GLIBCXX_VERSION);
PRINT_MACRO(_GLIBCXX_USE_LONG_LONG);
PRINT_MACRO(_GLIBCXX_USE_NLS);
PRINT_MACRO(_GLIBCXX_USE_C99_MATH);
PRINT_MACRO(_GLIBCXX_USE_C99);
PRINT_MACRO(_GLIBCXX_CONCEPT_CHECKS);
PRINT_MACRO(_GLIBCXX_USE_LFS);
PRINT_MACRO(_GLIBCXX_SYMVER);
PRINT_MACRO(_GLIBCXX_MEM_LIMITS);
PRINT_MACRO(_GLIBCXX_HOSTED);
PRINT_MACRO(_GLIBCXX_SJLJ_EXCEPTIONS);
// Modena C++ standard library
PRINT_MACRO(MSIPL_ANSI_HEADER);
PRINT_MACRO(MSIPL_BOOL_BUILTIN);
PRINT_MACRO(MSIPL_DEF_EXPLICIT);
PRINT_MACRO(MSIPL_DEF_TEMPARG);
PRINT_MACRO(MSIPL_EXPINST_ALLOWED);
PRINT_MACRO(MSIPL_EXPLICIT_FUNC_TEMPLATE_ARG);
PRINT_MACRO(MISPL_EXPLICIT_TEMPLATE_ARGUMENT);
PRINT_MACRO(MSIPL_FUNC_TEMPLATE_DEFARG);
PRINT_MACRO(MSIPL_MEMBER_TEMPLATE);
PRINT_MACRO(MSIPL_MULTITHREAD);
PRINT_MACRO(MSIPL_NON_TYPE_TEMPARG);
PRINT_MACRO(MSIPL_PARTIAL_TEMPL);
PRINT_MACRO(MSIPL_STATIC_CONST_INIT);
PRINT_MACRO(MSIPL_TEMPL_NEWSPEC);
PRINT_MACRO(MSIPL_TYPENAME);
PRINT_MACRO(MSIPL_USING_NAMESPACE);
PRINT_MACRO(MSIPL_WCHART);
}
void print_platform_macros()
{
std::cout << "Detected Platform: " << BOOST_PLATFORM << std::endl;
// signedness:
PRINT_SIGN(char);
PRINT_SIGN(wchar_t);
// byte ordering:
PRINT_ORDER(short);
PRINT_ORDER(int);
PRINT_ORDER(long);
// sizes:
PRINT_EXPRESSION(sizeof(wchar_t));
PRINT_EXPRESSION(sizeof(short));
PRINT_EXPRESSION(sizeof(int));
PRINT_EXPRESSION(sizeof(long));
PRINT_EXPRESSION(sizeof(size_t));
PRINT_EXPRESSION(sizeof(ptrdiff_t));
PRINT_EXPRESSION(sizeof(void*));
PRINT_EXPRESSION(sizeof(void(*)(void)));
PRINT_EXPRESSION(sizeof(float));
PRINT_EXPRESSION(sizeof(double));
PRINT_EXPRESSION(sizeof(long double));
// limits:
PRINT_MACRO(CHAR_BIT);
PRINT_MACRO(CHAR_MAX);
PRINT_MACRO(WCHAR_MAX);
PRINT_MACRO(SHRT_MAX);
PRINT_MACRO(INT_MAX);
PRINT_MACRO(LONG_MAX);
PRINT_MACRO(LLONG_MAX);
PRINT_MACRO(LONG_LONG_MAX);
PRINT_MACRO(LONGLONG_MAX);
PRINT_MACRO(ULLONG_MAX); // <boost/cstdint.hpp> uses these, so we need to know them
PRINT_MACRO(ULONG_LONG_MAX);
PRINT_MACRO(ULONGLONG_MAX);
// general C99:
PRINT_MACRO(__STDC_IEC_559__);
PRINT_MACRO(__STDC_IEC_559_COMPLEX__);
PRINT_MACRO(__STDC_ISO_10646__);
// GNU:
PRINT_MACRO(__GLIBC__);
PRINT_MACRO(__GLIBC_MINOR__);
PRINT_MACRO(__GNU_LIBRARY__);
PRINT_MACRO(_BSD_SOURCE);
PRINT_MACRO(_GNU_SOURCE);
PRINT_MACRO(_ISOC99_SOURCE);
PRINT_MACRO(_ISOC9X_SOURCE);
PRINT_MACRO(_LARGEFILE_SOURCE);
PRINT_MACRO(_LARGEFILE64_SOURCE);
PRINT_MACRO(_SVID_SOURCE);
PRINT_MACRO(_THREAD_SAFE);
PRINT_MACRO(_XOPEN_SOURCE_EXTENDED);
PRINT_MACRO(XPG);
// POSIX:
PRINT_MACRO(_POSIX_ADVISORY_INFO);
PRINT_MACRO(_POSIX_ASYNCHRONOUS_IO);
PRINT_MACRO(_POSIX_BARRIERS);
PRINT_MACRO(_POSIX_C_SOURCE);
PRINT_MACRO(_POSIX_CHOWN_RESTRICTED);
PRINT_MACRO(_POSIX_CLOCK_SELECTION);
PRINT_MACRO(_POSIX_CPUTIME);
PRINT_MACRO(_POSIX_FSYNC);
PRINT_MACRO(_POSIX_JOB_CONTROL);
PRINT_MACRO(_POSIX_MAPPED_FILES);
PRINT_MACRO(_POSIX_MEMLOCK);
PRINT_MACRO(_POSIX_MEMLOCK_RANGE);
PRINT_MACRO(_POSIX_MEMORY_PROTECTION);
PRINT_MACRO(_POSIX_MESSAGE_PASSING);
PRINT_MACRO(_POSIX_MONOTONIC_CLOCK);
PRINT_MACRO(_POSIX_NO_TRUNC);
PRINT_MACRO(_POSIX_PRIORITIZED_IO);
PRINT_MACRO(_POSIX_PRIORITY_SCHEDULING);
PRINT_MACRO(_POSIX_RAW_SOCKETS);
PRINT_MACRO(_POSIX_READER_WRITER_LOCKS);
PRINT_MACRO(_POSIX_REALTIME_SIGNALS);
PRINT_MACRO(_POSIX_REGEXP);
PRINT_MACRO(_POSIX_SAVED_IDS);
PRINT_MACRO(_POSIX_SEMAPHORES);
PRINT_MACRO(_POSIX_SHARED_MEMORY_OBJECTS);
PRINT_MACRO(_POSIX_SHELL);
PRINT_MACRO(_POSIX_SOURCE);
PRINT_MACRO(_POSIX_SPAWN);
PRINT_MACRO(_POSIX_SPIN_LOCKS);
PRINT_MACRO(_POSIX_SPORADIC_SERVER);
PRINT_MACRO(_POSIX_SYNCHRONIZED_IO);
PRINT_MACRO(_POSIX_THREAD_ATTR_STACKADDR);
PRINT_MACRO(_POSIX_THREAD_ATTR_STACKSIZE);
PRINT_MACRO(_POSIX_THREAD_CPUTIME);
PRINT_MACRO(_POSIX_THREAD_PRIO_INHERIT);
PRINT_MACRO(_POSIX_THREAD_PRIO_PROTECT);
PRINT_MACRO(_POSIX_THREAD_PRIORITY_SCHEDULING);
PRINT_MACRO(_POSIX_THREAD_PROCESS_SHARED);
PRINT_MACRO(_POSIX_THREAD_SAFE_FUNCTIONS);
PRINT_MACRO(_POSIX_THREAD_SPORADIC_SERVER);
PRINT_MACRO(_POSIX_THREADS);
PRINT_MACRO(_POSIX_TIMEOUTS);
PRINT_MACRO(_POSIX_TIMERS);
PRINT_MACRO(_POSIX_TRACE);
PRINT_MACRO(_POSIX_TRACE_EVENT_FILTER);
PRINT_MACRO(_POSIX_TRACE_INHERIT);
PRINT_MACRO(_POSIX_TRACE_LOG);
PRINT_MACRO(_POSIX_TYPED_MEMORY_OBJECTS);
PRINT_MACRO(_POSIX_VDISABLE);
PRINT_MACRO(_POSIX_VERSION);
PRINT_MACRO(_POSIX2_C_BIND);
PRINT_MACRO(_POSIX2_C_DEV);
PRINT_MACRO(_POSIX2_CHAR_TERM);
PRINT_MACRO(_POSIX2_FORT_DEV);
PRINT_MACRO(_POSIX2_FORT_RUN);
PRINT_MACRO(_POSIX2_LOCALEDEF);
PRINT_MACRO(_POSIX2_PBS);
PRINT_MACRO(_POSIX2_PBS_ACCOUNTING);
PRINT_MACRO(_POSIX2_PBS_CHECKPOINT);
PRINT_MACRO(_POSIX2_PBS_LOCATE);
PRINT_MACRO(_POSIX2_PBS_MESSAGE);
PRINT_MACRO(_POSIX2_PBS_TRACK);
PRINT_MACRO(_POSIX2_SW_DEV);
PRINT_MACRO(_POSIX2_UPE);
PRINT_MACRO(_POSIX2_VERSION);
PRINT_MACRO(_V6_ILP32_OFF32);
PRINT_MACRO(_V6_ILP32_OFFBIG);
PRINT_MACRO(_V6_LP64_OFF64);
PRINT_MACRO(_V6_LPBIG_OFFBIG);
PRINT_MACRO(_XBS5_ILP32_OFF32);
PRINT_MACRO(_XBS5_ILP32_OFFBIG);
PRINT_MACRO(_XBS5_LP64_OFF64);
PRINT_MACRO(_XBS5_LPBIG_OFFBIG);
PRINT_MACRO(_XOPEN_CRYPT);
PRINT_MACRO(_XOPEN_ENH_I18N);
PRINT_MACRO(_XOPEN_LEGACY);
PRINT_MACRO(_XOPEN_REALTIME);
PRINT_MACRO(_XOPEN_REALTIME_THREADS);
PRINT_MACRO(_XOPEN_SHM);
PRINT_MACRO(_XOPEN_SOURCE);
PRINT_MACRO(_XOPEN_STREAMS);
PRINT_MACRO(_XOPEN_UNIX);
PRINT_MACRO(_XOPEN_VERSION);
// Misc:
PRINT_MACRO(__USE_BSD);
PRINT_MACRO(_FILE_OFFSET_BITS);
}
void print_boost_macros()
{
std::cout << "Boost version " << BOOST_STRINGIZE(BOOST_VERSION) << std::endl;
// config setup macros first:
PRINT_MACRO(BOOST_USER_CONFIG);
PRINT_MACRO(BOOST_COMPILER_CONFIG);
PRINT_MACRO(BOOST_STDLIB_CONFIG);
PRINT_MACRO(BOOST_PLATFORM_CONFIG);
PRINT_MACRO(BOOST_NO_CONFIG);
PRINT_MACRO(BOOST_NO_USER_CONFIG);
PRINT_MACRO(BOOST_NO_COMPILER_CONFIG);
PRINT_MACRO(BOOST_NO_STDLIB_CONFIG);
PRINT_MACRO(BOOST_NO_PLATFORM_CONFIG);
// then defect and feature macros:
PRINT_MACRO(BOOST_DISABLE_THREADS);
PRINT_MACRO(BOOST_DISABLE_WIN32);
PRINT_MACRO(BOOST_HAS_THREADS);
// BEGIN GENERATED BLOCK DO NOT EDIT THIS!!!!!!
PRINT_MACRO(BOOST_BCB_PARTIAL_SPECIALIZATION_BUG);
PRINT_MACRO(BOOST_DEDUCED_TYPENAME);
PRINT_MACRO(BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL);
PRINT_MACRO(BOOST_HAS_BETHREADS);
PRINT_MACRO(BOOST_HAS_CLOCK_GETTIME);
PRINT_MACRO(BOOST_HAS_CONCEPTS);
PRINT_MACRO(BOOST_HAS_DIRENT_H);
PRINT_MACRO(BOOST_HAS_EXPM1);
PRINT_MACRO(BOOST_HAS_FTIME);
PRINT_MACRO(BOOST_HAS_GETTIMEOFDAY);
PRINT_MACRO(BOOST_HAS_HASH);
PRINT_MACRO(BOOST_HAS_LOG1P);
PRINT_MACRO(BOOST_HAS_LONG_LONG);
PRINT_MACRO(BOOST_HAS_MACRO_USE_FACET);
PRINT_MACRO(BOOST_HAS_MS_INT64);
PRINT_MACRO(BOOST_HAS_NANOSLEEP);
PRINT_MACRO(BOOST_HAS_NL_TYPES_H);
PRINT_MACRO(BOOST_HAS_NRVO);
PRINT_MACRO(BOOST_HAS_PARTIAL_STD_ALLOCATOR);
PRINT_MACRO(BOOST_HAS_PTHREADS);
PRINT_MACRO(BOOST_HAS_PTHREAD_DELAY_NP);
PRINT_MACRO(BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE);
PRINT_MACRO(BOOST_HAS_PTHREAD_YIELD);
PRINT_MACRO(BOOST_HAS_RVALUE_REFS);
PRINT_MACRO(BOOST_HAS_SCHED_YIELD);
PRINT_MACRO(BOOST_HAS_SGI_TYPE_TRAITS);
PRINT_MACRO(BOOST_HAS_SIGACTION);
PRINT_MACRO(BOOST_HAS_SLIST);
PRINT_MACRO(BOOST_HAS_STATIC_ASSERT);
PRINT_MACRO(BOOST_HAS_STDINT_H);
PRINT_MACRO(BOOST_HAS_STLP_USE_FACET);
PRINT_MACRO(BOOST_HAS_TR1_ARRAY);
PRINT_MACRO(BOOST_HAS_TR1_BIND);
PRINT_MACRO(BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG);
PRINT_MACRO(BOOST_HAS_TR1_COMPLEX_OVERLOADS);
PRINT_MACRO(BOOST_HAS_TR1_FUNCTION);
PRINT_MACRO(BOOST_HAS_TR1_HASH);
PRINT_MACRO(BOOST_HAS_TR1_MEM_FN);
PRINT_MACRO(BOOST_HAS_TR1_RANDOM);
PRINT_MACRO(BOOST_HAS_TR1_REFERENCE_WRAPPER);
PRINT_MACRO(BOOST_HAS_TR1_REGEX);
PRINT_MACRO(BOOST_HAS_TR1_RESULT_OF);
PRINT_MACRO(BOOST_HAS_TR1_SHARED_PTR);
PRINT_MACRO(BOOST_HAS_TR1_TUPLE);
PRINT_MACRO(BOOST_HAS_TR1_TYPE_TRAITS);
PRINT_MACRO(BOOST_HAS_TR1_UNORDERED_MAP);
PRINT_MACRO(BOOST_HAS_TR1_UNORDERED_SET);
PRINT_MACRO(BOOST_HAS_TR1_UTILITY);
PRINT_MACRO(BOOST_HAS_TWO_ARG_USE_FACET);
PRINT_MACRO(BOOST_HAS_UNISTD_H);
PRINT_MACRO(BOOST_HAS_VARIADIC_TMPL);
PRINT_MACRO(BOOST_HAS_WINTHREADS);
PRINT_MACRO(BOOST_MSVC6_MEMBER_TEMPLATES);
PRINT_MACRO(BOOST_MSVC_STD_ITERATOR);
PRINT_MACRO(BOOST_NO_0X_HDR_ARRAY);
PRINT_MACRO(BOOST_NO_0X_HDR_CHRONO);
PRINT_MACRO(BOOST_NO_0X_HDR_CODECVT);
PRINT_MACRO(BOOST_NO_0X_HDR_CONCEPTS);
PRINT_MACRO(BOOST_NO_0X_HDR_CONDITION_VARIABLE);
PRINT_MACRO(BOOST_NO_0X_HDR_CONTAINER_CONCEPTS);
PRINT_MACRO(BOOST_NO_0X_HDR_FORWARD_LIST);
PRINT_MACRO(BOOST_NO_0X_HDR_FUTURE);
PRINT_MACRO(BOOST_NO_0X_HDR_INITIALIZER_LIST);
PRINT_MACRO(BOOST_NO_0X_HDR_ITERATOR_CONCEPTS);
PRINT_MACRO(BOOST_NO_0X_HDR_MEMORY_CONCEPTS);
PRINT_MACRO(BOOST_NO_0X_HDR_MUTEX);
PRINT_MACRO(BOOST_NO_0X_HDR_RANDOM);
PRINT_MACRO(BOOST_NO_0X_HDR_RATIO);
PRINT_MACRO(BOOST_NO_0X_HDR_REGEX);
PRINT_MACRO(BOOST_NO_0X_HDR_SYSTEM_ERROR);
PRINT_MACRO(BOOST_NO_0X_HDR_THREAD);
PRINT_MACRO(BOOST_NO_0X_HDR_TUPLE);
PRINT_MACRO(BOOST_NO_0X_HDR_TYPEINDEX);
PRINT_MACRO(BOOST_NO_0X_HDR_TYPE_TRAITS);
PRINT_MACRO(BOOST_NO_0X_HDR_UNORDERED_MAP);
PRINT_MACRO(BOOST_NO_0X_HDR_UNORDERED_SET);
PRINT_MACRO(BOOST_NO_ADL_BARRIER);
PRINT_MACRO(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP);
PRINT_MACRO(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS);
PRINT_MACRO(BOOST_NO_AUTO_DECLARATIONS);
PRINT_MACRO(BOOST_NO_AUTO_MULTIDECLARATIONS);
PRINT_MACRO(BOOST_NO_AUTO_PTR);
PRINT_MACRO(BOOST_NO_CHAR16_T);
PRINT_MACRO(BOOST_NO_CHAR32_T);
PRINT_MACRO(BOOST_NO_COMPLETE_VALUE_INITIALIZATION);
PRINT_MACRO(BOOST_NO_CONCEPTS);
PRINT_MACRO(BOOST_NO_CONSTEXPR);
PRINT_MACRO(BOOST_NO_CTYPE_FUNCTIONS);
PRINT_MACRO(BOOST_NO_CV_SPECIALIZATIONS);
PRINT_MACRO(BOOST_NO_CV_VOID_SPECIALIZATIONS);
PRINT_MACRO(BOOST_NO_CWCHAR);
PRINT_MACRO(BOOST_NO_CWCTYPE);
PRINT_MACRO(BOOST_NO_DECLTYPE);
PRINT_MACRO(BOOST_NO_DEFAULTED_FUNCTIONS);
PRINT_MACRO(BOOST_NO_DELETED_FUNCTIONS);
PRINT_MACRO(BOOST_NO_DEPENDENT_NESTED_DERIVATIONS);
PRINT_MACRO(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS);
PRINT_MACRO(BOOST_NO_EXCEPTIONS);
PRINT_MACRO(BOOST_NO_EXCEPTION_STD_NAMESPACE);
PRINT_MACRO(BOOST_NO_EXPLICIT_CONVERSION_OPERATORS);
PRINT_MACRO(BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS);
PRINT_MACRO(BOOST_NO_EXTERN_TEMPLATE);
PRINT_MACRO(BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS);
PRINT_MACRO(BOOST_NO_FUNCTION_TEMPLATE_ORDERING);
PRINT_MACRO(BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS);
PRINT_MACRO(BOOST_NO_INCLASS_MEMBER_INITIALIZATION);
PRINT_MACRO(BOOST_NO_INITIALIZER_LISTS);
PRINT_MACRO(BOOST_NO_INTEGRAL_INT64_T);
PRINT_MACRO(BOOST_NO_INTRINSIC_WCHAR_T);
PRINT_MACRO(BOOST_NO_IOSFWD);
PRINT_MACRO(BOOST_NO_IOSTREAM);
PRINT_MACRO(BOOST_NO_IS_ABSTRACT);
PRINT_MACRO(BOOST_NO_LAMBDAS);
PRINT_MACRO(BOOST_NO_LIMITS);
PRINT_MACRO(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS);
PRINT_MACRO(BOOST_NO_LONG_LONG);
PRINT_MACRO(BOOST_NO_LONG_LONG_NUMERIC_LIMITS);
PRINT_MACRO(BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS);
PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATES);
PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATE_FRIENDS);
PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATE_KEYWORD);
PRINT_MACRO(BOOST_NO_MS_INT64_NUMERIC_LIMITS);
PRINT_MACRO(BOOST_NO_NESTED_FRIENDSHIP);
PRINT_MACRO(BOOST_NO_NULLPTR);
PRINT_MACRO(BOOST_NO_NUMERIC_LIMITS_LOWEST);
PRINT_MACRO(BOOST_NO_OPERATORS_IN_NAMESPACE);
PRINT_MACRO(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS);
PRINT_MACRO(BOOST_NO_POINTER_TO_MEMBER_CONST);
PRINT_MACRO(BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS);
PRINT_MACRO(BOOST_NO_PRIVATE_IN_AGGREGATE);
PRINT_MACRO(BOOST_NO_RAW_LITERALS);
PRINT_MACRO(BOOST_NO_RTTI);
PRINT_MACRO(BOOST_NO_RVALUE_REFERENCES);
PRINT_MACRO(BOOST_NO_SCOPED_ENUMS);
PRINT_MACRO(BOOST_NO_SFINAE);
PRINT_MACRO(BOOST_NO_SFINAE_EXPR);
PRINT_MACRO(BOOST_NO_STATIC_ASSERT);
PRINT_MACRO(BOOST_NO_STDC_NAMESPACE);
PRINT_MACRO(BOOST_NO_STD_ALLOCATOR);
PRINT_MACRO(BOOST_NO_STD_DISTANCE);
PRINT_MACRO(BOOST_NO_STD_ITERATOR);
PRINT_MACRO(BOOST_NO_STD_ITERATOR_TRAITS);
PRINT_MACRO(BOOST_NO_STD_LOCALE);
PRINT_MACRO(BOOST_NO_STD_MESSAGES);
PRINT_MACRO(BOOST_NO_STD_MIN_MAX);
PRINT_MACRO(BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN);
PRINT_MACRO(BOOST_NO_STD_TYPEINFO);
PRINT_MACRO(BOOST_NO_STD_UNORDERED);
PRINT_MACRO(BOOST_NO_STD_USE_FACET);
PRINT_MACRO(BOOST_NO_STD_WSTREAMBUF);
PRINT_MACRO(BOOST_NO_STD_WSTRING);
PRINT_MACRO(BOOST_NO_STRINGSTREAM);
PRINT_MACRO(BOOST_NO_SWPRINTF);
PRINT_MACRO(BOOST_NO_TEMPLATED_IOSTREAMS);
PRINT_MACRO(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS);
PRINT_MACRO(BOOST_NO_TEMPLATE_ALIASES);
PRINT_MACRO(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION);
PRINT_MACRO(BOOST_NO_TEMPLATE_TEMPLATES);
PRINT_MACRO(BOOST_NO_TWO_PHASE_NAME_LOOKUP);
PRINT_MACRO(BOOST_NO_TYPEID);
PRINT_MACRO(BOOST_NO_TYPENAME_WITH_CTOR);
PRINT_MACRO(BOOST_NO_UNICODE_LITERALS);
PRINT_MACRO(BOOST_NO_UNREACHABLE_RETURN_DETECTION);
PRINT_MACRO(BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE);
PRINT_MACRO(BOOST_NO_USING_TEMPLATE);
PRINT_MACRO(BOOST_NO_VARIADIC_MACROS);
PRINT_MACRO(BOOST_NO_VARIADIC_TEMPLATES);
PRINT_MACRO(BOOST_NO_VOID_RETURNS);
// END GENERATED BLOCK
PRINT_MACRO(BOOST_INTEL);
PRINT_MACRO(BOOST_MSVC);
PRINT_MACRO(BOOST_STD_EXTENSION_NAMESPACE);
PRINT_MACRO(BOOST_UNREACHABLE_RETURN(0));
}
void print_separator()
{
std::cout <<
"\n\n*********************************************************************\n\n";
}
int main()
{
// boost compiler workaround defines
print_compiler_macros();
print_separator();
print_stdlib_macros();
print_separator();
print_platform_macros();
print_separator();
print_boost_macros();
return 0;
}