]> git.tdb.fi Git - libs/datafile.git/blob - source/dataerror.cpp
b21b84fca459a59d2c785564e64bcf1a35cf499e
[libs/datafile.git] / source / dataerror.cpp
1 #include <typeinfo>
2 #include <msp/debug/demangle.h>
3 #include <msp/strings/format.h>
4 #include "dataerror.h"
5
6 using namespace std;
7
8 namespace Msp {
9 namespace DataFile {
10
11 data_error::data_error(const string &s, unsigned l, const string &w):
12         runtime_error(make_what(s, l, w)),
13         source(s),
14         line(l)
15 { }
16
17 data_error::data_error(const string &s, unsigned l, const exception &e):
18         runtime_error(make_what(s, l, format("%s (%s)", Debug::demangle(typeid(e).name()), e.what()))),
19         source(s),
20         line(l)
21 { }
22
23 string data_error::make_what(const string &s, unsigned l, const string &w)
24 {
25         if(l)
26                 return format("%s:%d: %s", s, l, w);
27         else
28                 return format("%s: %s", s, w);
29 }
30
31 } // namespace DataFile
32 } // namespace Msp