williamr@2: // STLport configuration file williamr@2: // It is internal STLport header - DO NOT include it directly williamr@2: // Microsoft Visual C++ 4.0, 4.1, 4.2, 5.0, 6.0, 7.0, 7.1, ICL williamr@2: williamr@2: williamr@2: // Common features for VC++ 4.0 and higher williamr@2: # ifdef _M_IA64 williamr@2: # define _STLP_NATIVE_HEADER(x) <../crt/##x> williamr@2: # define _STLP_NATIVE_C_HEADER(x) <../crt/##x> williamr@2: # define _STLP_NATIVE_CPP_C_HEADER(x) <../crt/##x> williamr@2: # define _STLP_NATIVE_OLD_STREAMS_HEADER(x) <../crt/##x> williamr@2: # define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) <../crt/##header> williamr@2: # define _STLP_GLOBAL_NEW_HANDLER williamr@2: # else williamr@2: # define _STLP_NATIVE_HEADER(x) <../include/##x> williamr@2: # define _STLP_NATIVE_C_HEADER(x) <../include/##x> williamr@2: # define _STLP_NATIVE_CPP_C_HEADER(x) <../include/##x> williamr@2: # define _STLP_NATIVE_OLD_STREAMS_HEADER(x) <../include/##x> williamr@2: # define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) <../include/##header> williamr@2: # endif williamr@2: williamr@2: # define _STLP_CALL __cdecl williamr@2: williamr@2: # ifndef _STLP_LONG_LONG williamr@2: # define _STLP_LONG_LONG __int64 williamr@2: # endif williamr@2: williamr@2: # define _STLP_PRAGMA_ONCE williamr@2: williamr@2: // these switches depend on compiler flags williamr@2: # ifndef _CPPUNWIND williamr@2: # define _STLP_HAS_NO_EXCEPTIONS 1 williamr@2: # endif williamr@2: williamr@2: # define _STLP_VENDOR_UNEXPECTED_STD williamr@2: williamr@2: # if defined ( _MT ) && !defined (_STLP_NO_THREADS) && !defined (_REENTRANT) && !defined(__WINS__) williamr@2: # define _REENTRANT 1 williamr@2: # endif williamr@2: williamr@2: # if !defined (_NATIVE_WCHAR_T_DEFINED) williamr@2: # define _STLP_WCHAR_T_IS_USHORT 1 williamr@2: # endif williamr@2: williamr@2: # define _STLP_MINIMUM_IMPORT_STD williamr@2: williamr@2: # ifdef _STLP_MSVC williamr@2: williamr@2: # ifndef _STLP_MSVC50_COMPATIBILITY williamr@2: # define _STLP_MSVC50_COMPATIBILITY 1 williamr@2: # endif williamr@2: williamr@2: # define _STLP_DLLEXPORT_NEEDS_PREDECLARATION 1 williamr@2: # define _STLP_HAS_SPECIFIC_PROLOG_EPILOG williamr@2: williamr@2: // # ifndef __BUILDING_STLPORT williamr@2: // # define _STLP_USE_TEMPLATE_EXPORT 1 williamr@2: // # endif williamr@2: williamr@2: # if (_STLP_MSVC >= 1310) williamr@2: # define _STLP_NO_METHOD_SPECIALIZATION 1 williamr@2: # endif // (_STLP_MSVC >= 1310) williamr@2: williamr@2: # if (_STLP_MSVC > 1100) williamr@2: typedef char __stl_char; williamr@2: # define _STLP_DEFAULTCHAR __stl_char williamr@2: # endif /* (_STLP_MSVC < 1100 ) */ williamr@2: williamr@2: # if (_STLP_MSVC <= 1310) williamr@2: # define _STLP_STATIC_CONST_INIT_BUG 1 williamr@2: # endif // (_STLP_MSVC <= 1310) williamr@2: williamr@2: # if (_STLP_MSVC <= 1300) williamr@2: # define _STLP_DEFAULT_CONSTRUCTOR_BUG 1 williamr@2: williamr@2: # define _STLP_NO_TYPENAME_IN_TEMPLATE_HEADER williamr@2: // fails to properly resolve call to sin() from within sin() williamr@2: # define _STLP_SAME_FUNCTION_NAME_RESOLUTION_BUG williamr@2: # define _STLP_NO_TYPENAME_ON_RETURN_TYPE 1 williamr@2: // boris : not defining this macro for SP5 causes other problems williamr@2: // # if !defined (_MSC_FULL_VER) || (_MSC_FULL_VER < 12008804 ) williamr@2: # define _STLP_NO_USING_FOR_GLOBAL_FUNCTIONS 1 williamr@2: //# endif williamr@2: # define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER 1 williamr@2: # define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1 williamr@2: # define _STLP_NO_FRIEND_TEMPLATES williamr@2: // VC++ cannot handle default allocator argument in template constructors williamr@2: # define _STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS williamr@2: // there is no partial spec, and MSVC breaks on simulating it for iterator_traits queries williamr@2: # define _STLP_USE_OLD_HP_ITERATOR_QUERIES williamr@2: // # define _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS 1 williamr@2: # define _STLP_NO_QUALIFIED_FRIENDS 1 williamr@2: # define _STLP_DONT_USE_BOOL_TYPEDEF 1 williamr@2: # endif /* _STLP_MSVC <= 1300 */ williamr@2: williamr@2: # endif /* _STLP_MSVC */ williamr@2: williamr@2: # if (_MSC_VER <= 1310) williamr@2: # define _STLP_VENDOR_GLOBAL_CSTD williamr@2: // They included the necessary coding, williamr@2: // but the beta still has an issue with template classes williamr@2: // ok: class a { static const int v = 2; }; williamr@2: // error: template <class _Tp> class a { static const int v = 2; }; williamr@2: # if !defined (_STLP_WHOLE_NATIVE_STD) && ! defined (_STLP_REDEFINE_STD) williamr@2: # define _STLP_REDEFINE_STD williamr@2: # endif williamr@2: # endif /* (_MSC_VER <= 1310) */ williamr@2: williamr@2: # if (_MSC_VER <= 1200) // including MSVC 6.0 williamr@2: // these work, as long they are inline williamr@2: # define _STLP_INLINE_MEMBER_TEMPLATES 1 williamr@2: # define _STLP_NO_MEMBER_TEMPLATE_KEYWORD 1 williamr@2: # define _STLP_GLOBAL_NEW_HANDLER williamr@2: # define _STLP_DONT_RETURN_VOID 1 williamr@2: # define _STLP_DONT_USE_NESTED_TCLASS_THROUGHT_TPARAM 1 williamr@2: # endif /* (_MSC_VER <= 1200) */ williamr@2: williamr@2: # if ( _MSC_VER<=1010 ) williamr@2: // "bool" is reserved in MSVC 4.1 while absent, so : williamr@2: // # define _STLP_USE_ABBREVS 1 williamr@2: # define _STLP_NO_BAD_ALLOC williamr@2: # define _STLP_HAS_NO_NEW_C_HEADERS 1 williamr@2: # define _STLP_NO_NEW_NEW_HEADER 1 williamr@2: # elif (_MSC_VER < 1100) williamr@2: // VC++ 4.2 and higher williamr@2: # define _STLP_YVALS_H 1 williamr@2: # define _STLP_HAS_NO_NEW_IOSTREAMS 1 williamr@2: # endif /* 1010 */ williamr@2: williamr@2: # if defined (_STLP_MSVC) && ( _STLP_MSVC < 1200 ) /* VC++ 6.0 */ williamr@2: // # define _STLP_NO_MEMBER_TEMPLATES 1 williamr@2: // # define _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS 1 williamr@2: # define _STLP_NON_TYPE_TMPL_PARAM_BUG 1 williamr@2: # define _STLP_THROW_RETURN_BUG 1 williamr@2: # define _STLP_NO_MEMBER_TEMPLATE_CLASSES 1 williamr@2: # endif williamr@2: williamr@2: # if defined (_STLP_MSVC) && ( _STLP_MSVC < 1100 ) williamr@2: # ifndef _STLP_NO_OWN_IOSTREAMS williamr@2: # define _STLP_NO_OWN_IOSTREAMS williamr@2: # undef _STLP_OWN_IOSTREAMS williamr@2: # endif williamr@2: // # define _STLP_NESTED_TYPE_PARAM_BUG 1 williamr@2: // Debug mode does not work for 4.2 williamr@2: # ifdef _STLP_DEBUG williamr@2: # pragma message ("STLport debug mode does not work for VC++ 4.2, turning _STLP_DEBUG off ...") williamr@2: # undef _STLP_DEBUG williamr@2: # endif williamr@2: # define _STLP_NO_BOOL 1 williamr@2: # define _STLP_NEED_TYPENAME 1 williamr@2: # define _STLP_NEED_EXPLICIT 1 williamr@2: # define _STLP_NEED_MUTABLE 1 williamr@2: # define _STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX williamr@2: # define _STLP_LIMITED_DEFAULT_TEMPLATES 1 williamr@2: williamr@2: // up to 4.2, library is in global namespace williamr@2: # define _STLP_VENDOR_GLOBAL_STD williamr@2: # define _STLP_NONTEMPL_BASE_MATCH_BUG 1 williamr@2: # define _STLP_BROKEN_USING_DIRECTIVE 1 williamr@2: # define _STLP_NO_ARROW_OPERATOR williamr@2: # define _STLP_NO_SIGNED_BUILTINS 1 williamr@2: # define _STLP_NO_EXCEPTION_SPEC 1 williamr@2: # undef _STLP_DEFAULT_TYPE_PARAM williamr@2: # undef _STLP_HAS_NO_NAMESPACES williamr@2: # undef _STLP_NO_AT_MEMBER_FUNCTION williamr@2: # undef _STLP_NO_MEMBER_TEMPLATES williamr@2: # undef _STLP_NO_MEMBER_TEMPLATE_CLASSES williamr@2: # define _STLP_HAS_NO_NAMESPACES 1 williamr@2: # define _STLP_NO_AT_MEMBER_FUNCTION 1 williamr@2: # define _STLP_NO_MEMBER_TEMPLATES williamr@2: # define _STLP_NO_MEMBER_TEMPLATE_CLASSES williamr@2: # endif /* 1100 */ williamr@2: williamr@2: // If we are under Windows CE, include appropriate config williamr@2: williamr@2: # ifdef UNDER_CE williamr@2: # include williamr@2: # endif williamr@2: williamr@2: # ifdef __ICL williamr@2: # define _STLP_LIB_BASENAME "stlport_icl" williamr@2: # else williamr@2: # if (_MSC_VER >= 1310) williamr@2: # define _STLP_LIB_BASENAME "stlport_vc71" williamr@2: # elif (_MSC_VER >= 1300) williamr@2: # define _STLP_LIB_BASENAME "stlport_vc7" williamr@2: # elif (_MSC_VER >= 1200) williamr@2: # define _STLP_LIB_BASENAME "stlport_vc6" williamr@2: //# endif williamr@2: # elif (_MSC_VER >= 1100) williamr@2: //# ifdef _UNICODE williamr@2: //# define _STLP_LIB_BASENAME "stlport_vc5_unicode" williamr@2: //# else williamr@2: # define _STLP_LIB_BASENAME "stlport_vc5" williamr@2: //# endif williamr@2: # endif /* (_MSC_VER >= 1200) */ williamr@2: # endif /* __ICL */ williamr@2: williamr@2: williamr@2: # if (defined (__ICL) && (__ICL < 450)) || (_MSC_VER < 1200) williamr@2: // only static STLport lib now works for ICL and VC 5.0 williamr@2: # undef _STLP_USE_STATIC_LIB williamr@2: # define _STLP_USE_STATIC_LIB williamr@2: // disable hook which makes template symbols to be searched for in the library williamr@2: # undef _STLP_NO_CUSTOM_IO williamr@2: # endif williamr@2: williamr@2: #if defined (__WINS__) williamr@2: williamr@2: # ifdef _PTHREADS williamr@2: # undef _PTHREADS williamr@2: # endif williamr@2: # ifdef _STLP_PTHREADS williamr@2: # undef _STLP_PTHREADS williamr@2: # endif williamr@2: # ifdef _STLP_THREADS williamr@2: # undef _STLP_THREADS williamr@2: # endif williamr@2: williamr@2: # undef _STLP_NATIVE_C_HEADER williamr@2: # define _STLP_NATIVE_C_HEADER(x) williamr@2: williamr@2: # define _STLP_NO_NEW_HEADER williamr@2: # define _STLP_HAS_NO_NEW_C_HEADERS 1 williamr@2: # define _STLP_NO_THREADS williamr@2: # define _STLP_NO_EXCEPTIONS williamr@2: # define _STLP_USE_TRAP_LEAVE williamr@2: # define _STLP_NO_EXCEPTION_HEADER williamr@2: // # define _STLP_NO_WCHAR_T williamr@2: # define _STLP_NO_IOSTREAMS williamr@2: # define _STLP_NO_OWN_IOSTREAMS williamr@2: # undef _STLP_OWN_IOSTREAMS williamr@2: # define _NOTHREADS williamr@2: # define _STLP_USE_NEWALLOC williamr@2: # define _STLP_NO_NODE_ALLOC williamr@2: # define _STLP_LITTLE_ENDIAN williamr@2: # define _STLP_NO_LONG_DOUBLE williamr@2: # define _STLP_LABS williamr@2: # define _STLP_LDIV williamr@2: # define _STLP_NO_NAMESPACES williamr@2: # define _STLP_CONST_CONSTRUCTOR_BUG williamr@2: //# define _STLP_IMPLICIT_STRING_TO_DESC williamr@2: // # define _STLP_MULTI_CONST_TEMPLATE_ARG_BUG williamr@2: #endif williamr@2: williamr@2: # include