From 99f71fea64ada18def09e9c32633cf7c8e7ce5d7 Mon Sep 17 00:00:00 2001 From: max-001 Date: Tue, 5 Nov 2024 14:17:05 +0100 Subject: Implemented get_instances_max() at add_component() --- src/crepe/ComponentManager.hpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/crepe/ComponentManager.hpp') diff --git a/src/crepe/ComponentManager.hpp b/src/crepe/ComponentManager.hpp index 9b07f13..828ca8e 100644 --- a/src/crepe/ComponentManager.hpp +++ b/src/crepe/ComponentManager.hpp @@ -31,6 +31,13 @@ T & ComponentManager::add_component(uint32_t id, Args &&... args) { // Create a new component of type T (arguments directly forwarded). The // constructor must be called by ComponentManager. T * instance = new T(id, forward(args)...); + + // Check if the vector size is not greater than get_instances_max + if (components[type][id].size() >= instance->get_instances_max()) { + throw std::runtime_error( + "Exceeded maximum number of instances for this component type"); + } + // store its unique_ptr in the vector<> components[type][id].push_back(unique_ptr(instance)); -- cgit v1.2.3