MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / GenericMap

Class GenericMap

src/common/classes/GenericMap.h:56–377  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

54//
55template <typename KeyValuePair, typename KeyComparator = DefaultComparator<typename KeyValuePair::first_type> >
56class GenericMap : public AutoStorage
57{
58private:
59 template <typename TGenericMap, typename TAccessor, typename TKeyValuePair>
60 class BaseIterator
61 {
62 public:
63 BaseIterator(TGenericMap* map, bool initFinished = false)
64 : accessor(map),
65 finished(initFinished)
66 {
67 if (!initFinished)
68 finished = !accessor.getFirst();
69 }
70
71 public:
72 bool operator !=(const BaseIterator& o)
73 {
74 return !(
75 (finished && o.finished) ||
76 ((!finished && !o.finished && accessor.current() == o.accessor.current())));
77 }
78
79 void operator ++()
80 {
81 fb_assert(!finished);
82 finished = !accessor.getNext();
83 }
84
85 TKeyValuePair& operator *()
86 {
87 fb_assert(!finished);
88 return *accessor.current();
89 }
90
91 private:
92 TAccessor accessor;
93 bool finished;
94 };
95
96public:
97 typedef typename KeyValuePair::first_type KeyType;
98 typedef typename KeyValuePair::second_type ValueType;
99
100 typedef BePlusTree<KeyValuePair*, KeyType, FirstObjectKey<KeyValuePair>, KeyComparator> ValuesTree;
101 typedef typename ValuesTree::Accessor TreeAccessor;
102 typedef typename ValuesTree::ConstAccessor ConstTreeAccessor;
103
104 class Accessor
105 {
106 public:
107 explicit Accessor(GenericMap* map) : m_Accessor(&map->tree) {}
108
109 KeyValuePair* current() const { return m_Accessor.current(); }
110
111 bool getFirst() { return m_Accessor.getFirst(); }
112 bool getNext() { return m_Accessor.getNext(); }
113

Callers

nothing calls this directly

Calls 3

removeFunction · 0.85
getFunction · 0.50
putFunction · 0.50

Tested by

no test coverage detected