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,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;