aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/QEXC.cc
blob: d8154f33da6c36fa0c4adfe72a87bb9073e6bd67 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77

#include <qpdf/QEXC.hh>
#include <string.h>
#include <errno.h>

DLL_EXPORT
QEXC::Base::Base()
{
    // nothing needed
}

DLL_EXPORT
QEXC::Base::Base(std::string const& message) :
    message(message)
{
    // nothing needed
}

DLL_EXPORT
std::string const&
QEXC::Base::unparse() const
{
    return this->message;
}

DLL_EXPORT
void
QEXC::Base::setMessage(std::string const& message)
{
    this->message = message;
}

DLL_EXPORT
const char*
QEXC::Base::what() const throw()
{
    // Since unparse() returns a const string reference, its
    // implementors must arrange to have it return a reference to a
    // string that is not going to disappear.  It is therefore safe
    // for us to return it's c_str() pointer.
    return this->unparse().c_str();
}

DLL_EXPORT
QEXC::General::General()
{
    // nothing needed
}

DLL_EXPORT
QEXC::General::General(std::string const& message) :
    Base(message)
{
    // nothing needed
}

DLL_EXPORT
QEXC::System::System(std::string const& prefix, int sys_errno)
{
    // Note: using sys_errno in case errno is a macro.
    this->sys_errno = sys_errno;
    this->setMessage(prefix + ": " + strerror(sys_errno));
}

DLL_EXPORT
int
QEXC::System::getErrno() const
{
    return this->sys_errno;
}

DLL_EXPORT
QEXC::Internal::Internal(std::string const& message) :
    Base("INTERNAL ERROR: " + message)
{
    // nothing needed
}