blob: 6fc41b0396858a44fd037ccf3f35e3de7277c8a9 [file] [log] [blame]
/***************************************************************************
*
* _config-xlc.h - IBM VisualAge/XLC++ 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$
*
***************************************************************************
*
* Copyright 2005-2006 The Apache Software Foundation or its licensors,
* as applicable.
*
* Copyright 1994-2006 Rogue Wave Software.
*
* Licensed 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.
*
**************************************************************************/
// _THREAD_SAFE defined by the xlC_r compiler driver
#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
// static data members of cass templates aren't properly collapsed
// (compiler emits one copy per each translation unit that contains
// the definition of the template member)
#define _RWSTD_NO_COLLAPSE_TEMPLATE_STATICS
// the above prevents correct static mutex initialization
// (but the alternative approach is also unreliable)
#define _RWSTD_NO_STATIC_MUTEX_INIT
// VisualAge for C++ version >= 5.0.2.0, when the tempinc model
// (which makes use of implicit inclusion) is in effect (i.e.,
// when neither of -qtemplateregistry or -qnotempinc is specified
// on the command line) the compiler defines the macro __TEMPINC__
#if __IBMCPP__ < 502 || !defined (__TEMPINC__)
// override the autodetected setting of the macro
# undef _RWSTD_NO_IMPLICIT_INCLUSION
# define _RWSTD_NO_IMPLICIT_INCLUSION
#endif
#if __IBMCPP__ >= 502 && defined (__TEMPINC__)
// override the autodetected setting of the macro
# undef _RWSTD_NO_IMPLICIT_INCLUSION
#endif // VAC++ >= 5.0.2 && __TEMPINC__
#if !defined (_RWSTD_WCTRANS_T)
# undef _RWSTD_NO_WCTRANS_T
# define _RWSTD_WCTRANS_T win_t(*wctrans_t)(wint_t)
#endif // _RWSTD_WCTRANS_T
#ifdef _RWSTD_OS_AIX
// 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
# if (8 == _RWSTD_LONG_SIZE)
// avoid using strtof() in LP64 due to bug #379 (PMR 02164)
# ifndef _RWSTD_NO_STRTOF
# define _RWSTD_NO_STRTOF
# endif // _RWSTD_NO_STRTOF
# ifndef _RWSTD_NO_STRTOF_IN_LIBC
# define _RWSTD_NO_STRTOF_IN_LIBC
# endif // _RWSTD_NO_STRTOF_IN_LIBC
# endif // REENTRANT && LP64
#endif // AIX
#if __IBMCPP__ <= 800
# ifndef _RWSTD_NO_EXTERN_TEMPLATE
// disable extern template to work around an XLC++ 8.0 bug
// (see STDCXX-379)
# define _RWSTD_NO_EXTERN_TEMPLATE
# endif // _RWSTD_NO_EXTERN_TEMPLATE
#endif // XLC++ 8.0 or prior
#if __IBMCPP__ == 800
# if !defined (__TEMPINC__) && defined (_RWSTD_NO_INSTANTIATE_DEFAULT_ARGS)
// disable explicit instantiation directives occuring prior
// the definition of out-of-line member functions of class
// templates in .cc files (i.e., prior their explicit
// #inclusion at the bottom of each header)
# ifndef _RWSTD_NO_EXPLICIT_INSTANTIATION_BEFORE_DEFINITION
# define _RWSTD_NO_EXPLICIT_INSTANTIATION_BEFORE_DEFINITION
# endif
# ifndef _RWSTD_NO_EXTERN_TEMPLATE_BEFORE_DEFINITION
# define _RWSTD_NO_EXTERN_TEMPLATE_BEFORE_DEFINITION
# endif
# endif // !__TEMPINC__ && _RWSTD_NO_INSTANTIATE_DEFAULT_ARGS
# ifndef _RWSTDDEBUG
// work around an XLC++ 8.0 ICE (STDCXX-159)
# if defined (_RWSTD_NO_EXTERN_TEMPLATE)
# define _RWSTD_NO_EXPLICIT_INSTANTIATION
# endif // _RWSTD_NO_EXTERN_TEMPLATE
# endif // without debugging
#endif // XLC++ 8.0
#ifndef __TEMPINC__
// avoid VAC++ 7.0 diagnostic 1540-2910 (I) The template uses
// a file organization for tempinc, but tempinc is not being
// used. See bug #450
// prevent warnings about VAC++ being unable to find
// source for (intentionally undefined) member functions
// of class templates
# define _RWSTD_NO_UNDEFINED_TEMPLATES
#endif // __TEMPINC__
// avoid using autodetected libc headers
#undef _RWSTD_ANSI_C_ASSERT_H
#undef _RWSTD_ANSI_C_CTYPE_H
#undef _RWSTD_ANSI_C_ERRNO_H
#undef _RWSTD_ANSI_C_FLOAT_H
#undef _RWSTD_ANSI_C_ISO646_H
#undef _RWSTD_ANSI_C_LIMITS_H
#undef _RWSTD_ANSI_C_LOCALE_H
#undef _RWSTD_ANSI_C_MATH_H
#undef _RWSTD_ANSI_C_SETJMP_H
#undef _RWSTD_ANSI_C_SIGNAL_H
#undef _RWSTD_ANSI_C_STDARG_H
#undef _RWSTD_ANSI_C_STDDEF_H
#undef _RWSTD_ANSI_C_STDIO_H
#undef _RWSTD_ANSI_C_STDLIB_H
#undef _RWSTD_ANSI_C_STRING_H
#undef _RWSTD_ANSI_C_TIME_H
#undef _RWSTD_ANSI_C_WCHAR_H
#undef _RWSTD_ANSI_C_WCTYPE_H