2
1
mirror of https://github.com/qpdf/qpdf.git synced 2024-05-31 09:20:52 +00:00

Remove SparseOHArray::at, setAt and append

This commit is contained in:
m-holger 2023-03-29 16:39:34 +01:00
parent 1c85e7ece4
commit e186da1721
3 changed files with 4 additions and 61 deletions

View File

@ -193,7 +193,7 @@ QPDF_Array::setAt(int at, QPDFObjectHandle const& oh)
}
checkOwnership(oh);
if (sparse) {
sp_elements.setAt(at, oh);
sp_elements.elements[at] = oh.getObj();
} else {
elements[size_t(at)] = oh.getObj();
}
@ -206,7 +206,7 @@ QPDF_Array::setFromVector(std::vector<QPDFObjectHandle> const& v)
if (sparse) {
sp_elements = SparseOHArray();
for (auto const& iter: v) {
sp_elements.append(iter);
sp_elements.elements[sp_elements.n_elements++] = iter.getObj();
}
} else {
elements.resize(0);
@ -224,10 +224,9 @@ QPDF_Array::setFromVector(std::vector<std::shared_ptr<QPDFObject>>&& v)
for (auto&& item: v) {
if (item->getTypeCode() != ::ot_null ||
item->getObjGen().isIndirect()) {
sp_elements.append(std::move(item));
} else {
++sp_elements.n_elements;
sp_elements.elements[sp_elements.n_elements] = std::move(item);
}
++sp_elements.n_elements;
}
} else {
elements = std::move(v);

View File

@ -1,27 +1,5 @@
#include <qpdf/SparseOHArray.hh>
#include <stdexcept>
static const QPDFObjectHandle null_oh = QPDFObjectHandle::newNull();
QPDFObjectHandle
SparseOHArray::at(int idx) const
{
auto const& iter = elements.find(idx);
return iter == elements.end() ? null_oh : (*iter).second;
}
void
SparseOHArray::remove_last()
{
if (this->n_elements == 0) {
throw std::logic_error("INTERNAL ERROR: attempt to remove"
" last item from empty SparseOHArray");
}
--this->n_elements;
this->elements.erase(this->n_elements);
}
void
SparseOHArray::disconnect()
{
@ -42,15 +20,3 @@ SparseOHArray::copy()
}
return result;
}
SparseOHArray::const_iterator
SparseOHArray::begin() const
{
return this->elements.begin();
}
SparseOHArray::const_iterator
SparseOHArray::end() const
{
return this->elements.end();
}

View File

@ -16,31 +16,9 @@ class SparseOHArray
{
return n_elements;
}
void
append(QPDFObjectHandle oh)
{
elements[n_elements++] = oh.getObj();
}
void
append(std::shared_ptr<QPDFObject>&& obj)
{
elements[n_elements++] = std::move(obj);
}
QPDFObjectHandle at(int idx) const;
void remove_last();
void
setAt(int idx, QPDFObjectHandle oh)
{
elements[idx] = oh.getObj();
}
SparseOHArray copy();
void disconnect();
typedef std::map<int, std::shared_ptr<QPDFObject>>::const_iterator
const_iterator;
const_iterator begin() const;
const_iterator end() const;
private:
friend class QPDF_Array;
std::map<int, std::shared_ptr<QPDFObject>> elements;