Commit a89d8a0677f726ea029a67db164e0116971ffafc
1 parent
e83f3308
Refactor QPDF_Array in preparation for using SparseOHArray
Showing
3 changed files
with
24 additions
and
15 deletions
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& 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); | ... | ... |