Commit a89d8a0677f726ea029a67db164e0116971ffafc

Authored by Jay Berkenbilt
1 parent e83f3308

Refactor QPDF_Array in preparation for using SparseOHArray

libqpdf/QPDFObjectHandle.cc
@@ -722,7 +722,7 @@ QPDFObjectHandle::getArrayAsVector() @@ -722,7 +722,7 @@ QPDFObjectHandle::getArrayAsVector()
722 std::vector<QPDFObjectHandle> result; 722 std::vector<QPDFObjectHandle> result;
723 if (isArray()) 723 if (isArray())
724 { 724 {
725 - result = dynamic_cast<QPDF_Array*>(m->obj.getPointer())->getAsVector(); 725 + dynamic_cast<QPDF_Array*>(m->obj.getPointer())->getAsVector(result);
726 } 726 }
727 else 727 else
728 { 728 {
libqpdf/QPDF_Array.cc
@@ -3,9 +3,9 @@ @@ -3,9 +3,9 @@
3 #include <qpdf/QIntC.hh> 3 #include <qpdf/QIntC.hh>
4 #include <stdexcept> 4 #include <stdexcept>
5 5
6 -QPDF_Array::QPDF_Array(std::vector<QPDFObjectHandle> const& items) :  
7 - items(items) 6 +QPDF_Array::QPDF_Array(std::vector<QPDFObjectHandle> const& v)
8 { 7 {
  8 + setFromVector(v);
9 } 9 }
10 10
11 QPDF_Array::~QPDF_Array() 11 QPDF_Array::~QPDF_Array()
@@ -26,10 +26,10 @@ std::string @@ -26,10 +26,10 @@ std::string
26 QPDF_Array::unparse() 26 QPDF_Array::unparse()
27 { 27 {
28 std::string result = "[ "; 28 std::string result = "[ ";
29 - for (std::vector<QPDFObjectHandle>::iterator iter = this->items.begin();  
30 - iter != this->items.end(); ++iter) 29 + size_t size = this->items.size();
  30 + for (size_t i = 0; i < size; ++i)
31 { 31 {
32 - result += (*iter).unparse(); 32 + result += this->items.at(i).unparse();
33 result += " "; 33 result += " ";
34 } 34 }
35 result += "]"; 35 result += "]";
@@ -40,10 +40,10 @@ JSON @@ -40,10 +40,10 @@ JSON
40 QPDF_Array::getJSON() 40 QPDF_Array::getJSON()
41 { 41 {
42 JSON j = JSON::makeArray(); 42 JSON j = JSON::makeArray();
43 - for (std::vector<QPDFObjectHandle>::iterator iter = this->items.begin();  
44 - iter != this->items.end(); ++iter) 43 + size_t size = this->items.size();
  44 + for (size_t i = 0; i < size; ++i)
45 { 45 {
46 - j.addArrayElement((*iter).getJSON()); 46 + j.addArrayElement(this->items.at(i).getJSON());
47 } 47 }
48 return j; 48 return j;
49 } 49 }
@@ -85,10 +85,14 @@ QPDF_Array::getItem(int n) const @@ -85,10 +85,14 @@ QPDF_Array::getItem(int n) const
85 return this->items.at(QIntC::to_size(n)); 85 return this->items.at(QIntC::to_size(n));
86 } 86 }
87 87
88 -std::vector<QPDFObjectHandle> const&  
89 -QPDF_Array::getAsVector() const 88 +void
  89 +QPDF_Array::getAsVector(std::vector<QPDFObjectHandle>& v) const
90 { 90 {
91 - return this->items; 91 + size_t size = this->items.size();
  92 + for (size_t i = 0; i < size; ++i)
  93 + {
  94 + v.push_back(this->items.at(i));
  95 + }
92 } 96 }
93 97
94 void 98 void
@@ -100,9 +104,14 @@ QPDF_Array::setItem(int n, QPDFObjectHandle const&amp; oh) @@ -100,9 +104,14 @@ QPDF_Array::setItem(int n, QPDFObjectHandle const&amp; oh)
100 } 104 }
101 105
102 void 106 void
103 -QPDF_Array::setFromVector(std::vector<QPDFObjectHandle> const& items) 107 +QPDF_Array::setFromVector(std::vector<QPDFObjectHandle> const& v)
104 { 108 {
105 - this->items = items; 109 + this->items.clear();
  110 + for (std::vector<QPDFObjectHandle>::const_iterator iter = v.begin();
  111 + iter != v.end(); ++iter)
  112 + {
  113 + this->items.push_back(*iter);
  114 + }
106 } 115 }
107 116
108 void 117 void
libqpdf/qpdf/QPDF_Array.hh
@@ -19,7 +19,7 @@ class QPDF_Array: public QPDFObject @@ -19,7 +19,7 @@ class QPDF_Array: public QPDFObject
19 19
20 int getNItems() const; 20 int getNItems() const;
21 QPDFObjectHandle getItem(int n) const; 21 QPDFObjectHandle getItem(int n) const;
22 - std::vector<QPDFObjectHandle> const& getAsVector() const; 22 + void getAsVector(std::vector<QPDFObjectHandle>&) const;
23 23
24 void setItem(int, QPDFObjectHandle const&); 24 void setItem(int, QPDFObjectHandle const&);
25 void setFromVector(std::vector<QPDFObjectHandle> const& items); 25 void setFromVector(std::vector<QPDFObjectHandle> const& items);