blob: a14182b72268ad842473daaf837076e45d882afa [file] [log] [blame]
/***************************************************************************
*
* _config-msvcrt.h - Microsoft Visual C++ run-time library
* configuration definitions
*
* This is an internal header file used to implement the C++ Standard
* Library. It should never be #included directly by a program.
*
* $Id$
*
***************************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*
* Copyright 1994-2007 Rogue Wave Software, Inc.
*
**************************************************************************/
#if _MSC_VER <= 1300 // MSVC <= 7.0
# define _RWSTD_EXCEPTION_HANDLER_IN_STD
# define _RWSTD_NO_STATIC_DEF3
#endif // MSVC <= 7.0
// enable the <cxxx> form of libc headers
// we can only use the rw version in include/ansi
#ifndef _RWSTD_NO_PURE_C_HEADERS
# define _RWSTD_NO_PURE_C_HEADERS
#endif // _RWSTD_NO_PURE_C_HEADERS
#if defined _RWSTD_NO_NEW_HEADER
# undef _RWSTD_NO_NEW_HEADER
#endif // _RWSTD_NO_NEW_HEADER
// our <cxxx> libc headers put the libc functions in namespace std
#ifdef _RWSTD_NO_LIBC_IN_STD
# undef _RWSTD_NO_LIBC_IN_STD
#endif // _RWSTD_NO_LIBC_IN_STD
#ifndef _RWSTD_NO_DEPRECATED_C_HEADERS
# define _RWSTD_NO_DEPRECATED_C_HEADERS
#endif // _RWSTD_NO_DEPRECATED_C_HEADERS
#ifndef _RWSTD_NO_WCSTOK
// MSVC CRT has incorrect prototype of the wcstok()
# define _RWSTD_NO_WCSTOK
#endif // _RWSTD_NO_WCSTOK
#ifndef _RWSTD_NO_WCSTOK_IN_LIBC
# define _RWSTD_NO_WCSTOK_IN_LIBC
#endif // _RWSTD_NO_WCSTOK_IN_LIBC
// operator new and delete is not reliably replaceable across
// shared library boundaries, which includes the shared library
// version of the language support library
#define _RWSTD_NO_REPLACEABLE_NEW_DELETE
// names of (most) extern "C" libc symbols begin with an underscore
#define _RWSTD_LIBC_SYM(name) _ ## name
#ifdef _DLL
// the _DLL macro is defined by the compiler when building a shared
// library, i.e., in response to either of the /MD and /MDd options
// _RWSTD_DLLIMPORT is used when declaring libc functions that need
// to be "imported" into the shared library
# define _RWSTD_DLLIMPORT __declspec (dllimport)
#endif // _DLL
#ifndef _RWSTD_NO_STATIC_CONST_MEMBER_DEFINITION
// both MSVC 7.x and Intel C++/Windows allow "inline" initializers
// for static const integral data members but out-of-line definitions
// cause multiply defined symbol errors (see PR #26562 and #30260)
// disable their definitions in source files (the members are still
// declared)
# define _RWSTD_NO_STATIC_CONST_MEMBER_DEFINITION
#endif // _RWSTD_NO_STATIC_CONST_MEMBER_DEFINITION
// enable iostream and locale support for long long integers
#if _MSC_VER <= 1300 || defined (_RWSTD_NO_LONG_LONG)
# define _RWSTD_LONG_LONG __int64
#endif // _MSC_VER <= 1300 || _RWSTD_NO_LONG_LONG
#if defined (WIN32) && !defined(_WIN32)
# define _WIN32
#endif
#if defined (_MT) && !defined (_RWSTD_NO_REENTRANT)
# ifndef _RWSTD_REENTRANT
# define _RWSTD_REENTRANT 1
# endif // _RWSTD_REENTRANT
# ifndef _RWSTD_NO_TLS
// thread-local stoprage declaration specifier
# ifndef _RWSTD_THREAD
# define _RWSTD_THREAD __declspec (thread)
# endif // _RWSTD_THREAD
# endif // _RWSTD_NO_TLS
#else // if !defined (_MT) || defined (_RWSTD_NO_REENTRANT)
# ifdef _RWSTD_REENTRANT
# undef _RWSTD_REENTRANT
# endif // _RWSTD_REENTRANT
# ifndef _RWSTD_THREAD
# define _RWSTD_THREAD /* empty */
# endif // _RWSTD_THREAD
#endif // _MT && !_RWSTD_NO_REENTRANT
#if defined (_CPPRTTI)
// override in case library was configured with -GR-
// (i.e., with RTTI disabled)
# undef _RWSTD_NO_DYNAMIC_CAST
#elif !defined (_RWSTD_NO_DYNAMIC_CAST)
// override in case library was configured with -GR
// (i.e., with RTTI enabled)
# define _RWSTD_NO_DYNAMIC_CAST
#endif // _CPPRTTI
#ifndef _NATIVE_WCHAR_T_DEFINED
// define wchar_t if it is not a keyword recognized by the compiler
// (use the /Zc:wchar_t compiler option to enable wchar_t as a keyword)
typedef unsigned short wchar_t;
#endif // _NATIVE_WCHAR_T_DEFINED
#ifndef _CPPUNWIND
// disable exceptions when the macro _CPPUNWIND
// is not #deined by the compiler, e.g., when
// the /GX- option is used
# ifndef _RWSTD_NO_EXCEPTIONS
# define _RWSTD_NO_EXCEPTIONS
# endif // _RWSTD_NO_EXCEPTIONS
#endif
#if _RWSTD_VER_MAJOR < 5 && defined (_DLL)
// defined for binary compatibility with stdcxx 4.1.x
// (for all versions of MSVC and Intel C++)
# define _RWSTD_NO_BAD_CAST_ASSIGNMENT
# define _RWSTD_NO_BAD_CAST_COPY_CTOR
# define _RWSTD_NO_BAD_CAST_DTOR
# define _RWSTD_NO_BAD_TYPEID_ASSIGNMENT
# define _RWSTD_NO_BAD_TYPEID_COPY_CTOR
# define _RWSTD_NO_BAD_TYPEID_DTOR
# define _RWSTD_NO_EXCEPTION_ASSIGNMENT
# define _RWSTD_NO_EXCEPTION_COPY_CTOR
# define _RWSTD_NO_EXCEPTION_DEFAULT_CTOR
# define _RWSTD_NO_EXCEPTION_DTOR
# define _RWSTD_NO_EXCEPTION_WHAT
#endif // _RWSTD_VER_MAJOR < 5 && _DLL