mirror of
https://github.com/BlackMATov/meta.hpp.git
synced 2026-03-22 04:53:59 +07:00
Compare commits
6 Commits
8bb1783209
...
7fd6ba7412
| Author | SHA1 | Date | |
|---|---|---|---|
| 7fd6ba7412 | |||
|
|
0b1dac5246 | ||
| 794395ba9b | |||
|
|
71e0ea73bb | ||
|
|
4ddaf7970f | ||
|
|
ead26278fa |
@@ -2812,7 +2812,7 @@ namespace meta_hpp
|
||||
|
||||
struct alignas(std::max_align_t) internal_storage_t final {
|
||||
// NOLINTNEXTLINE(*-avoid-c-arrays)
|
||||
std::byte data[sizeof(void*) * 2];
|
||||
std::byte data[sizeof(void*) * 3];
|
||||
};
|
||||
|
||||
struct external_storage_t final {
|
||||
@@ -4495,6 +4495,7 @@ namespace meta_hpp::detail
|
||||
function_index index;
|
||||
metadata_map metadata;
|
||||
|
||||
uvalue pointer;
|
||||
invoke_impl invoke{};
|
||||
invoke_error_impl invoke_error{};
|
||||
argument_list arguments{};
|
||||
@@ -4514,6 +4515,7 @@ namespace meta_hpp::detail
|
||||
member_index index;
|
||||
metadata_map metadata;
|
||||
|
||||
uvalue pointer;
|
||||
getter_impl getter{};
|
||||
setter_impl setter{};
|
||||
getter_error_impl getter_error{};
|
||||
@@ -4531,6 +4533,7 @@ namespace meta_hpp::detail
|
||||
method_index index;
|
||||
metadata_map metadata;
|
||||
|
||||
uvalue pointer;
|
||||
invoke_impl invoke{};
|
||||
invoke_error_impl invoke_error{};
|
||||
argument_list arguments{};
|
||||
@@ -4560,6 +4563,7 @@ namespace meta_hpp::detail
|
||||
variable_index index;
|
||||
metadata_map metadata;
|
||||
|
||||
uvalue pointer;
|
||||
getter_impl getter{};
|
||||
setter_impl setter{};
|
||||
setter_error_impl setter_error{};
|
||||
@@ -7120,6 +7124,8 @@ namespace meta_hpp::detail
|
||||
std::move(metadata),
|
||||
};
|
||||
|
||||
state.pointer = function_ptr;
|
||||
|
||||
state.invoke = make_function_invoke<Policy>(registry, function_ptr);
|
||||
state.invoke_error = make_function_invoke_error<Function>(registry);
|
||||
state.arguments = make_function_arguments<Function>();
|
||||
@@ -7712,6 +7718,8 @@ namespace meta_hpp::detail
|
||||
std::move(metadata),
|
||||
};
|
||||
|
||||
state.pointer = member_ptr;
|
||||
|
||||
state.getter = make_member_getter<Policy>(registry, member_ptr);
|
||||
state.setter = make_member_setter(registry, member_ptr);
|
||||
state.getter_error = make_member_getter_error<Member>(registry);
|
||||
@@ -8016,6 +8024,8 @@ namespace meta_hpp::detail
|
||||
std::move(metadata),
|
||||
};
|
||||
|
||||
state.pointer = method_ptr;
|
||||
|
||||
state.invoke = make_method_invoke<Policy>(registry, method_ptr);
|
||||
state.invoke_error = make_method_invoke_error<Method>(registry);
|
||||
state.arguments = make_method_arguments<Method>();
|
||||
@@ -9358,6 +9368,8 @@ namespace meta_hpp::detail
|
||||
std::move(metadata),
|
||||
};
|
||||
|
||||
state.pointer = variable_ptr;
|
||||
|
||||
state.getter = make_variable_getter<Policy>(registry, variable_ptr);
|
||||
state.setter = make_variable_setter(registry, variable_ptr);
|
||||
state.setter_error = make_variable_setter_error<Pointer>(registry);
|
||||
|
||||
@@ -28,6 +28,7 @@ namespace
|
||||
static int arg_unbounded_const_arr(const ivec2 vs[]) { return vs[0].x + vs[0].y + vs[1].x + vs[1].y; }
|
||||
};
|
||||
|
||||
[[maybe_unused]]
|
||||
bool operator==(const ivec2& l, const ivec2& r) noexcept {
|
||||
return l.x == r.x && l.y == r.y;
|
||||
}
|
||||
|
||||
@@ -376,13 +376,13 @@ TEST_CASE("meta/meta_utilities/value") {
|
||||
CHECK(ivec2::move_constructor_counter == 1);
|
||||
CHECK(ivec2::copy_constructor_counter == 0);
|
||||
|
||||
val1.swap(val2);
|
||||
val2.swap(val1);
|
||||
CHECK(val1.as<ivec2>() == ivec2{1,2});
|
||||
CHECK(val2.as<std::string>() == "world"s);
|
||||
CHECK(ivec2::move_constructor_counter == 2);
|
||||
CHECK(ivec2::copy_constructor_counter == 0);
|
||||
|
||||
swap(val1, val2);
|
||||
swap(val2, val1);
|
||||
CHECK(val1.as<std::string>() == "world"s);
|
||||
CHECK(val2.as<ivec2>() == ivec2{1,2});
|
||||
}
|
||||
|
||||
@@ -484,6 +484,7 @@ namespace meta_hpp::detail
|
||||
function_index index;
|
||||
metadata_map metadata;
|
||||
|
||||
uvalue pointer;
|
||||
invoke_impl invoke{};
|
||||
invoke_error_impl invoke_error{};
|
||||
argument_list arguments{};
|
||||
@@ -503,6 +504,7 @@ namespace meta_hpp::detail
|
||||
member_index index;
|
||||
metadata_map metadata;
|
||||
|
||||
uvalue pointer;
|
||||
getter_impl getter{};
|
||||
setter_impl setter{};
|
||||
getter_error_impl getter_error{};
|
||||
@@ -520,6 +522,7 @@ namespace meta_hpp::detail
|
||||
method_index index;
|
||||
metadata_map metadata;
|
||||
|
||||
uvalue pointer;
|
||||
invoke_impl invoke{};
|
||||
invoke_error_impl invoke_error{};
|
||||
argument_list arguments{};
|
||||
@@ -549,6 +552,7 @@ namespace meta_hpp::detail
|
||||
variable_index index;
|
||||
metadata_map metadata;
|
||||
|
||||
uvalue pointer;
|
||||
getter_impl getter{};
|
||||
setter_impl setter{};
|
||||
setter_error_impl setter_error{};
|
||||
|
||||
@@ -127,6 +127,8 @@ namespace meta_hpp::detail
|
||||
std::move(metadata),
|
||||
};
|
||||
|
||||
state.pointer = function_ptr;
|
||||
|
||||
state.invoke = make_function_invoke<Policy>(registry, function_ptr);
|
||||
state.invoke_error = make_function_invoke_error<Function>(registry);
|
||||
state.arguments = make_function_arguments<Function>();
|
||||
|
||||
@@ -203,6 +203,8 @@ namespace meta_hpp::detail
|
||||
std::move(metadata),
|
||||
};
|
||||
|
||||
state.pointer = member_ptr;
|
||||
|
||||
state.getter = make_member_getter<Policy>(registry, member_ptr);
|
||||
state.setter = make_member_setter(registry, member_ptr);
|
||||
state.getter_error = make_member_getter_error<Member>(registry);
|
||||
|
||||
@@ -139,6 +139,8 @@ namespace meta_hpp::detail
|
||||
std::move(metadata),
|
||||
};
|
||||
|
||||
state.pointer = method_ptr;
|
||||
|
||||
state.invoke = make_method_invoke<Policy>(registry, method_ptr);
|
||||
state.invoke_error = make_method_invoke_error<Method>(registry);
|
||||
state.arguments = make_method_arguments<Method>();
|
||||
|
||||
@@ -124,6 +124,8 @@ namespace meta_hpp::detail
|
||||
std::move(metadata),
|
||||
};
|
||||
|
||||
state.pointer = variable_ptr;
|
||||
|
||||
state.getter = make_variable_getter<Policy>(registry, variable_ptr);
|
||||
state.setter = make_variable_setter(registry, variable_ptr);
|
||||
state.setter_error = make_variable_setter_error<Pointer>(registry);
|
||||
|
||||
@@ -119,7 +119,7 @@ namespace meta_hpp
|
||||
|
||||
struct alignas(std::max_align_t) internal_storage_t final {
|
||||
// NOLINTNEXTLINE(*-avoid-c-arrays)
|
||||
std::byte data[sizeof(void*) * 2];
|
||||
std::byte data[sizeof(void*) * 3];
|
||||
};
|
||||
|
||||
struct external_storage_t final {
|
||||
|
||||
@@ -174,6 +174,8 @@ public:
|
||||
function_type get_type() const noexcept;
|
||||
const std::string& get_name() const noexcept;
|
||||
|
||||
const uvalue& get_pointer() const noexcept;
|
||||
|
||||
std::size_t get_arity() const noexcept;
|
||||
argument get_argument(std::size_t position) const noexcept;
|
||||
const argument_list& get_arguments() const noexcept;
|
||||
@@ -227,6 +229,8 @@ public:
|
||||
member_type get_type() const noexcept;
|
||||
const std::string& get_name() const noexcept;
|
||||
|
||||
const uvalue& get_pointer() const noexcept;
|
||||
|
||||
template < typename Instance >
|
||||
uvalue get(Instance&& instance) const;
|
||||
|
||||
@@ -281,6 +285,8 @@ public:
|
||||
method_type get_type() const noexcept;
|
||||
const std::string& get_name() const noexcept;
|
||||
|
||||
const uvalue& get_pointer() const noexcept;
|
||||
|
||||
std::size_t get_arity() const noexcept;
|
||||
argument get_argument(std::size_t position) const noexcept;
|
||||
const argument_list& get_arguments() const noexcept;
|
||||
@@ -375,6 +381,8 @@ public:
|
||||
pointer_type get_type() const noexcept;
|
||||
const std::string& get_name() const noexcept;
|
||||
|
||||
const uvalue& get_pointer() const noexcept;
|
||||
|
||||
uvalue get() const;
|
||||
uresult try_get() const;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user