1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */
2 
3 /*
4     Sonic Visualiser
5     An audio file viewer and annotation editor.
6     Centre for Digital Music, Queen Mary, University of London.
7     This file copyright 2006 Chris Cannam.
8 
9     This program is free software; you can redistribute it and/or
10     modify it under the terms of the GNU General Public License as
11     published by the Free Software Foundation; either version 2 of the
12     License, or (at your option) any later version.  See the file
13     COPYING included with this distribution for more information.
14 */
15 
16 #ifndef SV_EXCEPTIONS_H
17 #define SV_EXCEPTIONS_H
18 
19 #include <exception>
20 
21 #include <QString>
22 
23 #include "Debug.h"
24 
25 class FileNotFound : virtual public std::exception
26 {
27 public:
28     FileNotFound(QString file) throw();
~FileNotFound()29     virtual ~FileNotFound() throw() { }
30     const char *what() const throw() override;
31 
32 protected:
33     QString m_file;
34 };
35 
36 class FailedToOpenFile : virtual public std::exception
37 {
38 public:
39     FailedToOpenFile(QString file) throw();
~FailedToOpenFile()40     virtual ~FailedToOpenFile() throw() { }
41     const char *what() const throw() override;
42 
43 protected:
44     QString m_file;
45 };
46 
47 class DirectoryCreationFailed : virtual public std::exception
48 {
49 public:
50     DirectoryCreationFailed(QString directory) throw();
~DirectoryCreationFailed()51     virtual ~DirectoryCreationFailed() throw() { }
52     const char *what() const throw() override;
53 
54 protected:
55     QString m_directory;
56 };
57 
58 class FileReadFailed : virtual public std::exception
59 {
60 public:
61     FileReadFailed(QString file) throw();
~FileReadFailed()62     virtual ~FileReadFailed() throw() { }
63     const char *what() const throw() override;
64 
65 protected:
66     QString m_file;
67 };
68 
69 class FileOperationFailed : virtual public std::exception
70 {
71 public:
72     FileOperationFailed(QString file, QString operation) throw();
~FileOperationFailed()73     virtual ~FileOperationFailed() throw() { }
74     const char *what() const throw() override;
75 
76 protected:
77     QString m_file;
78     QString m_operation;
79 };
80 
81 class InsufficientDiscSpace : virtual public std::exception
82 {
83 public:
84     InsufficientDiscSpace(QString directory,
85                           size_t required, size_t available) throw();
86     InsufficientDiscSpace(QString directory) throw();
~InsufficientDiscSpace()87     virtual ~InsufficientDiscSpace() throw() { }
88     const char *what() const throw() override;
89 
getDirectory()90     QString getDirectory() const { return m_directory; }
getRequired()91     size_t getRequired() const { return m_required; }
getAvailable()92     size_t getAvailable() const { return m_available; }
93 
94 protected:
95     QString m_directory;
96     size_t m_required;
97     size_t m_available;
98 };
99 
100 class AllocationFailed : virtual public std::exception
101 {
102 public:
103     AllocationFailed(QString purpose) throw();
~AllocationFailed()104     virtual ~AllocationFailed() throw() { }
105     const char *what() const throw() override;
106 
107 protected:
108     QString m_purpose;
109 };
110 
111 #endif
112