// Zlib Error // // Douglas Thrift // // $Id$ #ifndef _Zlib_Error_hpp_ #define _Zlib_Error_hpp_ #include #ifdef MENES_PRAGMA_ONCE #pragma once #endif #include #include #include namespace Zlib { class Error : public api::Error { int code; cse::String message; public: Error(gzFile file) : message(::gzerror(file, &code)) { if (code == Z_ERRNO) #if defined(API_HAS_POSIX) throw api::Posix::Error(); #endif } virtual int GetNumber() const { return code; } virtual cse::String GetMessage() const { return _S() << "Zlib[#" << code << "] " << message; } }; _finline gzFile CheckError(gzFile status) { if (status == NULL) throw Error(status); return status; } _finline int CheckError(int status, gzFile file) { if (status != Z_OK) throw Error(file); return status; } } #endif//_Zlib_Error_hpp_