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