#ifndef QPDF_ARRAY_HH #define QPDF_ARRAY_HH #include #include #include class QPDF_Array: public QPDFValue { public: ~QPDF_Array() override = default; static std::shared_ptr create(std::vector const& items); static std::shared_ptr create(std::vector>&& items, bool sparse); std::shared_ptr copy(bool shallow = false) override; std::string unparse() override; JSON getJSON(int json_version) override; void disconnect() override; 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 getAsVector() const; void setFromVector(std::vector const& items); 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 const& items); QPDF_Array(std::vector>&& items, bool sparse); void checkOwnership(QPDFObjectHandle const& item) const; bool sparse{false}; int sp_size{0}; std::map> sp_elements; std::vector> elements; }; #endif // QPDF_ARRAY_HH