/src/qpdf/libqpdf/QPDFExc.cc
Line | Count | Source (jump to first uncovered line) |
1 | | #include <qpdf/QPDFExc.hh> |
2 | | |
3 | | QPDFExc::QPDFExc( |
4 | | qpdf_error_code_e error_code, |
5 | | std::string const& filename, |
6 | | std::string const& object, |
7 | | qpdf_offset_t offset, |
8 | | std::string const& message) : |
9 | 413k | std::runtime_error(createWhat(filename, object, (offset ? offset : -1), message)), |
10 | 413k | error_code(error_code), |
11 | 413k | filename(filename), |
12 | 413k | object(object), |
13 | 413k | offset(offset ? offset : -1), |
14 | 413k | message(message) |
15 | 413k | { |
16 | 413k | } |
17 | | |
18 | | QPDFExc::QPDFExc( |
19 | | qpdf_error_code_e error_code, |
20 | | std::string const& filename, |
21 | | std::string const& object, |
22 | | qpdf_offset_t offset, |
23 | | std::string const& message, |
24 | | bool zero_offset_valid) : |
25 | 352k | std::runtime_error( |
26 | 352k | createWhat(filename, object, (offset || zero_offset_valid ? offset : -1), message)), |
27 | 352k | error_code(error_code), |
28 | 352k | filename(filename), |
29 | 352k | object(object), |
30 | 352k | offset(offset || zero_offset_valid ? offset : -1), |
31 | 352k | message(message) |
32 | 352k | { |
33 | 352k | } |
34 | | |
35 | | std::string |
36 | | QPDFExc::createWhat( |
37 | | std::string const& filename, |
38 | | std::string const& object, |
39 | | qpdf_offset_t offset, |
40 | | std::string const& message) |
41 | 766k | { |
42 | 766k | std::string result; |
43 | 766k | if (!filename.empty()) { |
44 | 703k | result += filename; |
45 | 703k | } |
46 | 766k | if (!(object.empty() && offset < 0)) { |
47 | 656k | if (!filename.empty()) { |
48 | 593k | result += " ("; |
49 | 593k | } |
50 | 656k | if (!object.empty()) { |
51 | 610k | result += object; |
52 | 610k | if (offset >= 0) { |
53 | 547k | result += ", "; |
54 | 547k | } |
55 | 610k | } |
56 | 656k | if (offset >= 0) { |
57 | 592k | result += "offset " + std::to_string(offset); |
58 | 592k | } |
59 | 656k | if (!filename.empty()) { |
60 | 593k | result += ")"; |
61 | 593k | } |
62 | 656k | } |
63 | 766k | if (!result.empty()) { |
64 | 766k | result += ": "; |
65 | 766k | } |
66 | 766k | result += message; |
67 | 766k | return result; |
68 | 766k | } |
69 | | |
70 | | qpdf_error_code_e |
71 | | QPDFExc::getErrorCode() const |
72 | 0 | { |
73 | 0 | return this->error_code; |
74 | 0 | } |
75 | | |
76 | | std::string const& |
77 | | QPDFExc::getFilename() const |
78 | 0 | { |
79 | 0 | return this->filename; |
80 | 0 | } |
81 | | |
82 | | std::string const& |
83 | | QPDFExc::getObject() const |
84 | 0 | { |
85 | 0 | return this->object; |
86 | 0 | } |
87 | | |
88 | | qpdf_offset_t |
89 | | QPDFExc::getFilePosition() const |
90 | 0 | { |
91 | 0 | return offset < 0 ? 0 : offset; |
92 | 0 | } |
93 | | |
94 | | std::string const& |
95 | | QPDFExc::getMessageDetail() const |
96 | 0 | { |
97 | 0 | return this->message; |
98 | 0 | } |