Commit e186da17213826ae22b73584641d2e8cd10b24d5

Authored by m-holger
1 parent 1c85e7ec

Remove SparseOHArray::at, setAt and append

libqpdf/QPDF_Array.cc
... ... @@ -193,7 +193,7 @@ QPDF_Array::setAt(int at, QPDFObjectHandle const& oh)
193 193 }
194 194 checkOwnership(oh);
195 195 if (sparse) {
196   - sp_elements.setAt(at, oh);
  196 + sp_elements.elements[at] = oh.getObj();
197 197 } else {
198 198 elements[size_t(at)] = oh.getObj();
199 199 }
... ... @@ -206,7 +206,7 @@ QPDF_Array::setFromVector(std::vector<QPDFObjectHandle> const& v)
206 206 if (sparse) {
207 207 sp_elements = SparseOHArray();
208 208 for (auto const& iter: v) {
209   - sp_elements.append(iter);
  209 + sp_elements.elements[sp_elements.n_elements++] = iter.getObj();
210 210 }
211 211 } else {
212 212 elements.resize(0);
... ... @@ -224,10 +224,9 @@ QPDF_Array::setFromVector(std::vector<std::shared_ptr<QPDFObject>>&& v)
224 224 for (auto&& item: v) {
225 225 if (item->getTypeCode() != ::ot_null ||
226 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 231 } else {
233 232 elements = std::move(v);
... ...
libqpdf/SparseOHArray.cc
1 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 3 void
26 4 SparseOHArray::disconnect()
27 5 {
... ... @@ -42,15 +20,3 @@ SparseOHArray::copy()
42 20 }
43 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 16 {
17 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 19 SparseOHArray copy();
37 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 22 private:
45 23 friend class QPDF_Array;
46 24 std::map<int, std::shared_ptr<QPDFObject>> elements;
... ...