#ifndef QPDF_DICTIONARY_HH #define QPDF_DICTIONARY_HH #include #include #include #include class QPDF_Dictionary: public QPDFValue { public: virtual ~QPDF_Dictionary() = default; static std::shared_ptr create(std::map const& items); virtual std::shared_ptr shallowCopy(); virtual std::string unparse(); virtual JSON getJSON(int json_version); virtual void disconnect(); // hasKey() and getKeys() treat keys with null values as if they // aren't there. getKey() returns null for the value of a // non-existent key. This is as per the PDF spec. bool hasKey(std::string const&); QPDFObjectHandle getKey(std::string const&); std::set getKeys(); std::map const& getAsMap() const; // If value is null, remove key; otherwise, replace the value of // key, adding it if it does not exist. void replaceKey(std::string const& key, QPDFObjectHandle value); // Remove key, doing nothing if key does not exist void removeKey(std::string const& key); private: QPDF_Dictionary(std::map const& items); std::map items; }; #endif // QPDF_DICTIONARY_HH