9#ifndef INTERFACES_CORE_ITAGSMANAGER_H
10#define INTERFACES_CORE_ITAGSMANAGER_H
19class QAbstractItemModel;
42 result.reserve (ids.size ());
43 for (
const auto&
id : ids)
44 result <<
TagId {
id };
55 result.reserve (ids.size ());
56 for (
const auto&
id : ids)
62 inline size_t qHash (
const TagId&
id,
size_t seed = 0) noexcept
64 return qHash (
id.Id_, seed);
115 virtual std::optional<LC::TagId>
GetID (
const QString& tag) = 0;
131 for (
const auto& tag : tags)
132 if (
const auto&
id =
GetID (tag))
166 result.reserve (ids.size ());
167 for (
const auto&
id : ids)
169 result.removeDuplicates ();
184 virtual QStringList
Split (
const QString&
string)
const = 0;
203 virtual QString
Join (
const QStringList& tags)
const = 0;
228Q_DECLARE_INTERFACE (
ITagsManager,
"org.Deviant.LeechCraft.ITagsManager/1.0")
QDataStream & operator>>(QDataStream &in, TagId &id)
size_t qHash(const TagId &id, size_t seed=0) noexcept
QDataStream & operator<<(QDataStream &out, const TagId &id)
An identifier of a tag in ITagsManager.
static QList< TagId > FromStrings(const QStringList &ids)
Wraps the persisted forms ids into identifiers.
bool operator==(const TagId &) const =default
static QStringList ToStrings(const QList< TagId > &ids)
Returns the persisted forms of ids.
Q_DECLARE_METATYPE(QVariantList *)