-#include <typeinfo>
#include <msp/debug/demangle.h>
#include <msp/strings/format.h>
#include "except.h"
line(l)
{ }
+data_error::data_error(const string &s, unsigned l, const data_error &e):
+ runtime_error(format("%s\n%s", e.what(), make_what(s, l, "Referenced here"))),
+ source(s),
+ line(l)
+{ }
+
string data_error::make_what(const string &s, unsigned l, const string &w)
{
if(l)
logic_error(w)
{ }
+
+unknown_keyword::unknown_keyword(const string &k):
+ runtime_error(k)
+{ }
+
+
+invalid_signature::invalid_signature(const string &k, const string &s):
+ runtime_error(format("%s %s", k, s))
+{ }
+
+
+no_collection::no_collection(const type_info &t):
+ runtime_error(Debug::demangle(t.name()))
+{ }
+
} // namespace DataFile
} // namespace Msp