diff options
| author | max-001 <maxsmits21@kpnmail.nl> | 2024-11-05 14:17:05 +0100 | 
|---|---|---|
| committer | max-001 <maxsmits21@kpnmail.nl> | 2024-11-05 14:17:05 +0100 | 
| commit | 99f71fea64ada18def09e9c32633cf7c8e7ce5d7 (patch) | |
| tree | 71f2057bb653b9be11fb88679260689cc03331b7 | |
| parent | 5b8ec02b6b4f2356e2d688502298274e372b9fad (diff) | |
Implemented get_instances_max() at add_component()
| -rw-r--r-- | src/crepe/ComponentManager.hpp | 7 | 
1 files changed, 7 insertions, 0 deletions
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>(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<T>(instance));  |