-/** @class ExceptionStore
- * @brief A parent class for classes which have a need to catch and
- * re-throw exceptions.
- *
- * This is intended for classes which run their own thread; they should do
- * something like
- *
- * void my_thread ()
- * try {
- * // do things which might throw exceptions
- * } catch (...) {
- * store_current ();
- * }
- *
- * and then in another thread call rethrow(). If any
- * exception was thrown by my_thread it will be stored by
- * store_current() and then rethrow() will re-throw it where
- * it can be handled.
+class ProgrammingError : public std::runtime_error
+{
+public:
+ ProgrammingError (std::string file, int line, std::string message = "");
+};
+
+class TextEncodingError : public std::runtime_error
+{
+public:
+ explicit TextEncodingError (std::string s)
+ : std::runtime_error (s)
+ {}
+};
+
+class MetadataError : public std::runtime_error
+{
+public:
+ explicit MetadataError (std::string s)
+ : std::runtime_error (s)
+ {}
+};
+
+class OldFormatError : public std::runtime_error
+{
+public:
+ explicit OldFormatError (std::string s)
+ : std::runtime_error (s)
+ {}
+};
+
+class KDMAsContentError : public std::runtime_error
+{
+public:
+ KDMAsContentError ();
+};
+
+class GLError : public std::runtime_error
+{
+public:
+ GLError (char const * last, int e);
+};
+
+/** @class CopyError
+ * @brief An error which occurs when copying a DCP to a distribution drive.