Commit 5072238867f37f6c6ecd53dab06e42ea2763cf56
1 parent
e186da17
Refactor QPDF_Array::getAsVector
Showing
3 changed files
with
13 additions
and
10 deletions
libqpdf/QPDFObjectHandle.cc
| ... | ... | @@ -888,15 +888,14 @@ QPDFObjectHandle::getArrayAsMatrix() |
| 888 | 888 | std::vector<QPDFObjectHandle> |
| 889 | 889 | QPDFObjectHandle::getArrayAsVector() |
| 890 | 890 | { |
| 891 | - std::vector<QPDFObjectHandle> result; | |
| 892 | 891 | auto array = asArray(); |
| 893 | 892 | if (array) { |
| 894 | - array->getAsVector(result); | |
| 893 | + return array->getAsVector(); | |
| 895 | 894 | } else { |
| 896 | 895 | typeWarning("array", "treating as empty"); |
| 897 | 896 | QTC::TC("qpdf", "QPDFObjectHandle array treating as empty vector"); |
| 898 | 897 | } |
| 899 | - return result; | |
| 898 | + return {}; | |
| 900 | 899 | } |
| 901 | 900 | |
| 902 | 901 | // Array mutators | ... | ... |
libqpdf/QPDF_Array.cc
| ... | ... | @@ -172,16 +172,20 @@ QPDF_Array::at(int n) const noexcept |
| 172 | 172 | } |
| 173 | 173 | } |
| 174 | 174 | |
| 175 | -void | |
| 176 | -QPDF_Array::getAsVector(std::vector<QPDFObjectHandle>& v) const | |
| 175 | +std::vector<QPDFObjectHandle> | |
| 176 | +QPDF_Array::getAsVector() const | |
| 177 | 177 | { |
| 178 | 178 | if (sparse) { |
| 179 | - int size = sp_elements.size(); | |
| 180 | - for (int i = 0; i < size; ++i) { | |
| 181 | - v.push_back(at(i)); | |
| 179 | + std::vector<QPDFObjectHandle> v; | |
| 180 | + v.reserve(size_t(size())); | |
| 181 | + for (auto const& item: sp_elements.elements) { | |
| 182 | + v.resize(size_t(item.first), null_oh); | |
| 183 | + v.push_back(item.second); | |
| 182 | 184 | } |
| 185 | + v.resize(size_t(size()), null_oh); | |
| 186 | + return v; | |
| 183 | 187 | } else { |
| 184 | - v = std::vector<QPDFObjectHandle>(elements.cbegin(), elements.cend()); | |
| 188 | + return {elements.cbegin(), elements.cend()}; | |
| 185 | 189 | } |
| 186 | 190 | } |
| 187 | 191 | ... | ... |
libqpdf/qpdf/QPDF_Array.hh
| ... | ... | @@ -29,7 +29,7 @@ class QPDF_Array: public QPDFValue |
| 29 | 29 | } |
| 30 | 30 | QPDFObjectHandle at(int n) const noexcept; |
| 31 | 31 | bool setAt(int n, QPDFObjectHandle const& oh); |
| 32 | - void getAsVector(std::vector<QPDFObjectHandle>&) const; | |
| 32 | + std::vector<QPDFObjectHandle> getAsVector() const; | |
| 33 | 33 | void setFromVector(std::vector<QPDFObjectHandle> const& items); |
| 34 | 34 | void setFromVector(std::vector<std::shared_ptr<QPDFObject>>&& items); |
| 35 | 35 | bool insert(int at, QPDFObjectHandle const& item); | ... | ... |