+
+/** @class TextSubtitleError
+ * @brief An error that occurs while parsing a TextSubtitleError file.
+ */
+class TextSubtitleError : public FileError
+{
+public:
+ TextSubtitleError (std::string, std::string, boost::filesystem::path);
+};
+
+
+class DCPError : public std::runtime_error
+{
+public:
+ explicit DCPError (std::string s)
+ : std::runtime_error (s)
+ {}
+};
+
+
+/** @class ProjectFolderError
+ * @brief An attempt has been made to read a DCP from a directory, but it looks
+ * like the directory actually contains a DCP-o-matic project.
+ */
+class ProjectFolderError : public DCPError
+{
+public:
+ /* Code which catches this exception will provide their own message */
+ ProjectFolderError ()
+ : DCPError ("dummy")
+ {}
+};
+
+
+class InvalidSignerError : public std::runtime_error
+{
+public:
+ InvalidSignerError ();
+ explicit InvalidSignerError (std::string reason);
+};
+
+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