annotate data/midi/rtmidi/RtError.h @ 1247:8f076d02569a piper

Make SVDEBUG always write to a log file -- formerly this was disabled in NDEBUG builds. I think there's little use to that, it just means that we keep adding more cerr debug output because we aren't getting the log we need. And SVDEBUG logging is not usually used in tight loops, I don't think the performance overhead is too serious. Also update the About box.
author Chris Cannam
date Thu, 03 Nov 2016 14:57:00 +0000
parents 32d156c75df7
children
rev   line source
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