diff options
Diffstat (limited to 'libqpdf/QPDF_Array.cc')
-rw-r--r-- | libqpdf/QPDF_Array.cc | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/libqpdf/QPDF_Array.cc b/libqpdf/QPDF_Array.cc index 6e8db5e9..12e4b3e9 100644 --- a/libqpdf/QPDF_Array.cc +++ b/libqpdf/QPDF_Array.cc @@ -1,6 +1,7 @@ #include <qpdf/QPDF_Array.hh> #include <qpdf/QIntC.hh> +#include <qpdf/QPDFObject_private.hh> #include <qpdf/QUtil.hh> #include <stdexcept> @@ -10,6 +11,12 @@ QPDF_Array::QPDF_Array(std::vector<QPDFObjectHandle> const& v) : setFromVector(v); } +QPDF_Array::QPDF_Array(std::vector<std::shared_ptr<QPDFObject>>&& v) : + QPDFValue(::ot_array, "array") +{ + setFromVector(std::move(v)); +} + QPDF_Array::QPDF_Array(SparseOHArray const& items) : QPDFValue(::ot_array, "array"), elements(items) @@ -23,6 +30,12 @@ QPDF_Array::create(std::vector<QPDFObjectHandle> const& items) } std::shared_ptr<QPDFObject> +QPDF_Array::create(std::vector<std::shared_ptr<QPDFObject>>&& items) +{ + return do_create(new QPDF_Array(std::move(items))); +} + +std::shared_ptr<QPDFObject> QPDF_Array::create(SparseOHArray const& items) { return do_create(new QPDF_Array(items)); @@ -107,6 +120,15 @@ QPDF_Array::setFromVector(std::vector<QPDFObjectHandle> const& v) } void +QPDF_Array::setFromVector(std::vector<std::shared_ptr<QPDFObject>>&& v) +{ + this->elements = SparseOHArray(); + for (auto&& iter: v) { + this->elements.append(iter); + } +} + +void QPDF_Array::insertItem(int at, QPDFObjectHandle const& item) { // As special case, also allow insert beyond the end |