diff options
Diffstat (limited to 'boost/gil/io/make_backend.hpp')
-rw-r--r-- | boost/gil/io/make_backend.hpp | 179 |
1 files changed, 75 insertions, 104 deletions
diff --git a/boost/gil/io/make_backend.hpp b/boost/gil/io/make_backend.hpp index e0a4a1f5dd..a2ca6d8c6d 100644 --- a/boost/gil/io/make_backend.hpp +++ b/boost/gil/io/make_backend.hpp @@ -11,143 +11,114 @@ #include <boost/gil/io/get_reader.hpp> -#include <boost/utility/enable_if.hpp> +#include <boost/mpl/and.hpp> + +#include <type_traits> namespace boost { namespace gil { -template< typename String - , typename FormatTag - > +template <typename String, typename FormatTag> inline -typename get_reader_backend< String - , FormatTag - >::type -make_reader_backend( const String& file_name - , const image_read_settings< FormatTag >& settings - , typename enable_if< mpl::and_< detail::is_supported_path_spec< String > - , is_format_tag< FormatTag > - > - >::type* /* ptr */ = 0 - ) +auto make_reader_backend( + String const& file_name, image_read_settings<FormatTag> const& settings, + typename std::enable_if + < + mpl::and_ + < + detail::is_supported_path_spec<String>, + is_format_tag<FormatTag> + >::value + >::type* /*dummy*/ = nullptr) + -> typename get_reader_backend<String, FormatTag>::type { - typedef typename get_read_device< String - , FormatTag - >::type device_t; + using device_t = typename get_read_device<String, FormatTag>::type; - device_t device( detail::convert_to_native_string( file_name ) - , typename detail::file_stream_device< FormatTag >::read_tag() - ); + device_t device( + detail::convert_to_native_string(file_name), + typename detail::file_stream_device<FormatTag>::read_tag()); - return reader_backend< device_t, FormatTag >( device, settings ); + return reader_backend<device_t, FormatTag>(device, settings); } -template< typename FormatTag > +template <typename FormatTag> inline -typename get_reader_backend< std::wstring - , FormatTag - >::type -make_reader_backend( const std::wstring& file_name - , const image_read_settings< FormatTag >& settings - ) +auto make_reader_backend( + std::wstring const& file_name, image_read_settings<FormatTag> const& settings) + -> typename get_reader_backend<std::wstring, FormatTag>::type { - typedef typename get_read_device< std::wstring - , FormatTag - >::type device_t; - - const char* str = detail::convert_to_native_string( file_name ); + char const* str = detail::convert_to_native_string(file_name); - device_t device( str - , typename detail::file_stream_device< FormatTag >::read_tag() - ); + using device_t = typename get_read_device<std::wstring, FormatTag>::type; + device_t device(str, typename detail::file_stream_device<FormatTag>::read_tag()); - delete[] str; + delete[] str; // TODO: RAII - return reader_backend< device_t, FormatTag >( device, settings ); + return reader_backend<device_t, FormatTag>(device, settings); } #ifdef BOOST_GIL_IO_ADD_FS_PATH_SUPPORT -template< typename FormatTag > +template <typename FormatTag> inline -typename get_reader_backend< std::wstring - , FormatTag - >::type -make_reader_backend( const filesystem::path& path - , const image_read_settings< FormatTag >& settings - ) +auto make_reader_backend( + filesystem::path const& path, + image_read_settings<FormatTag> const& settings) + -> typename get_reader_backend<std::wstring, FormatTag>::type { - return make_reader_backend( path.wstring() - , settings - ); + return make_reader_backend(path.wstring(), settings); } -#endif // BOOST_GIL_IO_ADD_FS_PATH_SUPPORT +#endif // BOOST_GIL_IO_ADD_FS_PATH_SUPPORT -template< typename Device - , typename FormatTag - > +template <typename Device, typename FormatTag> inline -typename get_reader_backend< Device - , FormatTag - >::type -make_reader_backend( Device& io_dev - , const image_read_settings< FormatTag >& settings - , typename enable_if< mpl::and_< detail::is_adaptable_input_device< FormatTag - , Device - > - , is_format_tag< FormatTag > - > - >::type* /* ptr */ = 0 - ) +auto make_reader_backend(Device& io_dev, image_read_settings<FormatTag> const& settings, + typename std::enable_if + < + mpl::and_ + < + detail::is_adaptable_input_device<FormatTag, Device>, + is_format_tag<FormatTag> + >::value + >::type* /*dummy*/ = nullptr) + -> typename get_reader_backend<Device, FormatTag>::type { - typedef typename get_read_device< Device - , FormatTag - >::type device_t; - - device_t device( io_dev ); + using device_t = typename get_read_device<Device, FormatTag>::type; + device_t device(io_dev); - return reader_backend< device_t, FormatTag >( device, settings ); + return reader_backend<device_t, FormatTag>(device, settings); } - - -template< typename String - , typename FormatTag - > +template <typename String, typename FormatTag> inline -typename get_reader_backend< String - , FormatTag - >::type -make_reader_backend( const String& file_name - , const FormatTag& - , typename enable_if< mpl::and_< detail::is_supported_path_spec< String > - , is_format_tag< FormatTag > - > - >::type* /* ptr */ = 0 - ) +auto make_reader_backend(String const& file_name, FormatTag const&, + typename std::enable_if + < + mpl::and_ + < + detail::is_supported_path_spec<String>, + is_format_tag<FormatTag> + >::value + >::type* /*dummy*/ = nullptr) + -> typename get_reader_backend<String, FormatTag>::type { - return make_reader_backend( file_name, image_read_settings< FormatTag >() ); + return make_reader_backend(file_name, image_read_settings<FormatTag>()); } -template< typename Device - , typename FormatTag - > +template <typename Device, typename FormatTag> inline -typename get_reader_backend< Device - , FormatTag - >::type -make_reader_backend( Device& io_dev - , const FormatTag& - , typename enable_if< mpl::and_< detail::is_adaptable_input_device< FormatTag - , Device - > - , is_format_tag< FormatTag > - > - >::type* /* ptr */ = 0 - ) +auto make_reader_backend(Device& io_dev, FormatTag const&, + typename std::enable_if + < + mpl::and_ + < + detail::is_adaptable_input_device<FormatTag, Device>, + is_format_tag<FormatTag> + >::value + >::type* /*dummy*/ = nullptr) + -> typename get_reader_backend<Device, FormatTag>::type { - return make_reader_backend( io_dev, image_read_settings< FormatTag >() ); + return make_reader_backend(io_dev, image_read_settings<FormatTag>()); } -} // namespace gil -} // namespace boost +}} // namespace boost::gil #endif |