/*************************************************************************** * * _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: _config-xlc.h 605745 2007-12-19 23:52:20Z sebor $ * *************************************************************************** * * 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-2006 Rogue Wave Software. * **************************************************************************/ // _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 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__ #if (__IBMCPP__ >= 700) && !defined(__EXCEPTIONS) // disable exceptions when the macro __EXCEPTIONS // is not #defined by the compiler, e.g., when // the -qnoeh option is used # ifndef _RWSTD_NO_EXCEPTIONS # define _RWSTD_NO_EXCEPTIONS # endif // _RWSTD_NO_EXCEPTIONS #endif // __EXCEPTIONS // 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