epoc32/include/tools/stlport/stl/config/_msvc.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
parent 2 2fe1408b6811
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
williamr@4
     1
/* STLport configuration file
williamr@4
     2
 * It is internal STLport header - DO NOT include it directly
williamr@4
     3
 * Microsoft Visual C++ 6.0, 7.0, 7.1, 8.0, ICL
williamr@4
     4
 */
williamr@4
     5
williamr@4
     6
#if !defined (_STLP_COMPILER)
williamr@4
     7
#  define _STLP_COMPILER "Microsoft Visual Studio C++"
williamr@4
     8
#endif
williamr@4
     9
williamr@4
    10
#if !defined (__ICL) && !defined (_STLP_MSVC)
williamr@4
    11
#  define _STLP_MSVC _MSC_VER
williamr@4
    12
#endif
williamr@4
    13
williamr@4
    14
#if !defined (_STLP_MSVC_LIB)
williamr@4
    15
#  define _STLP_MSVC_LIB _MSC_VER
williamr@4
    16
#endif
williamr@4
    17
williamr@4
    18
#if defined (__BUILDING_STLPORT) && defined (_MANAGED)
williamr@4
    19
/* Building a managed version of STLport is not supported because we haven't
williamr@4
    20
 * found a good reason to support it. However, building a managed translation
williamr@4
    21
 * unit using STLport _is_ supported.
williamr@4
    22
 */
williamr@4
    23
#  error Sorry but building a managed version of STLport is not supported.
williamr@4
    24
#endif
williamr@4
    25
williamr@4
    26
#if defined (_STLP_USING_PLATFORM_SDK_COMPILER)
williamr@4
    27
/* This is a specific section for compilers coming with platform SDKs. Native
williamr@4
    28
 * library coming with it is different from the one coming with commercial
williamr@4
    29
 * MSVC compilers so there is some specific settings.
williamr@4
    30
 */
williamr@4
    31
#  define _STLP_NATIVE_INCLUDE_PATH ../crt
williamr@4
    32
#  define _STLP_VENDOR_GLOBAL_CSTD
williamr@4
    33
#  define _STLP_VENDOR_TERMINATE_STD
williamr@4
    34
#  define _STLP_GLOBAL_NEW_HANDLER
williamr@4
    35
#  if (_STLP_MSVC_LIB <= 1400)
williamr@4
    36
/* We hope this bug will be fixed in future versions. */
williamr@4
    37
#    define _STLP_NEW_DONT_THROW_BAD_ALLOC 1
williamr@4
    38
#  endif
williamr@4
    39
#endif
williamr@4
    40
williamr@4
    41
#define _STLP_CALL __cdecl
williamr@4
    42
williamr@4
    43
#ifndef _STLP_LONG_LONG
williamr@4
    44
#  define _STLP_LONG_LONG __int64
williamr@4
    45
#endif
williamr@4
    46
williamr@4
    47
#define _STLP_PRAGMA_ONCE
williamr@4
    48
williamr@4
    49
/* These switches depend on compiler flags. We are hoping here that compilers
williamr@4
    50
 * simulating MSVC behavior use identical macros to report compilation context.
williamr@4
    51
 * Otherwise those macros will have to be undef in specific compiler configuration
williamr@4
    52
 * files.
williamr@4
    53
 */
williamr@4
    54
#ifndef _CPPUNWIND
williamr@4
    55
#  define _STLP_DONT_USE_EXCEPTIONS 1
williamr@4
    56
#endif
williamr@4
    57
williamr@4
    58
#ifndef _CPPRTTI
williamr@4
    59
#  define _STLP_NO_RTTI 1
williamr@4
    60
#endif
williamr@4
    61
williamr@4
    62
#if defined (_MT) && !defined (_STLP_NO_THREADS) && !defined (_REENTRANT)
williamr@4
    63
#  define _REENTRANT 1
williamr@4
    64
#endif
williamr@4
    65
williamr@4
    66
#if !defined (_NATIVE_WCHAR_T_DEFINED)
williamr@4
    67
#  define _STLP_WCHAR_T_IS_USHORT 1
williamr@4
    68
#endif
williamr@4
    69
williamr@4
    70
#define _STLP_MINIMUM_IMPORT_STD
williamr@4
    71
#define _STLP_NO_VENDOR_STDLIB_L 1
williamr@4
    72
williamr@4
    73
#if defined (_STLP_MSVC)
williamr@4
    74
williamr@4
    75
#define _STLP_NORETURN_FUNCTION __declspec(noreturn)
williamr@4
    76
williamr@4
    77
/* Full compiler version comes from boost library intrinsics.hpp header. */
williamr@4
    78
#  if defined (_MSC_FULL_VER) && (_MSC_FULL_VER >= 140050215)
williamr@4
    79
#    define _STLP_HAS_TRIVIAL_CONSTRUCTOR(T) __has_trivial_constructor(T)
williamr@4
    80
#    define _STLP_HAS_TRIVIAL_COPY(T) __has_trivial_copy(T)
williamr@4
    81
#    define _STLP_HAS_TRIVIAL_ASSIGN(T) __has_trivial_assign(T)
williamr@4
    82
#    define _STLP_HAS_TRIVIAL_DESTRUCTOR(T) __has_trivial_destructor(T)
williamr@4
    83
#    define _STLP_IS_POD(T) __is_pod(T)
williamr@4
    84
#    define _STLP_HAS_TYPE_TRAITS_INTRINSICS
williamr@4
    85
#  endif
williamr@4
    86
williamr@4
    87
#  ifndef _STLP_MSVC50_COMPATIBILITY
williamr@4
    88
#    define _STLP_MSVC50_COMPATIBILITY   1
williamr@4
    89
#  endif
williamr@4
    90
williamr@4
    91
#  define _STLP_DLLEXPORT_NEEDS_PREDECLARATION 1
williamr@4
    92
#  define _STLP_HAS_SPECIFIC_PROLOG_EPILOG 1
williamr@4
    93
williamr@4
    94
/* # ifndef __BUILDING_STLPORT
williamr@4
    95
 * #  define _STLP_USE_TEMPLATE_EXPORT 1
williamr@4
    96
 * # endif
williamr@4
    97
 */
williamr@4
    98
#  if (_STLP_MSVC <= 1400)
williamr@4
    99
#    define _STLP_STATIC_CONST_INIT_BUG   1
williamr@4
   100
#  endif
williamr@4
   101
williamr@4
   102
/** Note: the macro _STLP_NO_UNCAUGHT_EXCEPT_SUPPORT is defined
williamr@4
   103
unconditionally and undef'ed here when applicable. */
williamr@4
   104
#  if defined(UNDER_CE)
williamr@4
   105
/* eVCx:
williamr@4
   106
uncaught_exception is declared in the SDKs delivered with eVC4 (eVC3 is
williamr@4
   107
unknown) and they all reside in namespace 'std' there. However, they are not
williamr@4
   108
part of any lib so linking fails. When using VC8 to crosscompile for CE 5 on
williamr@4
   109
an ARMV4I, the uncaught_exception test fails, the function returns the wrong
williamr@4
   110
value. */
williamr@4
   111
#  else
williamr@4
   112
/* VCx:
williamr@4
   113
These are present at least since VC6, but the uncaught_exception() of VC6 is
williamr@4
   114
broken, it returns the wrong value in the unittests. 7.1 and later seem to
williamr@4
   115
work, 7.0 is still unknown (we assume it works until negative report). */
williamr@4
   116
#    if (_STLP_MSVC >= 1300)// VC7 and later
williamr@4
   117
#      undef _STLP_NO_UNCAUGHT_EXCEPT_SUPPORT
williamr@4
   118
#      if !defined (_STLP_DONT_USE_EXCEPTIONS)
williamr@4
   119
#        define _STLP_NOTHROW throw()
williamr@4
   120
#      endif
williamr@4
   121
#    endif
williamr@4
   122
#  endif
williamr@4
   123
williamr@4
   124
#  if (_STLP_MSVC <= 1300)
williamr@4
   125
#    define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1
williamr@4
   126
#    define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER 1
williamr@4
   127
/* There is no partial spec, and MSVC breaks on simulating it for iterator_traits queries */
williamr@4
   128
#    define _STLP_USE_OLD_HP_ITERATOR_QUERIES
williamr@4
   129
#    define _STLP_NO_TYPENAME_IN_TEMPLATE_HEADER
williamr@4
   130
#    define _STLP_NO_METHOD_SPECIALIZATION 1
williamr@4
   131
#    define _STLP_DEF_CONST_PLCT_NEW_BUG 1
williamr@4
   132
#    define _STLP_NO_TYPENAME_ON_RETURN_TYPE 1
williamr@4
   133
/* VC++ cannot handle default allocator argument in template constructors */
williamr@4
   134
#    define _STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS
williamr@4
   135
#    define _STLP_NO_QUALIFIED_FRIENDS    1
williamr@4
   136
#    define _STLP_NO_FRIEND_TEMPLATES
williamr@4
   137
/* Fails to properly resolve call to sin() from within sin() */
williamr@4
   138
#  endif
williamr@4
   139
williamr@4
   140
#  if (_STLP_MSVC < 1300)
williamr@4
   141
#    define _STLP_NO_IEC559_SUPPORT 1
williamr@4
   142
#  endif
williamr@4
   143
williamr@4
   144
#  if (_STLP_MSVC < 1300) /* including MSVC 6.0 */
williamr@4
   145
/* These work, as long they are inline */
williamr@4
   146
#    define _STLP_INLINE_MEMBER_TEMPLATES 1
williamr@4
   147
#    define _STLP_NO_MEMBER_TEMPLATE_KEYWORD 1
williamr@4
   148
#    define _STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE 1
williamr@4
   149
#  endif
williamr@4
   150
williamr@4
   151
#  if (_STLP_MSVC >= 1200)
williamr@4
   152
#    define _STLP_HAS_NATIVE_FLOAT_ABS 1
williamr@4
   153
#  endif
williamr@4
   154
williamr@4
   155
// TODO: some eVC4 compilers report _MSC_VER 1201 or 1202, which category do they belong to?
williamr@4
   156
#  if (_STLP_MSVC > 1200) && (_STLP_MSVC < 1310)
williamr@4
   157
#    define _STLP_NO_MOVE_SEMANTIC
williamr@4
   158
#  endif
williamr@4
   159
williamr@4
   160
#  if (_STLP_MSVC < 1300)
williamr@4
   161
/* TODO: remove this if it is handled and documented elsewhere
williamr@4
   162
 * dums: VC6 do not handle correctly member templates of class that are explicitely
williamr@4
   163
 * instanciated to be exported. There is a workaround, seperate the non template methods
williamr@4
   164
 * from the template ones within 2 different classes and only export the non template one.
williamr@4
   165
 * It is implemented for basic_string and locale at the writing of this note.
williamr@4
   166
 * However this problem hos not  been considered as important enough to remove template member
williamr@4
   167
 * methods for other classes. Moreover Boost (www.boost.org) required it to be granted.
williamr@4
   168
 * The workaround is activated thanks to the _STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND macro defined
williamr@4
   169
 * later in this config file.
williamr@4
   170
 */
williamr@4
   171
/*
williamr@4
   172
#    if defined (_DLL)
williamr@4
   173
#      define _STLP_NO_MEMBER_TEMPLATES 1
williamr@4
   174
#    endif
williamr@4
   175
*/
williamr@4
   176
williamr@4
   177
/* Boris : not defining this macro for SP5 causes other problems */
williamr@4
   178
/*#    if !defined (_MSC_FULL_VER) || (_MSC_FULL_VER < 12008804 ) */
williamr@4
   179
#    define _STLP_NO_USING_FOR_GLOBAL_FUNCTIONS 1
williamr@4
   180
/*#    endif */
williamr@4
   181
#    define _STLP_DONT_USE_BOOL_TYPEDEF 1
williamr@4
   182
#    define _STLP_DONT_RETURN_VOID 1
williamr@4
   183
#  endif
williamr@4
   184
williamr@4
   185
/*
williamr@4
   186
 * MSVC6 is known to have many trouble with namespace management but
williamr@4
   187
 * MSVC .Net 2003 and 2005 also have a bug difficult to reproduce without
williamr@4
   188
 * STLport:
williamr@4
   189
 * namespace stlp_std {
williamr@4
   190
 *   typedef int foo_int;
williamr@4
   191
 * }
williamr@4
   192
 * #include <map>
williamr@4
   193
 * const foo_int bar = 0;
williamr@4
   194
 *
williamr@4
   195
 * As you can see foo is available without namespace specification as if
williamr@4
   196
 * a using namespace stlp_std has been performed. Defining _STLP_USING_NAMESPACE_BUG
williamr@4
   197
 * restore the expected compilation error.
williamr@4
   198
 */
williamr@4
   199
#  define _STLP_USING_NAMESPACE_BUG 1
williamr@4
   200
williamr@4
   201
#  if (_STLP_MSVC < 1300) /* MSVC 6.0 and earlier */
williamr@4
   202
/* defined for DEBUG and NDEBUG too, to allow user mix own debug build with STLP release library */
williamr@4
   203
#    define _STLP_USE_ABBREVS
williamr@4
   204
#  endif
williamr@4
   205
williamr@4
   206
// TODO: what is the earliest version for this? If it is 1200, use _STLP_MSVC>=1200.
williamr@4
   207
#  if (_STLP_MSVC > 1100) && (_STLP_MSVC < 1300)
williamr@4
   208
typedef char __stl_char;
williamr@4
   209
#    define _STLP_DEFAULTCHAR __stl_char
williamr@4
   210
#  endif
williamr@4
   211
williamr@4
   212
#  if (_STLP_MSVC < 1200) /* before VC++ 6.0 */
williamr@4
   213
/* #  define _STLP_NO_MEMBER_TEMPLATES 1 */
williamr@4
   214
/* #  define _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS 1 */
williamr@4
   215
#    define _STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS 1
williamr@4
   216
#    define _STLP_DONT_USE_PARTIAL_SPEC_WRKD 1
williamr@4
   217
#    define _STLP_QUALIFIED_SPECIALIZATION_BUG 1
williamr@4
   218
#    define _STLP_NON_TYPE_TMPL_PARAM_BUG 1
williamr@4
   219
#    define _STLP_THROW_RETURN_BUG 1
williamr@4
   220
#    define _STLP_NO_MEMBER_TEMPLATE_CLASSES 1
williamr@4
   221
#    define _STLP_DEF_CONST_DEF_PARAM_BUG 1
williamr@4
   222
#  endif
williamr@4
   223
williamr@4
   224
#  if (_STLP_MSVC < 1100 )
williamr@4
   225
#    ifndef _STLP_USE_NO_IOSTREAMS
williamr@4
   226
#      define _STLP_USE_NO_IOSTREAMS
williamr@4
   227
#    endif
williamr@4
   228
/* #  define _STLP_NESTED_TYPE_PARAM_BUG 1 */
williamr@4
   229
/* Debug mode does not work for 4.2 */
williamr@4
   230
#    if defined (_STLP_DEBUG)
williamr@4
   231
#      pragma message ("STLport debug mode does not work for VC++ 4.2, turning _STLP_DEBUG off ...")
williamr@4
   232
#      undef _STLP_DEBUG
williamr@4
   233
#    endif
williamr@4
   234
#    define _STLP_NO_BOOL            1
williamr@4
   235
#    define _STLP_NEED_TYPENAME      1
williamr@4
   236
#    define _STLP_NEED_EXPLICIT      1
williamr@4
   237
#    define _STLP_NEED_MUTABLE       1
williamr@4
   238
#    define _STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX
williamr@4
   239
#    define _STLP_LIMITED_DEFAULT_TEMPLATES 1
williamr@4
   240
#    define _STLP_NONTEMPL_BASE_MATCH_BUG 1
williamr@4
   241
#    define _STLP_BROKEN_USING_DIRECTIVE  1
williamr@4
   242
#    define _STLP_NO_ARROW_OPERATOR 1
williamr@4
   243
#    define _STLP_NO_SIGNED_BUILTINS 1
williamr@4
   244
#    define _STLP_NO_EXCEPTION_SPEC 1
williamr@4
   245
#    define _STLP_HAS_NO_NAMESPACES 1
williamr@4
   246
#    define _STLP_NO_AT_MEMBER_FUNCTION 1
williamr@4
   247
#    define _STLP_NO_MEMBER_TEMPLATES 1
williamr@4
   248
#  endif /* 1100 */
williamr@4
   249
williamr@4
   250
#endif /* _STLP_MSVC */
williamr@4
   251
williamr@4
   252
/** The desktop variants starting with VC8 have a set of more secure replacements
williamr@4
   253
for the error-prone string handling functions of the C standard lib. */
williamr@4
   254
#if (_STLP_MSVC_LIB >= 1400) && !defined (_STLP_USING_PLATFORM_SDK_COMPILER) && !defined(UNDER_CE)
williamr@4
   255
#  define _STLP_USE_SAFE_STRING_FUNCTIONS 1
williamr@4
   256
#endif
williamr@4
   257
williamr@4
   258
#if (_STLP_MSVC_LIB <= 1310)
williamr@4
   259
#  define _STLP_VENDOR_GLOBAL_CSTD
williamr@4
   260
#endif
williamr@4
   261
williamr@4
   262
#if (_STLP_MSVC_LIB >= 1300) && !defined(UNDER_CE)
williamr@4
   263
/* Starting with MSVC 7.0 and compilers simulating it,
williamr@4
   264
 * we assume that the new SDK is granted:
williamr@4
   265
 */
williamr@4
   266
#  define _STLP_NEW_PLATFORM_SDK 1
williamr@4
   267
#endif
williamr@4
   268
williamr@4
   269
#if (_STLP_MSVC_LIB < 1300) /* including MSVC 6.0 */
williamr@4
   270
#  define _STLP_GLOBAL_NEW_HANDLER 1
williamr@4
   271
#  define _STLP_VENDOR_UNEXPECTED_STD
williamr@4
   272
#  define _STLP_NEW_DONT_THROW_BAD_ALLOC 1
williamr@4
   273
#endif
williamr@4
   274
williamr@4
   275
#if (_STLP_MSVC_LIB < 1100)
williamr@4
   276
/* up to 4.2, library is in global namespace */
williamr@4
   277
#  define _STLP_VENDOR_GLOBAL_STD
williamr@4
   278
#endif
williamr@4
   279
williamr@4
   280
#if (_STLP_MSVC_LIB <= 1010)
williamr@4
   281
/* "bool" is reserved in MSVC 4.1 while <yvals.h> absent, so : */
williamr@4
   282
#  define _STLP_NO_BAD_ALLOC
williamr@4
   283
#  define _STLP_HAS_NO_NEW_C_HEADERS 1
williamr@4
   284
#  define _STLP_NO_NEW_NEW_HEADER 1
williamr@4
   285
#elif (_STLP_MSVC_LIB < 1100)
williamr@4
   286
/* VC++ 4.2 and higher */
williamr@4
   287
#  define _STLP_YVALS_H 1
williamr@4
   288
#  define _STLP_USE_NO_IOSTREAMS 1
williamr@4
   289
#endif
williamr@4
   290
williamr@4
   291
#define _STLP_EXPORT_DECLSPEC __declspec(dllexport)
williamr@4
   292
#define _STLP_IMPORT_DECLSPEC __declspec(dllimport)
williamr@4
   293
williamr@4
   294
#if !defined (_STLP_MSVC) || (_STLP_MSVC >= 1100)
williamr@4
   295
#  define _STLP_CLASS_EXPORT_DECLSPEC __declspec(dllexport)
williamr@4
   296
#  define _STLP_CLASS_IMPORT_DECLSPEC __declspec(dllimport)
williamr@4
   297
#endif
williamr@4
   298
williamr@4
   299
#if defined (__DLL) || defined (_DLL) || defined (_RTLDLL) || defined (_AFXDLL)
williamr@4
   300
#  define _STLP_RUNTIME_DLL
williamr@4
   301
#endif
williamr@4
   302
#if defined (__BUILDING_STLPORT) && \
williamr@4
   303
   (defined (_STLP_USE_DYNAMIC_LIB) || \
williamr@4
   304
    defined (_STLP_RUNTIME_DLL) && !defined (_STLP_USE_STATIC_LIB))
williamr@4
   305
#  define _STLP_DLL
williamr@4
   306
#endif
williamr@4
   307
#include <stl/config/_detect_dll_or_lib.h>
williamr@4
   308
#undef _STLP_RUNTIME_DLL
williamr@4
   309
#undef _STLP_DLL
williamr@4
   310
williamr@4
   311
#if defined (_STLP_USE_DYNAMIC_LIB)
williamr@4
   312
#  undef  _STLP_USE_DECLSPEC
williamr@4
   313
#  define _STLP_USE_DECLSPEC 1
williamr@4
   314
#  if (_STLP_MSVC >= 1200) && (_STLP_MSVC < 1300)
williamr@4
   315
#    define _STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND 1
williamr@4
   316
#  endif
williamr@4
   317
#endif
williamr@4
   318
williamr@4
   319
#if !defined (_STLP_IMPORT_TEMPLATE_KEYWORD)
williamr@4
   320
#  if !defined (_MSC_EXTENSIONS) || defined(_STLP_MSVC) && _STLP_MSVC >= 1300
williamr@4
   321
#    define _STLP_IMPORT_TEMPLATE_KEYWORD
williamr@4
   322
#  else
williamr@4
   323
#    define _STLP_IMPORT_TEMPLATE_KEYWORD extern
williamr@4
   324
#  endif
williamr@4
   325
#endif
williamr@4
   326
#define _STLP_EXPORT_TEMPLATE_KEYWORD
williamr@4
   327
williamr@4
   328
#if defined (_STLP_MSVC) && (_STLP_MSVC < 1200)
williamr@4
   329
/*    only static STLport lib now works for VC 5.0 */
williamr@4
   330
#  undef  _STLP_USE_STATIC_LIB
williamr@4
   331
#  undef  _STLP_USE_DYNAMIC_LIB
williamr@4
   332
#  define _STLP_USE_STATIC_LIB
williamr@4
   333
/*    disable hook which makes template symbols to be searched for in the library */
williamr@4
   334
#  undef _STLP_NO_CUSTOM_IO
williamr@4
   335
#endif
williamr@4
   336
williamr@4
   337
#include <stl/config/_auto_link.h>
williamr@4
   338
williamr@4
   339
#if defined (_STLP_USING_PLATFORM_SDK_COMPILER)
williamr@4
   340
/* The Windows 64 bits SDK required for the moment link to bufferoverflowU.lib for
williamr@4
   341
 * additional buffer overrun checks. Rather than require the STLport build system and
williamr@4
   342
 * users to explicitely link with it we use the MSVC auto link feature.
williamr@4
   343
 */
williamr@4
   344
#  if !defined (_STLP_DONT_USE_AUTO_LINK) || defined (__BUILDING_STLPORT)
williamr@4
   345
#    pragma comment (lib, "bufferoverflowU.lib")
williamr@4
   346
#    if defined (_STLP_VERBOSE_AUTO_LINK)
williamr@4
   347
#      pragma message ("STLport: Auto linking to bufferoverflowU.lib")
williamr@4
   348
#    endif
williamr@4
   349
#  endif
williamr@4
   350
#endif
williamr@4
   351
williamr@4
   352
/* Local Variables:
williamr@4
   353
 * mode:C++
williamr@4
   354
 * End:
williamr@4
   355
 */