locator: minor changes
This commit is contained in:
@@ -46,7 +46,7 @@ public:
|
||||
* @return True if the service locator contains a value, false otherwise.
|
||||
*/
|
||||
[[nodiscard]] static bool has_value() noexcept {
|
||||
return (service.value != nullptr);
|
||||
return (service != nullptr);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -60,7 +60,7 @@ public:
|
||||
*/
|
||||
[[nodiscard]] static Service &value() noexcept {
|
||||
ENTT_ASSERT(has_value(), "Service not available");
|
||||
return *service.value;
|
||||
return *service;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -76,7 +76,7 @@ public:
|
||||
*/
|
||||
template<typename Impl = Service, typename... Args>
|
||||
[[nodiscard]] static Service &value_or(Args &&...args) {
|
||||
return service.value ? *service.value : emplace<Impl>(std::forward<Args>(args)...);
|
||||
return service ? *service : emplace<Impl>(std::forward<Args>(args)...);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -88,8 +88,8 @@ public:
|
||||
*/
|
||||
template<typename Impl = Service, typename... Args>
|
||||
static Service &emplace(Args &&...args) {
|
||||
service.value = std::make_shared<Impl>(std::forward<Args>(args)...);
|
||||
return *service.value;
|
||||
service = std::make_shared<Impl>(std::forward<Args>(args)...);
|
||||
return *service;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -103,8 +103,8 @@ public:
|
||||
*/
|
||||
template<typename Impl = Service, typename Allocator, typename... Args>
|
||||
static Service &allocate_emplace(Allocator alloc, Args &&...args) {
|
||||
service.value = std::allocate_shared<Impl>(alloc, std::forward<Args>(args)...);
|
||||
return *service.value;
|
||||
service = std::allocate_shared<Impl>(alloc, std::forward<Args>(args)...);
|
||||
return *service;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -112,7 +112,9 @@ public:
|
||||
* @return A handle to the underlying service.
|
||||
*/
|
||||
static node_type handle() noexcept {
|
||||
return service;
|
||||
node_type node{};
|
||||
node.value = service;
|
||||
return node;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -120,11 +122,11 @@ public:
|
||||
* @param other Optional handle with which to replace the service.
|
||||
*/
|
||||
static void reset(const node_type &other = {}) noexcept {
|
||||
service = other;
|
||||
service = other.value;
|
||||
}
|
||||
|
||||
private:
|
||||
inline static service_handle service{};
|
||||
inline static std::shared_ptr<Service> service{};
|
||||
};
|
||||
|
||||
} // namespace entt
|
||||
|
||||
Reference in New Issue
Block a user