aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/qpdf/QPDF_Array.hh
diff options
context:
space:
mode:
Diffstat (limited to 'libqpdf/qpdf/QPDF_Array.hh')
-rw-r--r--libqpdf/qpdf/QPDF_Array.hh44
1 files changed, 23 insertions, 21 deletions
diff --git a/libqpdf/qpdf/QPDF_Array.hh b/libqpdf/qpdf/QPDF_Array.hh
index 56c0101f..4762bb6e 100644
--- a/libqpdf/qpdf/QPDF_Array.hh
+++ b/libqpdf/qpdf/QPDF_Array.hh
@@ -3,8 +3,7 @@
#include <qpdf/QPDFValue.hh>
-#include <qpdf/SparseOHArray.hh>
-#include <list>
+#include <map>
#include <vector>
class QPDF_Array: public QPDFValue
@@ -14,34 +13,37 @@ class QPDF_Array: public QPDFValue
static std::shared_ptr<QPDFObject>
create(std::vector<QPDFObjectHandle> const& items);
static std::shared_ptr<QPDFObject>
- create(std::vector<std::shared_ptr<QPDFObject>>&& items);
- static std::shared_ptr<QPDFObject> create(SparseOHArray const& items);
+ create(std::vector<std::shared_ptr<QPDFObject>>&& items, bool sparse);
virtual std::shared_ptr<QPDFObject> copy(bool shallow = false);
virtual std::string unparse();
virtual JSON getJSON(int json_version);
virtual void disconnect();
- int getNItems() const;
- QPDFObjectHandle getItem(int n) const;
- void getAsVector(std::vector<QPDFObjectHandle>&) const;
-
- void setItem(int, QPDFObjectHandle const&);
+ int
+ size() const noexcept
+ {
+ return sparse ? sp_size : int(elements.size());
+ }
+ QPDFObjectHandle at(int n) const noexcept;
+ bool setAt(int n, QPDFObjectHandle const& oh);
+ std::vector<QPDFObjectHandle> getAsVector() const;
void setFromVector(std::vector<QPDFObjectHandle> const& items);
- void setFromVector(std::vector<std::shared_ptr<QPDFObject>>&& items);
- void insertItem(int at, QPDFObjectHandle const& item);
- void appendItem(QPDFObjectHandle const& item);
- void eraseItem(int at);
-
- // Helper methods for QPDF and QPDFObjectHandle -- these are
- // public methods since the whole class is not part of the public
- // API. Otherwise, these would be wrapped in accessor classes.
- void addExplicitElementsToList(std::list<QPDFObjectHandle>&) const;
+ bool insert(int at, QPDFObjectHandle const& item);
+ void push_back(QPDFObjectHandle const& item);
+ bool erase(int at);
private:
+ QPDF_Array();
+ QPDF_Array(QPDF_Array const&);
QPDF_Array(std::vector<QPDFObjectHandle> const& items);
- QPDF_Array(std::vector<std::shared_ptr<QPDFObject>>&& items);
- QPDF_Array(SparseOHArray const& items);
- SparseOHArray elements;
+ QPDF_Array(std::vector<std::shared_ptr<QPDFObject>>&& items, bool sparse);
+
+ void checkOwnership(QPDFObjectHandle const& item) const;
+
+ bool sparse{false};
+ int sp_size{0};
+ std::map<int, std::shared_ptr<QPDFObject>> sp_elements;
+ std::vector<std::shared_ptr<QPDFObject>> elements;
};
#endif // QPDF_ARRAY_HH