source: trunk/debathena/third/schroot/sbuild/sbuild-custom-error.h @ 24167

Revision 24167, 7.3 KB checked in by broder, 15 years ago (diff)
Import schroot upstream into subversion.
Line 
1/* Copyright © 2005-2007  Roger Leigh <rleigh@debian.org>
2 *
3 * schroot is free software: you can redistribute it and/or modify it
4 * under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 3 of the License, or
6 * (at your option) any later version.
7 *
8 * schroot is distributed in the hope that it will be useful, but
9 * WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 * General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program.  If not, see
15 * <http://www.gnu.org/licenses/>.
16 *
17 *********************************************************************/
18
19#ifndef SBUILD_CUSTOM_ERROR_H
20#define SBUILD_CUSTOM_ERROR_H
21
22#include <sbuild/sbuild-error.h>
23#include <sbuild/sbuild-null.h>
24
25namespace sbuild
26{
27
28  /**
29   * Custom error.
30   */
31  template <typename T>
32  class custom_error : public error<T>
33  {
34  public:
35    /// The enum type providing the error codes for this type.
36    typedef typename error<T>::error_type error_type;
37
38    /**
39     * The constructor.
40     *
41     * @param error the error code.
42     */
43    custom_error (error_type error):
44      sbuild::error<T>(format_error(null(), null(), null(), error, null(), null(), null()),
45                       format_reason(null(), null(), null(), error, null(), null(), null()))
46    {
47    }
48
49    /**
50     * The constructor.
51     *
52     * @param context the context of the error.
53     * @param error the error code.
54     */
55    template<typename C>
56    custom_error (C const&   context,
57                  error_type error):
58      sbuild::error<T>(format_error(context, null(), null(), error, null(), null(), null()),
59                       format_reason(context, null(), null(), error, null(), null(), null()))
60    {
61    }
62
63    /**
64     * The constructor.
65     *
66     * @param error the error code.
67     * @param detail the details of the error.
68     */
69    template<typename D>
70    custom_error (error_type error,
71                  D const&   detail):
72      sbuild::error<T>(format_error(null(), null(), null(), error, detail, null(), null()),
73                       format_reason(null(), null(), null(), error, detail, null(), null()))
74    {
75    }
76
77    /**
78     * The constructor.
79     *
80     * @param error the error code.
81     * @param detail the details of the error.
82     * @param detail2 additional details of the error.
83     */
84    template<typename D, typename E>
85    custom_error (error_type error,
86                  D const&   detail,
87                  E const&   detail2):
88      sbuild::error<T>(format_error(null(), null(), null(), error, detail, detail2, null()),
89                       format_reason(null(), null(), null(), error, detail, detail2, null()))
90    {
91    }
92
93    /**
94     * The constructor.
95     *
96     * @param error the error code.
97     * @param detail the details of the error.
98     * @param detail2 additional details of the error.
99     * @param detail3 additional details of the error.
100     */
101    template<typename D, typename E, typename F>
102    custom_error (error_type error,
103                  D const&   detail,
104                  E const&   detail2,
105                  F const&   detail3):
106      sbuild::error<T>(format_error(null(), null(), null(), error, detail, detail2, detail3),
107                       format_reason(null(), null(), null(), error, detail, detail2, detail3))
108    {
109    }
110
111    /**
112     * The constructor.
113     *
114     * @param context the context of the error.
115     * @param error the error code.
116     * @param detail the details of the error.
117     */
118    template<typename C, typename D>
119    custom_error (C const&   context,
120                  error_type error,
121                  D const&   detail):
122      sbuild::error<T>(format_error(context, null(), null(), error, detail, null(), null()),
123                       format_reason(context, null(), null(), error, detail, null(), null()))
124    {
125    }
126
127    /**
128     * The constructor.
129     *
130     * @param context the context of the error.
131     * @param error the error code.
132     * @param detail the details of the error.
133     * @param detail2 additional details of the error.
134     */
135    template<typename C, typename D, typename E>
136    custom_error (C const&   context,
137                  error_type error,
138                  D const&   detail,
139                  E const&   detail2):
140      sbuild::error<T>(format_error(context, null(), null(), error, detail, detail2, null()),
141                       format_reason(context, null(), null(), error, detail, detail2, null()))
142    {
143    }
144
145    /**
146     * The constructor.
147     *
148     * @param context1 the context of the error.
149     * @param context2 additional context of the error.
150     * @param error the error code.
151     * @param detail the details of the error.
152     */
153    template<typename C, typename D, typename E>
154    custom_error (C const&   context1,
155                  D const&   context2,
156                  error_type error,
157                  E const&   detail):
158      sbuild::error<T>(format_error(context1, context2, null(), error, detail, null(), null()),
159                       format_reason(context1, context2, null(), error, detail, null(), null()))
160    {
161    }
162
163    /**
164     * The constructor.
165     *
166     * @param context1 the context of the error.
167     * @param context2 additional context of the error.
168     * @param error the error code.
169     * @param detail the details of the error.
170     * @param detail2 additional details of the error.
171     */
172    template<typename C, typename D, typename E, typename F>
173    custom_error (C const&   context1,
174                  D const&   context2,
175                  error_type error,
176                  E const&   detail,
177                  F const&   detail2):
178      sbuild::error<T>(format_error(context1, context2, null(), error, detail, detail2, null()),
179                       format_reason(context1, context2, null(), error, detail, detail2, null()))
180    {
181    }
182
183    /**
184     * The constructor.
185     *
186     * @param error the error.
187     */
188    custom_error (std::runtime_error const& error):
189      sbuild::error<T>(sbuild::error<T>::format_error(null(), null(), null(), error, null(), null(), null()),
190                       sbuild::error<T>::format_reason(null(), null(), null(), error, null(), null(), null()))
191    {
192    }
193
194    /**
195     * The constructor.
196     *
197     * @param error the error.
198     */
199    custom_error (error_base const& error):
200      sbuild::error<T>(sbuild::error<T>::format_error(null(), null(), null(), error, null(), null(), null()),
201                       sbuild::error<T>::format_reason(null(), null(), null(), error, null(), null(), null()))
202    {
203    }
204
205    /**
206     * The constructor.
207     *
208     * @param context the context of the error.
209     * @param error the error.
210     */
211    template<typename C>
212    custom_error (C const&                  context,
213                  std::runtime_error const& error):
214      sbuild::error<T>(sbuild::error<T>::format_error(context, null(), null(), error, null(), null(), null()),
215                       sbuild::error<T>::format_reason(context, null(), null(), error, null(), null(), null()))
216    {
217    }
218
219    /**
220     * The constructor.
221     *
222     * @param context the context of the error.
223     * @param error the error.
224     */
225    template<typename C>
226    custom_error (C const&          context,
227                  error_base const& error):
228      sbuild::error<T>(sbuild::error<T>::format_error(context, null(), null(), error, null(), null(), null()),
229                       sbuild::error<T>::format_reason(context, null(), null(), error, null(), null(), null()))
230    {
231    }
232
233    /// The destructor.
234    virtual ~custom_error () throw ()
235    {}
236  };
237
238}
239
240#endif /* SBUILD_CUSTOM_ERROR_H */
241
242/*
243 * Local Variables:
244 * mode:C++
245 * End:
246 */
Note: See TracBrowser for help on using the repository browser.