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 722 std::vector<QPDFObjectHandle> result;
723 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 727 else
728 728 {
... ...
libqpdf/QPDF_Array.cc
... ... @@ -3,9 +3,9 @@
3 3 #include <qpdf/QIntC.hh>
4 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 11 QPDF_Array::~QPDF_Array()
... ... @@ -26,10 +26,10 @@ std::string
26 26 QPDF_Array::unparse()
27 27 {
28 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 33 result += " ";
34 34 }
35 35 result += "]";
... ... @@ -40,10 +40,10 @@ JSON
40 40 QPDF_Array::getJSON()
41 41 {
42 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 48 return j;
49 49 }
... ... @@ -85,10 +85,14 @@ QPDF_Array::getItem(int n) const
85 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 98 void
... ... @@ -100,9 +104,14 @@ QPDF_Array::setItem(int n, QPDFObjectHandle const&amp; oh)
100 104 }
101 105  
102 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 117 void
... ...
libqpdf/qpdf/QPDF_Array.hh
... ... @@ -19,7 +19,7 @@ class QPDF_Array: public QPDFObject
19 19  
20 20 int getNItems() const;
21 21 QPDFObjectHandle getItem(int n) const;
22   - std::vector<QPDFObjectHandle> const& getAsVector() const;
  22 + void getAsVector(std::vector<QPDFObjectHandle>&) const;
23 23  
24 24 void setItem(int, QPDFObjectHandle const&);
25 25 void setFromVector(std::vector<QPDFObjectHandle> const& items);
... ...