xref: /haiku/src/tools/restest/Exception.h (revision 52a380120846174213ccce9c4aab0dda17c72083)
1*52a38012Sejakowatz // Exception
2*52a38012Sejakowatz 
3*52a38012Sejakowatz #ifndef EXCEPTION_H
4*52a38012Sejakowatz #define EXCEPTION_H
5*52a38012Sejakowatz 
6*52a38012Sejakowatz #include <stdarg.h>
7*52a38012Sejakowatz #include <stdio.h>
8*52a38012Sejakowatz 
9*52a38012Sejakowatz #include <String.h>
10*52a38012Sejakowatz 
11*52a38012Sejakowatz class Exception {
12*52a38012Sejakowatz public:
13*52a38012Sejakowatz 	// constructor
Exception()14*52a38012Sejakowatz 	Exception()
15*52a38012Sejakowatz 		: fError(B_OK),
16*52a38012Sejakowatz 		  fDescription()
17*52a38012Sejakowatz 	{
18*52a38012Sejakowatz 	}
19*52a38012Sejakowatz 
20*52a38012Sejakowatz 	// constructor
Exception(BString description)21*52a38012Sejakowatz 	Exception(BString description)
22*52a38012Sejakowatz 		: fError(B_OK),
23*52a38012Sejakowatz 		  fDescription(description)
24*52a38012Sejakowatz 	{
25*52a38012Sejakowatz 	}
26*52a38012Sejakowatz 
27*52a38012Sejakowatz 	// constructor
Exception(const char * format,...)28*52a38012Sejakowatz 	Exception(const char* format,...)
29*52a38012Sejakowatz 		: fError(B_OK),
30*52a38012Sejakowatz 		  fDescription()
31*52a38012Sejakowatz 	{
32*52a38012Sejakowatz 		va_list args;
33*52a38012Sejakowatz 		va_start(args, format);
34*52a38012Sejakowatz 		SetTo(B_OK, format, args);
35*52a38012Sejakowatz 		va_end(args);
36*52a38012Sejakowatz 	}
37*52a38012Sejakowatz 
38*52a38012Sejakowatz 	// constructor
Exception(status_t error)39*52a38012Sejakowatz 	Exception(status_t error)
40*52a38012Sejakowatz 		: fError(error),
41*52a38012Sejakowatz 		  fDescription()
42*52a38012Sejakowatz 	{
43*52a38012Sejakowatz 	}
44*52a38012Sejakowatz 
45*52a38012Sejakowatz 	// constructor
Exception(status_t error,BString description)46*52a38012Sejakowatz 	Exception(status_t error, BString description)
47*52a38012Sejakowatz 		: fError(error),
48*52a38012Sejakowatz 		  fDescription(description)
49*52a38012Sejakowatz 	{
50*52a38012Sejakowatz 	}
51*52a38012Sejakowatz 
52*52a38012Sejakowatz 	// constructor
Exception(status_t error,const char * format,...)53*52a38012Sejakowatz 	Exception(status_t error, const char* format,...)
54*52a38012Sejakowatz 		: fError(error),
55*52a38012Sejakowatz 		  fDescription()
56*52a38012Sejakowatz 	{
57*52a38012Sejakowatz 		va_list args;
58*52a38012Sejakowatz 		va_start(args, format);
59*52a38012Sejakowatz 		SetTo(error, format, args);
60*52a38012Sejakowatz 		va_end(args);
61*52a38012Sejakowatz 	}
62*52a38012Sejakowatz 
63*52a38012Sejakowatz 	// copy constructor
Exception(const Exception & exception)64*52a38012Sejakowatz 	Exception(const Exception& exception)
65*52a38012Sejakowatz 		: fError(exception.fError),
66*52a38012Sejakowatz 		  fDescription(exception.fDescription)
67*52a38012Sejakowatz 	{
68*52a38012Sejakowatz 	}
69*52a38012Sejakowatz 
70*52a38012Sejakowatz 	// destructor
~Exception()71*52a38012Sejakowatz 	~Exception()
72*52a38012Sejakowatz 	{
73*52a38012Sejakowatz 	}
74*52a38012Sejakowatz 
75*52a38012Sejakowatz 	// SetTo
SetTo(status_t error,BString description)76*52a38012Sejakowatz 	void SetTo(status_t error, BString description)
77*52a38012Sejakowatz 	{
78*52a38012Sejakowatz 		fError = error;
79*52a38012Sejakowatz 		fDescription.SetTo(description);
80*52a38012Sejakowatz 	}
81*52a38012Sejakowatz 
82*52a38012Sejakowatz 	// SetTo
SetTo(status_t error,const char * format,va_list arg)83*52a38012Sejakowatz 	void SetTo(status_t error, const char* format, va_list arg)
84*52a38012Sejakowatz 	{
85*52a38012Sejakowatz 		char buffer[2048];
86*52a38012Sejakowatz 		vsprintf(buffer, format, arg);
87*52a38012Sejakowatz 		SetTo(error, BString(buffer));
88*52a38012Sejakowatz 	}
89*52a38012Sejakowatz 
90*52a38012Sejakowatz 	// GetError
GetError()91*52a38012Sejakowatz 	status_t GetError() const
92*52a38012Sejakowatz 	{
93*52a38012Sejakowatz 		return fError;
94*52a38012Sejakowatz 	}
95*52a38012Sejakowatz 
96*52a38012Sejakowatz 	// GetDescription
GetDescription()97*52a38012Sejakowatz 	const char* GetDescription() const
98*52a38012Sejakowatz 	{
99*52a38012Sejakowatz 		return fDescription.String();
100*52a38012Sejakowatz 	}
101*52a38012Sejakowatz 
102*52a38012Sejakowatz private:
103*52a38012Sejakowatz 	status_t	fError;
104*52a38012Sejakowatz 	BString		fDescription;
105*52a38012Sejakowatz };
106*52a38012Sejakowatz 
107*52a38012Sejakowatz #endif	// EXCEPTION_H
108