barrier/lib/base/XBase.h

69 lines
1.3 KiB
C
Raw Normal View History

2001-10-06 14:13:28 +00:00
#ifndef XBASE_H
#define XBASE_H
#include "CString.h"
#include "stdpre.h"
2001-10-06 14:13:28 +00:00
#include <exception>
#include "stdpost.h"
2001-10-06 14:13:28 +00:00
//! Exception base class
/*!
This is the base class of most exception types.
*/
2001-10-06 14:13:28 +00:00
class XBase : public std::exception {
2002-04-29 14:40:01 +00:00
public:
//! Use getWhat() as the result of what()
2001-10-06 14:13:28 +00:00
XBase();
//! Use \c msg as the result of what()
2001-10-06 14:13:28 +00:00
XBase(const CString& msg);
virtual ~XBase();
// std::exception overrides
virtual const char* what() const;
2002-04-29 14:40:01 +00:00
protected:
//! Get a human readable string describing the exception
2001-10-06 14:13:28 +00:00
virtual CString getWhat() const throw() = 0;
//! Format a string
/*!
Looks up a message format using \c id, using \c defaultFormat if
no format can be found, then replaces positional parameters in
the format string and returns the result.
*/
2001-10-06 14:13:28 +00:00
virtual CString format(const char* id,
const char* defaultFormat, ...) const throw();
2001-10-06 14:13:28 +00:00
2002-04-29 14:40:01 +00:00
private:
2001-10-06 14:13:28 +00:00
mutable CString m_what;
};
//! Mix-in for handling \c errno
/*!
This mix-in class for exception classes provides storage and query of
\c errno.
*/
2001-10-06 14:13:28 +00:00
class MXErrno {
2002-04-29 14:40:01 +00:00
public:
//! Save \c errno as the error code
2001-10-06 14:13:28 +00:00
MXErrno();
//! Save \c err as the error code
MXErrno(int err);
2001-10-06 14:13:28 +00:00
//! @name accessors
//@{
2001-10-06 14:13:28 +00:00
//! Get the error code
2001-10-06 14:13:28 +00:00
int getErrno() const;
//! Get the human readable string for the error code
2001-10-06 14:13:28 +00:00
const char* getErrstr() const;
//@}
2002-04-29 14:40:01 +00:00
private:
2001-10-06 14:13:28 +00:00
int m_errno;
};
#endif