Try to fix comparison of encrypted sound assets.
[libdcp.git] / src / exceptions.h
index 5d8000d710418db8ebd80ade1de5f70ab0d92244..801bfb019a92d80f309407fe9fd7d754ed536398 100644 (file)
@@ -32,17 +32,12 @@ namespace dcp
 /** @class FileError
  *  @brief An exception related to a file
  */
-class FileError : public std::exception
+class FileError : public std::runtime_error
 {
 public:
        FileError (std::string message, boost::filesystem::path filename, int number);
        ~FileError () throw () {}
 
-       /** @return error message */
-       char const * what () const throw () {
-               return _message.c_str ();
-       }
-       
        /** @return filename of file that was involved */
        boost::filesystem::path filename () const {
                return _filename;
@@ -54,8 +49,6 @@ public:
        }
 
 private:
-       /** message part */
-       std::string _message;
        /** filename of file that was involved */
        boost::filesystem::path _filename;
        int _number;
@@ -71,45 +64,27 @@ public:
                : FileError (message, filename, number)
        {}
 };
-       
+
 /** @class MiscError
  *  @brief A miscellaneous exception
  */
-class MiscError : public std::exception
+class MiscError : public std::runtime_error
 {
 public:
-       MiscError (std::string message) : _message (message) {}
-       ~MiscError () throw () {}
-
-       /** @return error message */
-       char const * what () const throw () {
-               return _message.c_str ();
-       }
-
-private:
-       /** error message */
-       std::string _message;
+       MiscError (std::string message)
+               : std::runtime_error (message)
+       {}
 };
 
 /** @class DCPReadError
  *  @brief A DCP read exception
  */
-class DCPReadError : public std::exception
+class DCPReadError : public std::runtime_error
 {
 public:
-       DCPReadError (std::string message) : _message (message) {}
-       ~DCPReadError () throw () {}
-
-       /** @return error message */
-       char const * what () const throw () {
-               return _message.c_str ();
-       }
-
-protected:
-       DCPReadError () {}
-       
-       /** error message */
-       std::string _message;
+       DCPReadError (std::string message)
+               : std::runtime_error (message)
+       {}
 };
 
 /** @class MissingAssetError
@@ -124,68 +99,58 @@ public:
                MAIN_SUBTITLE, //< main subtitle is missing
                UNKNOWN        //< something is missing but we don't know what
        };
-       
+
        MissingAssetError (boost::filesystem::path, AssetType = UNKNOWN);
        ~MissingAssetError () throw () {}
-
-private:
-       boost::filesystem::path _path;
-       AssetType _type;
 };
 
 /** @class XMLError
  *  @brief An XML error
  */
-class XMLError : public std::exception
+class XMLError : public std::runtime_error
 {
 public:
-       XMLError (std::string message) : _message (message) {}
-       ~XMLError () throw () {}
-
-       /** @return error message */
-       char const * what () const throw () {
-               return _message.c_str ();
-       }
-
-private:
-       /** error message */
-       std::string _message;
+       XMLError (std::string message)
+               : std::runtime_error (message)
+       {}
 };
 
 /** @class UnresolvedRefError
  *  @brief An exception caused by a reference (by UUID) to something which is not known
  */
-class UnresolvedRefError : public std::exception
+class UnresolvedRefError : public std::runtime_error
 {
 public:
        UnresolvedRefError (std::string id);
-       ~UnresolvedRefError () throw () {}
-
-       /** @return error message */
-       char const * what () const throw () {
-               return _message.c_str ();
-       }
-
-private:
-       std::string _message;
 };
 
 /** @class TimeFormatError
  *  @brief A an error with a string passed to LocalTime.
  */
-class TimeFormatError : public std::exception
+class TimeFormatError : public std::runtime_error
 {
 public:
        TimeFormatError (std::string bad_time);
-       ~TimeFormatError () throw () {}
+};
 
-       /** @return error message */
-       char const * what () const throw () {
-               return _message.c_str ();
-       }
+/** @class NotEncryptedError
+ *  @brief An error raised when creating a DecryptedKDM object for assets that are not
+ *  encrypted.
+ */
+class NotEncryptedError : public std::runtime_error
+{
+public:
+       NotEncryptedError (std::string const & what);
+       ~NotEncryptedError () throw () {}
+};
 
-private:
-       std::string _message;
+/** @class ProgrammingError
+ *  @brief An exception thrown when a DCP_ASSERT fails; something that should not happen.
+ */
+class ProgrammingError : public std::runtime_error
+{
+public:
+       ProgrammingError (std::string file, int line);
 };
 
 }