aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDF_Array.cc
diff options
context:
space:
mode:
authorm-holger <m-holger@kubitscheck.org>2023-03-24 16:01:40 +0100
committerm-holger <m-holger@kubitscheck.org>2023-04-01 14:54:17 +0200
commita1a8f35b63bcad7e0cac31a205e109d6a0d70622 (patch)
treee9a889ed70d94ea277111056d874a73dbc24a4e2 /libqpdf/QPDF_Array.cc
parent51d350c98c549ff59dd6423e98d993385f57fa9c (diff)
downloadqpdf-a1a8f35b63bcad7e0cac31a205e109d6a0d70622.tar.zst
Refactor QPDF_Array::getItem and rename to at
Diffstat (limited to 'libqpdf/QPDF_Array.cc')
-rw-r--r--libqpdf/QPDF_Array.cc30
1 files changed, 12 insertions, 18 deletions
diff --git a/libqpdf/QPDF_Array.cc b/libqpdf/QPDF_Array.cc
index 9368ca51..e9d216a5 100644
--- a/libqpdf/QPDF_Array.cc
+++ b/libqpdf/QPDF_Array.cc
@@ -105,7 +105,7 @@ QPDF_Array::unparse()
std::string result = "[ ";
int size = sp_elements.size();
for (int i = 0; i < size; ++i) {
- result += sp_elements.at(i).unparse();
+ result += at(i).unparse();
result += " ";
}
result += "]";
@@ -114,7 +114,7 @@ QPDF_Array::unparse()
std::string result = "[ ";
auto size = elements.size();
for (int i = 0; i < int(size); ++i) {
- result += getItem(i).unparse();
+ result += at(i).unparse();
result += " ";
}
result += "]";
@@ -129,35 +129,29 @@ QPDF_Array::getJSON(int json_version)
JSON j = JSON::makeArray();
int size = sp_elements.size();
for (int i = 0; i < size; ++i) {
- j.addArrayElement(sp_elements.at(i).getJSON(json_version));
+ j.addArrayElement(at(i).getJSON(json_version));
}
return j;
} else {
JSON j = JSON::makeArray();
size_t size = elements.size();
for (int i = 0; i < int(size); ++i) {
- j.addArrayElement(getItem(i).getJSON(json_version));
+ j.addArrayElement(at(i).getJSON(json_version));
}
return j;
}
}
QPDFObjectHandle
-QPDF_Array::getItem(int n) const
+QPDF_Array::at(int n) const noexcept
{
- if (sparse) {
- if ((n < 0) || (n >= QIntC::to_int(sp_elements.size()))) {
- throw std::logic_error(
- "INTERNAL ERROR: bounds error accessing QPDF_Array element");
- }
- return sp_elements.at(n);
+ if (n < 0 || n >= size()) {
+ return {};
+ } else if (sparse) {
+ auto const& iter = sp_elements.elements.find(n);
+ return iter == sp_elements.elements.end() ? null_oh : (*iter).second;
} else {
- if ((n < 0) || (n >= QIntC::to_int(elements.size()))) {
- throw std::logic_error(
- "INTERNAL ERROR: bounds error accessing QPDF_Array element");
- }
- auto const& obj = elements.at(size_t(n));
- return obj ? obj : null_oh;
+ return elements[size_t(n)];
}
}
@@ -167,7 +161,7 @@ QPDF_Array::getAsVector(std::vector<QPDFObjectHandle>& v) const
if (sparse) {
int size = sp_elements.size();
for (int i = 0; i < size; ++i) {
- v.push_back(sp_elements.at(i));
+ v.push_back(at(i));
}
} else {
v = std::vector<QPDFObjectHandle>(elements.cbegin(), elements.cend());