From 3900deaf486ec4335ea03af7c9d2299203737220 Mon Sep 17 00:00:00 2001 From: Petr Machata Date: Wed, 14 Oct 2009 13:34:42 +0000 Subject: [PATCH] - GCC 4.4 name resolution fixes for GIL - Resolves: #526834 --- boost-gil_gcc44.patch | 204 ++++++++++++++++++++++++++++++++++++++++++ boost.spec | 8 +- 2 files changed, 211 insertions(+), 1 deletion(-) create mode 100644 boost-gil_gcc44.patch diff --git a/boost-gil_gcc44.patch b/boost-gil_gcc44.patch new file mode 100644 index 0000000..e0f86b7 --- /dev/null +++ b/boost-gil_gcc44.patch @@ -0,0 +1,204 @@ +Index: boost/gil/bit_aligned_pixel_reference.hpp +=================================================================== +--- boost/gil/bit_aligned_pixel_reference.hpp (revision 53049) ++++ boost/gil/bit_aligned_pixel_reference.hpp (working copy) +@@ -145,7 +145,7 @@ + + // Construct from another compatible pixel type + bit_aligned_pixel_reference(const bit_aligned_pixel_reference& p) : _bit_range(p._bit_range) {} +- template bit_aligned_pixel_reference(packed_pixel& p) : _bit_range(static_cast(&at_c<0>(p)), at_c<0>(p).first_bit()) { ++ template bit_aligned_pixel_reference(packed_pixel& p) : _bit_range(static_cast(&gil::at_c<0>(p)), gil::at_c<0>(p).first_bit()) { + check_compatible >(); + } + +Index: boost/gil/color_base.hpp +=================================================================== +--- boost/gil/color_base.hpp (revision 53049) ++++ boost/gil/color_base.hpp (working copy) +@@ -155,15 +155,15 @@ + homogeneous_color_base(Element v0, Element v1, Element v2) : _v0(v0), _v1(v1), _v2(v2) {} + + template homogeneous_color_base(const homogeneous_color_base& c) : +- _v0(at_c::value>(c)), +- _v1(at_c::value>(c)), +- _v2(at_c::value>(c)) {} ++ _v0(gil::at_c::value>(c)), ++ _v1(gil::at_c::value>(c)), ++ _v2(gil::at_c::value>(c)) {} + + // Support for l-value reference proxy copy construction + template homogeneous_color_base( homogeneous_color_base& c) : +- _v0(at_c::value>(c)), +- _v1(at_c::value>(c)), +- _v2(at_c::value>(c)) {} ++ _v0(gil::at_c::value>(c)), ++ _v1(gil::at_c::value>(c)), ++ _v2(gil::at_c::value>(c)) {} + + // Support for planar_pixel_iterator construction and dereferencing + template homogeneous_color_base(P* p,bool) : +Index: boost/gil/color_base_algorithm.hpp +=================================================================== +--- boost/gil/color_base_algorithm.hpp (revision 53049) ++++ boost/gil/color_base_algorithm.hpp (working copy) +@@ -101,7 +101,7 @@ + template struct kth_semantic_element_reference_type { + BOOST_STATIC_CONSTANT(int, semantic_index = (mpl::at_c::type::value)); + typedef typename kth_element_reference_type::type type; +- static type get(ColorBase& cb) { return at_c(cb); } ++ static type get(ColorBase& cb) { return gil::at_c(cb); } + }; + + /// \brief Specifies the return type of the constant semantic_at_c(color_base); +@@ -109,7 +109,7 @@ + template struct kth_semantic_element_const_reference_type { + BOOST_STATIC_CONSTANT(int, semantic_index = (mpl::at_c::type::value)); + typedef typename kth_element_const_reference_type::type type; +- static type get(const ColorBase& cb) { return at_c(cb); } ++ static type get(const ColorBase& cb) { return gil::at_c(cb); } + }; + + /// \brief A mutable accessor to the K-th semantic element of a color base +Index: boost/gil/image_view_factory.hpp +=================================================================== +--- boost/gil/image_view_factory.hpp (revision 53049) ++++ boost/gil/image_view_factory.hpp (working copy) +@@ -102,7 +102,7 @@ + BOOST_STATIC_ASSERT((!is_planar::value && view_is_basic::value)); + BOOST_STATIC_ASSERT((boost::is_pointer::value)); + +- return &at_c<0>(view(0,0)); ++ return &gil::at_c<0>(view(0,0)); + } + + /// \ingroup ImageViewConstructors +@@ -430,7 +430,7 @@ + typedef typename type::xy_locator locator_t; + typedef typename type::x_iterator x_iterator_t; + typedef typename iterator_adaptor_get_base::type x_iterator_base_t; +- x_iterator_t sit(x_iterator_base_t(&at_c(src(0,0))),src.pixels().pixel_size()); ++ x_iterator_t sit(x_iterator_base_t(&gil::at_c(src(0,0))),src.pixels().pixel_size()); + return type(src.dimensions(),locator_t(sit, src.pixels().row_size())); + } + }; +@@ -444,7 +444,7 @@ + typedef typename view_type::value>::type type; + static type make(const View& src) { + typedef typename type::x_iterator x_iterator_t; +- return interleaved_view(src.width(),src.height(),(x_iterator_t)&at_c(src(0,0)), src.pixels().row_size()); ++ return interleaved_view(src.width(),src.height(),(x_iterator_t)&gil::at_c(src(0,0)), src.pixels().row_size()); + } + }; + +@@ -494,7 +494,7 @@ + template kth_channel_deref_fn(const kth_channel_deref_fn&) {} + + result_type operator()(argument_type srcP) const { +- return result_type(at_c(srcP)); ++ return result_type(gil::at_c(srcP)); + } + }; + +Index: boost/gil/packed_pixel.hpp +=================================================================== +--- boost/gil/packed_pixel.hpp (revision 53049) ++++ boost/gil/packed_pixel.hpp (working copy) +@@ -81,7 +81,7 @@ + } + packed_pixel(int chan0, int chan1, int chan2) : _bitfield(0) { + BOOST_STATIC_ASSERT((num_channels::value==3)); +- at_c<0>(*this)=chan0; at_c<1>(*this)=chan1; at_c<2>(*this)=chan2; ++ gil::at_c<0>(*this)=chan0; gil::at_c<1>(*this)=chan1; gil::at_c<2>(*this)=chan2; + } + packed_pixel(int chan0, int chan1, int chan2, int chan3) : _bitfield(0) { + BOOST_STATIC_ASSERT((num_channels::value==4)); +Index: boost/gil/pixel.hpp +=================================================================== +--- boost/gil/pixel.hpp (revision 53049) ++++ boost/gil/pixel.hpp (working copy) +@@ -143,11 +143,11 @@ + + private: + static void check_gray() { BOOST_STATIC_ASSERT((is_same::value)); } +- template void assign(const Channel& chan, mpl::false_) { check_gray(); at_c<0>(*this)=chan; } +- template bool equal (const Channel& chan, mpl::false_) const { check_gray(); return at_c<0>(*this)==chan; } ++ template void assign(const Channel& chan, mpl::false_) { check_gray(); gil::at_c<0>(*this)=chan; } ++ template bool equal (const Channel& chan, mpl::false_) const { check_gray(); return gil::at_c<0>(*this)==chan; } + public: +- pixel& operator= (channel_t chan) { check_gray(); at_c<0>(*this)=chan; return *this; } +- bool operator==(channel_t chan) const { check_gray(); return at_c<0>(*this)==chan; } ++ pixel& operator= (channel_t chan) { check_gray(); gil::at_c<0>(*this)=chan; return *this; } ++ bool operator==(channel_t chan) const { check_gray(); return gil::at_c<0>(*this)==chan; } + }; + + ///////////////////////////// +Index: boost/gil/planar_pixel_iterator.hpp +=================================================================== +--- boost/gil/planar_pixel_iterator.hpp (revision 53049) ++++ boost/gil/planar_pixel_iterator.hpp (working copy) +@@ -109,8 +109,8 @@ + reference operator->() const { return **this; } + + // PERFORMANCE_CHECK: Remove? +- bool operator< (const planar_pixel_iterator& ptr) const { return at_c<0>(*this)< at_c<0>(ptr); } +- bool operator!=(const planar_pixel_iterator& ptr) const { return at_c<0>(*this)!=at_c<0>(ptr); } ++ bool operator< (const planar_pixel_iterator& ptr) const { return gil::at_c<0>(*this)< gil::at_c<0>(ptr); } ++ bool operator!=(const planar_pixel_iterator& ptr) const { return gil::at_c<0>(*this)!=gil::at_c<0>(ptr); } + private: + friend class boost::iterator_core_access; + +@@ -119,8 +119,8 @@ + void advance(ptrdiff_t d) { static_transform(*this,*this,std::bind2nd(detail::plus_asymmetric(),d)); } + reference dereference() const { return this->template deref(); } + +- ptrdiff_t distance_to(const planar_pixel_iterator& it) const { return at_c<0>(it)-at_c<0>(*this); } +- bool equal(const planar_pixel_iterator& it) const { return at_c<0>(*this)==at_c<0>(it); } ++ ptrdiff_t distance_to(const planar_pixel_iterator& it) const { return gil::at_c<0>(it)-gil::at_c<0>(*this); } ++ bool equal(const planar_pixel_iterator& it) const { return gil::at_c<0>(*this)==gil::at_c<0>(it); } + }; + + namespace detail { +Index: libs/gil/test/pixel.cpp +=================================================================== +--- libs/gil/test/pixel.cpp (revision 53049) ++++ libs/gil/test/pixel.cpp (working copy) +@@ -34,8 +34,9 @@ + // Testing pixel references and values, pixel operations, color conversion + + using namespace boost::gil; +-using namespace std; ++using std::swap; + using namespace boost; ++ + void error_if(bool condition); + + struct increment { +@@ -63,8 +64,8 @@ + + // test homogeneous algorithms - fill, max, min + static const int num_chan = num_channels::value; +- static_fill(C2::_pixel, at_c<0>(C1::_pixel)+1); +- error_if(at_c<0>(C2::_pixel) != at_c(C2::_pixel)); ++ static_fill(C2::_pixel, gil::at_c<0>(C1::_pixel)+1); ++ error_if(gil::at_c<0>(C2::_pixel) != gil::at_c(C2::_pixel)); + + C2::_pixel = C1::_pixel; + error_if(static_max(C2::_pixel) != static_max(C1::_pixel)); +@@ -107,7 +108,7 @@ + error_if(C1::_pixel!=C2::_pixel); + + static_generate(C2::_pixel, set_to_one()); +- error_if(at_c<0>(C2::_pixel) != 1); ++ error_if(gil::at_c<0>(C2::_pixel) != 1); + + // Test swap if both are mutable and if their value type is the same + // (We know the second one is mutable) +@@ -313,7 +314,7 @@ + bgr8_pixel_t bgr8(rgb8); + error_if(bgr8[0] == rgb8[0]); + error_if(dynamic_at_c(bgr8,0) == dynamic_at_c(rgb8,0)); +- error_if(at_c<0>(bgr8) == at_c<0>(rgb8)); ++ error_if(gil::at_c<0>(bgr8) == gil::at_c<0>(rgb8)); + error_if(semantic_at_c<0>(bgr8) != semantic_at_c<0>(rgb8)); + error_if(get_color(bgr8,blue_t()) != get_color(rgb8,blue_t())); + diff --git a/boost.spec b/boost.spec index 365d2ff..413112e 100644 --- a/boost.spec +++ b/boost.spec @@ -4,7 +4,7 @@ Name: boost Summary: The Boost C++ Libraries Version: 1.37.0 -Release: 7%{?dist} +Release: 8%{?dist} License: Boost URL: http://www.boost.org/ Group: System Environment/Libraries @@ -31,6 +31,7 @@ Patch6: boost-unneccessary_iostreams.patch Patch7: boost-1_37_0-smp.patch Patch8: boost-bitset.patch Patch9: boost-fs_gcc44.patch +Patch10: boost-gil_gcc44.patch %description Boost provides free peer-reviewed portable C++ source libraries. The @@ -80,6 +81,7 @@ sed 's/!!!SONAME!!!/%{sonamever}/' %{PATCH4} | %{__patch} -p1 --fuzz=0 sed 's/!!!SMP_FLAGS!!!/%{?_smp_mflags}/' %{PATCH7} | %{__patch} -p1 --fuzz=0 %patch8 -p1 %patch9 -p0 +%patch10 -p0 %build BOOST_ROOT=`pwd` @@ -212,6 +214,10 @@ rm -rf $RPM_BUILD_ROOT %doc %{_docdir}/%{name}-%{version} %changelog +* Wed Oct 14 2009 Petr Machata - 1.37.0-8 +- GCC 4.4 name resolution fixes for GIL +- Resolves: #526834 + * Fri Jul 3 2009 Petr Machata - 1.37.0-7 - Add upstream patch to make boost_filesystem compatible with C++0x. - Resolves: #509250