X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fexceptions.h;h=6939f81a34765b68366d5b958019299e4a3f3ab8;hb=bdbe925a467f9b7149322ad8d1c090d4c1e6d5c3;hp=b04d973dc7a62197571ce7d6697917f2023b23e0;hpb=089b90439e745a218494e76b45e7df6215af01df;p=dcpomatic.git diff --git a/src/lib/exceptions.h b/src/lib/exceptions.h index b04d973dc..6939f81a3 100644 --- a/src/lib/exceptions.h +++ b/src/lib/exceptions.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2012 Carl Hetherington + Copyright (C) 2012-2014 Carl Hetherington This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,21 +17,19 @@ */ -#ifndef DCPOMATIC_EXCEPTIONS_H -#define DCPOMATIC_EXCEPTIONS_H - -/** @file src/exceptions.h +/** @file src/lib/exceptions.h * @brief Our exceptions. */ -#include -#include -#include -#include -#include +#ifndef DCPOMATIC_EXCEPTIONS_H +#define DCPOMATIC_EXCEPTIONS_H + extern "C" { #include } +#include +#include +#include /** @class StringError * @brief A parent class for exceptions using messages held in a std::string @@ -40,9 +38,9 @@ class StringError : public std::exception { public: /** @param w Error message */ - StringError (std::string w) { - _what = w; - } + StringError (std::string w) + : _what (w) + {} virtual ~StringError () throw () {} @@ -104,7 +102,14 @@ private: /** name of the file that this exception concerns */ boost::filesystem::path _file; }; - + +class JoinError : public StringError +{ +public: + JoinError (std::string s) + : StringError (s) + {} +}; /** @class OpenFileError. * @brief Indicates that some error occurred when trying to open a file. @@ -198,7 +203,7 @@ public: {} }; -/** @class NetworkError. +/** @class NetworkError * @brief Indicates some problem with communication on the network. */ class NetworkError : public StringError @@ -209,6 +214,9 @@ public: {} }; +/** @class KDMError + * @brief A problem with a KDM. + */ class KDMError : public StringError { public: @@ -217,37 +225,50 @@ public: {} }; +/** @class PixelFormatError + * @brief A problem with an unsupported pixel format. + */ class PixelFormatError : public StringError { public: PixelFormatError (std::string o, AVPixelFormat f); }; -class ExceptionStore +/** @class SubRipError + * @brief An error that occurs while parsing a SubRip file. + */ +class SubRipError : public FileError { public: - bool thrown () const { - boost::mutex::scoped_lock lm (_mutex); - return _exception; - } - - void rethrow () { - boost::mutex::scoped_lock lm (_mutex); - boost::rethrow_exception (_exception); - } + SubRipError (std::string, std::string, boost::filesystem::path); +}; -protected: - - void store_current () { - boost::mutex::scoped_lock lm (_mutex); - _exception = boost::current_exception (); - } +class DCPError : public StringError +{ +public: + DCPError (std::string s) + : StringError (s) + {} +}; -private: - boost::exception_ptr _exception; - mutable boost::mutex _mutex; +class InvalidSignerError : public StringError +{ +public: + InvalidSignerError (); +}; + +class ProgrammingError : public StringError +{ +public: + ProgrammingError (std::string file, int line); }; - +class TextEncodingError : public StringError +{ +public: + TextEncodingError (std::string s) + : StringError (s) + {} +}; #endif