]> git.tdb.fi Git - libs/core.git/blobdiff - source/core/except.h
Add a "where" property to Exception class
[libs/core.git] / source / core / except.h
index 5dfbe8d03d56d56ac8a879eddc696dbb866670e5..fc6fcc6c69921f48205fea5434a9b8da5cb05671 100644 (file)
@@ -1,9 +1,10 @@
 /* $Id$
 
 This file is part of libmspcore
-Copyright © 2006-2007 Mikko Rasa, Mikkosoft Productions
+Copyright © 2006-200 Mikko Rasa, Mikkosoft Productions
 Distributed under the LGPL
 */
+
 #ifndef MSP_CORE_ERROR_H_
 #define MSP_CORE_ERROR_H_
 
@@ -22,10 +23,13 @@ public:
        Exception(const std::string &);
        ~Exception() throw() { }
 
-       const char *what() const throw() { return w.c_str(); }
+       const char *what() const throw() { return wot.c_str(); }
+       Exception &at(const std::string &) throw();
+       const char *where() const throw() { return wer.c_str(); }
        const Debug::Backtrace &get_backtrace() const throw() { return bt; }
 private:
-       std::string w;
+       std::string wot;
+       std::string wer;
        Debug::Backtrace bt;
 
 };
@@ -88,6 +92,10 @@ private:
        static std::string build_what(const std::string &, int);
 };
 
+template<typename E>
+void throw_at(E e, const std::string &a)
+{ e.at(a); throw e; }
+
 } // namespace Msp
 
 #endif