00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00036 #if ! defined ( EXCEPTION_HH )
00037 #define EXCEPTION_HH
00038 
00039 #include <exception>
00040 #include <string>
00041 
00042 namespace PIAVE {
00043 
00044     class exception: public std::exception
00045     {
00046       public:
00047         explicit exception( const std::string& message ) :
00048           _message( message ) {}
00049         virtual ~exception() throw() {};
00050 
00051         virtual const char* what() const throw() { return _message.c_str(); }
00052 
00053       private:
00054         std::string _message;
00055     };
00056 
00057     class stream_error : public exception
00058     {
00059       public:
00060         explicit stream_error(const std::string& message) : 
00061           exception( message ) {};
00062         virtual ~stream_error() throw() {};
00063     };
00064 
00065     class file_error : public stream_error
00066     {
00067       public:
00068         explicit file_error(const std::string& message) : 
00069           stream_error( message ) {};
00070         virtual ~file_error() throw() {};
00071     };
00072 
00073     class file_type_error : public file_error
00074     {
00075       public:
00076         explicit file_type_error(const std::string& message) : 
00077           file_error( message ) {};
00078         virtual ~file_type_error() throw() {};
00079     };
00080 
00081     class video_stream_error : public stream_error
00082     {
00083       public:
00084         explicit video_stream_error(const std::string& message) : 
00085           stream_error( message ) {};
00086         virtual ~video_stream_error() throw() {};
00087     };
00088 
00089     class audio_stream_error : public stream_error
00090     {
00091       public:
00092         explicit audio_stream_error(const std::string& message) : 
00093           stream_error( message ) {};
00094         virtual ~audio_stream_error() throw() {};
00095     };
00096     
00097     class codec_error : public stream_error
00098     {
00099       public:
00100         explicit codec_error(const std::string& message) :
00101           stream_error( message ) {};
00102         virtual ~codec_error() throw() {};
00103     };
00104     
00105 } 
00106 
00107 #endif