io_error.hppGo to the documentation of this file.00001 /* 00002 Copyright 2005-2007 Adobe Systems Incorporated 00003 00004 Use, modification and distribution are subject to the Boost Software License, 00005 Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at 00006 http://www.boost.org/LICENSE_1_0.txt). 00007 00008 See http://opensource.adobe.com/gil for most recent version including documentation. 00009 */ 00010 /*************************************************************************************************/ 00011 00012 #ifndef GIL_IO_ERROR_H 00013 #define GIL_IO_ERROR_H 00014 00020 00021 #include <ios> 00022 #include "../../gil_config.hpp" 00023 #include <boost/shared_ptr.hpp> 00024 00025 namespace boost { namespace gil { 00026 00027 inline void io_error(const char* descr) { throw std::ios_base::failure(descr); } 00028 inline void io_error_if(bool expr, const char* descr="") { if (expr) io_error(descr); } 00029 00030 namespace detail { 00031 class file_mgr { 00032 protected: 00033 shared_ptr<FILE> _fp; 00034 00035 struct null_deleter { void operator()(void const*) const {} }; 00036 file_mgr(FILE* file) : _fp(file, null_deleter()) {} 00037 00038 file_mgr(const char* filename, const char* flags) { 00039 FILE* fp; 00040 io_error_if((fp=fopen(filename,flags))==NULL, "file_mgr: failed to open file"); 00041 _fp=shared_ptr<FILE>(fp,fclose); 00042 } 00043 00044 public: 00045 FILE* get() { return _fp.get(); } 00046 }; 00047 } 00048 00049 } } // namespace boost::gil 00050 00051 #endif Generated on Sat May 2 13:50:14 2009 for Generic Image Library by 1.5.6 |