]> git.pld-linux.org Git - packages/STLport.git/commitdiff
- fix for STLport-5.x.x allowing build with libstdc++-4.2.0 (streamsize
authorSzymon Siwek <sls@pld-linux.org>
Tue, 19 Dec 2006 21:37:49 +0000 (21:37 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
  namespace issue)

Changed files:
    STLport-gcc420_dirty_hack.patch -> 1.1

STLport-gcc420_dirty_hack.patch [new file with mode: 0644]

diff --git a/STLport-gcc420_dirty_hack.patch b/STLport-gcc420_dirty_hack.patch
new file mode 100644 (file)
index 0000000..7828519
--- /dev/null
@@ -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 
This page took 0.082913 seconds and 4 git commands to generate.