/* Copyright © 2005-2007 Roger Leigh * * schroot is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * schroot is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see * . * *********************************************************************/ #ifndef SBUILD_CUSTOM_ERROR_H #define SBUILD_CUSTOM_ERROR_H #include #include namespace sbuild { /** * Custom error. */ template class custom_error : public error { public: /// The enum type providing the error codes for this type. typedef typename error::error_type error_type; /** * The constructor. * * @param error the error code. */ custom_error (error_type error): sbuild::error(this->format_error(null(), null(), null(), error, null(), null(), null()), this->format_reason(null(), null(), null(), error, null(), null(), null())) { } /** * The constructor. * * @param context the context of the error. * @param error the error code. */ template custom_error (C const& context, error_type error): sbuild::error(this->format_error(context, null(), null(), error, null(), null(), null()), this->format_reason(context, null(), null(), error, null(), null(), null())) { } /** * The constructor. * * @param error the error code. * @param detail the details of the error. */ template custom_error (error_type error, D const& detail): sbuild::error(this->format_error(null(), null(), null(), error, detail, null(), null()), this->format_reason(null(), null(), null(), error, detail, null(), null())) { } /** * The constructor. * * @param error the error code. * @param detail the details of the error. * @param detail2 additional details of the error. */ template custom_error (error_type error, D const& detail, E const& detail2): sbuild::error(this->format_error(null(), null(), null(), error, detail, detail2, null()), this->format_reason(null(), null(), null(), error, detail, detail2, null())) { } /** * The constructor. * * @param error the error code. * @param detail the details of the error. * @param detail2 additional details of the error. * @param detail3 additional details of the error. */ template custom_error (error_type error, D const& detail, E const& detail2, F const& detail3): sbuild::error(this->format_error(null(), null(), null(), error, detail, detail2, detail3), this->format_reason(null(), null(), null(), error, detail, detail2, detail3)) { } /** * The constructor. * * @param context the context of the error. * @param error the error code. * @param detail the details of the error. */ template custom_error (C const& context, error_type error, D const& detail): sbuild::error(this->format_error(context, null(), null(), error, detail, null(), null()), this->format_reason(context, null(), null(), error, detail, null(), null())) { } /** * The constructor. * * @param context the context of the error. * @param error the error code. * @param detail the details of the error. * @param detail2 additional details of the error. */ template custom_error (C const& context, error_type error, D const& detail, E const& detail2): sbuild::error(format_error(context, null(), null(), error, detail, detail2, null()), format_reason(context, null(), null(), error, detail, detail2, null())) { } /** * The constructor. * * @param context1 the context of the error. * @param context2 additional context of the error. * @param error the error code. * @param detail the details of the error. */ template custom_error (C const& context1, D const& context2, error_type error, E const& detail): sbuild::error(this->format_error(context1, context2, null(), error, detail, null(), null()), this->format_reason(context1, context2, null(), error, detail, null(), null())) { } /** * The constructor. * * @param context1 the context of the error. * @param context2 additional context of the error. * @param error the error code. * @param detail the details of the error. * @param detail2 additional details of the error. */ template custom_error (C const& context1, D const& context2, error_type error, E const& detail, F const& detail2): sbuild::error(format_error(context1, context2, null(), error, detail, detail2, null()), format_reason(context1, context2, null(), error, detail, detail2, null())) { } /** * The constructor. * * @param error the error. */ custom_error (std::runtime_error const& error): sbuild::error(sbuild::error::format_error(null(), null(), null(), error, null(), null(), null()), sbuild::error::format_reason(null(), null(), null(), error, null(), null(), null())) { } /** * The constructor. * * @param error the error. */ custom_error (error_base const& error): sbuild::error(sbuild::error::format_error(null(), null(), null(), error, null(), null(), null()), sbuild::error::format_reason(null(), null(), null(), error, null(), null(), null())) { } /** * The constructor. * * @param context the context of the error. * @param error the error. */ template custom_error (C const& context, std::runtime_error const& error): sbuild::error(sbuild::error::format_error(context, null(), null(), error, null(), null(), null()), sbuild::error::format_reason(context, null(), null(), error, null(), null(), null())) { } /** * The constructor. * * @param context the context of the error. * @param error the error. */ template custom_error (C const& context, error_base const& error): sbuild::error(sbuild::error::format_error(context, null(), null(), error, null(), null(), null()), sbuild::error::format_reason(context, null(), null(), error, null(), null(), null())) { } /// The destructor. virtual ~custom_error () throw () {} }; } #endif /* SBUILD_CUSTOM_ERROR_H */ /* * Local Variables: * mode:C++ * End: */