diff options
author | Daniel Wilhelm <daniel@wili.li> | 2014-04-18 17:15:16 +0200 |
---|---|---|
committer | Daniel Wilhelm <daniel@wili.li> | 2014-04-18 17:15:16 +0200 |
commit | bd6336c629841c6db3a6ca53a936d629d34db53b (patch) | |
tree | 3721ef997864108df175ce677a8a7d4342a6f1d2 /zen/file_error.h | |
parent | 4.0 (diff) | |
download | FreeFileSync-bd6336c629841c6db3a6ca53a936d629d34db53b.tar.gz FreeFileSync-bd6336c629841c6db3a6ca53a936d629d34db53b.tar.bz2 FreeFileSync-bd6336c629841c6db3a6ca53a936d629d34db53b.zip |
4.1
Diffstat (limited to 'zen/file_error.h')
-rw-r--r-- | zen/file_error.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/zen/file_error.h b/zen/file_error.h new file mode 100644 index 00000000..8c49937c --- /dev/null +++ b/zen/file_error.h @@ -0,0 +1,48 @@ +// ************************************************************************** +// * This file is part of the FreeFileSync project. It is distributed under * +// * GNU General Public License: http://www.gnu.org/licenses/gpl.html * +// * Copyright (C) 2008-2011 ZenJu (zhnmju123 AT gmx.de) * +// ************************************************************************** + +#ifndef FILEERROR_H_INCLUDED +#define FILEERROR_H_INCLUDED + +#include <string> +#include "zstring.h" +#include "utf8.h" +#include "last_error.h" //we'll need this later anyway! + +namespace zen +{ +class FileError //Exception base class used to notify file/directory copy/delete errors +{ +public: + FileError(const std::wstring& message) : errorMessage(message) {} + virtual ~FileError() {} + + const std::wstring& msg() const { return errorMessage; } + +private: + std::wstring errorMessage; +}; + +#define DEFINE_NEW_FILE_ERROR(X) struct X : public FileError { X(const std::wstring& message) : FileError(message) {} }; + +DEFINE_NEW_FILE_ERROR(ErrorNotExisting); +DEFINE_NEW_FILE_ERROR(ErrorTargetExisting); +DEFINE_NEW_FILE_ERROR(ErrorTargetPathMissing); +DEFINE_NEW_FILE_ERROR(ErrorFileLocked); + + + +//----------- facilitate usage of std::wstring for error messages -------------------- + +//allow implicit UTF8 conversion: since std::wstring models a GUI string, convenience is more important than performance +inline std::wstring operator+(const std::wstring& lhs, const Zstring& rhs) { return std::wstring(lhs) += zen::utf8CvrtTo<std::wstring>(rhs); } + +//we musn't put our overloads in namespace std, but namespace zen (+ using directive) is sufficient +inline std::wstring operator+(const std::wstring& lhs, const char* rhs) { return std::wstring(lhs) += utf8CvrtTo<std::wstring>(rhs); } +inline std::wstring operator+(const std::wstring& lhs, const std::string& rhs) { return std::wstring(lhs) += utf8CvrtTo<std::wstring>(rhs); } +} + +#endif // FILEERROR_H_INCLUDED |