Skip to content

Commit

Permalink
meta: default context on meta objects to avoid pointless checks
Browse files Browse the repository at this point in the history
  • Loading branch information
skypjack committed Jan 10, 2025
1 parent 3de8a04 commit c413ebd
Showing 1 changed file with 8 additions and 9 deletions.
17 changes: 8 additions & 9 deletions src/entt/meta/meta.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -218,8 +218,7 @@ class meta_any {

public:
/*! Default constructor. */
meta_any()
: meta_any{meta_ctx_arg, locator<meta_ctx>::value_or()} {}
meta_any() = default;

/**
* @brief Context aware constructor.
Expand Down Expand Up @@ -640,7 +639,7 @@ class meta_any {

private:
any storage{};
const meta_ctx *ctx{};
const meta_ctx *ctx{&locator<meta_ctx>::value_or()};
internal::meta_type_node node{};
vtable_type *vtable{};
};
Expand Down Expand Up @@ -930,7 +929,7 @@ struct meta_data {

private:
internal::meta_data_node node{};
const meta_ctx *ctx{};
const meta_ctx *ctx{&locator<meta_ctx>::value_or()};
};

/**
Expand Down Expand Up @@ -1018,7 +1017,7 @@ struct meta_func {
template<typename... Args>
// NOLINTNEXTLINE(modernize-use-nodiscard)
meta_any invoke(meta_handle instance, Args &&...args) const {
return (ctx != nullptr) ? invoke(std::move(instance), std::array<meta_any, sizeof...(Args)>{meta_any{*ctx, std::forward<Args>(args)}...}.data(), sizeof...(Args)) : meta_any{};
return invoke(std::move(instance), std::array<meta_any, sizeof...(Args)>{meta_any{*ctx, std::forward<Args>(args)}...}.data(), sizeof...(Args));
}

/*! @copydoc meta_data::traits */
Expand Down Expand Up @@ -1055,7 +1054,7 @@ struct meta_func {

private:
internal::meta_func_node node{};
const meta_ctx *ctx{};
const meta_ctx *ctx{&locator<meta_ctx>::value_or()};
};

/**
Expand Down Expand Up @@ -1390,7 +1389,7 @@ class meta_type {
*/
template<typename... Args>
[[nodiscard]] meta_any construct(Args &&...args) const {
return (ctx != nullptr) ? construct(std::array<meta_any, sizeof...(Args)>{meta_any{*ctx, std::forward<Args>(args)}...}.data(), sizeof...(Args)) : meta_any{};
return construct(std::array<meta_any, sizeof...(Args)>{meta_any{*ctx, std::forward<Args>(args)}...}.data(), sizeof...(Args));
}

/**
Expand Down Expand Up @@ -1450,7 +1449,7 @@ class meta_type {
template<typename... Args>
// NOLINTNEXTLINE(modernize-use-nodiscard)
meta_any invoke(const id_type id, meta_handle instance, Args &&...args) const {
return (ctx != nullptr) ? invoke(id, std::move(instance), std::array<meta_any, sizeof...(Args)>{meta_any{*ctx, std::forward<Args>(args)}...}.data(), sizeof...(Args)) : meta_any{};
return invoke(id, std::move(instance), std::array<meta_any, sizeof...(Args)>{meta_any{*ctx, std::forward<Args>(args)}...}.data(), sizeof...(Args));
}

/**
Expand Down Expand Up @@ -1505,7 +1504,7 @@ class meta_type {

private:
internal::meta_type_node node{};
const meta_ctx *ctx{};
const meta_ctx *ctx{&locator<meta_ctx>::value_or()};
};

/**
Expand Down

0 comments on commit c413ebd

Please sign in to comment.