diff --git a/include/Nazara/Core/ObjectLibrary.hpp b/include/Nazara/Core/ObjectLibrary.hpp index be9834560..fca255b01 100644 --- a/include/Nazara/Core/ObjectLibrary.hpp +++ b/include/Nazara/Core/ObjectLibrary.hpp @@ -25,6 +25,7 @@ class NzObjectLibrary static bool Has(const NzString& name); static void Register(const NzString& name, NzObjectRef object); + static NzObjectRef Query(const NzString& name); static void Unregister(const NzString& name); private: diff --git a/include/Nazara/Core/ObjectLibrary.inl b/include/Nazara/Core/ObjectLibrary.inl index 2c46a3f45..15ed62ffc 100644 --- a/include/Nazara/Core/ObjectLibrary.inl +++ b/include/Nazara/Core/ObjectLibrary.inl @@ -8,14 +8,11 @@ template NzObjectRef NzObjectLibrary::Get(const NzString& name) { - auto it = Type::s_library.find(name); - if (it != Type::s_library.end()) - return it->second; - else - { + NzObjectRef ref = Query(name); + if (!ref) NazaraError("Object \"" + name + "\" is not present"); - return nullptr; - } + + return ref; } template @@ -30,6 +27,16 @@ void NzObjectLibrary::Register(const NzString& name, NzObjectRef obj Type::s_library.emplace(name, object); } +template +NzObjectRef NzObjectLibrary::Query(const NzString& name) +{ + auto it = Type::s_library.find(name); + if (it != Type::s_library.end()) + return it->second; + else + return nullptr; +} + template void NzObjectLibrary::Unregister(const NzString& name) {