diff options
author | Mike Buland <eichlan@xagasoft.com> | 2007-04-03 04:50:36 +0000 |
---|---|---|
committer | Mike Buland <eichlan@xagasoft.com> | 2007-04-03 04:50:36 +0000 |
commit | da89e6d30e57bd6dbb10b4d36b093ce9bbf5c666 (patch) | |
tree | 0c8d31d13521011dc52a3fbadbf9e7e27929308f /src/exceptionbase.cpp | |
parent | f4c20290509d7ed3a8fd5304577e7a4cc0b9d974 (diff) | |
download | libbu++-da89e6d30e57bd6dbb10b4d36b093ce9bbf5c666.tar.gz libbu++-da89e6d30e57bd6dbb10b4d36b093ce9bbf5c666.tar.bz2 libbu++-da89e6d30e57bd6dbb10b4d36b093ce9bbf5c666.tar.xz libbu++-da89e6d30e57bd6dbb10b4d36b093ce9bbf5c666.zip |
The first batch seem to have made it alright. Unfortunately the Archive class
isn't done yet, I'm going to make it rely on streams, so those will be next,
then we can make it work all sortsa' well.
Diffstat (limited to 'src/exceptionbase.cpp')
-rw-r--r-- | src/exceptionbase.cpp | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/src/exceptionbase.cpp b/src/exceptionbase.cpp new file mode 100644 index 0000000..f6ec625 --- /dev/null +++ b/src/exceptionbase.cpp | |||
@@ -0,0 +1,70 @@ | |||
1 | #include "exceptionbase.h" | ||
2 | #include <stdarg.h> | ||
3 | |||
4 | Bu::ExceptionBase::ExceptionBase( const char *lpFormat, ... ) throw() : | ||
5 | nErrorCode( 0 ), | ||
6 | sWhat( NULL ) | ||
7 | { | ||
8 | va_list ap; | ||
9 | |||
10 | va_start(ap, lpFormat); | ||
11 | setWhat( lpFormat, ap ); | ||
12 | va_end(ap); | ||
13 | } | ||
14 | |||
15 | Bu::ExceptionBase::ExceptionBase( int nCode, const char *lpFormat, ... ) throw() : | ||
16 | nErrorCode( nCode ), | ||
17 | sWhat( NULL ) | ||
18 | { | ||
19 | va_list ap; | ||
20 | |||
21 | va_start(ap, lpFormat); | ||
22 | setWhat( lpFormat, ap ); | ||
23 | va_end(ap); | ||
24 | } | ||
25 | |||
26 | Bu::ExceptionBase::ExceptionBase( int nCode ) throw() : | ||
27 | nErrorCode( nCode ), | ||
28 | sWhat( NULL ) | ||
29 | { | ||
30 | } | ||
31 | |||
32 | Bu::ExceptionBase::~ExceptionBase() throw() | ||
33 | { | ||
34 | if( sWhat ) | ||
35 | { | ||
36 | delete[] sWhat; | ||
37 | sWhat = NULL; | ||
38 | } | ||
39 | } | ||
40 | |||
41 | void Bu::ExceptionBase::setWhat( const char *lpFormat, va_list &vargs ) | ||
42 | { | ||
43 | if( sWhat ) delete[] sWhat; | ||
44 | int nSize; | ||
45 | |||
46 | nSize = vsnprintf( NULL, 0, lpFormat, vargs ); | ||
47 | sWhat = new char[nSize+1]; | ||
48 | vsnprintf( sWhat, nSize+1, lpFormat, vargs ); | ||
49 | } | ||
50 | |||
51 | void Bu::ExceptionBase::setWhat( const char *lpText ) | ||
52 | { | ||
53 | if( sWhat ) delete[] sWhat; | ||
54 | int nSize; | ||
55 | |||
56 | nSize = strlen( lpText ); | ||
57 | sWhat = new char[nSize+1]; | ||
58 | strcpy( sWhat, lpText ); | ||
59 | } | ||
60 | |||
61 | const char *Bu::ExceptionBase::what() const throw() | ||
62 | { | ||
63 | return sWhat; | ||
64 | } | ||
65 | |||
66 | int Bu::ExceptionBase::getErrorCode() | ||
67 | { | ||
68 | return nErrorCode; | ||
69 | } | ||
70 | |||