Commit e186da17213826ae22b73584641d2e8cd10b24d5
1 parent
1c85e7ec
Remove SparseOHArray::at, setAt and append
Showing
3 changed files
with
4 additions
and
61 deletions
libqpdf/QPDF_Array.cc
| @@ -193,7 +193,7 @@ QPDF_Array::setAt(int at, QPDFObjectHandle const& oh) | @@ -193,7 +193,7 @@ QPDF_Array::setAt(int at, QPDFObjectHandle const& oh) | ||
| 193 | } | 193 | } |
| 194 | checkOwnership(oh); | 194 | checkOwnership(oh); |
| 195 | if (sparse) { | 195 | if (sparse) { |
| 196 | - sp_elements.setAt(at, oh); | 196 | + sp_elements.elements[at] = oh.getObj(); |
| 197 | } else { | 197 | } else { |
| 198 | elements[size_t(at)] = oh.getObj(); | 198 | elements[size_t(at)] = oh.getObj(); |
| 199 | } | 199 | } |
| @@ -206,7 +206,7 @@ QPDF_Array::setFromVector(std::vector<QPDFObjectHandle> const& v) | @@ -206,7 +206,7 @@ QPDF_Array::setFromVector(std::vector<QPDFObjectHandle> const& v) | ||
| 206 | if (sparse) { | 206 | if (sparse) { |
| 207 | sp_elements = SparseOHArray(); | 207 | sp_elements = SparseOHArray(); |
| 208 | for (auto const& iter: v) { | 208 | for (auto const& iter: v) { |
| 209 | - sp_elements.append(iter); | 209 | + sp_elements.elements[sp_elements.n_elements++] = iter.getObj(); |
| 210 | } | 210 | } |
| 211 | } else { | 211 | } else { |
| 212 | elements.resize(0); | 212 | elements.resize(0); |
| @@ -224,10 +224,9 @@ QPDF_Array::setFromVector(std::vector<std::shared_ptr<QPDFObject>>&& v) | @@ -224,10 +224,9 @@ QPDF_Array::setFromVector(std::vector<std::shared_ptr<QPDFObject>>&& v) | ||
| 224 | for (auto&& item: v) { | 224 | for (auto&& item: v) { |
| 225 | if (item->getTypeCode() != ::ot_null || | 225 | if (item->getTypeCode() != ::ot_null || |
| 226 | item->getObjGen().isIndirect()) { | 226 | item->getObjGen().isIndirect()) { |
| 227 | - sp_elements.append(std::move(item)); | ||
| 228 | - } else { | ||
| 229 | - ++sp_elements.n_elements; | 227 | + sp_elements.elements[sp_elements.n_elements] = std::move(item); |
| 230 | } | 228 | } |
| 229 | + ++sp_elements.n_elements; | ||
| 231 | } | 230 | } |
| 232 | } else { | 231 | } else { |
| 233 | elements = std::move(v); | 232 | elements = std::move(v); |
libqpdf/SparseOHArray.cc
| 1 | #include <qpdf/SparseOHArray.hh> | 1 | #include <qpdf/SparseOHArray.hh> |
| 2 | 2 | ||
| 3 | -#include <stdexcept> | ||
| 4 | - | ||
| 5 | -static const QPDFObjectHandle null_oh = QPDFObjectHandle::newNull(); | ||
| 6 | - | ||
| 7 | -QPDFObjectHandle | ||
| 8 | -SparseOHArray::at(int idx) const | ||
| 9 | -{ | ||
| 10 | - auto const& iter = elements.find(idx); | ||
| 11 | - return iter == elements.end() ? null_oh : (*iter).second; | ||
| 12 | -} | ||
| 13 | - | ||
| 14 | -void | ||
| 15 | -SparseOHArray::remove_last() | ||
| 16 | -{ | ||
| 17 | - if (this->n_elements == 0) { | ||
| 18 | - throw std::logic_error("INTERNAL ERROR: attempt to remove" | ||
| 19 | - " last item from empty SparseOHArray"); | ||
| 20 | - } | ||
| 21 | - --this->n_elements; | ||
| 22 | - this->elements.erase(this->n_elements); | ||
| 23 | -} | ||
| 24 | - | ||
| 25 | void | 3 | void |
| 26 | SparseOHArray::disconnect() | 4 | SparseOHArray::disconnect() |
| 27 | { | 5 | { |
| @@ -42,15 +20,3 @@ SparseOHArray::copy() | @@ -42,15 +20,3 @@ SparseOHArray::copy() | ||
| 42 | } | 20 | } |
| 43 | return result; | 21 | return result; |
| 44 | } | 22 | } |
| 45 | - | ||
| 46 | -SparseOHArray::const_iterator | ||
| 47 | -SparseOHArray::begin() const | ||
| 48 | -{ | ||
| 49 | - return this->elements.begin(); | ||
| 50 | -} | ||
| 51 | - | ||
| 52 | -SparseOHArray::const_iterator | ||
| 53 | -SparseOHArray::end() const | ||
| 54 | -{ | ||
| 55 | - return this->elements.end(); | ||
| 56 | -} |
libqpdf/qpdf/SparseOHArray.hh
| @@ -16,31 +16,9 @@ class SparseOHArray | @@ -16,31 +16,9 @@ class SparseOHArray | ||
| 16 | { | 16 | { |
| 17 | return n_elements; | 17 | return n_elements; |
| 18 | } | 18 | } |
| 19 | - void | ||
| 20 | - append(QPDFObjectHandle oh) | ||
| 21 | - { | ||
| 22 | - elements[n_elements++] = oh.getObj(); | ||
| 23 | - } | ||
| 24 | - void | ||
| 25 | - append(std::shared_ptr<QPDFObject>&& obj) | ||
| 26 | - { | ||
| 27 | - elements[n_elements++] = std::move(obj); | ||
| 28 | - } | ||
| 29 | - QPDFObjectHandle at(int idx) const; | ||
| 30 | - void remove_last(); | ||
| 31 | - void | ||
| 32 | - setAt(int idx, QPDFObjectHandle oh) | ||
| 33 | - { | ||
| 34 | - elements[idx] = oh.getObj(); | ||
| 35 | - } | ||
| 36 | SparseOHArray copy(); | 19 | SparseOHArray copy(); |
| 37 | void disconnect(); | 20 | void disconnect(); |
| 38 | 21 | ||
| 39 | - typedef std::map<int, std::shared_ptr<QPDFObject>>::const_iterator | ||
| 40 | - const_iterator; | ||
| 41 | - const_iterator begin() const; | ||
| 42 | - const_iterator end() const; | ||
| 43 | - | ||
| 44 | private: | 22 | private: |
| 45 | friend class QPDF_Array; | 23 | friend class QPDF_Array; |
| 46 | std::map<int, std::shared_ptr<QPDFObject>> elements; | 24 | std::map<int, std::shared_ptr<QPDFObject>> elements; |