/
breton75
/
modus2
Обзор
Документация
Войти
/
breton75
/
modus2
Код
Запросы
0
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
framework/global/token.cpp
109 строк
2 KB
Drendmor
Update entities.h, token.cpp, and 4 more files...
15 авг 2025, 10:48
15 авг 2025, 10:48
c291109
Код
Авторство
О чём код?
#include "token.h" modus::Token::Token(): entity(eUnknown), name(QString()), id(0), uid(0) { } modus::Token::Token(const QString& entity, const QString& name, quint32 id) { set(entity, name, id); } modus::Token::Token(const QString& entity, quint32 id): name(QString()) { set(entity, name, id); } modus::Token::Token(modus::Entity entity, const QString& name, quint32 id) { set(entity, name, id); } modus::Token::Token(modus::Entity entity, quint32 id): name(QString()) { set(entity, name, id); } modus::Token::Token(const Token& other) { set(other.entity, other.name, other.id); } modus::Token::Token(const QString& entity, const QVariant& identifier) { switch (identifier.type()) { case QMetaType::UInt: set(entity, identifier.toUInt()); break; default: set(entity, identifier.toString()); break; } } modus::Token::Token(Entity entity, const QVariant& identifier) { if(identifier.canConvert(QMetaType::UInt)) set(entity, identifier.toUInt()); else set(entity, identifier.toString()); } void modus::Token::set(modus::Entity entity, const QString& name, quint32 id) { this->entity = entity; this->name = name; this->id = id; uid = quint64(quint64(entity) << 48); // если для сущности задан id, то есть id != 0, то нет необходимости вычислять хэш имени if(id) uid |= quint64(id); else uid |= quint64(quint64(name.length()) << 32) | quint64(qHash(name)); } void modus::Token::set(modus::Entity entity, quint32 id) { set(entity, name, id); } void modus::Token::set(const QString& entity, const QString& name, quint32 id) { set(modus::EntityCode.value(entity, modus::eUnknown), name, id); } void modus::Token::set(const QString& entity, quint32 id) { set(modus::EntityCode.value(entity, modus::eUnknown), name, id); } QString modus::Token::toString(const QString& separator) const { QString str = modus::EntityCode.key(entity, "unknown"); if(!name.isEmpty()) str.append(separator).append(name); if(id) str.append(separator).append(QString("%1").arg(id)); return str; } QString modus::Token::entity_s() const { QString str = modus::EntityCode.key(entity, "unknown"); //qDebug() << "Token::entity_s: " << str << entity; return str; }