$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r67896 - in sandbox/gil/boost/gil/extension/io2: . detail
From: dsaritz_at_[hidden]
Date: 2011-01-09 17:53:15
Author: psiha
Date: 2011-01-09 17:53:10 EST (Sun, 09 Jan 2011)
New Revision: 67896
URL: http://svn.boost.org/trac/boost/changeset/67896
Log:
Fixed GCC and Clang compilation errors.
Fixed io_error() declaration.
Minor other cleanup.
Text files modified: 
   sandbox/gil/boost/gil/extension/io2/detail/io_error.hpp       |    14 +++++++--                               
   sandbox/gil/boost/gil/extension/io2/detail/libx_shared.hpp    |     1                                         
   sandbox/gil/boost/gil/extension/io2/detail/memory_mapping.hpp |     6 ++-                                     
   sandbox/gil/boost/gil/extension/io2/formatted_image.hpp       |    37 ++++++++++++------------                
   sandbox/gil/boost/gil/extension/io2/gp_image.hpp              |     2                                         
   sandbox/gil/boost/gil/extension/io2/libjpeg_image.hpp         |    59 ++++++++++++++++++++------------------- 
   sandbox/gil/boost/gil/extension/io2/libpng_image.hpp          |    10 ++++--                                  
   sandbox/gil/boost/gil/extension/io2/libtiff_image.hpp         |    34 +++++++++++++++++-----                  
   sandbox/gil/boost/gil/extension/io2/wic_image.hpp             |     2                                         
   9 files changed, 98 insertions(+), 67 deletions(-)
Modified: sandbox/gil/boost/gil/extension/io2/detail/io_error.hpp
==============================================================================
--- sandbox/gil/boost/gil/extension/io2/detail/io_error.hpp	(original)
+++ sandbox/gil/boost/gil/extension/io2/detail/io_error.hpp	2011-01-09 17:53:10 EST (Sun, 09 Jan 2011)
@@ -33,12 +33,20 @@
 {
 //------------------------------------------------------------------------------
 
-inline BF_NOTHROWNOALIAS void io_error( char const * const description )
+inline BF_NORETURN void io_error( char const * const description )
 {
     #ifdef _MSC_VER
-        throw_exception( std::exception( description , 0 ) ); // Assumes the description string is static/non-temporary
+        throw_exception( std::exception( description, 0 ) ); // Assumes the description string is static/non-temporary
     #else
-        throw_exception( std::exception( description     ) );
+        class gil_io_error : public std::exception
+        {
+        public:
+            gil_io_error( char const * const description ) : description_( description ) {}
+            char const * what() const throw() { return description_; }
+        private:
+            char const * const description_;
+        };
+        throw_exception( gil_io_error( description ) );
     #endif // _MSC_VER
 }
 
Modified: sandbox/gil/boost/gil/extension/io2/detail/libx_shared.hpp
==============================================================================
--- sandbox/gil/boost/gil/extension/io2/detail/libx_shared.hpp	(original)
+++ sandbox/gil/boost/gil/extension/io2/detail/libx_shared.hpp	2011-01-09 17:53:10 EST (Sun, 09 Jan 2011)
@@ -26,7 +26,6 @@
 #include "boost/assert.hpp"
 #include "boost/noncopyable.hpp"
 
-#include "crtdefs.h"
 #include <cstdio>
 //------------------------------------------------------------------------------
 namespace boost
Modified: sandbox/gil/boost/gil/extension/io2/detail/memory_mapping.hpp
==============================================================================
--- sandbox/gil/boost/gil/extension/io2/detail/memory_mapping.hpp	(original)
+++ sandbox/gil/boost/gil/extension/io2/detail/memory_mapping.hpp	2011-01-09 17:53:10 EST (Sun, 09 Jan 2011)
@@ -223,8 +223,10 @@
 
 class memory_mapping
     :
-    private writable_memory_chunk_t,
-    private boost::noncopyable
+    private writable_memory_chunk_t
+    #ifndef __clang__
+        ,private boost::noncopyable
+    #endif // __clang__
 {
 public:
     memory_mapping
Modified: sandbox/gil/boost/gil/extension/io2/formatted_image.hpp
==============================================================================
--- sandbox/gil/boost/gil/extension/io2/formatted_image.hpp	(original)
+++ sandbox/gil/boost/gil/extension/io2/formatted_image.hpp	2011-01-09 17:53:10 EST (Sun, 09 Jan 2011)
@@ -25,6 +25,7 @@
 #include "detail/switch.hpp"
 
 #include "boost/gil/extension/dynamic_image/any_image.hpp"
+#include "boost/gil/extension/io/dynamic_io.hpp" //...zzz...
 #include "boost/gil/packed_pixel.hpp"
 #include "boost/gil/planar_pixel_iterator.hpp"
 #include "boost/gil/planar_pixel_reference.hpp"
@@ -46,6 +47,7 @@
 #include <boost/range/iterator_range.hpp>
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/decay.hpp>
+#include <boost/type_traits/is_unsigned.hpp>
 //------------------------------------------------------------------------------
 namespace boost
 {
@@ -79,7 +81,7 @@
         typedef detail::channel_convert_to_unsigned  <SrcChannelV> to_unsigned;
         typedef detail::channel_convert_from_unsigned<DstChannelV> from_unsigned;
 
-        if ( std::tr1::is_unsigned<SrcChannelV>::value )
+        if ( is_unsigned<SrcChannelV>::value )
         {
             SrcChannelV  const source_max( detail::unsigned_integral_max_value<SrcChannelV>::value );
             unsigned int const tmp       ( ( static_cast<unsigned short>( src ) << DestPackedNumBits ) - src );
@@ -502,7 +504,7 @@
         Image & apply()
         {
             image_.move_in( Image() );
-            return image_._dynamic_cast<Image>();
+            return image_. BOOST_NESTED_TEMPLATE _dynamic_cast<Image>();
         }
 
     protected:
@@ -520,9 +522,6 @@
 template <class Impl>
 class formatted_image : public formatted_image_base
 {
-private:
-    template <typename T> struct get_native_format;
-
 public:
     typedef typename formatted_image_traits<Impl>::format_t format_t;
 
@@ -535,6 +534,8 @@
         : formatted_image_traits<Impl>::gil_to_native_format:: BOOST_NESTED_TEMPLATE apply<PixelType, IsPlanar>::type
     {};
 
+    template <typename T> struct get_native_format;
+
     template <typename PixelType, typename IsPlanar>
     struct get_native_format<mpl::pair<PixelType, IsPlanar> > : native_format<PixelType, IsPlanar::value> {};
 
@@ -595,7 +596,7 @@
         >::type first_layer_wrapper;
 
     public:
-        typedef typename base_writer_t::wrapper
+        typedef typename base_writer_t:: BOOST_NESTED_TEMPLATE wrapper
         <
             first_layer_wrapper,
             Target,
@@ -604,7 +605,7 @@
         > type;
     };
 
-    BOOST_STATIC_CONSTANT( bool, has_full_roi = (is_same<roi::offset_t, roi::point_t>::value) );
+    BOOST_STATIC_CONSTANT( bool, has_full_roi = (is_same<typename roi::offset_t, typename roi::point_t>::value) );
 
 protected:
     typedef          formatted_image                           base_t;
@@ -628,7 +629,7 @@
         {}
 
         template <class Image>
-        void apply() { impl_.copy_to( base::apply<Image>(), dimensions_policy(), formats_policy() ); }
+        void apply() { impl_.copy_to( base:: BOOST_NESTED_TEMPLATE apply<Image>(), dimensions_policy(), formats_policy() ); }
 
         template <typename SupportedFormatIndex>
         void operator()( SupportedFormatIndex const & ) { apply<typename mpl::at<SupportedFormatIndex>::type>(); }
@@ -709,7 +710,7 @@
     template <typename View>
     bool formats_mismatch() const
     {
-        return formats_mismatch( get_native_format<get_original_view_t<View>::type>::value );
+        return formats_mismatch( get_native_format<typename get_original_view_t<View>::type>::value );
     }
 
     bool formats_mismatch( typename formatted_image_traits<Impl>::format_t const other_format ) const
@@ -723,7 +724,7 @@
     template <typename View>
     bool can_do_inplace_transform() const
     {
-        return can_do_inplace_transform<View>( format() );
+        return can_do_inplace_transform<View>( impl().format() );
     }
 
     template <typename View>
@@ -822,12 +823,12 @@
     void copy_to( View const & view, assert_dimensions_match, synchronize_formats ) const
     {
         BOOST_ASSERT( !impl().dimensions_mismatch( view ) );
-        bool const can_use_raw
-        (
-            is_supported          <View>::value &&
+        typedef mpl::bool_
+        <
+            has_supported_format  <View>::value &&
             formatted_image_traits<Impl>::builtin_conversion
-        );
-        default_convert_to_worker( view, mpl::bool_<can_use_raw>() );
+        > can_use_raw_t;
+        default_convert_to_worker( view, can_use_raw_t() );
     }
     
     template <typename FormatConverter, typename View>
@@ -944,7 +945,7 @@
         }
 
         template <typename SrcP>
-        typename enable_if<is_pixel<SrcP>>::type
+        typename enable_if<is_pixel<SrcP> >::type
         operator()( SrcP & srcP )
         {
             convert_aux( srcP, is_planar<View>() );
@@ -994,7 +995,7 @@
         void operator()( mpl::integral_c<std::size_t, index> const & ) const
         {
             typedef typename mpl::at_c<supported_pixel_formats, index>::type::view_t my_view_t;
-            impl_.generic_convert_to_prepared_view<my_view_t>( view(), cc() );
+            impl_. BOOST_NESTED_TEMPLATE generic_convert_to_prepared_view<my_view_t>( view(), cc() );
         }
 
         void operator=( generic_converter_t const & other )
@@ -1057,7 +1058,7 @@
             mpl::bool_
             <
                 is_plain_in_memory_view<typename get_original_view_t<View>::type>::value &&
-                is_supported           <                             View       >::value
+                has_supported_format   <                             View       >::value
             >()
         );
     }
Modified: sandbox/gil/boost/gil/extension/io2/gp_image.hpp
==============================================================================
--- sandbox/gil/boost/gil/extension/io2/gp_image.hpp	(original)
+++ sandbox/gil/boost/gil/extension/io2/gp_image.hpp	2011-01-09 17:53:10 EST (Sun, 09 Jan 2011)
@@ -527,7 +527,7 @@
     ::Gdiplus::GpBitmap const & lib_object() const { return const_cast<gp_image &>( *this ).lib_object(); }
 
 private: // Private formatted_image_base interface.
-    friend base_t;
+    friend class base_t;
 
     template <class MyView, class TargetView, class Converter>
     void generic_convert_to_prepared_view( TargetView const & view, Converter const & converter ) const
Modified: sandbox/gil/boost/gil/extension/io2/libjpeg_image.hpp
==============================================================================
--- sandbox/gil/boost/gil/extension/io2/libjpeg_image.hpp	(original)
+++ sandbox/gil/boost/gil/extension/io2/libjpeg_image.hpp	2011-01-09 17:53:10 EST (Sun, 09 Jan 2011)
@@ -23,6 +23,7 @@
 #include "detail/shared.hpp"
 
 #include <boost/array.hpp>
+#include <boost/range/size.hpp>
 #include <boost/smart_ptr/scoped_array.hpp>
 
 #define JPEG_INTERNALS
@@ -266,8 +267,8 @@
         setup_compression( view );
 
         #ifndef BOOST_GIL_THROW_THROUGH_C_SUPPORTED
-            if ( setjmp( error_handler_target() ) )
-                throw_jpeg_error();
+            if ( setjmp( libjpeg_base::error_handler_target() ) )
+                libjpeg_base::throw_jpeg_error();
         #endif // BOOST_GIL_THROW_THROUGH_C_SUPPORTED
         jpeg_set_defaults( &compressor() );
         //jpeg_set_quality( &compressor(), 100, false );
@@ -295,8 +296,8 @@
         BOOST_ASSERT( view.format_ != JCS_UNKNOWN );
 
         #ifndef BOOST_GIL_THROW_THROUGH_C_SUPPORTED
-            if ( setjmp( error_handler_target() ) )
-                throw_jpeg_error();
+            if ( setjmp( libjpeg_base::error_handler_target() ) )
+                libjpeg_base::throw_jpeg_error();
         #endif // BOOST_GIL_THROW_THROUGH_C_SUPPORTED
         
         jpeg_start_compress( &compressor(), false );
@@ -315,7 +316,7 @@
         BOOST_VERIFY( jpeg_write_scanlines( &compressor(), &p_row, 1 ) == 1 );
     }
 
-    static libjpeg_writer & writer( j_compress_ptr const p_cinfo )
+    static libjpeg_writer & get_writer( j_compress_ptr const p_cinfo )
     {
         libjpeg_writer & writer( static_cast<libjpeg_writer &>( base( gil_reinterpret_cast<j_common_ptr>( p_cinfo ) ) ) );
         BOOST_ASSERT( p_cinfo->dest == &writer.destination_manager_ );
@@ -353,7 +354,7 @@
 
     static void __cdecl init_FILE_destination( j_compress_ptr const p_cinfo )
     {
-        libjpeg_writer & writer( writer( p_cinfo ) );
+        libjpeg_writer & writer( get_writer( p_cinfo ) );
 
         writer.destination_manager_.next_output_byte = writer.write_buffer_.begin();
         writer.destination_manager_.free_in_buffer   = writer.write_buffer_.size ();
@@ -376,7 +377,7 @@
     
     static boolean __cdecl empty_FILE_buffer( j_compress_ptr const p_cinfo )
     {
-        libjpeg_writer & writer( writer( p_cinfo ) );
+        libjpeg_writer & writer( get_writer( p_cinfo ) );
         writer.write_FILE_bytes( writer.write_buffer_.size() );
         init_FILE_destination( p_cinfo );
         return true;
@@ -384,7 +385,7 @@
 
     static void __cdecl term_FILE_destination( j_compress_ptr const p_cinfo )
     {
-        libjpeg_writer & writer( writer( p_cinfo ) );
+        libjpeg_writer & writer( get_writer( p_cinfo ) );
 
         std::size_t const remaining_bytes( writer.write_buffer_.size() - writer.destination_manager_.free_in_buffer );
 
@@ -395,7 +396,7 @@
     static void __cdecl term_and_close_FILE_destination( j_compress_ptr const p_cinfo )
     {
         term_FILE_destination( p_cinfo );
-        BOOST_VERIFY( /*std*/::fclose( static_cast<FILE *>( writer( p_cinfo ).compressor().client_data ) ) == 0 );
+        BOOST_VERIFY( /*std*/::fclose( static_cast<FILE *>( get_writer( p_cinfo ).compressor().client_data ) ) == 0 );
     }
 
 private:
@@ -538,8 +539,8 @@
         libjpeg_base( for_decompressor() )
     {
         #ifndef BOOST_GIL_THROW_THROUGH_C_SUPPORTED
-            if ( setjmp( error_handler_target() ) )
-                throw_jpeg_error();
+            if ( setjmp( libjpeg_base::error_handler_target() ) )
+                libjpeg_base::throw_jpeg_error();
         #endif // BOOST_GIL_THROW_THROUGH_C_SUPPORTED
 
         setup_source( memory_chunk );
@@ -552,8 +553,8 @@
         libjpeg_base( for_decompressor() )
     {
         #ifndef BOOST_GIL_THROW_THROUGH_C_SUPPORTED
-            if ( setjmp( error_handler_target() ) )
-                throw_jpeg_error();
+            if ( setjmp( libjpeg_base::error_handler_target() ) )
+                libjpeg_base::throw_jpeg_error();
         #endif // BOOST_GIL_THROW_THROUGH_C_SUPPORTED
 
         setup_source( file );
@@ -562,15 +563,15 @@
     }
 
 private: // Private interface for the base formatted_image<> class.
-    friend base_t;
+    friend class base_t;
 
     void raw_convert_to_prepared_view( detail::view_data_t const & view_data ) const throw(...)
     {
         setup_decompression( view_data );
 
         #ifndef BOOST_GIL_THROW_THROUGH_C_SUPPORTED
-            if ( setjmp( error_handler_target() ) )
-                throw_jpeg_error();
+            if ( setjmp( libjpeg_base::error_handler_target() ) )
+                libjpeg_base::throw_jpeg_error();
         #endif // BOOST_GIL_THROW_THROUGH_C_SUPPORTED
 
         JSAMPROW scanlines[ 4 ] =
@@ -581,7 +582,7 @@
             scanlines[ 2 ] + view_data.stride_
         };
 
-        BOOST_ASSERT( _countof( scanlines ) >= decompressor().rec_outbuf_height );
+        BOOST_ASSERT( boost::size( scanlines ) >= decompressor().rec_outbuf_height );
         unsigned int scanlines_to_read( view_data.height_ );
         for ( ; ; )
         {
@@ -591,7 +592,7 @@
                 read_scanlines
                 (
                     scanlines,
-                    (std::min)( _countof( scanlines ), scanlines_to_read )
+                    std::min<std::size_t>( boost::size( scanlines ), scanlines_to_read )
                 )
             );
             scanlines_to_read -= lines_read;
@@ -633,8 +634,8 @@
         BOOST_ASSERT( decompressor().output_components == decompressor().num_components );
         
         #ifndef BOOST_GIL_THROW_THROUGH_C_SUPPORTED
-            if ( setjmp( error_handler_target() ) )
-                throw_jpeg_error();
+            if ( setjmp( libjpeg_base::error_handler_target() ) )
+                libjpeg_base::throw_jpeg_error();
         #endif // BOOST_GIL_THROW_THROUGH_C_SUPPORTED
 
         unsigned int const scanlines_to_read( detail::original_view( view ).dimensions().y );
@@ -704,8 +705,8 @@
             );
 
             #ifndef BOOST_GIL_THROW_THROUGH_C_SUPPORTED
-                if ( setjmp( error_handler_target() ) )
-                    throw_jpeg_error();
+                if ( setjmp( libjpeg_base::error_handler_target() ) )
+                    libjpeg_base::throw_jpeg_error();
             #endif // BOOST_GIL_THROW_THROUGH_C_SUPPORTED
 
             if ( state == DSTATE_SCANNING )
@@ -753,7 +754,7 @@
 
         while ( number_of_rows_to_skip_using_raw )
         {
-            unsigned int const lines_to_read( _countof( dummy_component_2d_array ) );
+            unsigned int const lines_to_read( boost::size( dummy_component_2d_array ) );
             read_raw_data( dummy_scan_lines, lines_to_read );
             number_of_rows_to_skip_using_raw -= lines_to_read;
         }
@@ -864,7 +865,7 @@
 
     static void __cdecl init_FILE_source( j_decompress_ptr const p_cinfo )
     {
-        libjpeg_image & reader( reader( p_cinfo ) );
+        libjpeg_image & reader( get_reader( p_cinfo ) );
 
         reader.source_manager_.next_input_byte = reader.read_buffer_.begin();
         reader.source_manager_.bytes_in_buffer = 0;
@@ -872,7 +873,7 @@
 
     static boolean __cdecl fill_FILE_buffer( j_decompress_ptr const p_cinfo )
     {
-        libjpeg_image & reader( reader( p_cinfo ) );
+        libjpeg_image & reader( get_reader( p_cinfo ) );
 
         std::size_t bytes_read
         (
@@ -903,7 +904,7 @@
 
     static void __cdecl skip_FILE_data( j_decompress_ptr const p_cinfo, long num_bytes )
     {
-        libjpeg_image & reader( reader( p_cinfo ) );
+        libjpeg_image & reader( get_reader( p_cinfo ) );
 
         if ( static_cast<std::size_t>( num_bytes ) <= reader.source_manager_.bytes_in_buffer )
         {
@@ -927,7 +928,7 @@
     static void __cdecl term_and_close_FILE_source( j_decompress_ptr const p_cinfo )
     {
         term_FILE_source( p_cinfo );
-        BOOST_VERIFY( /*std*/::fclose( static_cast<FILE *>( reader( p_cinfo ).decompressor().client_data ) ) == 0 );
+        BOOST_VERIFY( /*std*/::fclose( static_cast<FILE *>( get_reader( p_cinfo ).decompressor().client_data ) ) == 0 );
     }
 
     static void __cdecl init_memory_chunk_source( j_decompress_ptr /*p_cinfo*/ )
@@ -942,7 +943,7 @@
 
     static void __cdecl skip_memory_chunk_data( j_decompress_ptr const p_cinfo, long num_bytes )
     {
-        libjpeg_image & reader( reader( p_cinfo ) );
+        libjpeg_image & reader( get_reader( p_cinfo ) );
 
         BOOST_ASSERT( static_cast<std::size_t>( num_bytes ) <= reader.source_manager_.bytes_in_buffer );
         reader.source_manager_.next_input_byte += num_bytes;
@@ -953,7 +954,7 @@
     {
     }
 
-    static libjpeg_image & reader(  j_decompress_ptr const p_cinfo )
+    static libjpeg_image & get_reader(  j_decompress_ptr const p_cinfo )
     {
         libjpeg_image & reader( static_cast<libjpeg_image &>( base( gil_reinterpret_cast<j_common_ptr>( p_cinfo ) ) ) );
         BOOST_ASSERT( p_cinfo->src == &reader.source_manager_ );
Modified: sandbox/gil/boost/gil/extension/io2/libpng_image.hpp
==============================================================================
--- sandbox/gil/boost/gil/extension/io2/libpng_image.hpp	(original)
+++ sandbox/gil/boost/gil/extension/io2/libpng_image.hpp	2011-01-09 17:53:10 EST (Sun, 09 Jan 2011)
@@ -23,6 +23,8 @@
 #include "detail/libx_shared.hpp"
 #include "detail/shared.hpp"
 
+#include "boost/scoped_array.hpp"
+
 #include "png.h"
 
 #ifndef BOOST_GIL_THROW_THROUGH_C_SUPPORTED
@@ -274,8 +276,8 @@
         BOOST_ASSERT( view.format_ != JCS_UNKNOWN );
 
         #ifndef BOOST_GIL_THROW_THROUGH_C_SUPPORTED
-            if ( setjmp( error_handler_target() ) )
-                throw_jpeg_error();
+		if ( setjmp( libpng_base::error_handler_target() ) )
+                detail::throw_libpng_error();
         #endif // BOOST_GIL_THROW_THROUGH_C_SUPPORTED
 
         if ( little_endian() )
@@ -530,8 +532,8 @@
     {
         using namespace detail;
 
-        std::size_t          const row_length  ( ::png_get_rowbytes( &png_object(), &info_object() ) );
-        scoped_ptr<png_byte> const p_row_buffer( new png_byte[ row_length ]                          );
+        std::size_t            const row_length  ( ::png_get_rowbytes( &png_object(), &info_object() ) );
+        scoped_array<png_byte> const p_row_buffer( new png_byte[ row_length ]                          );
 
         #ifndef BOOST_GIL_THROW_THROUGH_C_SUPPORTED
             if ( setjmp( error_handler_target() ) )
Modified: sandbox/gil/boost/gil/extension/io2/libtiff_image.hpp
==============================================================================
--- sandbox/gil/boost/gil/extension/io2/libtiff_image.hpp	(original)
+++ sandbox/gil/boost/gil/extension/io2/libtiff_image.hpp	2011-01-09 17:53:10 EST (Sun, 09 Jan 2011)
@@ -39,7 +39,13 @@
 
 #include <cstdio>
 #include <set>
-#include "io.h"
+#ifdef _MSC_VER
+    #include "io.h"
+#else
+    #include "sys/types.h"
+    #include "sys/stat.h"
+    #include "unistd.h"
+#endif // _MSC_VER
 //------------------------------------------------------------------------------
 namespace boost
 {
@@ -185,7 +191,13 @@
 
 inline toff_t FILE_size_proc( thandle_t const fd )
 {
-    return /*std*/::_filelength( /*std*/::_fileno( gil_reinterpret_cast<FILE *>( fd ) ) );
+    #ifdef _MSC_VER
+        return /*std*/::_filelength( /*std*/::_fileno( gil_reinterpret_cast<FILE *>( fd ) ) );
+    #else
+        struct stat file_status;
+        BOOST_VERIFY( ::fstat( ::fileno( gil_reinterpret_cast<FILE *>( fd ) ), &file_status ) == 0 );
+        return file_status.st_size;
+    #endif // _MSC_VER
 }
 
 inline int FILE_map_proc( thandle_t /*handle*/, tdata_t * /*pbase*/, toff_t * /*psize*/ )
@@ -264,7 +276,9 @@
 
     void set_format( full_format_t::format_id const format )
     {
-        BOOST_ASSERT( ( format_id_ == format ) && !"libtiff does not provide builtin conversion." );
+        #ifdef _DEBUG
+            BOOST_ASSERT( ( format_id_ == format ) && !"libtiff does not provide builtin conversion." );
+        #endif // _DEBUG
         ignore_unused_variable_warning( format );
     }
 
@@ -560,7 +574,7 @@
 
         BOOST_STATIC_CONSTANT( bool, throws_on_error = false );
 
-    private: friend libtiff_image;
+    private: friend class libtiff_image;
         sequential_row_access_state() : position_( 0 ) {}
 
         unsigned int position_;
@@ -659,8 +673,12 @@
     }
 
 private: // Private formatted_image_base interface.
-    friend base_t;
-    struct tile_setup_t : boost::noncopyable
+    friend class base_t;
+
+    struct tile_setup_t
+        #ifndef __clang__
+            : boost::noncopyable
+        #endif // __clang__
     {
         tile_setup_t( libtiff_image const & source, point2<std::ptrdiff_t> const & dimensions, offset_t const offset, bool const nptcc )
             :
@@ -1189,7 +1207,7 @@
     }
 
     template <typename Pixel>
-    class scanline_buffer_t : noncopyable
+    class scanline_buffer_t
     {
     public:
         scanline_buffer_t( libtiff_image const & tiff, mpl::true_ /*      nptcc  */ ) : buffer_( planar_scanline_buffer_aux( tiff              ) ) {}
@@ -1203,7 +1221,7 @@
     };
 
     template <typename Pixel>
-    class planar_scanline_buffer_t : noncopyable
+    class planar_scanline_buffer_t
     {
     public:
         planar_scanline_buffer_t( libtiff_image & image ) : buffer_( planar_scanline_buffer_aux( tiff ) ) {}
Modified: sandbox/gil/boost/gil/extension/io2/wic_image.hpp
==============================================================================
--- sandbox/gil/boost/gil/extension/io2/wic_image.hpp	(original)
+++ sandbox/gil/boost/gil/extension/io2/wic_image.hpp	2011-01-09 17:53:10 EST (Sun, 09 Jan 2011)
@@ -479,7 +479,7 @@
     lib_object_t & lib_object() { return lib_object_; }
 
 private: // Private formatted_image_base interface.
-    friend base_t;
+    friend class base_t;
 
     template <class MyView, class TargetView, class Converter>
     void generic_convert_to_prepared_view( TargetView const & view, Converter const & converter ) const