From 93ad5ec32de124dfa0c054acfd1f2a378cb9ca75 Mon Sep 17 00:00:00 2001 From: Thorbjørn Lindeijer Date: Mon, 7 Oct 2024 12:40:35 +0200 Subject: Optimise PlayerRelationsManager::clear Previous implementation was O(n^2), doing lots of work (saving file and updating UI) for each removed player. --- src/configuration.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/configuration.h') diff --git a/src/configuration.h b/src/configuration.h index a22eb258..a26c6e20 100644 --- a/src/configuration.h +++ b/src/configuration.h @@ -53,7 +53,7 @@ class ConfigurationListManager * \return obj, or otherwise NULL to indicate that this option should * be skipped */ - virtual ConfigurationObject *writeConfigItem(T value, + virtual ConfigurationObject *writeConfigItem(const T &value, ConfigurationObject *obj) = 0; /** @@ -124,7 +124,7 @@ class ConfigurationObject */ template void setList(const std::string &name, IT begin, IT end, - ConfigurationListManager *manager) + ConfigurationListManager &manager) { auto *nextobj = new ConfigurationObject; std::list &list = mContainerOptions[name]; @@ -132,7 +132,7 @@ class ConfigurationObject for (IT it = begin; it != end; it++) { - ConfigurationObject *wrobj = manager->writeConfigItem(*it, nextobj); + ConfigurationObject *wrobj = manager.writeConfigItem(*it, nextobj); if (wrobj) { // wrote something assert (wrobj == nextobj); @@ -160,12 +160,12 @@ class ConfigurationObject * \param manager An object capable of deserialising items into CONT */ template - CONT getList(const std::string &name, CONT empty, ConfigurationListManager *manager) + CONT getList(const std::string &name, CONT empty, ConfigurationListManager &manager) { CONT container = empty; for (auto obj : mContainerOptions[name]) - container = manager->readConfigItem(obj, container); + container = manager.readConfigItem(obj, container); return container; } -- cgit v1.2.3-70-g09d2