Krita Source Code Documentation
Loading...
Searching...
No Matches
KoGenericRegistry.h
Go to the documentation of this file.
1/* This file is part of the KDE project
2 * SPDX-FileCopyrightText: 2004 Cyrille Berger <cberger@cberger.net>
3 * SPDX-FileCopyrightText: 2006 Boudewijn Rempt <boud@valdyas.org>
4 *
5 * SPDX-License-Identifier: LGPL-2.1-or-later
6 */
7
8#ifndef _KO_GENERIC_REGISTRY_H_
9#define _KO_GENERIC_REGISTRY_H_
10
11#include <QList>
12#include <QString>
13#include <QHash>
14
15#include "kis_assert.h"
16
45template<typename T>
47{
48public:
51 {
52 m_doubleEntries.clear();
53 m_hash.clear();
54 }
55
56public:
64 void add(T item)
65 {
67
68 const QString id = item->id();
70
71 if (m_hash.contains(id)) {
73 remove(id);
74 }
75 m_hash.insert(id, item);
76 }
77
83 void add(const QString &id, T item)
84 {
87
88 if (m_hash.contains(id)) {
90 remove(id);
91 }
92 m_hash.insert(id, item);
93 }
94
98 void remove(const QString &id)
99 {
100 m_hash.remove(id);
101 }
102
103 void addAlias(const QString &alias, const QString &id)
104 {
105 KIS_SAFE_ASSERT_RECOVER_NOOP(!m_hash.contains(alias));
106 m_aliases[alias] = id;
107 }
108
109 void removeAlias(const QString &alias)
110 {
111 m_aliases.remove(alias);
112 }
113
120 T get(const QString &id) const
121 {
122 return value(id);
123 }
124
130 bool contains(const QString &id) const
131 {
132 bool result = m_hash.contains(id);
133
134 if (!result && m_aliases.contains(id)) {
135 result = m_hash.contains(m_aliases.value(id));
136 }
137
138 return result;
139 }
140
145 const T value(const QString &id) const
146 {
147 T result = m_hash.value(id);
148
149 if (!result && m_aliases.contains(id)) {
150 result = m_hash.value(m_aliases.value(id));
151 }
152
153 return result;
154 }
155
160 {
161 return m_hash.keys();
162 }
163
164 int count() const
165 {
166 return m_hash.count();
167 }
168
170 {
171 return m_hash.values();
172 }
173
175 {
176 return m_doubleEntries;
177 }
178
179 typename QHash<QString, T>::const_iterator constBegin() const {
180 return m_hash.constBegin();
181 }
182
183 typename QHash<QString, T>::const_iterator constEnd() const {
184 return m_hash.constEnd();
185 }
186
187private:
188
190
191private:
192
193 QHash<QString, T> m_hash;
194 QHash<QString, QString> m_aliases;
195};
196
197#endif
QList< T > doubleEntries() const
const T value(const QString &id) const
QHash< QString, T > m_hash
void remove(const QString &id)
QList< T > values() const
T get(const QString &id) const
QHash< QString, T >::const_iterator constBegin() const
void add(const QString &id, T item)
QList< QString > keys() const
QHash< QString, T >::const_iterator constEnd() const
QHash< QString, QString > m_aliases
void removeAlias(const QString &alias)
void addAlias(const QString &alias, const QString &id)
bool contains(const QString &id) const
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:128
#define KIS_SAFE_ASSERT_RECOVER_NOOP(cond)
Definition kis_assert.h:130