152a38012Sejakowatz // Exception 252a38012Sejakowatz 382b75665STyler Dauwalder #ifndef _EXCEPTION_H 482b75665STyler Dauwalder #define _EXCEPTION_H 552a38012Sejakowatz 652a38012Sejakowatz #include <stdarg.h> 752a38012Sejakowatz #include <stdio.h> 852a38012Sejakowatz 952a38012Sejakowatz #include <String.h> 1052a38012Sejakowatz 11*09d84e61STyler Dauwalder namespace BPrivate { 12*09d84e61STyler Dauwalder namespace Storage { 1352a38012Sejakowatz 1452a38012Sejakowatz class Exception { 1552a38012Sejakowatz public: 1652a38012Sejakowatz // constructor Exception()1752a38012Sejakowatz Exception() 1852a38012Sejakowatz : fError(B_OK), 1952a38012Sejakowatz fDescription() 2052a38012Sejakowatz { 2152a38012Sejakowatz } 2252a38012Sejakowatz 2352a38012Sejakowatz // constructor Exception(BString description)2452a38012Sejakowatz Exception(BString description) 2552a38012Sejakowatz : fError(B_OK), 2652a38012Sejakowatz fDescription(description) 2752a38012Sejakowatz { 2852a38012Sejakowatz } 2952a38012Sejakowatz 3052a38012Sejakowatz // constructor Exception(const char * format,...)3152a38012Sejakowatz Exception(const char* format,...) 3252a38012Sejakowatz : fError(B_OK), 3352a38012Sejakowatz fDescription() 3452a38012Sejakowatz { 3552a38012Sejakowatz va_list args; 3652a38012Sejakowatz va_start(args, format); 3752a38012Sejakowatz SetTo(B_OK, format, args); 3852a38012Sejakowatz va_end(args); 3952a38012Sejakowatz } 4052a38012Sejakowatz 4152a38012Sejakowatz // constructor Exception(status_t error)4252a38012Sejakowatz Exception(status_t error) 4352a38012Sejakowatz : fError(error), 4452a38012Sejakowatz fDescription() 4552a38012Sejakowatz { 4652a38012Sejakowatz } 4752a38012Sejakowatz 4852a38012Sejakowatz // constructor Exception(status_t error,BString description)4952a38012Sejakowatz Exception(status_t error, BString description) 5052a38012Sejakowatz : fError(error), 5152a38012Sejakowatz fDescription(description) 5252a38012Sejakowatz { 5352a38012Sejakowatz } 5452a38012Sejakowatz 5552a38012Sejakowatz // constructor Exception(status_t error,const char * format,...)5652a38012Sejakowatz Exception(status_t error, const char* format,...) 5752a38012Sejakowatz : fError(error), 5852a38012Sejakowatz fDescription() 5952a38012Sejakowatz { 6052a38012Sejakowatz va_list args; 6152a38012Sejakowatz va_start(args, format); 6252a38012Sejakowatz SetTo(error, format, args); 6352a38012Sejakowatz va_end(args); 6452a38012Sejakowatz } 6552a38012Sejakowatz 6652a38012Sejakowatz // copy constructor Exception(const Exception & exception)6752a38012Sejakowatz Exception(const Exception& exception) 6852a38012Sejakowatz : fError(exception.fError), 6952a38012Sejakowatz fDescription(exception.fDescription) 7052a38012Sejakowatz { 7152a38012Sejakowatz } 7252a38012Sejakowatz 7352a38012Sejakowatz // destructor ~Exception()7452a38012Sejakowatz ~Exception() 7552a38012Sejakowatz { 7652a38012Sejakowatz } 7752a38012Sejakowatz 7852a38012Sejakowatz // SetTo SetTo(status_t error,BString description)7952a38012Sejakowatz void SetTo(status_t error, BString description) 8052a38012Sejakowatz { 8152a38012Sejakowatz fError = error; 8252a38012Sejakowatz fDescription.SetTo(description); 8352a38012Sejakowatz } 8452a38012Sejakowatz 8552a38012Sejakowatz // SetTo SetTo(status_t error,const char * format,va_list arg)8652a38012Sejakowatz void SetTo(status_t error, const char* format, va_list arg) 8752a38012Sejakowatz { 8852a38012Sejakowatz char buffer[2048]; 8952a38012Sejakowatz vsprintf(buffer, format, arg); 9052a38012Sejakowatz SetTo(error, BString(buffer)); 9152a38012Sejakowatz } 9252a38012Sejakowatz 9352a38012Sejakowatz // GetError Error()9452a38012Sejakowatz status_t Error() const 9552a38012Sejakowatz { 9652a38012Sejakowatz return fError; 9752a38012Sejakowatz } 9852a38012Sejakowatz 9952a38012Sejakowatz // GetDescription Description()10052a38012Sejakowatz const char* Description() const 10152a38012Sejakowatz { 10252a38012Sejakowatz return fDescription.String(); 10352a38012Sejakowatz } 10452a38012Sejakowatz 10552a38012Sejakowatz private: 10652a38012Sejakowatz status_t fError; 10752a38012Sejakowatz BString fDescription; 10852a38012Sejakowatz }; 10952a38012Sejakowatz 110*09d84e61STyler Dauwalder }; // namespace Storage 111*09d84e61STyler Dauwalder }; // namespace BPrivate 11252a38012Sejakowatz 11382b75665STyler Dauwalder #endif // _EXCEPTION_H 114*09d84e61STyler Dauwalder 115*09d84e61STyler Dauwalder 116