Chris@559
|
1 /************************************************************************/
|
Chris@559
|
2 /*! \class RtError
|
Chris@559
|
3 \brief Exception handling class for RtAudio & RtMidi.
|
Chris@559
|
4
|
Chris@559
|
5 The RtError class is quite simple but it does allow errors to be
|
Chris@559
|
6 "caught" by RtError::Type. See the RtAudio and RtMidi
|
Chris@559
|
7 documentation to know which methods can throw an RtError.
|
Chris@559
|
8
|
Chris@559
|
9 */
|
Chris@559
|
10 /************************************************************************/
|
Chris@559
|
11
|
Chris@559
|
12 #ifndef RTERROR_H
|
Chris@559
|
13 #define RTERROR_H
|
Chris@559
|
14
|
Chris@559
|
15 #include <iostream>
|
Chris@559
|
16 #include <string>
|
Chris@559
|
17
|
Chris@559
|
18 class RtError
|
Chris@559
|
19 {
|
Chris@559
|
20 public:
|
Chris@559
|
21 //! Defined RtError types.
|
Chris@559
|
22 enum Type {
|
Chris@559
|
23 WARNING, /*!< A non-critical error. */
|
Chris@559
|
24 DEBUG_WARNING, /*!< A non-critical error which might be useful for debugging. */
|
Chris@559
|
25 UNSPECIFIED, /*!< The default, unspecified error type. */
|
Chris@559
|
26 NO_DEVICES_FOUND, /*!< No devices found on system. */
|
Chris@559
|
27 INVALID_DEVICE, /*!< An invalid device ID was specified. */
|
Chris@559
|
28 INVALID_STREAM, /*!< An invalid stream ID was specified. */
|
Chris@559
|
29 MEMORY_ERROR, /*!< An error occured during memory allocation. */
|
Chris@559
|
30 INVALID_PARAMETER, /*!< An invalid parameter was specified to a function. */
|
Chris@559
|
31 DRIVER_ERROR, /*!< A system driver error occured. */
|
Chris@559
|
32 SYSTEM_ERROR, /*!< A system error occured. */
|
Chris@559
|
33 THREAD_ERROR /*!< A thread error occured. */
|
Chris@559
|
34 };
|
Chris@559
|
35
|
Chris@559
|
36 protected:
|
Chris@559
|
37 std::string message_;
|
Chris@559
|
38 Type type_;
|
Chris@559
|
39
|
Chris@559
|
40 public:
|
Chris@559
|
41 //! The constructor.
|
Chris@559
|
42 RtError(const std::string& message, Type type = RtError::UNSPECIFIED) : message_(message), type_(type) {}
|
Chris@559
|
43
|
Chris@559
|
44 //! The destructor.
|
Chris@559
|
45 virtual ~RtError(void) {};
|
Chris@559
|
46
|
Chris@559
|
47 //! Prints thrown error message to stderr.
|
Chris@559
|
48 virtual void printMessage(void) { std::cerr << '\n' << message_ << "\n\n"; }
|
Chris@559
|
49
|
Chris@559
|
50 //! Returns the thrown error message type.
|
Chris@559
|
51 virtual const Type& getType(void) { return type_; }
|
Chris@559
|
52
|
Chris@559
|
53 //! Returns the thrown error message string.
|
Chris@559
|
54 virtual const std::string& getMessage(void) { return message_; }
|
Chris@559
|
55
|
Chris@559
|
56 //! Returns the thrown error message as a C string.
|
Chris@559
|
57 virtual const char *getMessageString(void) { return message_.c_str(); }
|
Chris@559
|
58 };
|
Chris@559
|
59
|
Chris@559
|
60 #endif
|