Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- template <typename R>
- class ResourceManager
- {
- public:
- ResourceManager() = default;
- template <typename T>
- void set(const R& name, T& object);
- template <typename T>
- T get(const R& name);
- private:
- QHash<R, void*> m_objectsMap;
- };
- template <typename R>
- template <typename T>
- void ResourceManager<R>::set(const R& name, T& object) {
- m_objectsMap.insert(name, reinterpret_cast<void*>(&object));
- }
- template <typename R>
- template <typename T>
- T ResourceManager<R>::get(const R& name) {
- auto it = m_objectsMap.find(name);
- if (it == m_objectsMap.end()) throw std::invalid_argument("The item doesn't exists");
- return *static_cast<T*>(it.value());
- }
- struct UserData {
- QString username = "";
- QString permissions = "";
- QString token = "";
- qint64 lastTimeUsed = 0;
- UserData() {}
- };
- void f() {
- UserData userData;
- userData.username = userStruct.username;
- userData.permissions = userStruct.permissions;
- userData.token = token;
- userData.updateLastTimeUsed();
- qDebug() << "[Users][actionCheckToken]userData='" << userData.toString() << "'";
- client.getResourceManager()->set<UserData>(USER_RESOURCEMANAGER_USERDATA_KEY, userData);
- }
- 1 std::__atomic_base<int>::load atomic_base.h 396 0x55555556500e
- 2 QAtomicOps<int>::load<int> qatomic_cxx11.h 227 0x55555556500e
- 3 QBasicAtomicInteger<int>::load qbasicatomic.h 103 0x555555563e5e
- 4 QtPrivate::RefCount::ref qrefcount.h 55 0x5555555624a6
- 5 QString::QString qstring.h 958 0x5555555629a9
- 6 Users::UserData::UserData <- my struct Users.hpp 26 0x555555578cf1
- 7 ResourceManager<QString>::get<Users::UserData> ResourceManager.hpp 36 0x555555578df4
- 8 [function from where I call]
- void b(Client& client) {
- qDebug() << "[Users][userIsLogged]Called" << "clientID='" + client.getID() + "'";
- auto userData = client.getResourceManager()->get<UserData>(USER_RESOURCEMANAGER_USERDATA_KEY);
- // ...
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement