SOURCES: STLport-gcc420_dirty_hack.patch (NEW) - fix for STLport-5...

sls sls at pld-linux.org
Tue Dec 19 22:37:54 CET 2006


Author: sls                          Date: Tue Dec 19 21:37:54 2006 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- fix for STLport-5.x.x allowing build with libstdc++-4.2.0 (streamsize 
  namespace issue)

---- Files affected:
SOURCES:
   STLport-gcc420_dirty_hack.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/STLport-gcc420_dirty_hack.patch
diff -u /dev/null SOURCES/STLport-gcc420_dirty_hack.patch:1.1
--- /dev/null	Tue Dec 19 22:37:54 2006
+++ SOURCES/STLport-gcc420_dirty_hack.patch	Tue Dec 19 22:37:49 2006
@@ -0,0 +1,203 @@
+--- STLport-5.1.0/stlport/ext/type_traits.h.orig	1970-01-01 00:00:00.000000000 +0000
++++ STLport-5.1.0/stlport/ext/type_traits.h	2006-12-18 12:56:32.000000000 +0000
+@@ -0,0 +1,200 @@
++// -*- C++ -*-
++
++// Copyright (C) 2005, 2006 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library is free
++// software; you can redistribute it and/or modify it under the terms
++// of the GNU General Public License as published by the Free Software
++// Foundation; either version 2, or (at your option) any later
++// version.
++
++// This library is distributed in the hope that it will be useful, but
++// WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++// General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING.  If not, write to the Free
++// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
++// USA.
++
++// As a special exception, you may use this file as part of a free
++// software library without restriction.  Specifically, if other files
++// instantiate templates or use macros or inline functions from this
++// file, or you compile this file and link it with other files to
++// produce an executable, this file does not by itself cause the
++// resulting executable to be covered by the GNU General Public
++// License.  This exception does not however invalidate any other
++// reasons why the executable file might be covered by the GNU General
++// Public License.
++
++/** @file ext/type_traits.h
++ *  This file is a GNU extension to the Standard C++ Library.
++ */
++
++#ifndef _EXT_TYPE_TRAITS
++#define _EXT_TYPE_TRAITS 1
++
++#pragma GCC system_header
++
++#include <cstddef>
++#include <utility>
++#include <limits>
++#include <iosfwd> // std::streamsize
++#include <bits/cpp_type_traits.h>
++
++_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
++
++  // Define a nested type if some predicate holds.
++  template<bool, typename>
++    struct __enable_if 
++    { };
++
++  template<typename _Tp>
++    struct __enable_if<true, _Tp>
++    { typedef _Tp __type; };
++
++
++  // Conditional expression for types. If true, first, if false, second.
++  template<bool _Cond, typename _Iftrue, typename _Iffalse>
++    struct __conditional_type
++    { typedef _Iftrue __type; };
++
++  template<typename _Iftrue, typename _Iffalse>
++    struct __conditional_type<false, _Iftrue, _Iffalse>
++    { typedef _Iffalse __type; };
++
++
++  // Given an integral builtin type, return the corresponding unsigned type.
++  template<typename _Tp>
++    struct __add_unsigned
++    { 
++    private:
++      typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type;
++      
++    public:
++      typedef typename __if_type::__type __type; 
++    };
++
++  template<>
++    struct __add_unsigned<char>
++    { typedef unsigned char __type; };
++
++  template<>
++    struct __add_unsigned<signed char>
++    { typedef unsigned char __type; };
++
++  template<>
++    struct __add_unsigned<short>
++    { typedef unsigned short __type; };
++
++  template<>
++    struct __add_unsigned<int>
++    { typedef unsigned int __type; };
++
++  template<>
++    struct __add_unsigned<long>
++    { typedef unsigned long __type; };
++
++  template<>
++    struct __add_unsigned<long long>
++    { typedef unsigned long long __type; };
++
++  // Declare but don't define.
++  template<>
++    struct __add_unsigned<bool>;
++
++  template<>
++    struct __add_unsigned<wchar_t>;
++
++
++  // Given an integral builtin type, return the corresponding signed type.
++  template<typename _Tp>
++    struct __remove_unsigned
++    { 
++    private:
++      typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type;
++      
++    public:
++      typedef typename __if_type::__type __type; 
++    };
++
++  template<>
++    struct __remove_unsigned<char>
++    { typedef signed char __type; };
++
++  template<>
++    struct __remove_unsigned<unsigned char>
++    { typedef signed char __type; };
++
++  template<>
++    struct __remove_unsigned<unsigned short>
++    { typedef short __type; };
++
++  template<>
++    struct __remove_unsigned<unsigned int>
++    { typedef int __type; };
++
++  template<>
++    struct __remove_unsigned<unsigned long>
++    { typedef long __type; };
++
++  template<>
++    struct __remove_unsigned<unsigned long long>
++    { typedef long long __type; };
++
++  // Declare but don't define.
++  template<>
++    struct __remove_unsigned<bool>;
++
++  template<>
++    struct __remove_unsigned<wchar_t>;
++
++
++  // Compile time constants for builtin types.
++  // Sadly std::numeric_limits member functions cannot be used for this.
++#define __glibcxx_signed(_Tp) ((_Tp)(-1) < 0)
++#define __glibcxx_digits(_Tp) \
++  (sizeof(_Tp) * __CHAR_BIT__ - __glibcxx_signed(_Tp))
++
++#define __glibcxx_min(_Tp) \
++  (__glibcxx_signed(_Tp) ? (_Tp)1 << __glibcxx_digits(_Tp) : (_Tp)0)
++
++#define __glibcxx_max(_Tp) \
++  (__glibcxx_signed(_Tp) ? ((_Tp)1 << __glibcxx_digits(_Tp)) - 1 : ~(_Tp)0)
++
++  template<typename _Value>
++    struct __numeric_traits_integer
++    {
++      // Only integers for initialization of member constant.
++      static const _Value __min = __glibcxx_min(_Value);
++      static const _Value __max = __glibcxx_max(_Value);
++    };
++
++  template<typename _Value>
++    const _Value __numeric_traits_integer<_Value>::__min;
++
++  template<typename _Value>
++    const _Value __numeric_traits_integer<_Value>::__max;
++
++  template<typename _Value>
++    struct __numeric_traits_floating
++    {
++      // Only floating point types. See N1822. 
++      static const _STLP_STD::streamsize __max_digits10 =
++	2 + _STLP_STD::numeric_limits<_Value>::digits * 3010/10000;
++    };
++
++  template<typename _Value>
++    const _STLP_STD::streamsize __numeric_traits_floating<_Value>::__max_digits10;
++
++  template<typename _Value>
++    struct __numeric_traits 
++    : public __conditional_type<std::__is_integer<_Value>::__value,
++				__numeric_traits_integer<_Value>,
++				__numeric_traits_floating<_Value> >::__type
++    { };
++
++_GLIBCXX_END_NAMESPACE
++
++#endif 
================================================================


More information about the pld-cvs-commit mailing list