4#ifndef PDF_FIELD_CHILDREN_COLLECTION_H
5#define PDF_FIELD_CHILDREN_COLLECTION_H
8#include <podofo/auxiliary/Rect.h>
15 class PODOFO_API PdfFieldChildrenCollectionBase
17 friend class PdfField;
20 PdfFieldChildrenCollectionBase(PdfField& field);
23 PdfField& CreateChild();
24 PdfField& CreateChild(PdfPage& page,
const Rect& rect);
26 PdfField& GetFieldAt(
unsigned index);
28 const PdfField& GetFieldAt(
unsigned index)
const;
30 PdfField& GetField(
const PdfReference& ref);
32 const PdfField& GetField(
const PdfReference& ref)
const;
34 void RemoveFieldAt(
unsigned index);
36 void RemoveField(
const PdfReference& ref);
38 unsigned GetCount()
const;
40 bool HasKidsArray()
const;
43 using FieldList = std::vector<std::shared_ptr<PdfField>>;
45 template <
typename TField,
typename TListIterator>
48 friend class PdfFieldChildrenCollectionBase;
50 using difference_type = void;
51 using value_type = TField*;
53 using reference = void;
54 using iterator_category = std::forward_iterator_tag;
58 Iterator(
const TListIterator& iterator) : m_iterator(iterator) { }
60 Iterator(
const Iterator&) =
default;
61 Iterator& operator=(
const Iterator&) =
default;
62 bool operator==(
const Iterator& rhs)
const
64 return m_iterator == rhs.m_iterator;
66 bool operator!=(
const Iterator& rhs)
const
68 return m_iterator != rhs.m_iterator;
70 Iterator& operator++()
75 Iterator operator++(
int)
81 value_type operator*()
83 return m_iterator.get();
85 value_type operator->()
87 return m_iterator.get();
90 TListIterator m_iterator;
93 using iterator = Iterator<PdfField, FieldList::iterator>;
94 using const_iterator = Iterator<const PdfField, FieldList::const_iterator>;
99 const_iterator begin()
const;
100 const_iterator end()
const;
104 PdfField& AddChild(std::shared_ptr<PdfField> field);
106 PdfArray* getKidsArray()
const;
108 PdfField& getFieldAt(
unsigned index)
const;
109 PdfField& getField(
const PdfReference& ref)
const;
110 void fixIndices(
unsigned index);
113 using FieldMap = std::map<PdfReference, unsigned>;
119 PdfArray* m_kidsArray;
123 template <
typename TField>
124 class PdfFieldChildrenCollection final : PdfFieldChildrenCollectionBase
All classes, functions, types and enums of PoDoFo are members of these namespace.
Definition basetypes.h:13