diff --git a/develop/singles/headers/meta.hpp/meta_all.hpp b/develop/singles/headers/meta.hpp/meta_all.hpp index 18eea5b..5d3b74f 100644 --- a/develop/singles/headers/meta.hpp/meta_all.hpp +++ b/develop/singles/headers/meta.hpp/meta_all.hpp @@ -4698,23 +4698,6 @@ namespace meta_hpp } } -namespace meta_hpp -{ - template < class_kind Class, typename... Args > - [[nodiscard]] constructor_type resolve_constructor_type() { - using namespace detail; - type_registry& registry = type_registry::instance(); - return registry.resolve_constructor_type(); - } - - template < class_kind Class > - [[nodiscard]] destructor_type resolve_destructor_type() { - using namespace detail; - type_registry& registry = type_registry::instance(); - return registry.resolve_destructor_type(); - } -} - namespace meta_hpp { template < typename F > diff --git a/develop/unshared/meta_shared_exe/meta_shared_tests.cpp b/develop/unshared/meta_shared_exe/meta_shared_tests.cpp index 9163692..1b2681f 100644 --- a/develop/unshared/meta_shared_exe/meta_shared_tests.cpp +++ b/develop/unshared/meta_shared_exe/meta_shared_tests.cpp @@ -15,9 +15,6 @@ namespace struct ivec2 { int x{}, y{}; - - explicit ivec2(int nv) : x{nv}, y{nv} {} - ivec2(int nx, int ny) : x{nx}, y{ny} {} }; struct another_ivec2 { @@ -78,11 +75,19 @@ TEST_CASE("meta/meta_shared/tests") { REQUIRE(ivec2_dtor); REQUIRE(another_ivec2_dtor); - CHECK(ivec2_ctor0.get_type() == meta::resolve_constructor_type()); - CHECK(ivec2_ctor1.get_type() == meta::resolve_constructor_type()); - CHECK(ivec2_ctor2.get_type() == meta::resolve_constructor_type()); - CHECK(ivec2_dtor.get_type() == meta::resolve_destructor_type()); - CHECK(another_ivec2_dtor.get_type() == meta::resolve_destructor_type()); + CHECK(ivec2_ctor0.get_type().get_owner_type() == meta::resolve_type()); + CHECK(ivec2_ctor0.get_type().get_argument_type(0) == meta::resolve_type()); + + CHECK(ivec2_ctor1.get_type().get_owner_type() == meta::resolve_type()); + CHECK(ivec2_ctor1.get_type().get_argument_type(0) == meta::resolve_type()); + + CHECK(ivec2_ctor2.get_type().get_owner_type() == meta::resolve_type()); + CHECK(ivec2_ctor2.get_type().get_argument_type(0) == meta::resolve_type()); + CHECK(ivec2_ctor2.get_type().get_argument_type(1) == meta::resolve_type()); + + CHECK(ivec2_dtor.get_type().get_owner_type() == meta::resolve_type()); + + CHECK(another_ivec2_dtor.get_type().get_owner_type() == meta::resolve_type()); CHECK(ivec2_ctor0 != ivec2_ctor1); CHECK(ivec2_ctor1 != ivec2_ctor2); diff --git a/develop/untests/meta_states/ctor_tests.cpp b/develop/untests/meta_states/ctor_tests.cpp index a486be7..9d48f26 100644 --- a/develop/untests/meta_states/ctor_tests.cpp +++ b/develop/untests/meta_states/ctor_tests.cpp @@ -47,7 +47,7 @@ namespace ++constructor_counter; } - clazz_noncopyable(clazz_noncopyable&& other) : i{other.i} { + clazz_noncopyable(clazz_noncopyable&& other) noexcept : i{other.i} { other.i = 0; ++move_constructor_counter; } @@ -88,7 +88,10 @@ TEST_CASE("meta/meta_states/ctor/noncopyable") { { const meta::constructor ctor = clazz_type.get_constructor_with(); REQUIRE(ctor); - CHECK(ctor.get_type() == meta::resolve_constructor_type()); + + CHECK(ctor.get_type().get_owner_type() == meta::resolve_type()); + CHECK(ctor.get_type().get_arity() == 1); + CHECK(ctor.get_type().get_argument_type(0) == meta::resolve_type()); } { const meta::uvalue v = clazz_type.create(42); @@ -106,7 +109,11 @@ TEST_CASE("meta/meta_states/ctor/noncopyable") { { const meta::constructor ctor = clazz_type.get_constructor_with(); REQUIRE(ctor); - CHECK(ctor.get_type() == meta::resolve_constructor_type()); + + CHECK(ctor.get_type().get_owner_type() == meta::resolve_type()); + CHECK(ctor.get_type().get_arity() == 1); + CHECK(ctor.get_type().get_argument_type(0) == meta::resolve_type()); + CHECK(ctor.get_type().get_flags() == meta::constructor_flags::is_noexcept); } { clazz_t o{42}; @@ -146,8 +153,10 @@ TEST_CASE("meta/meta_states/ctor/as_object") { { const meta::constructor ctor = clazz_type.get_constructor_with(); REQUIRE(ctor); - CHECK(ctor.get_type() == meta::resolve_constructor_type()); + CHECK(ctor.get_type().get_owner_type() == meta::resolve_type()); + CHECK(ctor.get_type().get_arity() == 1); + CHECK(ctor.get_type().get_argument_type(0) == meta::resolve_type()); CHECK(ctor.get_type().get_flags() == meta::constructor_bitflags{}); } { @@ -221,8 +230,10 @@ TEST_CASE("meta/meta_states/ctor/as_object") { { const meta::constructor ctor = clazz_type.get_constructor_with(); REQUIRE(ctor); - CHECK(ctor.get_type() == meta::resolve_constructor_type()); + CHECK(ctor.get_type().get_owner_type() == meta::resolve_type()); + CHECK(ctor.get_type().get_arity() == 1); + CHECK(ctor.get_type().get_argument_type(0) == meta::resolve_type()); CHECK(ctor.get_type().get_flags() == meta::constructor_flags::is_noexcept); } { @@ -260,7 +271,11 @@ TEST_CASE("meta/meta_states/ctor/as_object") { { const meta::constructor ctor = clazz_type.get_constructor_with(); REQUIRE(ctor); - CHECK(ctor.get_type() == meta::resolve_constructor_type()); + + CHECK(ctor.get_type().get_owner_type() == meta::resolve_type()); + CHECK(ctor.get_type().get_arity() == 1); + CHECK(ctor.get_type().get_argument_type(0) == meta::resolve_type()); + CHECK(ctor.get_type().get_flags() == meta::constructor_bitflags{}); } { clazz_t o{42}; @@ -316,7 +331,11 @@ TEST_CASE("meta/meta_states/ctor/as_raw_pointer") { { const meta::constructor ctor = clazz_type.get_constructor_with(); REQUIRE(ctor); - CHECK(ctor.get_type() == meta::resolve_constructor_type()); + + CHECK(ctor.get_type().get_owner_type() == meta::resolve_type()); + CHECK(ctor.get_type().get_arity() == 1); + CHECK(ctor.get_type().get_argument_type(0) == meta::resolve_type()); + CHECK(ctor.get_type().get_flags() == meta::constructor_bitflags{}); } { const meta::uvalue v = clazz_type.create(42); @@ -334,7 +353,11 @@ TEST_CASE("meta/meta_states/ctor/as_raw_pointer") { { const meta::constructor ctor = clazz_type.get_constructor_with(); REQUIRE(ctor); - CHECK(ctor.get_type() == meta::resolve_constructor_type()); + + CHECK(ctor.get_type().get_owner_type() == meta::resolve_type()); + CHECK(ctor.get_type().get_arity() == 1); + CHECK(ctor.get_type().get_argument_type(0) == meta::resolve_type()); + CHECK(ctor.get_type().get_flags() == meta::constructor_flags::is_noexcept); } { clazz_t o{42}; @@ -353,7 +376,11 @@ TEST_CASE("meta/meta_states/ctor/as_raw_pointer") { { const meta::constructor ctor = clazz_type.get_constructor_with(); REQUIRE(ctor); - CHECK(ctor.get_type() == meta::resolve_constructor_type()); + + CHECK(ctor.get_type().get_owner_type() == meta::resolve_type()); + CHECK(ctor.get_type().get_arity() == 1); + CHECK(ctor.get_type().get_argument_type(0) == meta::resolve_type()); + CHECK(ctor.get_type().get_flags() == meta::constructor_bitflags{}); } { clazz_t o{42}; @@ -391,7 +418,11 @@ TEST_CASE("meta/meta_states/ctor/as_shared_pointer") { { const meta::constructor ctor = clazz_type.get_constructor_with(); REQUIRE(ctor); - CHECK(ctor.get_type() == meta::resolve_constructor_type()); + + CHECK(ctor.get_type().get_owner_type() == meta::resolve_type()); + CHECK(ctor.get_type().get_arity() == 1); + CHECK(ctor.get_type().get_argument_type(0) == meta::resolve_type()); + CHECK(ctor.get_type().get_flags() == meta::constructor_bitflags{}); } { const meta::uvalue v = clazz_type.create(42); @@ -409,7 +440,11 @@ TEST_CASE("meta/meta_states/ctor/as_shared_pointer") { { const meta::constructor ctor = clazz_type.get_constructor_with(); REQUIRE(ctor); - CHECK(ctor.get_type() == meta::resolve_constructor_type()); + + CHECK(ctor.get_type().get_owner_type() == meta::resolve_type()); + CHECK(ctor.get_type().get_arity() == 1); + CHECK(ctor.get_type().get_argument_type(0) == meta::resolve_type()); + CHECK(ctor.get_type().get_flags() == meta::constructor_flags::is_noexcept); } { clazz_t o{42}; @@ -428,7 +463,11 @@ TEST_CASE("meta/meta_states/ctor/as_shared_pointer") { { const meta::constructor ctor = clazz_type.get_constructor_with(); REQUIRE(ctor); - CHECK(ctor.get_type() == meta::resolve_constructor_type()); + + CHECK(ctor.get_type().get_owner_type() == meta::resolve_type()); + CHECK(ctor.get_type().get_arity() == 1); + CHECK(ctor.get_type().get_argument_type(0) == meta::resolve_type()); + CHECK(ctor.get_type().get_flags() == meta::constructor_bitflags{}); } { clazz_t o{42}; @@ -466,7 +505,11 @@ TEST_CASE("meta/meta_states/ctor/as_unique_pointer") { { const meta::constructor ctor = clazz_type.get_constructor_with(); REQUIRE(ctor); - CHECK(ctor.get_type() == meta::resolve_constructor_type()); + + CHECK(ctor.get_type().get_owner_type() == meta::resolve_type()); + CHECK(ctor.get_type().get_arity() == 1); + CHECK(ctor.get_type().get_argument_type(0) == meta::resolve_type()); + CHECK(ctor.get_type().get_flags() == meta::constructor_bitflags{}); } { const meta::uvalue v = clazz_type.create(42); @@ -484,7 +527,11 @@ TEST_CASE("meta/meta_states/ctor/as_unique_pointer") { { const meta::constructor ctor = clazz_type.get_constructor_with(); REQUIRE(ctor); - CHECK(ctor.get_type() == meta::resolve_constructor_type()); + + CHECK(ctor.get_type().get_owner_type() == meta::resolve_type()); + CHECK(ctor.get_type().get_arity() == 1); + CHECK(ctor.get_type().get_argument_type(0) == meta::resolve_type()); + CHECK(ctor.get_type().get_flags() == meta::constructor_flags::is_noexcept); } { clazz_t o{42}; @@ -503,7 +550,11 @@ TEST_CASE("meta/meta_states/ctor/as_unique_pointer") { { const meta::constructor ctor = clazz_type.get_constructor_with(); REQUIRE(ctor); - CHECK(ctor.get_type() == meta::resolve_constructor_type()); + + CHECK(ctor.get_type().get_owner_type() == meta::resolve_type()); + CHECK(ctor.get_type().get_arity() == 1); + CHECK(ctor.get_type().get_argument_type(0) == meta::resolve_type()); + CHECK(ctor.get_type().get_flags() == meta::constructor_bitflags{}); } { clazz_t o{42}; diff --git a/headers/meta.hpp/meta_registry.hpp b/headers/meta.hpp/meta_registry.hpp index 2d0006a..69f3bad 100644 --- a/headers/meta.hpp/meta_registry.hpp +++ b/headers/meta.hpp/meta_registry.hpp @@ -58,23 +58,6 @@ namespace meta_hpp } } -namespace meta_hpp -{ - template < class_kind Class, typename... Args > - [[nodiscard]] constructor_type resolve_constructor_type() { - using namespace detail; - type_registry& registry = type_registry::instance(); - return registry.resolve_constructor_type(); - } - - template < class_kind Class > - [[nodiscard]] destructor_type resolve_destructor_type() { - using namespace detail; - type_registry& registry = type_registry::instance(); - return registry.resolve_destructor_type(); - } -} - namespace meta_hpp { template < typename F >