You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stdcxx.apache.org by se...@apache.org on 2006/03/03 02:21:38 UTC

svn commit: r382600 - in /incubator/stdcxx/trunk/include/rw: _config-acc.h _config-deccxx.h _config-eccp.h _config-gcc.h _config-icc.h _config-mipspro.h _config-msvc.h _config-sunpro.h _config-xlc.h _config.h

Author: sebor
Date: Thu Mar  2 17:21:36 2006
New Revision: 382600

URL: http://svn.apache.org/viewcvs?rev=382600&view=rev
Log:
2006-03-02  Martin Sebor  <se...@roguewave.com>

	* _config.h: Moved each compiler-specific section to its own header.
	* _config-acc.h: HP aC++ configuration definitions and overrides.
	* _config-deccxx.h: Same for DEC/Compaq/HP C++.
	* _config-eccp.h: Same for the EDG eccp demo.
	* _config-gcc.h: Same for GCC.
	* _config-icc.h: Same for Intel C++.
	* _config-mipspro.h: Same for SGI MIPSpro.
	* _config-msvc.h: Same for MSVC.
	* _config-sunpro.h: Same for Sun C++ aka SunPro.
	* _config-xlc.h: Same for IBM XLC++ aka VisualAge C++.

Added:
    incubator/stdcxx/trunk/include/rw/_config-acc.h   (with props)
    incubator/stdcxx/trunk/include/rw/_config-deccxx.h   (with props)
    incubator/stdcxx/trunk/include/rw/_config-eccp.h   (with props)
    incubator/stdcxx/trunk/include/rw/_config-gcc.h   (with props)
    incubator/stdcxx/trunk/include/rw/_config-icc.h   (with props)
    incubator/stdcxx/trunk/include/rw/_config-mipspro.h   (with props)
    incubator/stdcxx/trunk/include/rw/_config-msvc.h   (with props)
    incubator/stdcxx/trunk/include/rw/_config-sunpro.h   (with props)
    incubator/stdcxx/trunk/include/rw/_config-xlc.h   (with props)
Modified:
    incubator/stdcxx/trunk/include/rw/_config.h

Added: incubator/stdcxx/trunk/include/rw/_config-acc.h
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/include/rw/_config-acc.h?rev=382600&view=auto
==============================================================================
--- incubator/stdcxx/trunk/include/rw/_config-acc.h (added)
+++ incubator/stdcxx/trunk/include/rw/_config-acc.h Thu Mar  2 17:21:36 2006
@@ -0,0 +1,89 @@
+/***************************************************************************
+ *
+ * _config-acc.h - HP aC++ 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.
+ * 
+ **************************************************************************/
+
+// _REENTRANT is defined by the -mt compiler option
+
+// accommodate aCC 1.xx (HP-UX 10.xx), aCC 3.xx (HP-UX 11/PA-RISC)
+// and aCC 5.xx (HP-UX 11/IA64)
+#define _RWSTD_HP_aCC_MAJOR   (__HP_aCC / 10000)
+#define _RWSTD_HP_aCC_MINOR   (__HP_aCC % 10000)
+
+// new C++ libc headers supported
+#undef _RWSTD_NO_NEW_HEADER
+
+#ifndef _RWSTD_NO_PURE_C_HEADERS
+   // disable for now
+#  define _RWSTD_NO_PURE_C_HEADERS
+#endif   // _RWSTD_NO_PURE_C_HEADERS
+
+// deprecated C++ libc headers don't introduce names into namespace std
+#ifndef _RWSTD_NO_DEPRECATED_LIBC_IN_STD
+#  define _RWSTD_NO_DEPRECATED_LIBC_IN_STD
+#endif
+
+// deprecated C++ libc headers aren't used
+#define _RWSTD_NO_DEPRECATED_C_HEADERS
+
+// prevents Error (future) 553: Expected type arguments to follow
+//                              class template name.
+#define _RWSTD_REDUNDANT_TMPL_PARAMS
+
+#if (_RWSTD_HP_aCC_MINOR < 3300) && !defined (_RWSTD_NO_MBSTATE_T)
+   // mbstate_t definition is guarded in _mbstate_t.h and is available
+   // only if _INCLUDE__STDC_A1_SOURCE is defined (i.e., with -AA)
+#  define _RWSTD_NO_MBSTATE_T
+#endif
+
+#if defined (_HP_NAMESPACE_STD) || defined (_NAMESPACE_STD)
+#  undef _RWSTD_NO_RUNTIME_IN_STD
+#  undef _RWSTD_NO_STD_BAD_TYPEID
+#  undef _RWSTD_NO_STD_TYPE_INFO
+#endif
+
+#ifndef _RWSTD_NO_BAD_ALLOC_WHAT
+   // avoid the following ld errors:
+   // Unsatisfied symbol "Class tables [Vtable] dependent on
+   // key function: "bad_alloc::what() const"" in file [*.o]
+   // Unsatisfied symbol "typeid<bad_alloc>" in file [*.o]
+#  define _RWSTD_NO_BAD_ALLOC_WHAT
+#endif   // _RWSTD_NO_BAD_ALLOC_WHAT
+
+#if __HP_aCC < 60000
+#  ifndef _RWSTD_NO_EXTERN_TEMPLATE
+#    ifndef _RWSTD_NO_STRING_NPOS_TYPE
+       // define the type of basic_string::npos to be size_t
+       // instead of basic_string::size_type to work around
+       // an HP aCC extern template bug #333 (only the HP
+       // front end has this bug; HP aCC 6.0 which uses the
+       // EDG front end works fine
+#      define _RWSTD_NO_STRING_NPOS_TYPE
+#    endif   // _RWSTD_NO_STRING_NPOS_TYPE
+#  endif   // _RWSTD_NO_EXTERN_TEMPLATE
+#endif   // aCC < 6.0

Propchange: incubator/stdcxx/trunk/include/rw/_config-acc.h
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/stdcxx/trunk/include/rw/_config-acc.h
------------------------------------------------------------------------------
    svn:keywords = Id

Added: incubator/stdcxx/trunk/include/rw/_config-deccxx.h
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/include/rw/_config-deccxx.h?rev=382600&view=auto
==============================================================================
--- incubator/stdcxx/trunk/include/rw/_config-deccxx.h (added)
+++ incubator/stdcxx/trunk/include/rw/_config-deccxx.h Thu Mar  2 17:21:36 2006
@@ -0,0 +1,47 @@
+/***************************************************************************
+ *
+ * _config-deccxx.h - DEC/Compaq/HP C++ 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.
+ * 
+ **************************************************************************/
+
+// _REENTRANT is defined by -pthread option
+
+#if defined (_RWSTD_REENTRANT)
+#  if defined (_PTHREAD_USE_D4) && !defined (_RWSTD_DCE_THREADS)
+#    define _RWSTD_DCE_THREADS
+#  endif   // _PTHREAD_USE_D4 && !_RWSTD_DCE_THREADS
+
+#  if !defined (_RWSTD_DCE_THREADS) && !defined (_RWSTD_POSIX_THREADS)
+#    define _RWSTD_POSIX_THREADS
+#  endif   // !(_RWSTD_DCE_THREADS) && !(_RWSTD_POSIX_THREADS)
+#endif   // (_RWSTD_REENTRANT)
+
+#if __DECCXX_VER < 60390008
+   // version of Compaq C++ prior to C++ do not implement
+   // C++ C library headers (the <cxxx> kind)
+#  define _RWSTD_NO_NEW_HEADER
+#endif   // __DECCXX_VER < 60390008

Propchange: incubator/stdcxx/trunk/include/rw/_config-deccxx.h
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/stdcxx/trunk/include/rw/_config-deccxx.h
------------------------------------------------------------------------------
    svn:keywords = Id

Added: incubator/stdcxx/trunk/include/rw/_config-eccp.h
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/include/rw/_config-eccp.h?rev=382600&view=auto
==============================================================================
--- incubator/stdcxx/trunk/include/rw/_config-eccp.h (added)
+++ incubator/stdcxx/trunk/include/rw/_config-eccp.h Thu Mar  2 17:21:36 2006
@@ -0,0 +1,59 @@
+/***************************************************************************
+ *
+ * _config-eccp.h - EDG eccp 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.
+ * 
+ **************************************************************************/
+
+// identify the EDG eccp standalone front-end in order to help avoid
+// confusing it with compilers such as Compaq C++, Intel C++, or SGI
+// MIPSpro, that use the front-end and (sometimes) #define __EDG__
+#define _RWSTD_EDG_ECCP
+
+#if defined (_RWSTD_REENTRANT) && !defined (_RWSTD_POSIX_THREADS)
+#  define _RWSTD_POSIX_THREADS
+#endif // (_RWSTD_REENTRANT) && !(_RWSTD_POSIX_THREADS)
+
+#undef _RWSTD_NO_NEW_HEADER
+#undef _RWSTD_NO_LIBC_IN_STD
+
+#ifndef _RWSTD_NO_EXPORT
+#  undef _RWSTD_NO_IMPLICIT_INCLUSION
+#endif
+
+// the vanilla front-end doesn't actually #include the header,
+// but it treats it specially instead, which throws off the test
+#undef _RWSTD_ANSI_C_STDARG_H 
+#define _RWSTD_ANSI_C_STDARG_H <stdarg.h>
+
+#ifdef _RWSTD_REENTRANT
+   // std::uncaught_exception() not thread-safe in the front-end demo
+#  define _RWSTD_NO_UNCAUGHT_EXCEPTION
+#endif   // _RWSTD_REENTRANT
+
+#ifndef _RWSTD_NO_MBSTATE_T
+#  define _RWSTD_NO_MBSTATE_T
+#endif   // _RWSTD_NO_MBSTATE_T

Propchange: incubator/stdcxx/trunk/include/rw/_config-eccp.h
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/stdcxx/trunk/include/rw/_config-eccp.h
------------------------------------------------------------------------------
    svn:keywords = Id

Added: incubator/stdcxx/trunk/include/rw/_config-gcc.h
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/include/rw/_config-gcc.h?rev=382600&view=auto
==============================================================================
--- incubator/stdcxx/trunk/include/rw/_config-gcc.h (added)
+++ incubator/stdcxx/trunk/include/rw/_config-gcc.h Thu Mar  2 17:21:36 2006
@@ -0,0 +1,153 @@
+/***************************************************************************
+ *
+ * _config-gcc.h - GCC 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.
+ * 
+ **************************************************************************/
+
+// _REENTRANT is defined by the -pthread compiler option
+
+#ifndef _RWSTD_NO_IMPLICIT_INCLUSION
+#  define _RWSTD_NO_IMPLICIT_INCLUSION
+#endif
+
+#ifndef _RWSTD_NO_EXPORT
+     // not implemented
+#  define _RWSTD_NO_EXPORT
+#endif
+
+#if !defined (_RWSTD_USE_PURE_C_HEADERS)
+     // disabled except when requested
+#  define _RWSTD_NO_PURE_C_HEADERS
+#endif   // !_RWSTD_USE_PURE_C_HEADERS
+
+#ifdef _RWSTD_NO_PURE_C_HEADERS
+     // deprecated C headers (the <xxx.h> kind) are fully implemented
+     // in terms of the pure C++ C library headers (the <cxxx> kind)
+#  define _RWSTD_NO_DEPRECATED_C_HEADERS
+#endif   // _RWSTD_NO_PURE_C_HEADERS
+
+#if !defined (_RWSTD_STRICT_ANSI) && __GNUG__ <= 2 && __GNUC_MINOR__ < 97
+     // prevent gcc 2.9x ICE
+#  define _RWSTD_NO_PLACEMENT_DELETE
+#endif   // !_RWSTD_STRICT_ANSI
+
+#if __GNUG__ < 3
+     // gcc 2.x doesn't understand the extern template syntax
+     // but only issues a warning: ANSI C++ forbids the use
+     // of `extern' on explicit instantiations
+#  ifndef _RWSTD_NO_EXTERN_TEMPLATE
+#    define _RWSTD_NO_EXTERN_TEMPLATE
+#  endif   // _RWSTD_NO_EXTERN_TEMPLATE
+#endif   // gcc 2.x
+
+#if __GNUG__ <= 2 && __GNUC_MINOR__ < 97 && defined (_RWSTD_NO_HONOR_STD)
+     // standard iostream objects are declared as objects of their respective
+     // types by defined as POD's to prevent their destruction during program
+     // lifetime (done to work around a g++ 2.95.2 bug that prevents g++
+     // from deducing the type of references to the objects in template code)
+#  define _RWSTD_NO_IOSTREAM_OBJECT_REFS
+#endif   //__GNUG__ <= 2 && __GNUC_MINOR__ < 97 && _RWSTD_NO_HONOR_STD
+
+#define _RWSTD_GNUC_ATTRIBUTE(attr)   __attribute__ (attr)
+
+#ifdef _RWSTD_OS_LINUX
+
+#  ifdef _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
+
+#  ifdef _RWSTD_ANSI_C_LIMITS_H
+       // prevent system header warnings
+#    undef _RWSTD_ANSI_C_LIMITS_H
+#    define _RWSTD_ANSI_C_LIMITS_H <../include/limits.h>
+#  endif  // _RWSTD_ANSI_C_LIMITS_H
+#endif   // _RWSTD_OS_LINUX
+
+#ifdef _RWSTD_OS_AIX
+     // functions called from member functions of explicitly instantiated
+     // class templates aren't "implicitly" instantiated (compiler bug)
+#  define _RWSTD_NO_IMPLICIT_INSTANTIATION
+#endif
+
+   // force using /usr/include/math.h 
+   // prevent recursion caused by pulling in gcc's own "fixed" header
+#undef _RWSTD_ANSI_C_MATH_H
+
+   // use new C++ libc headers
+#undef _RWSTD_NO_NEW_HEADER
+
+#ifdef _RWSTD_USE_CONFIG
+#  undef _RWSTD_NO_LIBC_IN_STD
+#endif
+
+#undef _RWSTD_NO_DEPRECATED_LIBC_IN_STD
+
+#ifdef __CYGWIN__
+     // use our own C++ libc headers
+#  undef _RWSTD_NO_NEW_HEADER
+     // libc is wrapped in namespaces std
+#  undef _RWSTD_NO_LIBC_IN_STD
+     // deprecated C++ libc headers don't introduce names into namespace std
+#  ifndef _RWSTD_NO_DEPRECATED_LIBC_IN_STD
+#    define _RWSTD_NO_DEPRECATED_LIBC_IN_STD
+#  endif
+#endif   // __CYGWIN__
+
+#ifdef _RWSTD_OS_OSF1
+      // sizeof (long double) == sizeof (double), 'L' causes SIGSEGV
+#   define _RWSTD_LDBL_PRINTF_PREFIX   ""
+#   define _RWSTD_LDBL_SCANF_PREFIX    "l"
+
+#endif   // _RWSTD_OS_OSF1
+
+#ifdef _RWSTD_OS_SUNOS
+
+     // _SOLARIS_THREADS #defined when the -threads option is used on SunOS
+#  if defined (_SOLARIS_THREADS) && !defined (_RWSTD_SOLARIS_THREADS)
+#    define _RWSTD_SOLARIS_THREADS
+#  endif // _SOLARIS_THREADS && !_RWSTD_SOLARIS_THREADS
+
+     // _PTHREADS #defined when the -pthreads option is used on SunOS
+#  if defined (_PTHREADS) && !defined (_RWSTD_POSIX_THREADS)
+#    define _RWSTD_POSIX_THREADS
+#  endif // _PTHREADS && !_RWSTD_POSIX_THREADS
+
+#  if __GNUG__ == 3 && __GNUC_MINOR__ < 1
+       // Avoid gcc 3.0.1 header configuration confusion with wchar
+#    ifndef _RWSTD_NO_NEW_HEADER
+#      define _RWSTD_NO_NEW_HEADER
+#    endif
+#    ifndef _RWSTD_NO_LIBC_IN_STD
+#      define _RWSTD_NO_LIBC_IN_STD
+#    endif
+#  endif  // __GNUG__ == 3 && __GNUC_MINOR__ < 1
+#endif  // _RWSTD_OS_SUNOS

Propchange: incubator/stdcxx/trunk/include/rw/_config-gcc.h
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/stdcxx/trunk/include/rw/_config-gcc.h
------------------------------------------------------------------------------
    svn:keywords = Id

Added: incubator/stdcxx/trunk/include/rw/_config-icc.h
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/include/rw/_config-icc.h?rev=382600&view=auto
==============================================================================
--- incubator/stdcxx/trunk/include/rw/_config-icc.h (added)
+++ incubator/stdcxx/trunk/include/rw/_config-icc.h Thu Mar  2 17:21:36 2006
@@ -0,0 +1,52 @@
+/***************************************************************************
+ *
+ * _config-icc.h - Intel C++ 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.
+ * 
+ **************************************************************************/
+
+#if !defined (_WIN32) && !defined (_WIN64)
+
+   // 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
+
+#  ifndef _RWSTD_NO_DEPRECATED_C_HEADERS
+#    define _RWSTD_NO_DEPRECATED_C_HEADERS
+#  endif   // _RWSTD_NO_DEPRECATED_C_HEADERS
+
+#  undef _RWSTD_NO_NEW_HEADER
+#  undef _RWSTD_NO_LIBC_IN_STD
+
+#else   // if defined (_WIN{32,64}
+#  if defined (_RWSHARED)
+     // only when using shared libstd and Intel C++/MSVC
+     // working around an Intel C++ 7.1 bug (PR #29178)
+#    define _RWSTD_NO_OUTLINED_USE_FACET_SPECIALIZATIONS
+#  endif   // _MSC_VER > 1200 && _RWSHARED
+#endif

Propchange: incubator/stdcxx/trunk/include/rw/_config-icc.h
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/stdcxx/trunk/include/rw/_config-icc.h
------------------------------------------------------------------------------
    svn:keywords = Id

Added: incubator/stdcxx/trunk/include/rw/_config-mipspro.h
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/include/rw/_config-mipspro.h?rev=382600&view=auto
==============================================================================
--- incubator/stdcxx/trunk/include/rw/_config-mipspro.h (added)
+++ incubator/stdcxx/trunk/include/rw/_config-mipspro.h Thu Mar  2 17:21:36 2006
@@ -0,0 +1,55 @@
+/***************************************************************************
+ *
+ * _config-mipspro.h - SGI MIPSpro 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.
+ * 
+ **************************************************************************/
+
+#define _RWSTD_SGI_MIPSPRO
+
+#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
+
+#define _RWSTD_NO_PLACEMENT_DELETE
+//  The comptest sets compile instantiate when it shouldn't.
+//  override it here.
+#if defined (_RWSTD_NO_IMPLICIT_INCLUSION)
+#  undef _RWSTD_NO_IMPLICIT_INCLUSION
+#endif

Propchange: incubator/stdcxx/trunk/include/rw/_config-mipspro.h
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/stdcxx/trunk/include/rw/_config-mipspro.h
------------------------------------------------------------------------------
    svn:keywords = Id

Added: incubator/stdcxx/trunk/include/rw/_config-msvc.h
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/include/rw/_config-msvc.h?rev=382600&view=auto
==============================================================================
--- incubator/stdcxx/trunk/include/rw/_config-msvc.h (added)
+++ incubator/stdcxx/trunk/include/rw/_config-msvc.h Thu Mar  2 17:21:36 2006
@@ -0,0 +1,250 @@
+/***************************************************************************
+ *
+ * _config-msvc.h - Microsoft Visual C++ 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.
+ * 
+ **************************************************************************/
+
+#if _MSC_VER <= 1310   // MSVC <= 7.1
+#endif   // MSVC <= 7.1
+
+#if _MSC_VER <= 1300   // MSVC <= 7.0
+#  define _RWSTD_NO_TYPENAME
+#  define _RWSTD_EXCEPTION_HANDLER_IN_STD
+#  define _RWSTD_NO_STATIC_DEF3
+#  define _RWSTD_NO_PTR_VALUE_TEMPLATE_OVERLOAD
+#  define _RWSTD_NO_PRAGMA_INSTANTIATE
+     // disable explicit instantiation extensions if building
+     // optimized client code (all templates still explicitly
+     // instantiated in the library); 
+     // *** Not currently done for MSVC 7, since an implicit
+     //     instantiation bug causes multiply defined symbols
+     //     in downstream libraries
+#  ifndef _RWSTD_NO_STRING_NPOS_TYPE
+       // define basic_string::npos to be of type size_t
+       // instead of basic_string::size_type to work around
+       // an MSVC 7.0 bug (PR #26549)
+#    define _RWSTD_NO_STRING_NPOS_TYPE
+#  endif   // _RWSTD_NO_STRING_NPOS_TYPE
+#endif   // MSVC <= 7.0
+
+#if _MSC_VER <= 1200   // MSVC <= 6.0
+#endif   // MSVC <= 6.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
+
+   // 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, and the linker fails to
+   // multiple copies that reside in shared libraries)
+#ifndef _RWSTD_NO_COLLAPSE_TEMPLATE_STATICS
+#  define _RWSTD_NO_COLLAPSE_TEMPLATE_STATICS
+#endif   // _RWSTD_NO_COLLAPSE_TEMPLATE_STATICS
+
+   // 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
+#  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
+#define _RWSTD_LONG_LONG __int64
+
+   // not declared/defined in libc
+#if !defined (_RWSTD_NO_STRTOLL_IN_LIBC)
+#  define _RWSTD_NO_STRTOLL_IN_LIBC
+#endif   // _RWSTD_NO_STRTOLL_IN_LIBC
+
+#if !defined (_RWSTD_NO_STRTOULL_IN_LIBC)
+#  define _RWSTD_NO_STRTOULL_IN_LIBC
+#endif   // _RWSTD_NO_STRTOULL_IN_LIBC
+
+#if defined (_WIN64)
+     // FIXME: handle by forward declaring fuctions in <rw/_mutex.h>
+#  define _RWSTD_NO_FWD_DECLARATIONS
+#endif   // _WIN64
+
+   // disable "Same type qualifier used more than once"
+#pragma warning (disable: 4114)
+
+   // disable "return type for operator->' is not a UDT"
+#pragma warning (disable: 4284)
+
+   // disable "decorated name length exceeded"
+#pragma warning (disable: 4503)
+
+   // disable "identifier was truncated to 255 characters"
+#pragma warning (disable: 4786)
+
+#if defined (WIN32) && !defined(_WIN32)
+#  define _WIN32
+#endif
+
+#ifdef _MT
+#  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)
+#  ifndef _RWSTD_THREAD
+#    define _RWSTD_THREAD   /* empty */
+#  endif   // _RWSTD_THREAD
+#endif   //_MT
+
+   // clean C++ C headers (the <cxxx> kind) not provided
+#ifndef _RWSTD_NO_PURE_C_HEADERS
+#  define _RWSTD_NO_PURE_C_HEADERS
+#endif   // _RWSTD_NO_PURE_C_HEADERS
+
+#ifndef _RWSTD_NO_EXPORT
+     // not implemented
+#  define _RWSTD_NO_EXPORT
+#endif   // _RWSTD_NO_EXPORT
+
+#define _RWSTD_MUNMAP_ARG1_T void*
+#define _RWSTD_NO_NL_LANGINFO
+
+#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
+
+   // functions are defined in MSVC's msvcprt.lib and msvcprtd.lib
+   // which include the compiler's implementation of the C++ Standard
+   // library and with which we (obviously) cannot use
+#ifndef _RWSTD_NO_WCTOB
+#  define _RWSTD_NO_WCTOB
+#endif   // _RWSTD_NO_WCTOB
+
+#ifndef _RWSTD_NO_WCTOB_IN_LIBC
+#  define _RWSTD_NO_WCTOB_IN_LIBC
+#endif   // _RWSTD_NO_WCTOB_IN_LIBC
+
+#ifndef _RWSTD_NO_MBRTOWC
+#  define _RWSTD_NO_MBRTOWC
+#endif   // _RWSTD_NO_MBRTOWC
+
+#ifndef _RWSTD_NO_MBRTOWC_IN_LIBC
+#  define _RWSTD_NO_MBRTOWC_IN_LIBC
+#endif   // _RWSTD_NO_MBRTOWC_IN_LIBC
+
+#ifndef _RWSTD_NO_WCRTOMB
+#  define _RWSTD_NO_WCRTOMB
+#endif   // _RWSTD_NO_WCRTOMB
+
+#ifndef _RWSTD_NO_WCRTOMB_IN_LIBC
+#  define _RWSTD_NO_WCRTOMB_IN_LIBC
+#endif   // _RWSTD_NO_WCRTOMB_IN_LIBC
+
+#ifndef _RWSTD_NO_MBSTOWCS
+#  define _RWSTD_NO_MBSTOWCS
+#endif   // _RWSTD_NO_MBSTOWCS
+
+#ifndef _RWSTD_NO_MBSTOWCS_IN_LIBC
+#  define _RWSTD_NO_MBSTOWCS_IN_LIBC
+#endif   // _RWSTD_NO_MBSTOWCS_IN_LIBC
+
+#ifndef _RWSTD_NO_MBRLEN
+#  define _RWSTD_NO_MBRLEN
+#endif   // _RWSTD_NO_MBRLEN
+
+#ifndef _RWSTD_NO_MBRLEN_IN_LIBC
+#  define _RWSTD_NO_MBRLEN_IN_LIBC
+#endif   // _RWSTD_NO_MBRLEN_IN_LIBC
+
+#ifndef _RWSTD_NO_WCSRTOMBS
+#  define _RWSTD_NO_WCSRTOMBS
+#endif   // _RWSTD_NO_WCSRTOMBS
+
+#ifndef _RWSTD_NO_WCSRTOMBS_IN_LIBC
+#  define _RWSTD_NO_WCSRTOMBS_IN_LIBC
+#endif   // _RWSTD_NO_WCSRTOMBS_IN_LIBC
+
+#ifndef _RWSTD_NO_BTOWC
+#  define _RWSTD_NO_BTOWC
+#endif   // _RWSTD_NO_BTOWC
+
+#ifndef _RWSTD_NO_BTOWC_IN_LIBC
+#  define _RWSTD_NO_BTOWC_IN_LIBC
+#endif   // _RWSTD_NO_BTOWC_IN_LIBC
+
+#ifndef _RWSTD_NO_MBSRTOWCS
+#  define _RWSTD_NO_MBSRTOWCS
+#endif   // _RWSTD_NO_MBSRTOWCS
+
+#ifndef _RWSTD_NO_MBSRTOWCS_IN_LIBC
+#  define _RWSTD_NO_MBSRTOWCS_IN_LIBC
+#endif   // _RWSTD_NO_MBSRTOWCS_IN_LIBC

Propchange: incubator/stdcxx/trunk/include/rw/_config-msvc.h
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/stdcxx/trunk/include/rw/_config-msvc.h
------------------------------------------------------------------------------
    svn:keywords = Id

Added: incubator/stdcxx/trunk/include/rw/_config-sunpro.h
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/include/rw/_config-sunpro.h?rev=382600&view=auto
==============================================================================
--- incubator/stdcxx/trunk/include/rw/_config-sunpro.h (added)
+++ incubator/stdcxx/trunk/include/rw/_config-sunpro.h Thu Mar  2 17:21:36 2006
@@ -0,0 +1,52 @@
+/***************************************************************************
+ *
+ * _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.
+ * 
+ **************************************************************************/
+
+// _REENTRANT defined by the -mt compiler option
+
+#if __SUNPRO_CC >= 0x530 && __SUNPRO_CC <= 0x540
+   // test fails due to a SunPro 5.3 bug (PR RW #26641/Sun #4526136)
+#  undef _RWSTD_NO_MEMBER_TEMPLATES
+#endif   // SunPro 5.3, 5.4
+
+#if __SUNPRO_CC <= 0x540
+   // works around a partial specialization bug (PR #28119)
+#  ifndef _RWSTD_NO_EXT_CONST_ALLOCATOR
+#    define _RWSTD_NO_EXT_CONST_ALLOCATOR
+#  endif
+#endif   // SunPro < 5.4
+
+#ifndef _RWSTD_NO_EXPORT
+#  define _RWSTD_NO_EXPORT
+#endif   // _RWSTD_NO_EXPORT
+
+// prevent warnings about SunPro being unable to find
+// source for (intentionally undefined) member functions
+// of class templates
+#define _RWSTD_NO_UNDEFINED_TEMPLATES

Propchange: incubator/stdcxx/trunk/include/rw/_config-sunpro.h
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/stdcxx/trunk/include/rw/_config-sunpro.h
------------------------------------------------------------------------------
    svn:keywords = Id

Added: incubator/stdcxx/trunk/include/rw/_config-xlc.h
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/include/rw/_config-xlc.h?rev=382600&view=auto
==============================================================================
--- incubator/stdcxx/trunk/include/rw/_config-xlc.h (added)
+++ incubator/stdcxx/trunk/include/rw/_config-xlc.h Thu Mar  2 17:21:36 2006
@@ -0,0 +1,147 @@
+/***************************************************************************
+ *
+ * _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
+
+#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__
+
+
+#ifdef _RWSTD_USE_CONFIG
+   // 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
+#else
+   // RCB is too dumb to autodetect these
+
+#  ifndef _RWSTD_NO_COLLAPSE_STATIC_LOCALS
+#    define _RWSTD_NO_COLLAPSE_STATIC_LOCALS
+#  endif
+
+#  ifndef _RWSTD_NO_COLLAPSE_TEMPLATE_LOCALS
+#    define _RWSTD_NO_COLLAPSE_TEMPLATE_LOCALS
+#  endif
+
+#  ifndef _RWSTD_NO_EXTERN_FUNCTION_TEMPLATE
+#    define _RWSTD_NO_EXTERN_FUNCTION_TEMPLATE
+#  endif
+
+#  ifndef _RWSTD_NO_EXTERN_TEMPLATE_BEFORE_DEFINITION
+#    define _RWSTD_NO_EXTERN_TEMPLATE_BEFORE_DEFINITION
+#  endif
+
+#endif   // _RWSTD_USE_CONFIG

Propchange: incubator/stdcxx/trunk/include/rw/_config-xlc.h
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/stdcxx/trunk/include/rw/_config-xlc.h
------------------------------------------------------------------------------
    svn:keywords = Id

Modified: incubator/stdcxx/trunk/include/rw/_config.h
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/include/rw/_config.h?rev=382600&r1=382599&r2=382600&view=diff
==============================================================================
--- incubator/stdcxx/trunk/include/rw/_config.h (original)
+++ incubator/stdcxx/trunk/include/rw/_config.h Thu Mar  2 17:21:36 2006
@@ -9,16 +9,22 @@
  *
  ***************************************************************************
  * 
- * Copyright (c) 1994-2005 Quovadx,  Inc., acting through its  Rogue Wave
- * Software division. 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.
+ * Copyright 2006 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * Copyright 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.
  * 
  **************************************************************************/
 
@@ -33,7 +39,7 @@
 
 /*** library version numbers and ids **************************************/
 
-#define _RWSTD_VER 0x04010300
+#define _RWSTD_VER 0x0402000
 //                    | | | |
 //                   MMmmuupp
 //                    | | | |
@@ -43,7 +49,7 @@
 //                    +--------- MM = major release number
 
 // library version string (patch number included only if non-zero)
-#define _RWSTD_VER_STR   "4.1.3"
+#define _RWSTD_VER_STR   "4.2.0"
 
 // library version numbers
 #define _RWSTD_VER_MAJOR ((_RWSTD_VER >> 24) & 0xff)
@@ -59,9 +65,9 @@
 // major and minor release numbers differ may or may not be binary
 // compatible.
 
-/*********************************************************************
- * OVERRIDES FOR CONFIGURATION MACROS                                *
- *********************************************************************/
+/**************************************************************************
+ * OVERRIDES FOR CONFIGURATION MACROS                                     *
+ **************************************************************************/
 
 #if defined (_RWSTD_NO_EXTENSIONS) && !defined (_RWSTD_STRICT_ANSI)
 #  define _RWSTD_STRICT_ANSI
@@ -81,11 +87,11 @@
 #  endif   // _RWSTD_REENTRANT
 #endif
 
-/*********************************************************************
- * ARCHITECTURE-SPECIFIC OVERRIDES                                   *
- *********************************************************************/
+/**************************************************************************
+ * ARCHITECTURE-SPECIFIC OVERRIDES                                        *
+ **************************************************************************/
 
-/*** Alpha ***********************************************************/
+/*** Alpha ****************************************************************/
 
 #if defined (__alpha__) || defined (__alpha)
 
@@ -104,703 +110,108 @@
 
 #endif   // Alpha
 
-/*** Itanium (IA64) **************************************************/
+/*** Itanium (IA64) *******************************************************/
 
 #if defined (__ia64__) || defined (__ia64)
 #endif   // IA64
 
-/*** MIPS ************************************************************/
+/*** MIPS *****************************************************************/
 
 #if defined (__mips__) || defined (__mips)
 #endif   // MIPS
 
-/*** PA-RISC *********************************************************/
+/*** PA-RISC **************************************************************/
 
 #if defined (__parisc__) || defined (__parsisc)
 #endif   // PA RISC
 
-/*** PowerPC *********************************************************/
+/*** PowerPC **************************************************************/
 
 #if defined (__powerpc__) || defined (__powerpc)
 #endif   // PowerPC
 
-/*** SPARC **********************************************************/
+/*** SPARC ****************************************************************/
 
 #if defined (__sparc__) || defined (__sparc)
 #endif   // SPARC
 
-/*********************************************************************
- * COMPILER-SPECIFIC OVERRIDES                                       *
- *********************************************************************/
+/**************************************************************************
+ * COMPILER-SPECIFIC OVERRIDES                                            * 
+ **************************************************************************/
 
-/*** Apogee C++ ******************************************************/
+/*** Apogee C++ ***********************************************************/
 
 // Apogee C++ uses an EDG front end but doesn't define __EDG__
 
 #ifdef __APOGEE__
 #endif   // __APOGEE__
 
-/*** IBM VAC++ *******************************************************/
+/*** IBM VAC++ ************************************************************/
 
 #if defined (__IBMCPP__)
-
-   // _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
-
-#  ifdef _RWSTD_USE_CONFIG
-#    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
-#  endif   // _RWSTD_USE_CONFIG
-
-   // 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
-
-#  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__
+#  include "_config-xlc.h"
 #endif   // __IBMCPP___
 
-/*** Compaq C++ ******************************************************/
+/*** Compaq C++ ***********************************************************/
 
 // Compaq C++ uses an EDG front end and #defines __EDG__
 
 #ifdef __DECCXX
-
-   // _REENTRANT is defined by -pthread option
-
-#  if defined (_RWSTD_REENTRANT)
-#    if defined (_PTHREAD_USE_D4) && !defined (_RWSTD_DCE_THREADS)
-#      define _RWSTD_DCE_THREADS
-#    endif   // _PTHREAD_USE_D4 && !_RWSTD_DCE_THREADS
-
-#    if !defined (_RWSTD_DCE_THREADS) && !defined (_RWSTD_POSIX_THREADS)
-#      define _RWSTD_POSIX_THREADS
-#    endif   // !(_RWSTD_DCE_THREADS) && !(_RWSTD_POSIX_THREADS)
-#  endif   // (_RWSTD_REENTRANT)
-
-#  if __DECCXX_VER < 60390008
-     // version of Compaq C++ prior to C++ do not implement
-     // C++ C library headers (the <cxxx> kind)
-#    define _RWSTD_NO_NEW_HEADER
-#  endif   // __DECCXX_VER < 60390008
-
+#  include "_config-deccxx.h"
 #endif // __DECCXX
 
-/*** EDG eccp (this is the vanilla EDG front end) **********************/
+/*** EDG eccp (this is the vanilla EDG front end) *************************/
 
-// NOTE: the __EDG__ macro is #defined by most edg-based compilers
+// NOTE: the __EDG__ macro is #defined by most EDG-based compilers
 
 #if    defined (__EDG__)                \
     && !defined (__DECCXX)              \
     && !defined (__INTEL_COMPILER)      \
     && !defined (_SGI_COMPILER_VERSION)
-
-   // identify the EDG eccp standalone front-end in order to help avoid
-   // confusing it with compilers such as Compaq C++, Intel C++, or SGI
-   // MIPSpro, that use the front-end and (sometimes) #define __EDG__
-#  define _RWSTD_EDG_ECCP
-
-#  if defined (_RWSTD_REENTRANT) && !defined (_RWSTD_POSIX_THREADS)
-#    define _RWSTD_POSIX_THREADS
-#  endif // (_RWSTD_REENTRANT) && !(_RWSTD_POSIX_THREADS)
-
-#  undef _RWSTD_NO_NEW_HEADER
-#  undef _RWSTD_NO_LIBC_IN_STD
-
-#  ifndef _RWSTD_NO_EXPORT
-#    undef _RWSTD_NO_IMPLICIT_INCLUSION
-#  endif
-
-   // the vanilla front-end doesn't actually #include the header,
-   // but it treats it specially instead, which throws off the test
-#  undef _RWSTD_ANSI_C_STDARG_H 
-#  define _RWSTD_ANSI_C_STDARG_H <stdarg.h>
-
-#  ifdef _RWSTD_REENTRANT
-     // std::uncaught_exception() not thread-safe in the front-end demo
-#    define _RWSTD_NO_UNCAUGHT_EXCEPTION
-#  endif   // _RWSTD_REENTRANT
-
-#  ifndef _RWSTD_NO_MBSTATE_T
-#    define _RWSTD_NO_MBSTATE_T
-#  endif   // _RWSTD_NO_MBSTATE_T
-
+#  include "_config-eccp.h"
 #endif   // __EDG__
 
-/*** GCC *************************************************************/
+/*** GCC ******************************************************************/
 
 #ifdef __GNUG__
-
-   // _REENTRANT is defined by the -pthread compiler option
-
-#  ifndef _RWSTD_NO_IMPLICIT_INCLUSION
-#    define _RWSTD_NO_IMPLICIT_INCLUSION
-#  endif
-
-#  ifndef _RWSTD_NO_EXPORT
-     // not implemented
-#    define _RWSTD_NO_EXPORT
-#  endif
-
-#  if !defined (_RWSTD_USE_PURE_C_HEADERS)
-     // disabled except when requested
-#    define _RWSTD_NO_PURE_C_HEADERS
-#  endif   // !_RWSTD_USE_PURE_C_HEADERS
-
-#  ifdef _RWSTD_NO_PURE_C_HEADERS
-     // deprecated C headers (the <xxx.h> kind) are fully implemented
-     // in terms of the pure C++ C library headers (the <cxxx> kind)
-#    define _RWSTD_NO_DEPRECATED_C_HEADERS
-#  endif   // _RWSTD_NO_PURE_C_HEADERS
-
-#  if !defined (_RWSTD_STRICT_ANSI) && __GNUG__ <= 2 && __GNUC_MINOR__ < 97
-     // prevent gcc 2.9x ICE
-#    define _RWSTD_NO_PLACEMENT_DELETE
-#  endif   // !_RWSTD_STRICT_ANSI
-
-#  if __GNUG__ < 3
-     // gcc 2.x doesn't understand the extern template syntax
-     // but only issues a warning: ANSI C++ forbids the use
-     // of `extern' on explicit instantiations
-#    ifndef _RWSTD_NO_EXTERN_TEMPLATE
-#      define _RWSTD_NO_EXTERN_TEMPLATE
-#    endif   // _RWSTD_NO_EXTERN_TEMPLATE
-#  endif   // gcc 2.x
-
-#  if __GNUG__ <= 2 && __GNUC_MINOR__ < 97 && defined (_RWSTD_NO_HONOR_STD)
-     // standard iostream objects are declared as objects of their respective
-     // types by defined as POD's to prevent their destruction during program
-     // lifetime (done to work around a g++ 2.95.2 bug that prevents g++
-     // from deducing the type of references to the objects in template code)
-#    define _RWSTD_NO_IOSTREAM_OBJECT_REFS
-#  endif   //__GNUG__ <= 2 && __GNUC_MINOR__ < 97 && _RWSTD_NO_HONOR_STD
-
-#  define _RWSTD_GNUC_ATTRIBUTE(attr)   __attribute__ (attr)
-
-#  ifdef _RWSTD_OS_LINUX
-
-#    ifdef _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
-
-#    ifdef _RWSTD_ANSI_C_LIMITS_H
-       // prevent system header warnings
-#      undef _RWSTD_ANSI_C_LIMITS_H
-#      define _RWSTD_ANSI_C_LIMITS_H <../include/limits.h>
-#    endif  // _RWSTD_ANSI_C_LIMITS_H
-#  endif   // _RWSTD_OS_LINUX
-
-#  ifdef _RWSTD_OS_AIX
-     // functions called from member functions of explicitly instantiated
-     // class templates aren't "implicitly" instantiated (compiler bug)
-#    define _RWSTD_NO_IMPLICIT_INSTANTIATION
-#  endif
-
-   // force using /usr/include/math.h 
-   // prevent recursion caused by pulling in gcc's own "fixed" header
-#  undef _RWSTD_ANSI_C_MATH_H
-
-   // use new C++ libc headers
-#  undef _RWSTD_NO_NEW_HEADER
-
-#  ifdef _RWSTD_USE_CONFIG
-#    undef _RWSTD_NO_LIBC_IN_STD
-#  endif
-
-#  undef _RWSTD_NO_DEPRECATED_LIBC_IN_STD
-
-#  ifdef __CYGWIN__
-     // use our own C++ libc headers
-#    undef _RWSTD_NO_NEW_HEADER
-     // libc is wrapped in namespaces std
-#    undef _RWSTD_NO_LIBC_IN_STD
-     // deprecated C++ libc headers don't introduce names into namespace std
-#    ifndef _RWSTD_NO_DEPRECATED_LIBC_IN_STD
-#      define _RWSTD_NO_DEPRECATED_LIBC_IN_STD
-#    endif
-#  endif   // __CYGWIN__
-
-#  ifdef _RWSTD_OS_OSF1
-      // sizeof (long double) == sizeof (double), 'L' causes SIGSEGV
-#     define _RWSTD_LDBL_PRINTF_PREFIX   ""
-#     define _RWSTD_LDBL_SCANF_PREFIX    "l"
-
-#  endif   // _RWSTD_OS_OSF1
-
-#  ifdef _RWSTD_OS_SUNOS
-
-     // _SOLARIS_THREADS #defined when the -threads option is used on SunOS
-#    if defined (_SOLARIS_THREADS) && !defined (_RWSTD_SOLARIS_THREADS)
-#      define _RWSTD_SOLARIS_THREADS
-#    endif // _SOLARIS_THREADS && !_RWSTD_SOLARIS_THREADS
-
-     // _PTHREADS #defined when the -pthreads option is used on SunOS
-#    if defined (_PTHREADS) && !defined (_RWSTD_POSIX_THREADS)
-#      define _RWSTD_POSIX_THREADS
-#    endif // _PTHREADS && !_RWSTD_POSIX_THREADS
-
-#    if __GNUG__ == 3 && __GNUC_MINOR__ < 1
-       // Avoid gcc 3.0.1 header configuration confusion with wchar
-#      ifndef _RWSTD_NO_NEW_HEADER
-#        define _RWSTD_NO_NEW_HEADER
-#      endif
-#      ifndef _RWSTD_NO_LIBC_IN_STD
-#        define _RWSTD_NO_LIBC_IN_STD
-#      endif
-#    endif  // __GNUG__ == 3 && __GNUC_MINOR__ < 1
-#  endif  // _RWSTD_OS_SUNOS
-
+#  include "_config-gcc.h"
 #else   // if !defined (__GNUG__)
 #  define _RWSTD_GNUC_ATTRIBUTE(ignore)
 #endif   // __GNUG__
 
-/*** HP aCC **********************************************************/
+/*** HP aCC ***************************************************************/
 
 #ifdef __HP_aCC
-
-   // _REENTRANT is defined by the -mt compiler option
-
-   // accommodate aCC 1.xx (HP-UX 10.xx), aCC 3.xx (HP-UX 11/PA-RISC)
-   // and aCC 5.xx (HP-UX 11/IA64)
-#  define _RWSTD_HP_aCC_MAJOR   (__HP_aCC / 10000)
-#  define _RWSTD_HP_aCC_MINOR   (__HP_aCC % 10000)
-
-   // new C++ libc headers supported
-#  undef _RWSTD_NO_NEW_HEADER
-
-#  ifndef _RWSTD_NO_PURE_C_HEADERS
-     // disable for now
-#    define _RWSTD_NO_PURE_C_HEADERS
-#  endif   // _RWSTD_NO_PURE_C_HEADERS
-
-   // deprecated C++ libc headers don't introduce names into namespace std
-#  ifndef _RWSTD_NO_DEPRECATED_LIBC_IN_STD
-#    define _RWSTD_NO_DEPRECATED_LIBC_IN_STD
-#  endif
-
-   // deprecated C++ libc headers aren't used
-#  define _RWSTD_NO_DEPRECATED_C_HEADERS
-
-   // prevents Error (future) 553: Expected type arguments to follow
-   //                              class template name.
-#  define _RWSTD_REDUNDANT_TMPL_PARAMS
-
-#  if (_RWSTD_HP_aCC_MINOR < 3300) && !defined (_RWSTD_NO_MBSTATE_T)
-   // mbstate_t definition is guarded in _mbstate_t.h and is available
-   // only if _INCLUDE__STDC_A1_SOURCE is defined (i.e., with -AA)
-#    define _RWSTD_NO_MBSTATE_T
-#  endif
-
-#  if defined (_HP_NAMESPACE_STD) || defined (_NAMESPACE_STD)
-#    undef _RWSTD_NO_RUNTIME_IN_STD
-#    undef _RWSTD_NO_STD_BAD_TYPEID
-#    undef _RWSTD_NO_STD_TYPE_INFO
-#  endif
-
-#  ifndef _RWSTD_NO_BAD_ALLOC_WHAT
-     // avoid the following ld errors:
-     // Unsatisfied symbol "Class tables [Vtable] dependent on
-     // key function: "bad_alloc::what() const"" in file [*.o]
-     // Unsatisfied symbol "typeid<bad_alloc>" in file [*.o]
-#    define _RWSTD_NO_BAD_ALLOC_WHAT
-#  endif   // _RWSTD_NO_BAD_ALLOC_WHAT
-
-#  if __HP_aCC < 60000
-#    ifndef _RWSTD_NO_EXTERN_TEMPLATE
-#      ifndef _RWSTD_NO_STRING_NPOS_TYPE
-         // define the type of basic_string::npos to be size_t
-         // instead of basic_string::size_type to work around
-         // an HP aCC extern template bug #333 (only the HP
-         // front end has this bug; HP aCC 6.0 which uses the
-         // EDG front end works fine
-#        define _RWSTD_NO_STRING_NPOS_TYPE
-#      endif   // _RWSTD_NO_STRING_NPOS_TYPE
-#    endif   // _RWSTD_NO_EXTERN_TEMPLATE
-#  endif   // aCC < 6.0
+#  include "_config-acc.h"
 #endif   // __HP_aCC
 
-/*** Intel C++ *******************************************************/
+/*** Intel C++ ************************************************************/
 
 #if defined (__INTEL_COMPILER)
-
-#  if !defined (_WIN32) && !defined (_WIN64)
-
-     // 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
-
-#    ifndef _RWSTD_NO_DEPRECATED_C_HEADERS
-#      define _RWSTD_NO_DEPRECATED_C_HEADERS
-#    endif   // _RWSTD_NO_DEPRECATED_C_HEADERS
-
-#    undef _RWSTD_NO_NEW_HEADER
-#    undef _RWSTD_NO_LIBC_IN_STD
-
-#  else   // if defined (_WIN{32,64}
-#    if defined (_RWSHARED)
-#      // only when using shared libstd and Intel C++/MSVC
-       // working around an Intel C++ 7.1 bug (PR #29178)
-#      define _RWSTD_NO_OUTLINED_USE_FACET_SPECIALIZATIONS
-#    endif   // _MSC_VER > 1200 && _RWSHARED
-#  endif
-
+#  include "_config-icc.h"
 #endif   // __INTEL_COMPILER
 
-/*** SGI MIPSpro *****************************************************/
+/*** SGI MIPSpro **********************************************************/
 
 // SGI MIPSpro uses an EDG front end; it may or may not #define __EDG__
 // (starting with MIPSpro 7.4 the preprocessor does #define the macro
 // along with _SGI_COMPILER_VERSION)
 
 #ifdef _RWSTD_OS_IRIX64
-
    // if _SGI_COMPILER_VERSION is not #defined, assume MIPSpro
    // unless __GNUG__ is #defined
 #  if defined (_SGI_COMPILER_VERSION) || !defined (__GNUG__)
-#    define _RWSTD_SGI_MIPSPRO
-
-#    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
-
-#    define _RWSTD_NO_PLACEMENT_DELETE
-#    //  The comptest sets compile instantiate when it shouldn't.
-#    //  override it here.
-#    if defined (_RWSTD_NO_IMPLICIT_INCLUSION)
-#      undef _RWSTD_NO_IMPLICIT_INCLUSION
-#    endif
+#    include "_config-mipspro.h"
 #  endif   // _SGI_COMPILER_VERSION || !__GNUG__
-
 #endif   // _RWSTD_OS_IRIX64
 
-/*** MSVC (and Intel C++/Win{32,64}) ********************************/
+/*** MSVC (and Intel C++/Win{32,64}) **************************************/
 
 #ifdef _MSC_VER
-
-#  if _MSC_VER <= 1310   // MSVC <= 7.1
-#  endif   // MSVC <= 7.1
-
-#  if _MSC_VER <= 1300   // MSVC <= 7.0
-#    define _RWSTD_NO_TYPENAME
-#    define _RWSTD_EXCEPTION_HANDLER_IN_STD
-#    define _RWSTD_NO_STATIC_DEF3
-#    define _RWSTD_NO_PTR_VALUE_TEMPLATE_OVERLOAD
-#    define _RWSTD_NO_PRAGMA_INSTANTIATE
-     // disable explicit instantiation extensions if building
-     // optimized client code (all templates still explicitly
-     // instantiated in the library); 
-     // *** Not currently done for MSVC 7, since an implicit
-     //     instantiation bug causes multiply defined symbols
-     //     in downstream libraries
-#    ifndef _RWSTD_NO_STRING_NPOS_TYPE
-       // define basic_string::npos to be of type size_t
-       // instead of basic_string::size_type to work around
-       // an MSVC 7.0 bug (PR #26549)
-#      define _RWSTD_NO_STRING_NPOS_TYPE
-#    endif   // _RWSTD_NO_STRING_NPOS_TYPE
-#  endif   // MSVC <= 7.0
-
-#  if _MSC_VER <= 1200   // MSVC <= 6.0
-#  endif   // MSVC <= 6.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
-
-   // 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, and the linker fails to
-   // multiple copies that reside in shared libraries)
-#  ifndef _RWSTD_NO_COLLAPSE_TEMPLATE_STATICS
-#    define _RWSTD_NO_COLLAPSE_TEMPLATE_STATICS
-#  endif   // _RWSTD_NO_COLLAPSE_TEMPLATE_STATICS
-
-   // 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
-#    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
-#  define _RWSTD_LONG_LONG __int64
-
-   // not declared/defined in libc
-#  if !defined (_RWSTD_NO_STRTOLL_IN_LIBC)
-#    define _RWSTD_NO_STRTOLL_IN_LIBC
-#  endif   // _RWSTD_NO_STRTOLL_IN_LIBC
-
-#  if !defined (_RWSTD_NO_STRTOULL_IN_LIBC)
-#    define _RWSTD_NO_STRTOULL_IN_LIBC
-#  endif   // _RWSTD_NO_STRTOULL_IN_LIBC
-
-#  if defined (_WIN64)
-     // FIXME: handle by forward declaring fuctions in <rw/_mutex.h>
-#    define _RWSTD_NO_FWD_DECLARATIONS
-#  endif   // _WIN64
-
-   // disable "Same type qualifier used more than once"
-#  pragma warning (disable: 4114)
-
-   // disable "return type for operator->' is not a UDT"
-#  pragma warning (disable: 4284)
-
-   // disable "decorated name length exceeded"
-#  pragma warning (disable: 4503)
-
-   // disable "identifier was truncated to 255 characters"
-#  pragma warning (disable: 4786)
-
-#  if defined (WIN32) && !defined(_WIN32)
-#    define _WIN32
-#  endif
-
-#  ifdef _MT
-#    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)
-#    ifndef _RWSTD_THREAD
-#      define _RWSTD_THREAD   /* empty */
-#    endif   // _RWSTD_THREAD
-#  endif   //_MT
-
-   // clean C++ C headers (the <cxxx> kind) not provided
-#  ifndef _RWSTD_NO_PURE_C_HEADERS
-#    define _RWSTD_NO_PURE_C_HEADERS
-#  endif   // _RWSTD_NO_PURE_C_HEADERS
-
-#  ifndef _RWSTD_NO_EXPORT
-     // not implemented
-#    define _RWSTD_NO_EXPORT
-#  endif   // _RWSTD_NO_EXPORT
-
-#  define _RWSTD_MUNMAP_ARG1_T void*
-#  define _RWSTD_NO_NL_LANGINFO
-
-#  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
-
-   // functions are defined in MSVC's msvcprt.lib and msvcprtd.lib
-   // which include the compiler's implementation of the C++ Standard
-   // library and with which we (obviously) cannot use
-#  ifndef _RWSTD_NO_WCTOB
-#    define _RWSTD_NO_WCTOB
-#  endif   // _RWSTD_NO_WCTOB
-
-#  ifndef _RWSTD_NO_WCTOB_IN_LIBC
-#    define _RWSTD_NO_WCTOB_IN_LIBC
-#  endif   // _RWSTD_NO_WCTOB_IN_LIBC
-
-#  ifndef _RWSTD_NO_MBRTOWC
-#    define _RWSTD_NO_MBRTOWC
-#  endif   // _RWSTD_NO_MBRTOWC
-
-#  ifndef _RWSTD_NO_MBRTOWC_IN_LIBC
-#    define _RWSTD_NO_MBRTOWC_IN_LIBC
-#  endif   // _RWSTD_NO_MBRTOWC_IN_LIBC
-
-#  ifndef _RWSTD_NO_WCRTOMB
-#    define _RWSTD_NO_WCRTOMB
-#  endif   // _RWSTD_NO_WCRTOMB
-
-#  ifndef _RWSTD_NO_WCRTOMB_IN_LIBC
-#    define _RWSTD_NO_WCRTOMB_IN_LIBC
-#  endif   // _RWSTD_NO_WCRTOMB_IN_LIBC
-
-#  ifndef _RWSTD_NO_MBSTOWCS
-#    define _RWSTD_NO_MBSTOWCS
-#  endif   // _RWSTD_NO_MBSTOWCS
-
-#  ifndef _RWSTD_NO_MBSTOWCS_IN_LIBC
-#    define _RWSTD_NO_MBSTOWCS_IN_LIBC
-#  endif   // _RWSTD_NO_MBSTOWCS_IN_LIBC
-
-#  ifndef _RWSTD_NO_MBRLEN
-#    define _RWSTD_NO_MBRLEN
-#  endif   // _RWSTD_NO_MBRLEN
-
-#  ifndef _RWSTD_NO_MBRLEN_IN_LIBC
-#    define _RWSTD_NO_MBRLEN_IN_LIBC
-#  endif   // _RWSTD_NO_MBRLEN_IN_LIBC
-
-#  ifndef _RWSTD_NO_WCSRTOMBS
-#    define _RWSTD_NO_WCSRTOMBS
-#  endif   // _RWSTD_NO_WCSRTOMBS
-
-#  ifndef _RWSTD_NO_WCSRTOMBS_IN_LIBC
-#    define _RWSTD_NO_WCSRTOMBS_IN_LIBC
-#  endif   // _RWSTD_NO_WCSRTOMBS_IN_LIBC
-
-#  ifndef _RWSTD_NO_BTOWC
-#    define _RWSTD_NO_BTOWC
-#  endif   // _RWSTD_NO_BTOWC
-
-#  ifndef _RWSTD_NO_BTOWC_IN_LIBC
-#    define _RWSTD_NO_BTOWC_IN_LIBC
-#  endif   // _RWSTD_NO_BTOWC_IN_LIBC
-
-#  ifndef _RWSTD_NO_MBSRTOWCS
-#    define _RWSTD_NO_MBSRTOWCS
-#  endif   // _RWSTD_NO_MBSRTOWCS
-
-#  ifndef _RWSTD_NO_MBSRTOWCS_IN_LIBC
-#    define _RWSTD_NO_MBSRTOWCS_IN_LIBC
-#  endif   // _RWSTD_NO_MBSRTOWCS_IN_LIBC
+#  include "_config-msvc.h"
 #endif   // _MSC_VER
 
-/*** Siemens CDS++ ***************************************************/
+/*** Siemens CDS++ ********************************************************/
 
 #ifdef SNI
 #  define _RWSTD_NO_PTR_VALUE_TEMPLATE_OVERLOAD
@@ -816,41 +227,23 @@
 #  endif
 #endif   // SNI
 
-/*** SunPro **********************************************************/
+/*** SunPro aka Sun C++ ***************************************************/
 
 #ifdef __SUNPRO_CC
-
-  // _REENTRANT defined by the -mt compiler option
-
-#  if __SUNPRO_CC >= 0x530 && __SUNPRO_CC <= 0x540
-     // test fails due to a SunPro 5.3 bug (PR RW #26641/Sun #4526136)
-#    undef _RWSTD_NO_MEMBER_TEMPLATES
-#  endif   // SunPro 5.3, 5.4
-
-#  if __SUNPRO_CC <= 0x540
-     // works around a partial specialization bug (PR #28119)
-#    ifndef _RWSTD_NO_EXT_CONST_ALLOCATOR
-#      define _RWSTD_NO_EXT_CONST_ALLOCATOR
-#    endif
-#  endif   // SunPro < 5.4
-
-#  ifndef _RWSTD_NO_EXPORT
-#    define _RWSTD_NO_EXPORT
-#  endif   // _RWSTD_NO_EXPORT
-
-   // prevent warnings about SunPro being unable to find
-   // source for (intentionally undefined) member functions
-   // of class templates
-#  define _RWSTD_NO_UNDEFINED_TEMPLATES
+#  include "_config-sunpro.h"
 #endif   // __SUNPRO_CC
 
-/*** OS2 **************************************************************/
+/**************************************************************************
+ * OPERATING SYSTEM-SPECIFIC OVERRIDES                                    * 
+ **************************************************************************/
+
+/*** OS2 ******************************************************************/
 
 #ifdef __OS2__
 #  define _RWSTD_NO_STATIC_MUTEX_INIT
 #endif   // __OS2__
 
-/*** Win{32,64} *******************************************************/
+/*** Win{32,64} ***********************************************************/
 
 #if defined (_WIN32) || defined (_WIN64)
 #  define _RWSTD_NO_STATIC_MUTEX_INIT
@@ -861,7 +254,7 @@
 #  define _RWSTD_PATH_SEP      '/'
 #endif   // _RWSTD_PATH_SEP
 
-/*** Non-10646 platforms **********************************************/
+/*** Non-10646 platforms **************************************************/
 
 #if !defined (_RWSTD_OS_LINUX) && !defined (_WIN32)
    // Linux glibc and Windows use ISO 10646 (Unicode)
@@ -871,7 +264,7 @@
 #  endif   // _RWSTD_NO_ISO_10646_WCHAR_T
 #endif   // !Linux && !Windoze
 
-/********************** Threads ***************************************/
+/********************** Threads *******************************************/
 
 #ifdef _RWSTD_REENTRANT
 #  if    !defined (_RWSTD_DCE_THREADS)   \
@@ -891,7 +284,7 @@
 #  define _RWSTD_NO_STATIC_MUTEX_INIT
 #endif   // _RWSTD_DCE_THREADS
 
-/********************** Miscellaneous *********************************/
+/********************** Miscellaneous *************************************/
 
 // g++ cannot inline functions that take a variable number of arguments
 // or functions that contain static (local) variables
@@ -913,7 +306,7 @@
 #  endif
 #endif   // NO_COLLAPSE_TEMPLATE_STATICS || NO_STATIC_TEMPLATE_MEMBER_INIT
 
-/********************** Environment *********************************/
+/********************** Environment ***************************************/
 
 // define wherever atomic instructions are provided
 // affects the size of string reference (i.e., is binary incompatible)
@@ -972,7 +365,7 @@
 #  define _RWSTD_LIBC_SYM(name)   name
 #endif   // _RWSTD_LIBC_SYM
 
-/********************** Library Option Dependencies *************************/
+/********************** Library Option Dependencies ***********************/
 
 /*
  * The following macro sets the default size of file stream internal buffers
@@ -1008,6 +401,8 @@
    // std::setbase manipulator accepts only required bases (i.e.,
    // 0, 8, 10, 16, and 2 unless _RWSTD_NO_EXT_BIN_IO is also #defined)
 #  define _RWSTD_NO_EXT_SETBASE
+   // disable the str(const char*) overload in stringbuf and stringstreams
+#  define _RWSTD_NO_EXT_STRINGBUF_STR
    // no support for member overloads on all fundamental types
 #  define _RWSTD_NO_EXT_NUM_GET
 #  define _RWSTD_NO_EXT_NUM_PUT
@@ -1040,6 +435,10 @@
    // utilizes the entire range of size_t and will not generate the same
    // sequence of values between ILP32 and LP64 (or LLP64)
 #  define _RWSTD_NO_EXT_PORTABLE_RANDOM_SEQUENCE
+
+   // disable the implementation of LWG issue 559 (numeric_limits
+   // limits specialized on cv-qualified scalar types)
+#  define _RWSTD_NO_EXT_CV_QUALIFIED_LIMITS
 
 // commented out macros not implemented yet
 // #  define _RWSTD_NO_EXT_MONEYPUNCT_PRIMARY