00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _SOPRANO_ERROR_H_
00023 #define _SOPRANO_ERROR_H_
00024
00025 #include "soprano_export.h"
00026
00027 #include <QtCore/QString>
00028 #include <QtCore/QSharedDataPointer>
00029
00030
00031 namespace Soprano {
00032 namespace Error {
00040 enum ErrorCode {
00041 ErrorNone = 0x0,
00042 ErrorInvalidArgument = 0x1,
00043 ErrorInvalidStatement = ErrorInvalidArgument,
00044 ErrorNotSupported = 0x2,
00045 ErrorParsingFailed = 0x3,
00046 ErrorPermissionDenied = 0x4,
00047 ErrorUnknown = 0x1000
00048 };
00049
00053 SOPRANO_EXPORT QString errorMessage( ErrorCode );
00054
00062 SOPRANO_EXPORT ErrorCode convertErrorCode( int code );
00063
00064 class ErrorData;
00065 class ParserError;
00066
00076 class SOPRANO_EXPORT Error
00077 {
00078 public:
00082 Error();
00083
00092 Error( const QString& message, int code = ErrorUnknown );
00093
00097 Error( const Error& );
00098
00102 virtual ~Error();
00103
00104 Error& operator=( const Error& );
00105
00120 operator bool() const { return code() != ErrorNone; }
00121
00130 QString message() const;
00131
00146 int code() const;
00147
00152 bool isParserError() const;
00153
00166 ParserError toParserError() const;
00167
00168 protected:
00170 Error( ErrorData* );
00171 QSharedDataPointer<ErrorData> d;
00173 };
00174
00175 class Locator;
00176
00199 class SOPRANO_EXPORT ParserError : public Error
00200 {
00201 public:
00205 ParserError();
00206
00207 ParserError( const Locator&, const QString& message = QString(), int code = ErrorParsingFailed );
00208
00209 ParserError( const Error& );
00210
00211 ~ParserError();
00212
00213 ParserError& operator=( const Error& );
00214
00215 Locator locator() const;
00216 };
00217
00233 class SOPRANO_EXPORT ErrorCache
00234 {
00235 public:
00236 virtual ~ErrorCache();
00237
00241 virtual Error lastError() const;
00242
00243 protected:
00244 ErrorCache();
00245
00249 void clearError() const;
00250
00256 void setError( const Error& ) const;
00257
00262 void setError( const QString& errorMessage, int code = ErrorUnknown ) const;
00263
00264 private:
00265 class Private;
00266 Private* const d;
00267 };
00268 }
00269 }
00270
00271 class QDebug;
00272 class QTextStream;
00273
00274 SOPRANO_EXPORT QDebug operator<<( QDebug s, const Soprano::Error::Error& );
00275 SOPRANO_EXPORT QTextStream& operator<<( QTextStream& s, const Soprano::Error::Error& );
00276
00277 #endif