16class PODOFO_API PdfNameTreeBase :
public PdfDictionaryElement
18 template <
typename TElement>
19 friend class PdfNameTree;
22 PdfNameTreeBase(PdfDocument& doc);
23 PdfNameTreeBase(PdfObject& obj);
26 bool HasKey(
const std::string_view& key)
const;
29 void AddValue(
const PdfString& key, std::shared_ptr<PdfElement>&& value);
31 PdfElement* GetValue(
const std::string_view& key)
const;
33 void ToDictionary(PdfStringMap<std::shared_ptr<PdfElement>>& dict,
bool skipClear);
35 virtual PdfKnownNameTree GetType()
const = 0;
38 std::unique_ptr<PdfElement> createElement(PdfObject& obj)
const;
41 PdfStringHashMap<std::shared_ptr<PdfElement>> m_cache;
44template <
typename TElement>
45class PdfNameTree final :
public PdfNameTreeBase
47 friend class PdfNameTrees;
50 PdfNameTree(PdfDocument& doc)
51 : PdfNameTreeBase(doc) { }
53 PdfNameTree(PdfObject& obj)
54 : PdfNameTreeBase(obj) { }
57 using Map = PdfStringMap<std::shared_ptr<TElement>>;
60 void AddValue(
const PdfString& key, std::shared_ptr<TElement> value)
62 PdfNameTreeBase::AddValue(key, std::move(
reinterpret_cast<std::shared_ptr<PdfElement>&
>(value)));
65 TElement* GetValue(
const std::string_view& key)
67 return static_cast<TElement*
>(PdfNameTreeBase::GetValue(key));
70 const TElement* GetValue(
const std::string_view& key)
const
72 return static_cast<const TElement*
>(PdfNameTreeBase::GetValue(key));
75 void ToDictionary(Map& dict,
bool skipClear =
false)
77 PdfNameTreeBase::ToDictionary(
reinterpret_cast<PdfStringMap<std::shared_ptr<PdfElement>
>&>(dict), skipClear);
81 PdfKnownNameTree GetType()
const override
87 static constexpr PdfKnownNameTree getType()
89 if (std::is_same_v<TElement, PdfFileSpec>)
90 return PdfKnownNameTree::EmbeddedFiles;
91 else if (std::is_same_v<TElement, PdfDestination>)
92 return PdfKnownNameTree::Dests;
94 return PdfKnownNameTree::Unknown;
99using PdfDestinations = PdfNameTree<PdfDestination>;
100using PdfEmbeddedFiles = PdfNameTree<PdfFileSpec>;
All classes, functions, types and enums of PoDoFo are members of these namespace.
Definition basetypes.h:13