You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@stdcxx.apache.org by Farid Zaripov <Fa...@kyiv.vdiweb.com> on 2006/11/22 17:19:54 UTC

[PATCH] _config-msvc.h

   I see that some #defines in _config-msvc.h (i.e. #define 
_RWSTD_NO_NL_LANGINFO) duplicates #defines from config.h produced by 
configure.wsf script. And some #defines contradict with #defines from 
config.h (i.e. #define _RWSTD_NO_MBRLEN is undefined on MSVC 8).

   I think that #defines should be moved to #if _MSC_VER <= 1200 / 
#endif because we don't have configuration infrastructure for MSVC 6 and 
earlier.

   The proposed patch is attached.

   ChangeLog:
   * _config-msvc.h: All definitions which duplicates or contradict
   with config.h are moved to #if _MSC_VER <= 1200 / #endif

Farid.


Re: [PATCH] _config-msvc.h

Posted by Martin Sebor <se...@roguewave.com>.
Farid Zaripov wrote:
>   I see that some #defines in _config-msvc.h (i.e. #define 
> _RWSTD_NO_NL_LANGINFO) duplicates #defines from config.h produced by 
> configure.wsf script. And some #defines contradict with #defines from 
> config.h (i.e. #define _RWSTD_NO_MBRLEN is undefined on MSVC 8).
> 
>   I think that #defines should be moved to #if _MSC_VER <= 1200 / #endif 
> because we don't have configuration infrastructure for MSVC 6 and earlier.
> 
>   The proposed patch is attached.
> 
>   ChangeLog:
>   * _config-msvc.h: All definitions which duplicates or contradict
>   with config.h are moved to #if _MSC_VER <= 1200 / #endif

OK to commit assuming it doesn't break anything with the versions
of MSVC we currently support (including 7.0).

Martin

> 
> Farid.
> 
> 
> ------------------------------------------------------------------------
> 
> Index: _config-msvc.h
> ===================================================================
> --- _config-msvc.h	(revision 478181)
> +++ _config-msvc.h	(working copy)
> @@ -32,7 +32,6 @@
>  #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
> @@ -52,6 +51,99 @@
>  #endif   // MSVC <= 7.0
>  
>  #if _MSC_VER <= 1200   // MSVC <= 6.0
> +#  define _RWSTD_NO_TYPENAME
> +
> +   // 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
> +
> +   // 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
> +
> +#ifndef _RWSTD_NO_EXPORT
> +     // not implemented
> +#  define _RWSTD_NO_EXPORT
> +#endif   // _RWSTD_NO_EXPORT
> +
> +#define _RWSTD_NO_NL_LANGINFO
> +
> +   // 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
> +
>  #endif   // MSVC <= 6.0
>  
>     // enable the <cxxx> form of libc headers
> @@ -73,14 +165,6 @@
>  #  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
> @@ -105,15 +189,6 @@
>     // 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
> @@ -157,13 +232,7 @@
>  #  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-
> @@ -181,70 +250,3 @@
>  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