diff --git a/develop/singles/headers/meta.hpp/meta_all.hpp b/develop/singles/headers/meta.hpp/meta_all.hpp index 9b63338..84fe91b 100644 --- a/develop/singles/headers/meta.hpp/meta_all.hpp +++ b/develop/singles/headers/meta.hpp/meta_all.hpp @@ -1106,115 +1106,6 @@ namespace meta_hpp::detail } } -namespace meta_hpp::detail -{ - enum class type_kind : std::uint32_t { - array_, - class_, - constructor_, - destructor_, - enum_, - function_, - member_, - method_, - nullptr_, - number_, - pointer_, - reference_, - void_, - }; -} - -namespace meta_hpp::detail -{ - template < typename T > - concept array_kind = std::is_array_v; - - template < typename T > - concept class_kind = std::is_class_v; - - template < typename T > - concept enum_kind = std::is_enum_v; - - template < typename T > - concept function_kind = std::is_function_v; - - template < typename T > - concept function_pointer_kind = std::is_pointer_v && std::is_function_v>; - - template < typename T > - concept member_pointer_kind = std::is_member_object_pointer_v; - - template < typename T > - concept method_pointer_kind = std::is_member_function_pointer_v; - - template < typename T > - concept nullptr_kind = std::is_null_pointer_v; - - template < typename T > - concept number_kind = std::is_arithmetic_v; - - template < typename T > - concept pointer_kind = std::is_pointer_v; - - template < typename T > - concept reference_kind = std::is_reference_v; - - template < typename T > - concept void_kind = std::is_void_v; - - template < typename T > - concept any_pointer_family = std::is_pointer_v || std::is_member_pointer_v; - - template < typename T > - concept not_any_pointer_family = !std::is_pointer_v && !std::is_member_pointer_v; -} - -namespace meta_hpp::detail -{ - template < typename T > - struct type_to_kind; - - template < typename T > - inline constexpr type_kind type_to_kind_v = type_to_kind::value; -} - -namespace meta_hpp::detail -{ - template < array_kind T > - struct type_to_kind : std::integral_constant {}; - - template < class_kind T > - struct type_to_kind : std::integral_constant {}; - - template < enum_kind T > - struct type_to_kind : std::integral_constant {}; - - template < function_kind T > - struct type_to_kind : std::integral_constant {}; - - template < member_pointer_kind T > - struct type_to_kind : std::integral_constant {}; - - template < method_pointer_kind T > - struct type_to_kind : std::integral_constant {}; - - template < nullptr_kind T > - struct type_to_kind : std::integral_constant {}; - - template < number_kind T > - struct type_to_kind : std::integral_constant {}; - - template < pointer_kind T > - struct type_to_kind : std::integral_constant {}; - - template < reference_kind T > - struct type_to_kind : std::integral_constant {}; - - template < void_kind T > - struct type_to_kind : std::integral_constant {}; -} - namespace meta_hpp::detail { template < typename... Types > @@ -1332,7 +1223,6 @@ namespace meta_hpp using detail::select_non_const; using detail::select_overload; - using detail::type_kind; using detail::type_list; } @@ -1511,6 +1401,115 @@ namespace meta_hpp using variable_list = std::vector; } +namespace meta_hpp::detail +{ + enum class type_kind : std::uint32_t { + array_, + class_, + constructor_, + destructor_, + enum_, + function_, + member_, + method_, + nullptr_, + number_, + pointer_, + reference_, + void_, + }; +} + +namespace meta_hpp::detail +{ + template < typename T > + concept array_kind = std::is_array_v; + + template < typename T > + concept class_kind = std::is_class_v; + + template < typename T > + concept enum_kind = std::is_enum_v; + + template < typename T > + concept function_kind = std::is_function_v; + + template < typename T > + concept function_pointer_kind = std::is_pointer_v && std::is_function_v>; + + template < typename T > + concept member_pointer_kind = std::is_member_object_pointer_v; + + template < typename T > + concept method_pointer_kind = std::is_member_function_pointer_v; + + template < typename T > + concept nullptr_kind = std::is_null_pointer_v; + + template < typename T > + concept number_kind = std::is_arithmetic_v; + + template < typename T > + concept pointer_kind = std::is_pointer_v; + + template < typename T > + concept reference_kind = std::is_reference_v; + + template < typename T > + concept void_kind = std::is_void_v; + + template < typename T > + concept any_pointer_family = std::is_pointer_v || std::is_member_pointer_v; + + template < typename T > + concept not_any_pointer_family = !std::is_pointer_v && !std::is_member_pointer_v; +} + +namespace meta_hpp::detail +{ + template < typename T > + struct type_to_kind; + + template < typename T > + inline constexpr type_kind type_to_kind_v = type_to_kind::value; +} + +namespace meta_hpp::detail +{ + template < array_kind T > + struct type_to_kind : std::integral_constant {}; + + template < class_kind T > + struct type_to_kind : std::integral_constant {}; + + template < enum_kind T > + struct type_to_kind : std::integral_constant {}; + + template < function_kind T > + struct type_to_kind : std::integral_constant {}; + + template < member_pointer_kind T > + struct type_to_kind : std::integral_constant {}; + + template < method_pointer_kind T > + struct type_to_kind : std::integral_constant {}; + + template < nullptr_kind T > + struct type_to_kind : std::integral_constant {}; + + template < number_kind T > + struct type_to_kind : std::integral_constant {}; + + template < pointer_kind T > + struct type_to_kind : std::integral_constant {}; + + template < reference_kind T > + struct type_to_kind : std::integral_constant {}; + + template < void_kind T > + struct type_to_kind : std::integral_constant {}; +} + namespace meta_hpp::detail { enum class array_flags : std::uint32_t { @@ -1867,6 +1866,16 @@ namespace meta_hpp::detail META_HPP_DETAIL_BITFLAGS_OPERATORS_DECL(constructor_flags) } +namespace meta_hpp::detail +{ + template < class_kind Class, typename... Args > + struct constructor_traits; + + template < typename Class, typename... Args > + concept class_constructor_kind // + = class_kind && std::is_constructible_v; +} + namespace meta_hpp::detail { template < class_kind Class, typename... Args > @@ -1899,6 +1908,16 @@ namespace meta_hpp::detail META_HPP_DETAIL_BITFLAGS_OPERATORS_DECL(destructor_flags) } +namespace meta_hpp::detail +{ + template < class_kind Class > + struct destructor_traits; + + template < typename Class > + concept class_destructor_kind // + = class_kind && std::is_destructible_v; +} + namespace meta_hpp::detail { template < class_kind Class > @@ -2000,6 +2019,14 @@ namespace meta_hpp::detail template < member_pointer_kind Member > struct member_traits; + template < typename Member, typename Class > + concept class_member_pointer_kind // + = class_kind && member_pointer_kind // + && std::is_same_v::class_type>; +} + +namespace meta_hpp::detail +{ template < typename V, typename C > struct member_traits { using cv_value_type = V; @@ -2043,6 +2070,14 @@ namespace meta_hpp::detail template < method_pointer_kind Method > struct method_traits; + template < typename Method, typename Class > + concept class_method_pointer_kind // + = class_kind && method_pointer_kind // + && std::is_same_v::class_type>; +} + +namespace meta_hpp::detail +{ template < typename R, typename C, typename... Args > struct method_traits { static constexpr std::size_t arity{sizeof...(Args)}; @@ -2384,6 +2419,44 @@ namespace meta_hpp::detail namespace meta_hpp { + using detail::array_bitflags; + using detail::array_flags; + + using detail::class_bitflags; + using detail::class_flags; + + using detail::constructor_bitflags; + using detail::constructor_flags; + + using detail::destructor_bitflags; + using detail::destructor_flags; + + using detail::enum_bitflags; + using detail::enum_flags; + + using detail::function_bitflags; + using detail::function_flags; + + using detail::member_bitflags; + using detail::member_flags; + + using detail::method_bitflags; + using detail::method_flags; + + using detail::number_bitflags; + using detail::number_flags; + + using detail::pointer_bitflags; + using detail::pointer_flags; + + using detail::reference_bitflags; + using detail::reference_flags; +} + +namespace meta_hpp +{ + using detail::type_kind; + using detail::array_kind; using detail::class_kind; using detail::enum_kind; @@ -2399,28 +2472,11 @@ namespace meta_hpp using detail::any_pointer_family; using detail::not_any_pointer_family; -} -namespace meta_hpp -{ - template < typename Class, typename... Args > - concept class_constructor_kind // - = class_kind // - && std::is_constructible_v; // - - template < typename Class > - concept class_destructor_kind // - = class_kind && std::is_destructible_v; // - - template < typename Member, typename Class > - concept class_member_kind // - = member_pointer_kind && class_kind // - && std::is_same_v::class_type>; // - - template < typename Method, typename Class > - concept class_method_kind // - = method_pointer_kind && class_kind // - && std::is_same_v::class_type>; // + using detail::class_constructor_kind; + using detail::class_destructor_kind; + using detail::class_member_pointer_kind; + using detail::class_method_pointer_kind; } namespace meta_hpp @@ -2573,42 +2629,6 @@ namespace meta_hpp } } -namespace meta_hpp -{ - using detail::array_bitflags; - using detail::array_flags; - - using detail::class_bitflags; - using detail::class_flags; - - using detail::constructor_bitflags; - using detail::constructor_flags; - - using detail::destructor_bitflags; - using detail::destructor_flags; - - using detail::enum_bitflags; - using detail::enum_flags; - - using detail::function_bitflags; - using detail::function_flags; - - using detail::member_bitflags; - using detail::member_flags; - - using detail::method_bitflags; - using detail::method_flags; - - using detail::number_bitflags; - using detail::number_flags; - - using detail::pointer_bitflags; - using detail::pointer_flags; - - using detail::reference_bitflags; - using detail::reference_flags; -} - namespace meta_hpp { class type_id final { @@ -4756,10 +4776,10 @@ namespace meta_hpp template < function_pointer_kind Function, typename... Opts > class_bind& function_(std::string name, Function function_ptr, Opts&&... opts); - template < class_member_kind Member, typename... Opts > + template < class_member_pointer_kind Member, typename... Opts > class_bind& member_(std::string name, Member member_ptr, Opts&&... opts); - template < class_method_kind Method, typename... Opts > + template < class_method_pointer_kind Method, typename... Opts > class_bind& method_(std::string name, Method method_ptr, Opts&&... opts); template < typename Type > @@ -5262,7 +5282,7 @@ namespace meta_hpp } template < class_kind Class > - template < class_member_kind Member, typename... Opts > + template < class_member_pointer_kind Member, typename... Opts > class_bind& class_bind::member_(std::string name, Member member_ptr, Opts&&... opts) { using namespace detail; @@ -5281,7 +5301,7 @@ namespace meta_hpp } template < class_kind Class > - template < class_method_kind Method, typename... Opts > + template < class_method_pointer_kind Method, typename... Opts > class_bind& class_bind::method_(std::string name, Method method_ptr, Opts&&... opts) { using namespace detail; diff --git a/develop/untests/meta_headers/concepts_tests.cpp b/develop/untests/meta_headers/details_tests.cpp similarity index 85% rename from develop/untests/meta_headers/concepts_tests.cpp rename to develop/untests/meta_headers/details_tests.cpp index 60ef33c..610a8ca 100644 --- a/develop/untests/meta_headers/concepts_tests.cpp +++ b/develop/untests/meta_headers/details_tests.cpp @@ -5,12 +5,12 @@ ******************************************************************************/ #if defined(META_HPP_HEADERS_BUILD) -# include +# include #else # include #endif #include -TEST_CASE("meta/meta_headers/concepts") { +TEST_CASE("meta/meta_headers/details") { } diff --git a/headers/meta.hpp/meta_all.hpp b/headers/meta.hpp/meta_all.hpp index b5ae995..8c27ae4 100644 --- a/headers/meta.hpp/meta_all.hpp +++ b/headers/meta.hpp/meta_all.hpp @@ -22,7 +22,7 @@ #include "meta_binds/scope_bind.hpp" #include "meta_binds/void_bind.hpp" -#include "meta_concepts.hpp" +#include "meta_details.hpp" #include "meta_indices.hpp" #include "meta_indices/argument_index.hpp" diff --git a/headers/meta.hpp/meta_base.hpp b/headers/meta.hpp/meta_base.hpp index ab7dcb6..cd69b64 100644 --- a/headers/meta.hpp/meta_base.hpp +++ b/headers/meta.hpp/meta_base.hpp @@ -23,7 +23,6 @@ #include "meta_base/overloaded.hpp" #include "meta_base/select_overload.hpp" #include "meta_base/to_underlying.hpp" -#include "meta_base/type_kinds.hpp" #include "meta_base/type_list.hpp" namespace meta_hpp @@ -41,7 +40,6 @@ namespace meta_hpp using detail::select_non_const; using detail::select_overload; - using detail::type_kind; using detail::type_list; } diff --git a/headers/meta.hpp/meta_binds.hpp b/headers/meta.hpp/meta_binds.hpp index fb0cf66..a21d1f7 100644 --- a/headers/meta.hpp/meta_binds.hpp +++ b/headers/meta.hpp/meta_binds.hpp @@ -7,7 +7,7 @@ #pragma once #include "meta_base.hpp" -#include "meta_concepts.hpp" +#include "meta_details.hpp" #include "meta_registry.hpp" #include "meta_states.hpp" #include "meta_types.hpp" @@ -92,10 +92,10 @@ namespace meta_hpp template < function_pointer_kind Function, typename... Opts > class_bind& function_(std::string name, Function function_ptr, Opts&&... opts); - template < class_member_kind Member, typename... Opts > + template < class_member_pointer_kind Member, typename... Opts > class_bind& member_(std::string name, Member member_ptr, Opts&&... opts); - template < class_method_kind Method, typename... Opts > + template < class_method_pointer_kind Method, typename... Opts > class_bind& method_(std::string name, Method method_ptr, Opts&&... opts); template < typename Type > diff --git a/headers/meta.hpp/meta_binds/class_bind.hpp b/headers/meta.hpp/meta_binds/class_bind.hpp index f2395cb..57a07d7 100644 --- a/headers/meta.hpp/meta_binds/class_bind.hpp +++ b/headers/meta.hpp/meta_binds/class_bind.hpp @@ -103,7 +103,7 @@ namespace meta_hpp } template < class_kind Class > - template < class_member_kind Member, typename... Opts > + template < class_member_pointer_kind Member, typename... Opts > class_bind& class_bind::member_(std::string name, Member member_ptr, Opts&&... opts) { using namespace detail; @@ -122,7 +122,7 @@ namespace meta_hpp } template < class_kind Class > - template < class_method_kind Method, typename... Opts > + template < class_method_pointer_kind Method, typename... Opts > class_bind& class_bind::method_(std::string name, Method method_ptr, Opts&&... opts) { using namespace detail; diff --git a/headers/meta.hpp/meta_concepts.hpp b/headers/meta.hpp/meta_concepts.hpp deleted file mode 100644 index d19e4d9..0000000 --- a/headers/meta.hpp/meta_concepts.hpp +++ /dev/null @@ -1,52 +0,0 @@ -/******************************************************************************* - * This file is part of the "https://github.com/blackmatov/meta.hpp" - * For conditions of distribution and use, see copyright notice in LICENSE.md - * Copyright (C) 2021-2024, by Matvey Cherevko (blackmatov@gmail.com) - ******************************************************************************/ - -#pragma once - -#include "meta_base.hpp" - -#include "meta_detail/type_family.hpp" - -namespace meta_hpp -{ - using detail::array_kind; - using detail::class_kind; - using detail::enum_kind; - using detail::function_kind; - using detail::function_pointer_kind; - using detail::member_pointer_kind; - using detail::method_pointer_kind; - using detail::nullptr_kind; - using detail::number_kind; - using detail::pointer_kind; - using detail::reference_kind; - using detail::void_kind; - - using detail::any_pointer_family; - using detail::not_any_pointer_family; -} - -namespace meta_hpp -{ - template < typename Class, typename... Args > - concept class_constructor_kind // - = class_kind // - && std::is_constructible_v; // - - template < typename Class > - concept class_destructor_kind // - = class_kind && std::is_destructible_v; // - - template < typename Member, typename Class > - concept class_member_kind // - = member_pointer_kind && class_kind // - && std::is_same_v::class_type>; // - - template < typename Method, typename Class > - concept class_method_kind // - = method_pointer_kind && class_kind // - && std::is_same_v::class_type>; // -} diff --git a/headers/meta.hpp/meta_detail/type_family.hpp b/headers/meta.hpp/meta_detail/type_family.hpp index 88e5e9c..a2e2eb9 100644 --- a/headers/meta.hpp/meta_detail/type_family.hpp +++ b/headers/meta.hpp/meta_detail/type_family.hpp @@ -8,6 +8,8 @@ #include "../meta_base.hpp" +#include "type_kinds.hpp" + #include "type_traits/array_traits.hpp" #include "type_traits/class_traits.hpp" #include "type_traits/constructor_traits.hpp" diff --git a/headers/meta.hpp/meta_base/type_kinds.hpp b/headers/meta.hpp/meta_detail/type_kinds.hpp similarity index 99% rename from headers/meta.hpp/meta_base/type_kinds.hpp rename to headers/meta.hpp/meta_detail/type_kinds.hpp index b34e3d3..5909e8a 100644 --- a/headers/meta.hpp/meta_base/type_kinds.hpp +++ b/headers/meta.hpp/meta_detail/type_kinds.hpp @@ -6,7 +6,7 @@ #pragma once -#include "base.hpp" +#include "../meta_base.hpp" namespace meta_hpp::detail { diff --git a/headers/meta.hpp/meta_detail/type_sharing.hpp b/headers/meta.hpp/meta_detail/type_sharing.hpp index 833da1e..cdaa04c 100644 --- a/headers/meta.hpp/meta_detail/type_sharing.hpp +++ b/headers/meta.hpp/meta_detail/type_sharing.hpp @@ -9,6 +9,7 @@ #include "../meta_base.hpp" #include "type_family.hpp" +#include "type_kinds.hpp" namespace meta_hpp::detail { diff --git a/headers/meta.hpp/meta_detail/type_traits/array_traits.hpp b/headers/meta.hpp/meta_detail/type_traits/array_traits.hpp index 7e7ec4c..fd7a701 100644 --- a/headers/meta.hpp/meta_detail/type_traits/array_traits.hpp +++ b/headers/meta.hpp/meta_detail/type_traits/array_traits.hpp @@ -8,6 +8,8 @@ #include "../../meta_base.hpp" +#include "../type_kinds.hpp" + namespace meta_hpp::detail { enum class array_flags : std::uint32_t { diff --git a/headers/meta.hpp/meta_detail/type_traits/class_traits.hpp b/headers/meta.hpp/meta_detail/type_traits/class_traits.hpp index ff4e6b7..b7b725c 100644 --- a/headers/meta.hpp/meta_detail/type_traits/class_traits.hpp +++ b/headers/meta.hpp/meta_detail/type_traits/class_traits.hpp @@ -8,6 +8,8 @@ #include "../../meta_base.hpp" +#include "../type_kinds.hpp" + namespace meta_hpp::detail { enum class class_flags : std::uint32_t { diff --git a/headers/meta.hpp/meta_detail/type_traits/constructor_traits.hpp b/headers/meta.hpp/meta_detail/type_traits/constructor_traits.hpp index 08b2c7b..2d68359 100644 --- a/headers/meta.hpp/meta_detail/type_traits/constructor_traits.hpp +++ b/headers/meta.hpp/meta_detail/type_traits/constructor_traits.hpp @@ -8,6 +8,8 @@ #include "../../meta_base.hpp" +#include "../type_kinds.hpp" + namespace meta_hpp::detail { enum class constructor_flags : std::uint32_t { @@ -18,6 +20,16 @@ namespace meta_hpp::detail META_HPP_DETAIL_BITFLAGS_OPERATORS_DECL(constructor_flags) } +namespace meta_hpp::detail +{ + template < class_kind Class, typename... Args > + struct constructor_traits; + + template < typename Class, typename... Args > + concept class_constructor_kind // + = class_kind && std::is_constructible_v; +} + namespace meta_hpp::detail { template < class_kind Class, typename... Args > diff --git a/headers/meta.hpp/meta_detail/type_traits/destructor_traits.hpp b/headers/meta.hpp/meta_detail/type_traits/destructor_traits.hpp index 8c29144..c306e4e 100644 --- a/headers/meta.hpp/meta_detail/type_traits/destructor_traits.hpp +++ b/headers/meta.hpp/meta_detail/type_traits/destructor_traits.hpp @@ -8,6 +8,8 @@ #include "../../meta_base.hpp" +#include "../type_kinds.hpp" + namespace meta_hpp::detail { enum class destructor_flags : std::uint32_t { @@ -19,6 +21,16 @@ namespace meta_hpp::detail META_HPP_DETAIL_BITFLAGS_OPERATORS_DECL(destructor_flags) } +namespace meta_hpp::detail +{ + template < class_kind Class > + struct destructor_traits; + + template < typename Class > + concept class_destructor_kind // + = class_kind && std::is_destructible_v; +} + namespace meta_hpp::detail { template < class_kind Class > diff --git a/headers/meta.hpp/meta_detail/type_traits/enum_traits.hpp b/headers/meta.hpp/meta_detail/type_traits/enum_traits.hpp index e3f4259..078f5e0 100644 --- a/headers/meta.hpp/meta_detail/type_traits/enum_traits.hpp +++ b/headers/meta.hpp/meta_detail/type_traits/enum_traits.hpp @@ -8,6 +8,8 @@ #include "../../meta_base.hpp" +#include "../type_kinds.hpp" + namespace meta_hpp::detail { enum class enum_flags : std::uint32_t { diff --git a/headers/meta.hpp/meta_detail/type_traits/function_traits.hpp b/headers/meta.hpp/meta_detail/type_traits/function_traits.hpp index 4f359af..fcfda6b 100644 --- a/headers/meta.hpp/meta_detail/type_traits/function_traits.hpp +++ b/headers/meta.hpp/meta_detail/type_traits/function_traits.hpp @@ -8,6 +8,8 @@ #include "../../meta_base.hpp" +#include "../type_kinds.hpp" + namespace meta_hpp::detail { enum class function_flags : std::uint32_t { diff --git a/headers/meta.hpp/meta_detail/type_traits/member_traits.hpp b/headers/meta.hpp/meta_detail/type_traits/member_traits.hpp index 28d8b6e..c0f4187 100644 --- a/headers/meta.hpp/meta_detail/type_traits/member_traits.hpp +++ b/headers/meta.hpp/meta_detail/type_traits/member_traits.hpp @@ -8,6 +8,8 @@ #include "../../meta_base.hpp" +#include "../type_kinds.hpp" + namespace meta_hpp::detail { enum class member_flags : std::uint32_t { @@ -24,6 +26,14 @@ namespace meta_hpp::detail template < member_pointer_kind Member > struct member_traits; + template < typename Member, typename Class > + concept class_member_pointer_kind // + = class_kind && member_pointer_kind // + && std::is_same_v::class_type>; +} + +namespace meta_hpp::detail +{ template < typename V, typename C > struct member_traits { using cv_value_type = V; diff --git a/headers/meta.hpp/meta_detail/type_traits/method_traits.hpp b/headers/meta.hpp/meta_detail/type_traits/method_traits.hpp index 73e5a3a..5d462cd 100644 --- a/headers/meta.hpp/meta_detail/type_traits/method_traits.hpp +++ b/headers/meta.hpp/meta_detail/type_traits/method_traits.hpp @@ -8,6 +8,8 @@ #include "../../meta_base.hpp" +#include "../type_kinds.hpp" + namespace meta_hpp::detail { enum class method_flags : std::uint32_t { @@ -26,6 +28,14 @@ namespace meta_hpp::detail template < method_pointer_kind Method > struct method_traits; + template < typename Method, typename Class > + concept class_method_pointer_kind // + = class_kind && method_pointer_kind // + && std::is_same_v::class_type>; +} + +namespace meta_hpp::detail +{ template < typename R, typename C, typename... Args > struct method_traits { static constexpr std::size_t arity{sizeof...(Args)}; diff --git a/headers/meta.hpp/meta_detail/type_traits/number_traits.hpp b/headers/meta.hpp/meta_detail/type_traits/number_traits.hpp index d078639..56edaa5 100644 --- a/headers/meta.hpp/meta_detail/type_traits/number_traits.hpp +++ b/headers/meta.hpp/meta_detail/type_traits/number_traits.hpp @@ -8,6 +8,8 @@ #include "../../meta_base.hpp" +#include "../type_kinds.hpp" + namespace meta_hpp::detail { enum class number_flags : std::uint32_t { diff --git a/headers/meta.hpp/meta_detail/type_traits/pointer_traits.hpp b/headers/meta.hpp/meta_detail/type_traits/pointer_traits.hpp index 684e15f..369a1e9 100644 --- a/headers/meta.hpp/meta_detail/type_traits/pointer_traits.hpp +++ b/headers/meta.hpp/meta_detail/type_traits/pointer_traits.hpp @@ -8,6 +8,8 @@ #include "../../meta_base.hpp" +#include "../type_kinds.hpp" + namespace meta_hpp::detail { enum class pointer_flags : std::uint32_t { diff --git a/headers/meta.hpp/meta_detail/type_traits/reference_traits.hpp b/headers/meta.hpp/meta_detail/type_traits/reference_traits.hpp index b362303..cba49b6 100644 --- a/headers/meta.hpp/meta_detail/type_traits/reference_traits.hpp +++ b/headers/meta.hpp/meta_detail/type_traits/reference_traits.hpp @@ -8,6 +8,8 @@ #include "../../meta_base.hpp" +#include "../type_kinds.hpp" + namespace meta_hpp::detail { enum class reference_flags : std::uint32_t { diff --git a/headers/meta.hpp/meta_detail/value_utilities/uarg.hpp b/headers/meta.hpp/meta_detail/value_utilities/uarg.hpp index ef7fa37..cc6fb91 100644 --- a/headers/meta.hpp/meta_detail/value_utilities/uarg.hpp +++ b/headers/meta.hpp/meta_detail/value_utilities/uarg.hpp @@ -7,7 +7,6 @@ #pragma once #include "../../meta_base.hpp" -#include "../../meta_concepts.hpp" #include "../../meta_registry.hpp" #include "../../meta_uresult.hpp" #include "../../meta_uvalue.hpp" diff --git a/headers/meta.hpp/meta_details.hpp b/headers/meta.hpp/meta_details.hpp new file mode 100644 index 0000000..410189c --- /dev/null +++ b/headers/meta.hpp/meta_details.hpp @@ -0,0 +1,74 @@ +/******************************************************************************* + * This file is part of the "https://github.com/blackmatov/meta.hpp" + * For conditions of distribution and use, see copyright notice in LICENSE.md + * Copyright (C) 2021-2024, by Matvey Cherevko (blackmatov@gmail.com) + ******************************************************************************/ + +#pragma once + +#include "meta_base.hpp" + +#include "meta_detail/type_family.hpp" +#include "meta_detail/type_kinds.hpp" + +namespace meta_hpp +{ + using detail::array_bitflags; + using detail::array_flags; + + using detail::class_bitflags; + using detail::class_flags; + + using detail::constructor_bitflags; + using detail::constructor_flags; + + using detail::destructor_bitflags; + using detail::destructor_flags; + + using detail::enum_bitflags; + using detail::enum_flags; + + using detail::function_bitflags; + using detail::function_flags; + + using detail::member_bitflags; + using detail::member_flags; + + using detail::method_bitflags; + using detail::method_flags; + + using detail::number_bitflags; + using detail::number_flags; + + using detail::pointer_bitflags; + using detail::pointer_flags; + + using detail::reference_bitflags; + using detail::reference_flags; +} + +namespace meta_hpp +{ + using detail::type_kind; + + using detail::array_kind; + using detail::class_kind; + using detail::enum_kind; + using detail::function_kind; + using detail::function_pointer_kind; + using detail::member_pointer_kind; + using detail::method_pointer_kind; + using detail::nullptr_kind; + using detail::number_kind; + using detail::pointer_kind; + using detail::reference_kind; + using detail::void_kind; + + using detail::any_pointer_family; + using detail::not_any_pointer_family; + + using detail::class_constructor_kind; + using detail::class_destructor_kind; + using detail::class_member_pointer_kind; + using detail::class_method_pointer_kind; +} diff --git a/headers/meta.hpp/meta_invoke.hpp b/headers/meta.hpp/meta_invoke.hpp index 557918a..6c1ac5a 100644 --- a/headers/meta.hpp/meta_invoke.hpp +++ b/headers/meta.hpp/meta_invoke.hpp @@ -7,7 +7,7 @@ #pragma once #include "meta_base.hpp" -#include "meta_concepts.hpp" +#include "meta_details.hpp" #include "meta_states.hpp" #include "meta_uresult.hpp" #include "meta_uvalue.hpp" diff --git a/headers/meta.hpp/meta_registry.hpp b/headers/meta.hpp/meta_registry.hpp index 56199ea..2d0006a 100644 --- a/headers/meta.hpp/meta_registry.hpp +++ b/headers/meta.hpp/meta_registry.hpp @@ -7,7 +7,7 @@ #pragma once #include "meta_base.hpp" -#include "meta_concepts.hpp" +#include "meta_details.hpp" #include "meta_states.hpp" #include "meta_types.hpp" diff --git a/headers/meta.hpp/meta_states.hpp b/headers/meta.hpp/meta_states.hpp index bf106ab..4a10795 100644 --- a/headers/meta.hpp/meta_states.hpp +++ b/headers/meta.hpp/meta_states.hpp @@ -7,7 +7,7 @@ #pragma once #include "meta_base.hpp" -#include "meta_concepts.hpp" +#include "meta_details.hpp" #include "meta_indices.hpp" #include "meta_policies.hpp" #include "meta_types.hpp" diff --git a/headers/meta.hpp/meta_types.hpp b/headers/meta.hpp/meta_types.hpp index ac5d229..b3b0463 100644 --- a/headers/meta.hpp/meta_types.hpp +++ b/headers/meta.hpp/meta_types.hpp @@ -7,46 +7,11 @@ #pragma once #include "meta_base.hpp" -#include "meta_concepts.hpp" +#include "meta_details.hpp" #include "meta_uvalue.hpp" #include "meta_detail/type_family.hpp" - -namespace meta_hpp -{ - using detail::array_bitflags; - using detail::array_flags; - - using detail::class_bitflags; - using detail::class_flags; - - using detail::constructor_bitflags; - using detail::constructor_flags; - - using detail::destructor_bitflags; - using detail::destructor_flags; - - using detail::enum_bitflags; - using detail::enum_flags; - - using detail::function_bitflags; - using detail::function_flags; - - using detail::member_bitflags; - using detail::member_flags; - - using detail::method_bitflags; - using detail::method_flags; - - using detail::number_bitflags; - using detail::number_flags; - - using detail::pointer_bitflags; - using detail::pointer_flags; - - using detail::reference_bitflags; - using detail::reference_flags; -} +#include "meta_detail/type_kinds.hpp" namespace meta_hpp { diff --git a/headers/meta.hpp/meta_uvalue.hpp b/headers/meta.hpp/meta_uvalue.hpp index 844fa6f..64fc8c2 100644 --- a/headers/meta.hpp/meta_uvalue.hpp +++ b/headers/meta.hpp/meta_uvalue.hpp @@ -7,7 +7,7 @@ #pragma once #include "meta_base.hpp" -#include "meta_concepts.hpp" +#include "meta_details.hpp" namespace meta_hpp {