changeset 130:b290c43f01ec

* Exceptions for file read etc
author Chris Cannam
date Wed, 28 Jun 2006 15:42:04 +0000
parents 4e38a29c13fc
children 69d50575c52a
files base/Exceptions.cpp base/Exceptions.h base/TempDirectory.cpp base/TempDirectory.h
diffstat 4 files changed, 206 insertions(+), 25 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/base/Exceptions.cpp	Wed Jun 28 15:42:04 2006 +0000
@@ -0,0 +1,109 @@
+/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */
+
+/*
+    Sonic Visualiser
+    An audio file viewer and annotation editor.
+    Centre for Digital Music, Queen Mary, University of London.
+    This file copyright 2006 Chris Cannam.
+    
+    This program is free software; you can redistribute it and/or
+    modify it under the terms of the GNU General Public License as
+    published by the Free Software Foundation; either version 2 of the
+    License, or (at your option) any later version.  See the file
+    COPYING included with this distribution for more information.
+*/
+
+#include "Exceptions.h"
+
+#include <iostream>
+
+FileNotFound::FileNotFound(QString file) throw() :
+    m_file(file)
+{
+    std::cerr << "ERROR: File not found: "
+              << file.toStdString() << std::endl;
+}
+
+const char *
+FileNotFound::what() const throw()
+{
+    return QString("File \"%1\" not found")
+        .arg(m_file).toLocal8Bit().data();
+}
+
+FailedToOpenFile::FailedToOpenFile(QString file) throw() :
+    m_file(file)
+{
+    std::cerr << "ERROR: Failed to open file: "
+              << file.toStdString() << std::endl;
+}
+
+const char *
+FailedToOpenFile::what() const throw()
+{
+    return QString("Failed to open file \"%1\"")
+        .arg(m_file).toLocal8Bit().data();
+}
+
+DirectoryCreationFailed::DirectoryCreationFailed(QString directory) throw() :
+    m_directory(directory)
+{
+    std::cerr << "ERROR: Directory creation failed for directory: "
+              << directory.toStdString() << std::endl;
+}
+
+const char *
+DirectoryCreationFailed::what() const throw()
+{
+    return QString("Directory creation failed for \"%1\"")
+        .arg(m_directory).toLocal8Bit().data();
+}
+
+FileReadFailed::FileReadFailed(QString file) throw() :
+    m_file(file)
+{
+    std::cerr << "ERROR: File read failed for file: "
+              << file.toStdString() << std::endl;
+}
+
+const char *
+FileReadFailed::what() const throw()
+{
+    return QString("File read failed for \"%1\"")
+        .arg(m_file).toLocal8Bit().data();
+}
+
+FileOperationFailed::FileOperationFailed(QString file, QString op) throw() :
+    m_file(file),
+    m_operation(op)
+{
+    std::cerr << "ERROR: File " << op.toStdString() << " failed for file: "
+              << file.toStdString() << std::endl;
+}
+
+const char *
+FileOperationFailed::what() const throw()
+{
+    return QString("File %1 failed for \"%2\"")
+        .arg(m_operation).arg(m_file).toLocal8Bit().data();
+}
+
+InsufficientDiscSpace::InsufficientDiscSpace(QString directory,
+                                             size_t required,
+                                             size_t available) throw() :
+    m_directory(directory),
+    m_required(required),
+    m_available(available)
+{
+    std::cerr << "ERROR: Not enough disc space available in "
+              << directory.toStdString() << ": need " << required
+              << ", only have " << available << std::endl;
+}
+
+const char *
+InsufficientDiscSpace::what() const throw()
+{
+    return QString("Not enough space available in \"%1\": need %2, have %3")
+        .arg(m_directory).arg(m_required).arg(m_available).toLocal8Bit().data();
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/base/Exceptions.h	Wed Jun 28 15:42:04 2006 +0000
@@ -0,0 +1,96 @@
+/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */
+
+/*
+    Sonic Visualiser
+    An audio file viewer and annotation editor.
+    Centre for Digital Music, Queen Mary, University of London.
+    This file copyright 2006 Chris Cannam.
+    
+    This program is free software; you can redistribute it and/or
+    modify it under the terms of the GNU General Public License as
+    published by the Free Software Foundation; either version 2 of the
+    License, or (at your option) any later version.  See the file
+    COPYING included with this distribution for more information.
+*/
+
+#ifndef _EXCEPTIONS_H_
+#define _EXCEPTIONS_H_
+
+#include <exception>
+
+#include <QString>
+
+class FileNotFound : virtual public std::exception
+{
+public:
+    FileNotFound(QString file) throw();
+    virtual ~FileNotFound() throw() { }
+    virtual const char *what() const throw();
+    
+protected:
+    QString m_file;
+};
+
+class FailedToOpenFile : virtual public std::exception
+{
+public:
+    FailedToOpenFile(QString file) throw();
+    virtual ~FailedToOpenFile() throw() { }
+    virtual const char *what() const throw();
+    
+protected:
+    QString m_file;
+};
+
+class DirectoryCreationFailed : virtual public std::exception
+{
+public:
+    DirectoryCreationFailed(QString directory) throw();
+    virtual ~DirectoryCreationFailed() throw() { }
+    virtual const char *what() const throw();
+    
+protected:
+    QString m_directory;
+};
+
+class FileReadFailed : virtual public std::exception
+{
+public:
+    FileReadFailed(QString file) throw();
+    virtual ~FileReadFailed() throw() { }
+    virtual const char *what() const throw();
+
+protected:
+    QString m_file;
+};
+
+class FileOperationFailed : virtual public std::exception
+{
+public:
+    FileOperationFailed(QString file, QString operation) throw();
+    virtual ~FileOperationFailed() throw() { }
+    virtual const char *what() const throw();
+
+protected:
+    QString m_file;
+    QString m_operation;
+};
+
+class InsufficientDiscSpace : virtual public std::exception
+{
+public:
+    InsufficientDiscSpace(QString directory,
+                          size_t required, size_t available) throw();
+    virtual ~InsufficientDiscSpace() throw() { }
+    virtual const char *what() const throw();
+
+    size_t getRequired() const { return m_required; }
+    size_t getAvailable() const { return m_available; }
+
+protected:
+    QString m_directory;
+    size_t m_required;
+    size_t m_available;
+};
+
+#endif
--- a/base/TempDirectory.cpp	Wed Jun 28 13:41:12 2006 +0000
+++ b/base/TempDirectory.cpp	Wed Jun 28 15:42:04 2006 +0000
@@ -15,6 +15,7 @@
 
 #include "TempDirectory.h"
 #include "System.h"
+#include "Exceptions.h"
 
 #include <QDir>
 #include <QFile>
@@ -32,20 +33,6 @@
     return m_instance;
 }
 
-TempDirectory::DirectoryCreationFailed::DirectoryCreationFailed(QString directory) throw() :
-    m_directory(directory)
-{
-    std::cerr << "ERROR: Directory creation failed for directory: "
-              << directory.toLocal8Bit().data() << std::endl;
-}
-
-const char *
-TempDirectory::DirectoryCreationFailed::what() const throw()
-{
-    return QString("Directory creation failed for \"%1\"")
-        .arg(m_directory).toLocal8Bit().data();
-}
-
 TempDirectory::TempDirectory() :
     m_tmpdir("")
 {
--- a/base/TempDirectory.h	Wed Jun 28 13:41:12 2006 +0000
+++ b/base/TempDirectory.h	Wed Jun 28 15:42:04 2006 +0000
@@ -37,17 +37,6 @@
     
     virtual ~TempDirectory();
 
-    class DirectoryCreationFailed : virtual public std::exception
-    {
-    public:
-        DirectoryCreationFailed(QString directory) throw();
-        virtual DirectoryCreationFailed::~DirectoryCreationFailed() throw() { }
-        virtual const char *what() const throw();
-
-    protected:
-        QString m_directory;
-    };
-
     /**
      * Create the root temporary directory if necessary, and return
      * its path.  Throw DirectoryCreationFailed if the directory