Dirac - A Video Codec

Created by the British Broadcasting Corporation.


dirac_exception.h
Go to the documentation of this file.
1/* ***** BEGIN LICENSE BLOCK *****
2*
3* $Id: dirac_exception.h,v 1.6 2008/01/31 11:25:16 tjdwave Exp $ $Name: Dirac_1_0_2 $
4*
5* Version: MPL 1.1/GPL 2.0/LGPL 2.1
6*
7* The contents of this file are subject to the Mozilla Public License
8* Version 1.1 (the "License"); you may not use this file except in compliance
9* with the License. You may obtain a copy of the License at
10* http://www.mozilla.org/MPL/
11*
12* Software distributed under the License is distributed on an "AS IS" basis,
13* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
14* the specific language governing rights and limitations under the License.
15*
16* The Original Code is BBC Research and Development code.
17*
18* The Initial Developer of the Original Code is the British Broadcasting
19* Corporation.
20* Portions created by the Initial Developer are Copyright (C) 2004.
21* All Rights Reserved.
22*
23* Contributor(s): Andrew Kennedy (Original Author)
24*
25* Alternatively, the contents of this file may be used under the terms of
26* the GNU General Public License Version 2 (the "GPL"), or the GNU Lesser
27* Public License Version 2.1 (the "LGPL"), in which case the provisions of
28* the GPL or the LGPL are applicable instead of those above. If you wish to
29* allow use of your version of this file only under the terms of the either
30* the GPL or LGPL and not to allow others to use your version of this file
31* under the MPL, indicate your decision by deleting the provisions above
32* and replace them with the notice and other provisions required by the GPL
33* or LGPL. If you do not delete the provisions above, a recipient may use
34* your version of this file under the terms of any one of the MPL, the GPL
35* or the LGPL.
36* ***** END LICENSE BLOCK ***** */
37
41#ifndef DiracException_h
42#define DiracException_h
43
44
45// SYSTEM INCLUDES
46//
47#include <string> // has a string
48#include <iostream> // has an ostringstream
49
50
51namespace dirac {
52
69
70 };
71
82 };
83
89{
90public:
91
92
101 const DiracErrorCode& errorCode,
102 const std::string& errorMessage,
103 const DiracSeverityCode& severityCode);
104
109 const DiracException& src);
110
115
116
117// OPERATORS
118
119
120// ACCESS
121
128
135
141 std::string GetErrorMessage() const;
142
143
144
145private:
146
147// ATTRIBUTES
148
153
158
162 std::string mErrorMessage;
163
164
165
166// UNIMPLEMENTED METHODS
168
169}; // class DiracException
170
171
172
173
174
175// GLOBAL OPERATORS
176//
177std::ostream& operator<<(std::ostream& dst, const DiracException& exception);
178
179
180// MACROS FOR LOGGING AND THROWING DIRAC EXCEPTIONS
181//
182
183
187#define DIRAC_LOG_EXCEPTION(exception) \
188 { \
189 if(exception.GetSeverityCode()!=SEVERITY_NO_ERROR) \
190 std::cerr << exception.GetErrorMessage(); \
191 }
192
196#define DIRAC_THROW_EXCEPTION(arg1,arg2,arg3) \
197 { \
198 DiracException exception(arg1,arg2, arg3); \
199 DIRAC_LOG_EXCEPTION(exception) \
200 throw exception; \
201 }
202
206#define DIRAC_CATCH_AND_RETHROW() \
207 catch (const DiracException& e) { \
208 DiracException exception(e); \
209 DIRAC_LOG_EXCEPTION(exception)\
210 throw exception; \
211 }
212
213} // namespace Dirac
214
215#endif // DiracException_h
Definition of class SequenceHeaderByteIO.
Definition: accessunit_byteio.h:52
std::ostream & operator<<(std::ostream &stream, TwoDArray< T > &array)
A function for extracting array data.
Definition: arrays.h:565
DiracSeverityCode
Error-severity states.
Definition: dirac_exception.h:75
@ SEVERITY_ACCESSUNIT_ERROR
Definition: dirac_exception.h:79
@ SEVERITY_TERMINATE
Definition: dirac_exception.h:81
@ SEVERITY_PICTURE_ERROR
Definition: dirac_exception.h:78
@ SEVERITY_WARNING
Definition: dirac_exception.h:77
@ SEVERITY_SEQUENCE_ERROR
Definition: dirac_exception.h:80
@ SEVERITY_NO_ERROR
Definition: dirac_exception.h:76
DiracErrorCode
Enumeration of Dirac-defined error codes.
Definition: dirac_exception.h:58
@ ERR_INVALID_PICTURE_RATE
Definition: dirac_exception.h:63
@ ERR_INVALID_INIT_DATA
Definition: dirac_exception.h:68
@ ERR_INVALID_MOTION_VECTOR_PRECISION
Definition: dirac_exception.h:67
@ ERR_UNSUPPORTED_STREAM_DATA
Definition: dirac_exception.h:59
@ ERR_INVALID_PIXEL_ASPECT_RATIO
Definition: dirac_exception.h:65
@ ERR_INVALID_VIDEO_DEPTH
Definition: dirac_exception.h:66
@ ERR_INVALID_SIGNAL_RANGE
Definition: dirac_exception.h:64
@ ERR_END_OF_STREAM
Definition: dirac_exception.h:60
@ ERR_INVALID_VIDEO_FORMAT
Definition: dirac_exception.h:61
@ ERR_INVALID_CHROMA_FORMAT
Definition: dirac_exception.h:62
DiracException is the class which should be used for all exceptions within Dirac.
Definition: dirac_exception.h:89
std::string mErrorMessage
The error message.
Definition: dirac_exception.h:162
DiracErrorCode GetErrorCode() const
Get the error code of this exception.
DiracException(const DiracErrorCode &errorCode, const std::string &errorMessage, const DiracSeverityCode &severityCode)
Construct from error source ID, error code, and message.
virtual ~DiracException()
Destructor.
DiracException(const DiracException &src)
Copy constructor.
DiracErrorCode mErrorCode
The error code of this exception.
Definition: dirac_exception.h:152
DiracException & operator=(const DiracException &)
std::string GetErrorMessage() const
Get the error message of this exception.
DiracSeverityCode GetSeverityCode() const
Get the severity level of this exception.
DiracSeverityCode mSeverityCode
Severity of exception.
Definition: dirac_exception.h:157

© 2004 British Broadcasting Corporation. Dirac code licensed under the Mozilla Public License (MPL) Version 1.1.
HTML documentation generated by Dimitri van Heesch's excellent Doxygen tool.