From af4f62f259aa93e2602e9d037eec14fba2ae24a7 Mon Sep 17 00:00:00 2001 From: jyxiong Date: Mon, 22 Sep 2025 19:27:13 +0800 Subject: [PATCH] style: resturct folders --- source/tinystl/container/array.h | 2 +- .../tinystl/iterator/back_insert_iterator.h | 4 +- .../tinystl/iterator/front_insert_iterator.h | 4 +- source/tinystl/iterator/insert_iterator.h | 4 +- source/tinystl/iterator/iterator.h | 2 +- source/tinystl/iterator/iterator_tag.h | 2 +- source/tinystl/iterator/iterator_traits.h | 6 +-- source/tinystl/iterator/reverse_iterator.h | 2 +- source/tinystl/memory.h | 8 ++-- .../memory/{miscellaneous => }/addressof.h | 6 +-- .../memory/{allocator => }/allocator.h | 4 +- .../memory/{allocator => }/allocator_traits.h | 15 ++++---- .../{pointer_traits => }/pointer_traits.h | 8 ++-- source/tinystl/type_traits.h | 38 +++++++++---------- source/tinystl/type_traits/arrays/.gitkeep | 0 .../composite_type_categories/is_scalar.h | 22 ----------- .../conditional.h | 2 +- .../constant_evaluation_context/.gitkeep | 0 .../enable_if.h | 2 +- .../{helper_classes => }/integral_constant.h | 2 +- .../is_arithmetic.h | 8 ++-- .../{primary_type_categories => }/is_array.h | 4 +- .../{primary_type_categories => }/is_class.h | 6 +-- .../{type_properties => }/is_empty.h | 4 +- .../{primary_type_categories => }/is_enum.h | 4 +- .../is_floating_point.h | 8 ++-- .../is_integral.h | 4 +- .../is_lvalue_reference.h | 4 +- .../is_member_pointer.h | 6 +-- .../is_null_pointer.h | 6 +-- .../is_object.h | 12 +++--- .../is_pointer.h | 4 +- .../is_reference.h | 6 +-- .../{type_properties => }/is_renferenceable.h | 6 +-- .../is_rvalue_reference.h | 4 +- .../{type_relationships => }/is_same.h | 4 +- source/tinystl/type_traits/is_scalar.h | 22 +++++++++++ .../{primary_type_categories => }/is_union.h | 4 +- .../{primary_type_categories => }/is_void.h | 6 +-- .../{sign_modifiers => }/make_unsigned.h | 2 +- .../type_traits/member_relationships/.gitkeep | 0 .../type_traits/operations_on_traits/.gitkeep | 0 source/tinystl/type_traits/pointers/.gitkeep | 0 .../type_traits/property_queries/.gitkeep | 0 .../tinystl/type_traits/references/.gitkeep | 0 .../remove_cv.h | 2 +- .../type_traits/supported_operations/.gitkeep | 0 .../void_t.h | 2 +- test/container/array.cpp | 2 +- test/type_traits/is_same.cpp | 2 +- test/type_traits/remove_cv.cpp | 2 +- 51 files changed, 133 insertions(+), 134 deletions(-) rename source/tinystl/memory/{miscellaneous => }/addressof.h (68%) rename source/tinystl/memory/{allocator => }/allocator.h (96%) rename source/tinystl/memory/{allocator => }/allocator_traits.h (96%) rename source/tinystl/memory/{pointer_traits => }/pointer_traits.h (91%) delete mode 100644 source/tinystl/type_traits/arrays/.gitkeep delete mode 100644 source/tinystl/type_traits/composite_type_categories/is_scalar.h rename source/tinystl/type_traits/{miscellaneous_transformations => }/conditional.h (92%) delete mode 100644 source/tinystl/type_traits/constant_evaluation_context/.gitkeep rename source/tinystl/type_traits/{miscellaneous_transformations => }/enable_if.h (92%) rename source/tinystl/type_traits/{helper_classes => }/integral_constant.h (96%) rename source/tinystl/type_traits/{composite_type_categories => }/is_arithmetic.h (52%) rename source/tinystl/type_traits/{primary_type_categories => }/is_array.h (78%) rename source/tinystl/type_traits/{primary_type_categories => }/is_class.h (74%) rename source/tinystl/type_traits/{type_properties => }/is_empty.h (67%) rename source/tinystl/type_traits/{primary_type_categories => }/is_enum.h (68%) rename source/tinystl/type_traits/{primary_type_categories => }/is_floating_point.h (67%) rename source/tinystl/type_traits/{primary_type_categories => }/is_integral.h (84%) rename source/tinystl/type_traits/{primary_type_categories => }/is_lvalue_reference.h (79%) rename source/tinystl/type_traits/{composite_type_categories => }/is_member_pointer.h (70%) rename source/tinystl/type_traits/{primary_type_categories => }/is_null_pointer.h (61%) rename source/tinystl/type_traits/{composite_type_categories => }/is_object.h (51%) rename source/tinystl/type_traits/{primary_type_categories => }/is_pointer.h (83%) rename source/tinystl/type_traits/{composite_type_categories => }/is_reference.h (60%) rename source/tinystl/type_traits/{type_properties => }/is_renferenceable.h (76%) rename source/tinystl/type_traits/{primary_type_categories => }/is_rvalue_reference.h (79%) rename source/tinystl/type_traits/{type_relationships => }/is_same.h (76%) create mode 100644 source/tinystl/type_traits/is_scalar.h rename source/tinystl/type_traits/{primary_type_categories => }/is_union.h (67%) rename source/tinystl/type_traits/{primary_type_categories => }/is_void.h (61%) rename source/tinystl/type_traits/{sign_modifiers => }/make_unsigned.h (99%) delete mode 100644 source/tinystl/type_traits/member_relationships/.gitkeep delete mode 100644 source/tinystl/type_traits/operations_on_traits/.gitkeep delete mode 100644 source/tinystl/type_traits/pointers/.gitkeep delete mode 100644 source/tinystl/type_traits/property_queries/.gitkeep delete mode 100644 source/tinystl/type_traits/references/.gitkeep rename source/tinystl/type_traits/{const_volatility_specifiers => }/remove_cv.h (97%) delete mode 100644 source/tinystl/type_traits/supported_operations/.gitkeep rename source/tinystl/type_traits/{miscellaneous_transformations => }/void_t.h (97%) diff --git a/source/tinystl/container/array.h b/source/tinystl/container/array.h index aca4363..821f4c7 100644 --- a/source/tinystl/container/array.h +++ b/source/tinystl/container/array.h @@ -120,4 +120,4 @@ constexpr auto operator<=>(const array &lhs, const array &rhs) { ); } -} // namespace tinystl \ No newline at end of file +} // namespace tinystl diff --git a/source/tinystl/iterator/back_insert_iterator.h b/source/tinystl/iterator/back_insert_iterator.h index ef7da30..e6f5a4d 100644 --- a/source/tinystl/iterator/back_insert_iterator.h +++ b/source/tinystl/iterator/back_insert_iterator.h @@ -2,7 +2,7 @@ #include -#include "tinystl/iterator/iterator.h" +#include "tinystl/iterator/iterator_tag.h" namespace tinystl { @@ -47,4 +47,4 @@ back_insert_iterator back_inserter(Container &c) { return back_insert_iterator(c); } -} // namespace tinystl \ No newline at end of file +} // namespace tinystl diff --git a/source/tinystl/iterator/front_insert_iterator.h b/source/tinystl/iterator/front_insert_iterator.h index 1a6cc4d..5e6ae8b 100644 --- a/source/tinystl/iterator/front_insert_iterator.h +++ b/source/tinystl/iterator/front_insert_iterator.h @@ -2,7 +2,7 @@ #include -#include "tinystl/iterator/iterator.h" +#include "tinystl/iterator/iterator_tag.h" namespace tinystl { @@ -47,4 +47,4 @@ template front_insert_iterator front_inserter(Container &c) { return front_insert_iterator(c); } -} // namespace tinystl \ No newline at end of file +} // namespace tinystl diff --git a/source/tinystl/iterator/insert_iterator.h b/source/tinystl/iterator/insert_iterator.h index 5b8fcce..b5ed92b 100644 --- a/source/tinystl/iterator/insert_iterator.h +++ b/source/tinystl/iterator/insert_iterator.h @@ -2,7 +2,7 @@ #include -#include "tinystl/iterator/iterator.h" +#include "tinystl/iterator/iterator_tag.h" namespace tinystl { // https://en.cppreference.com/w/cpp/iterator/insert_iterator.html @@ -49,4 +49,4 @@ inserter(Container &c, typename Container::iterator it) { return insert_iterator(c, it); } -} // namespace tinystl \ No newline at end of file +} // namespace tinystl diff --git a/source/tinystl/iterator/iterator.h b/source/tinystl/iterator/iterator.h index 185bdcd..155646d 100644 --- a/source/tinystl/iterator/iterator.h +++ b/source/tinystl/iterator/iterator.h @@ -15,4 +15,4 @@ struct [[deprecated("deprecated")]] iterator { using pointer = Pointer; using reference = Reference; }; -} // namespace tinystl \ No newline at end of file +} // namespace tinystl diff --git a/source/tinystl/iterator/iterator_tag.h b/source/tinystl/iterator/iterator_tag.h index 61019cb..af712a0 100644 --- a/source/tinystl/iterator/iterator_tag.h +++ b/source/tinystl/iterator/iterator_tag.h @@ -18,4 +18,4 @@ struct random_access_iterator_tag : public bidirectional_iterator_tag {}; struct contiguous_iterator_tag : public random_access_iterator_tag {}; -} // namespace tinystl \ No newline at end of file +} // namespace tinystl diff --git a/source/tinystl/iterator/iterator_traits.h b/source/tinystl/iterator/iterator_traits.h index 1ee71de..b56f383 100644 --- a/source/tinystl/iterator/iterator_traits.h +++ b/source/tinystl/iterator/iterator_traits.h @@ -5,8 +5,8 @@ #include #include "tinystl/iterator/iterator_tag.h" -#include "tinystl/type_traits/composite_type_categories/is_object.h" -#include "tinystl/type_traits/type_properties/is_renferenceable.h" +#include "tinystl/type_traits/is_object.h" +#include "tinystl/type_traits/is_renferenceable.h" // https://en.cppreference.com/w/cpp/iterator/iterator_tags.html // https://en.cppreference.com/w/cpp/iterator/iterator_traits.html @@ -229,4 +229,4 @@ struct [[deprecated("deprecated")]] iterator_traits { using reference = const T &; }; -} // namespace tinystl \ No newline at end of file +} // namespace tinystl diff --git a/source/tinystl/iterator/reverse_iterator.h b/source/tinystl/iterator/reverse_iterator.h index fa54f8e..4dee013 100644 --- a/source/tinystl/iterator/reverse_iterator.h +++ b/source/tinystl/iterator/reverse_iterator.h @@ -159,4 +159,4 @@ reverse_iterator make_reverse_iterator(Iter i) { return reverse_iterator(i); } -} // namespace tinystl \ No newline at end of file +} // namespace tinystl diff --git a/source/tinystl/memory.h b/source/tinystl/memory.h index 97bcfd1..7d02056 100644 --- a/source/tinystl/memory.h +++ b/source/tinystl/memory.h @@ -1,6 +1,6 @@ #pragma once -#include -#include -#include -#include \ No newline at end of file +#include +#include +#include +#include diff --git a/source/tinystl/memory/miscellaneous/addressof.h b/source/tinystl/memory/addressof.h similarity index 68% rename from source/tinystl/memory/miscellaneous/addressof.h rename to source/tinystl/memory/addressof.h index 11cf510..f94ec8e 100644 --- a/source/tinystl/memory/miscellaneous/addressof.h +++ b/source/tinystl/memory/addressof.h @@ -1,7 +1,7 @@ #pragma once -#include "tinystl/type_traits/composite_type_categories/is_object.h" -#include "tinystl/type_traits/miscellaneous_transformations/enable_if.h" +#include "tinystl/type_traits/is_object.h" +#include "tinystl/type_traits/enable_if.h" namespace tinystl { @@ -16,4 +16,4 @@ template typename enable_if::value, T *>::type addressof(T &arg) noexcept { return &arg; } -} // namespace tinystl \ No newline at end of file +} // namespace tinystl diff --git a/source/tinystl/memory/allocator/allocator.h b/source/tinystl/memory/allocator.h similarity index 96% rename from source/tinystl/memory/allocator/allocator.h rename to source/tinystl/memory/allocator.h index eeabe01..b505bd6 100644 --- a/source/tinystl/memory/allocator/allocator.h +++ b/source/tinystl/memory/allocator.h @@ -4,7 +4,7 @@ #include #include -#include "tinystl/type_traits/helper_classes/integral_constant.h" +#include "tinystl/type_traits/integral_constant.h" namespace tinystl { // https://en.cppreference.com/w/cpp/memory/allocator.html @@ -90,4 +90,4 @@ bool operator!=(const allocator &, const allocator &) noexcept { return false; } // util c++20 -} // namespace tinystl \ No newline at end of file +} // namespace tinystl diff --git a/source/tinystl/memory/allocator/allocator_traits.h b/source/tinystl/memory/allocator_traits.h similarity index 96% rename from source/tinystl/memory/allocator/allocator_traits.h rename to source/tinystl/memory/allocator_traits.h index 527585e..1dcf342 100644 --- a/source/tinystl/memory/allocator/allocator_traits.h +++ b/source/tinystl/memory/allocator_traits.h @@ -1,14 +1,13 @@ #pragma once #include +#include -#include "tinystl/memory/pointer_traits/pointer_traits.h" -#include "tinystl/type_traits/miscellaneous_transformations/void_t.h" -#include "tinystl/type_traits/type_properties/is_empty.h" -#include "tinystl/type_traits/miscellaneous_transformations/enable_if.h" -#include "tinystl/type_traits/sign_modifiers/make_unsigned.h" - -#include +#include "tinystl/memory/pointer_traits.h" +#include "tinystl/type_traits/void_t.h" +#include "tinystl/type_traits/is_empty.h" +#include "tinystl/type_traits/enable_if.h" +#include "tinystl/type_traits/make_unsigned.h" // https://en.cppreference.com/w/cpp/memory/allocator_traits.html @@ -290,4 +289,4 @@ struct allocator_traits { } }; -} // namespace tinystl \ No newline at end of file +} // namespace tinystl diff --git a/source/tinystl/memory/pointer_traits/pointer_traits.h b/source/tinystl/memory/pointer_traits.h similarity index 91% rename from source/tinystl/memory/pointer_traits/pointer_traits.h rename to source/tinystl/memory/pointer_traits.h index 3019bff..da309bd 100644 --- a/source/tinystl/memory/pointer_traits/pointer_traits.h +++ b/source/tinystl/memory/pointer_traits.h @@ -2,10 +2,10 @@ #include -#include "tinystl/memory/miscellaneous/addressof.h" -#include "tinystl/type_traits/miscellaneous_transformations/conditional.h" -#include "tinystl/type_traits/miscellaneous_transformations/void_t.h" -#include "tinystl/type_traits/primary_type_categories/is_void.h" +#include "tinystl/memory/addressof.h" +#include "tinystl/type_traits/conditional.h" +#include "tinystl/type_traits/void_t.h" +#include "tinystl/type_traits/is_void.h" namespace detail { diff --git a/source/tinystl/type_traits.h b/source/tinystl/type_traits.h index bdd7050..8720b38 100644 --- a/source/tinystl/type_traits.h +++ b/source/tinystl/type_traits.h @@ -4,32 +4,32 @@ // composite_type_categories -#include -#include -#include -#include +#include +#include +#include +#include // const_volatility_specifiers -#include +#include // miscellaneous_transformations -#include -#include -#include +#include +#include +#include // primary_type_categories -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include // type_properties -#include +#include // type_relationships -#include +#include diff --git a/source/tinystl/type_traits/arrays/.gitkeep b/source/tinystl/type_traits/arrays/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/source/tinystl/type_traits/composite_type_categories/is_scalar.h b/source/tinystl/type_traits/composite_type_categories/is_scalar.h deleted file mode 100644 index 28b4b5e..0000000 --- a/source/tinystl/type_traits/composite_type_categories/is_scalar.h +++ /dev/null @@ -1,22 +0,0 @@ -#pragma once - -#include "tinystl/type_traits/composite_type_categories/is_arithmetic.h" -#include "tinystl/type_traits/composite_type_categories/is_member_pointer.h" -#include "tinystl/type_traits/helper_classes/integral_constant.h" -#include "tinystl/type_traits/primary_type_categories/is_enum.h" -#include "tinystl/type_traits/primary_type_categories/is_null_pointer.h" -#include "tinystl/type_traits/primary_type_categories/is_pointer.h" - -namespace tinystl { -// https://en.cppreference.com/w/cpp/types/is_scalar -template -struct is_scalar - : integral_constant< - bool, is_arithmetic::value || is_enum::value || - is_pointer::value || is_member_pointer::value || - is_null_pointer::value> {}; - -template -inline constexpr bool is_scalar_v = is_scalar::value; - -} // namespace tinystl \ No newline at end of file diff --git a/source/tinystl/type_traits/miscellaneous_transformations/conditional.h b/source/tinystl/type_traits/conditional.h similarity index 92% rename from source/tinystl/type_traits/miscellaneous_transformations/conditional.h rename to source/tinystl/type_traits/conditional.h index 069dc76..8f87105 100644 --- a/source/tinystl/type_traits/miscellaneous_transformations/conditional.h +++ b/source/tinystl/type_traits/conditional.h @@ -13,4 +13,4 @@ struct conditional { template using conditional_t = typename conditional::type; -} // namespace tinystl \ No newline at end of file +} // namespace tinystl diff --git a/source/tinystl/type_traits/constant_evaluation_context/.gitkeep b/source/tinystl/type_traits/constant_evaluation_context/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/source/tinystl/type_traits/miscellaneous_transformations/enable_if.h b/source/tinystl/type_traits/enable_if.h similarity index 92% rename from source/tinystl/type_traits/miscellaneous_transformations/enable_if.h rename to source/tinystl/type_traits/enable_if.h index ce4d50b..f4f6793 100644 --- a/source/tinystl/type_traits/miscellaneous_transformations/enable_if.h +++ b/source/tinystl/type_traits/enable_if.h @@ -13,4 +13,4 @@ struct enable_if { template using enable_if_t = typename enable_if::type; -} // namespace tinystl \ No newline at end of file +} // namespace tinystl diff --git a/source/tinystl/type_traits/helper_classes/integral_constant.h b/source/tinystl/type_traits/integral_constant.h similarity index 96% rename from source/tinystl/type_traits/helper_classes/integral_constant.h rename to source/tinystl/type_traits/integral_constant.h index cfa53cb..db97bec 100644 --- a/source/tinystl/type_traits/helper_classes/integral_constant.h +++ b/source/tinystl/type_traits/integral_constant.h @@ -27,4 +27,4 @@ using bool_constant = integral_constant; using true_type = integral_constant; using false_type = integral_constant; -} // namespace tinystl \ No newline at end of file +} // namespace tinystl diff --git a/source/tinystl/type_traits/composite_type_categories/is_arithmetic.h b/source/tinystl/type_traits/is_arithmetic.h similarity index 52% rename from source/tinystl/type_traits/composite_type_categories/is_arithmetic.h rename to source/tinystl/type_traits/is_arithmetic.h index 09cbf33..9680e9c 100644 --- a/source/tinystl/type_traits/composite_type_categories/is_arithmetic.h +++ b/source/tinystl/type_traits/is_arithmetic.h @@ -1,8 +1,8 @@ #pragma once -#include "tinystl/type_traits/helper_classes/integral_constant.h" -#include "tinystl/type_traits/primary_type_categories/is_floating_point.h" -#include "tinystl/type_traits/primary_type_categories/is_integral.h" +#include "tinystl/type_traits/integral_constant.h" +#include "tinystl/type_traits/is_floating_point.h" +#include "tinystl/type_traits/is_integral.h" namespace tinystl { template @@ -12,4 +12,4 @@ struct is_arithmetic template inline constexpr bool is_arithmetic_v = is_arithmetic::value; -} // namespace tinystl \ No newline at end of file +} // namespace tinystl diff --git a/source/tinystl/type_traits/primary_type_categories/is_array.h b/source/tinystl/type_traits/is_array.h similarity index 78% rename from source/tinystl/type_traits/primary_type_categories/is_array.h rename to source/tinystl/type_traits/is_array.h index 2901f8c..d3a7956 100644 --- a/source/tinystl/type_traits/primary_type_categories/is_array.h +++ b/source/tinystl/type_traits/is_array.h @@ -2,7 +2,7 @@ #include -#include "tinystl/type_traits/helper_classes/integral_constant.h" +#include "tinystl/type_traits/integral_constant.h" namespace tinystl { @@ -18,4 +18,4 @@ struct is_array : true_type {}; template inline constexpr bool is_array_v = is_array::value; -} // namespace tinystl \ No newline at end of file +} // namespace tinystl diff --git a/source/tinystl/type_traits/primary_type_categories/is_class.h b/source/tinystl/type_traits/is_class.h similarity index 74% rename from source/tinystl/type_traits/primary_type_categories/is_class.h rename to source/tinystl/type_traits/is_class.h index 74b51fd..0f77fba 100644 --- a/source/tinystl/type_traits/primary_type_categories/is_class.h +++ b/source/tinystl/type_traits/is_class.h @@ -1,7 +1,7 @@ #pragma once -#include "tinystl/type_traits/helper_classes/integral_constant.h" -#include "tinystl/type_traits/primary_type_categories/is_union.h" +#include "tinystl/type_traits/integral_constant.h" +#include "tinystl/type_traits/is_union.h" namespace detail { template @@ -22,4 +22,4 @@ struct is_class : decltype(detail::test(nullptr)) {}; template inline constexpr bool is_class_v = is_class::value; -} // namespace tinystl \ No newline at end of file +} // namespace tinystl diff --git a/source/tinystl/type_traits/type_properties/is_empty.h b/source/tinystl/type_traits/is_empty.h similarity index 67% rename from source/tinystl/type_traits/type_properties/is_empty.h rename to source/tinystl/type_traits/is_empty.h index 51a5368..0879888 100644 --- a/source/tinystl/type_traits/type_properties/is_empty.h +++ b/source/tinystl/type_traits/is_empty.h @@ -1,6 +1,6 @@ #pragma once -#include "tinystl/type_traits/helper_classes/integral_constant.h" +#include "tinystl/type_traits/integral_constant.h" namespace tinystl { template @@ -8,4 +8,4 @@ struct is_empty : bool_constant<__is_empty(T)> {}; template inline constexpr bool is_empty_v = is_empty::value; -} // namespace tinystl \ No newline at end of file +} // namespace tinystl diff --git a/source/tinystl/type_traits/primary_type_categories/is_enum.h b/source/tinystl/type_traits/is_enum.h similarity index 68% rename from source/tinystl/type_traits/primary_type_categories/is_enum.h rename to source/tinystl/type_traits/is_enum.h index d85926a..5438742 100644 --- a/source/tinystl/type_traits/primary_type_categories/is_enum.h +++ b/source/tinystl/type_traits/is_enum.h @@ -1,6 +1,6 @@ #pragma once -#include "tinystl/type_traits/helper_classes/integral_constant.h" +#include "tinystl/type_traits/integral_constant.h" namespace tinystl { @@ -10,4 +10,4 @@ struct is_enum : tinystl::bool_constant<__is_enum(T)> {}; template inline constexpr bool is_enum_v = is_enum::value; -} // namespace tinystl \ No newline at end of file +} // namespace tinystl diff --git a/source/tinystl/type_traits/primary_type_categories/is_floating_point.h b/source/tinystl/type_traits/is_floating_point.h similarity index 67% rename from source/tinystl/type_traits/primary_type_categories/is_floating_point.h rename to source/tinystl/type_traits/is_floating_point.h index 620d4b2..7b4f406 100644 --- a/source/tinystl/type_traits/primary_type_categories/is_floating_point.h +++ b/source/tinystl/type_traits/is_floating_point.h @@ -1,8 +1,8 @@ #pragma once -#include "tinystl/type_traits/const_volatility_specifiers/remove_cv.h" -#include "tinystl/type_traits/helper_classes/integral_constant.h" -#include "tinystl/type_traits/type_relationships/is_same.h" +#include "tinystl/type_traits/remove_cv.h" +#include "tinystl/type_traits/integral_constant.h" +#include "tinystl/type_traits/is_same.h" namespace tinystl { template @@ -16,4 +16,4 @@ struct is_floating_point template inline constexpr bool is_floating_point_v = is_floating_point::value; -} // namespace tinystl \ No newline at end of file +} // namespace tinystl diff --git a/source/tinystl/type_traits/primary_type_categories/is_integral.h b/source/tinystl/type_traits/is_integral.h similarity index 84% rename from source/tinystl/type_traits/primary_type_categories/is_integral.h rename to source/tinystl/type_traits/is_integral.h index 2e7ba5d..9efcc54 100644 --- a/source/tinystl/type_traits/primary_type_categories/is_integral.h +++ b/source/tinystl/type_traits/is_integral.h @@ -1,6 +1,6 @@ #pragma once -#include "tinystl/type_traits/helper_classes/integral_constant.h" +#include "tinystl/type_traits/integral_constant.h" namespace tinystl { // Note: this implementation uses C++20 facilities @@ -17,4 +17,4 @@ template template inline constexpr bool is_integral_v = is_integral::value; -} // namespace tinystl \ No newline at end of file +} // namespace tinystl diff --git a/source/tinystl/type_traits/primary_type_categories/is_lvalue_reference.h b/source/tinystl/type_traits/is_lvalue_reference.h similarity index 79% rename from source/tinystl/type_traits/primary_type_categories/is_lvalue_reference.h rename to source/tinystl/type_traits/is_lvalue_reference.h index 67593d9..0d9c762 100644 --- a/source/tinystl/type_traits/primary_type_categories/is_lvalue_reference.h +++ b/source/tinystl/type_traits/is_lvalue_reference.h @@ -1,6 +1,6 @@ #pragma once -#include "tinystl/type_traits/helper_classes/integral_constant.h" +#include "tinystl/type_traits/integral_constant.h" namespace tinystl { template @@ -10,4 +10,4 @@ struct is_lvalue_reference : true_type {}; template inline constexpr bool is_lvalue_reference_v = is_lvalue_reference::value; -} \ No newline at end of file +} diff --git a/source/tinystl/type_traits/composite_type_categories/is_member_pointer.h b/source/tinystl/type_traits/is_member_pointer.h similarity index 70% rename from source/tinystl/type_traits/composite_type_categories/is_member_pointer.h rename to source/tinystl/type_traits/is_member_pointer.h index 73f0237..0103290 100644 --- a/source/tinystl/type_traits/composite_type_categories/is_member_pointer.h +++ b/source/tinystl/type_traits/is_member_pointer.h @@ -1,7 +1,7 @@ #pragma once -#include "tinystl/type_traits/const_volatility_specifiers/remove_cv.h" -#include "tinystl/type_traits/helper_classes/integral_constant.h" +#include "tinystl/type_traits/remove_cv.h" +#include "tinystl/type_traits/integral_constant.h" namespace tinystl { template @@ -16,4 +16,4 @@ struct is_member_pointer template inline constexpr bool is_member_pointer_v = is_member_pointer::value; -} // namespace tinystl \ No newline at end of file +} // namespace tinystl diff --git a/source/tinystl/type_traits/primary_type_categories/is_null_pointer.h b/source/tinystl/type_traits/is_null_pointer.h similarity index 61% rename from source/tinystl/type_traits/primary_type_categories/is_null_pointer.h rename to source/tinystl/type_traits/is_null_pointer.h index f5aafa4..3ba129b 100644 --- a/source/tinystl/type_traits/primary_type_categories/is_null_pointer.h +++ b/source/tinystl/type_traits/is_null_pointer.h @@ -2,8 +2,8 @@ #include -#include "tinystl/type_traits/const_volatility_specifiers/remove_cv.h" -#include "tinystl/type_traits/type_relationships/is_same.h" +#include "tinystl/type_traits/remove_cv.h" +#include "tinystl/type_traits/is_same.h" namespace tinystl { template @@ -12,4 +12,4 @@ struct is_null_pointer : is_same::type> { template inline constexpr bool is_null_pointer_v = is_null_pointer::value; -}; // namespace tinystl \ No newline at end of file +}; // namespace tinystl diff --git a/source/tinystl/type_traits/composite_type_categories/is_object.h b/source/tinystl/type_traits/is_object.h similarity index 51% rename from source/tinystl/type_traits/composite_type_categories/is_object.h rename to source/tinystl/type_traits/is_object.h index c62f351..f5feadf 100644 --- a/source/tinystl/type_traits/composite_type_categories/is_object.h +++ b/source/tinystl/type_traits/is_object.h @@ -1,10 +1,10 @@ #pragma once -#include "tinystl/type_traits/composite_type_categories/is_scalar.h" -#include "tinystl/type_traits/helper_classes/integral_constant.h" -#include "tinystl/type_traits/primary_type_categories/is_array.h" -#include "tinystl/type_traits/primary_type_categories/is_class.h" -#include "tinystl/type_traits/primary_type_categories/is_union.h" +#include "tinystl/type_traits/is_scalar.h" +#include "tinystl/type_traits/integral_constant.h" +#include "tinystl/type_traits/is_array.h" +#include "tinystl/type_traits/is_class.h" +#include "tinystl/type_traits/is_union.h" namespace tinystl { // https://en.cppreference.com/w/cpp/types/is_object.html @@ -16,4 +16,4 @@ struct is_object : integral_constant< template inline constexpr bool is_object_v = is_object::value; -} // namespace tinystl \ No newline at end of file +} // namespace tinystl diff --git a/source/tinystl/type_traits/primary_type_categories/is_pointer.h b/source/tinystl/type_traits/is_pointer.h similarity index 83% rename from source/tinystl/type_traits/primary_type_categories/is_pointer.h rename to source/tinystl/type_traits/is_pointer.h index 1dd991c..0e29ee3 100644 --- a/source/tinystl/type_traits/primary_type_categories/is_pointer.h +++ b/source/tinystl/type_traits/is_pointer.h @@ -1,6 +1,6 @@ #pragma once -#include "tinystl/type_traits/helper_classes/integral_constant.h" +#include "tinystl/type_traits/integral_constant.h" namespace tinystl { template @@ -21,4 +21,4 @@ struct is_pointer : true_type {}; template inline constexpr bool is_pointer_v = is_pointer::value; -} // namespace tinystl \ No newline at end of file +} // namespace tinystl diff --git a/source/tinystl/type_traits/composite_type_categories/is_reference.h b/source/tinystl/type_traits/is_reference.h similarity index 60% rename from source/tinystl/type_traits/composite_type_categories/is_reference.h rename to source/tinystl/type_traits/is_reference.h index a049922..861b55f 100644 --- a/source/tinystl/type_traits/composite_type_categories/is_reference.h +++ b/source/tinystl/type_traits/is_reference.h @@ -1,7 +1,7 @@ #pragma once -#include "tinystl/type_traits/primary_type_categories/is_lvalue_reference.h" -#include "tinystl/type_traits/primary_type_categories/is_rvalue_reference.h" +#include "tinystl/type_traits/is_lvalue_reference.h" +#include "tinystl/type_traits/is_rvalue_reference.h" namespace tinystl { template @@ -9,4 +9,4 @@ struct is_reference : bool_constant::value || is_rvalue_r template inline constexpr bool is_reference_v = is_reference::value; -} \ No newline at end of file +} diff --git a/source/tinystl/type_traits/type_properties/is_renferenceable.h b/source/tinystl/type_traits/is_renferenceable.h similarity index 76% rename from source/tinystl/type_traits/type_properties/is_renferenceable.h rename to source/tinystl/type_traits/is_renferenceable.h index c78ac65..992f40c 100644 --- a/source/tinystl/type_traits/type_properties/is_renferenceable.h +++ b/source/tinystl/type_traits/is_renferenceable.h @@ -1,7 +1,7 @@ #pragma once -#include "tinystl/type_traits/helper_classes/integral_constant.h" -#include "tinystl/type_traits/miscellaneous_transformations/void_t.h" +#include "tinystl/type_traits/integral_constant.h" +#include "tinystl/type_traits/void_t.h" namespace tinystl { template @@ -22,4 +22,4 @@ inline constexpr bool is_referenceable_v = is_referenceable::value; template concept referenceable = is_referenceable_v; -} // namespace tinystl \ No newline at end of file +} // namespace tinystl diff --git a/source/tinystl/type_traits/primary_type_categories/is_rvalue_reference.h b/source/tinystl/type_traits/is_rvalue_reference.h similarity index 79% rename from source/tinystl/type_traits/primary_type_categories/is_rvalue_reference.h rename to source/tinystl/type_traits/is_rvalue_reference.h index 7885e79..53dd663 100644 --- a/source/tinystl/type_traits/primary_type_categories/is_rvalue_reference.h +++ b/source/tinystl/type_traits/is_rvalue_reference.h @@ -1,6 +1,6 @@ #pragma once -#include "tinystl/type_traits/helper_classes/integral_constant.h" +#include "tinystl/type_traits/integral_constant.h" namespace tinystl { template @@ -10,4 +10,4 @@ struct is_rvalue_reference : true_type {}; template inline constexpr bool is_rvalue_reference_v = is_rvalue_reference::value; -} \ No newline at end of file +} diff --git a/source/tinystl/type_traits/type_relationships/is_same.h b/source/tinystl/type_traits/is_same.h similarity index 76% rename from source/tinystl/type_traits/type_relationships/is_same.h rename to source/tinystl/type_traits/is_same.h index ea4775a..42f4e74 100644 --- a/source/tinystl/type_traits/type_relationships/is_same.h +++ b/source/tinystl/type_traits/is_same.h @@ -1,6 +1,6 @@ #pragma once -#include "tinystl/type_traits/helper_classes/integral_constant.h" +#include "tinystl/type_traits/integral_constant.h" namespace tinystl { // https://en.cppreference.com/w/cpp/types/is_same.html @@ -14,4 +14,4 @@ struct is_same : true_type {}; template constexpr bool is_same_v = is_same::value; -}; // namespace tinystl \ No newline at end of file +}; // namespace tinystl diff --git a/source/tinystl/type_traits/is_scalar.h b/source/tinystl/type_traits/is_scalar.h new file mode 100644 index 0000000..61f4adc --- /dev/null +++ b/source/tinystl/type_traits/is_scalar.h @@ -0,0 +1,22 @@ +#pragma once + +#include "tinystl/type_traits/is_arithmetic.h" +#include "tinystl/type_traits/is_member_pointer.h" +#include "tinystl/type_traits/integral_constant.h" +#include "tinystl/type_traits/is_enum.h" +#include "tinystl/type_traits/is_null_pointer.h" +#include "tinystl/type_traits/is_pointer.h" + +namespace tinystl { +// https://en.cppreference.com/w/cpp/types/is_scalar +template +struct is_scalar + : integral_constant< + bool, is_arithmetic::value || is_enum::value || + is_pointer::value || is_member_pointer::value || + is_null_pointer::value> {}; + +template +inline constexpr bool is_scalar_v = is_scalar::value; + +} // namespace tinystl diff --git a/source/tinystl/type_traits/primary_type_categories/is_union.h b/source/tinystl/type_traits/is_union.h similarity index 67% rename from source/tinystl/type_traits/primary_type_categories/is_union.h rename to source/tinystl/type_traits/is_union.h index ceeb6d9..8ec0469 100644 --- a/source/tinystl/type_traits/primary_type_categories/is_union.h +++ b/source/tinystl/type_traits/is_union.h @@ -1,6 +1,6 @@ #pragma once -#include "tinystl/type_traits/helper_classes/integral_constant.h" +#include "tinystl/type_traits/integral_constant.h" namespace tinystl { @@ -10,4 +10,4 @@ struct is_union : bool_constant<__is_union(T)> {}; template inline constexpr bool is_union_v = is_union::value; -} // namespace tinystl \ No newline at end of file +} // namespace tinystl diff --git a/source/tinystl/type_traits/primary_type_categories/is_void.h b/source/tinystl/type_traits/is_void.h similarity index 61% rename from source/tinystl/type_traits/primary_type_categories/is_void.h rename to source/tinystl/type_traits/is_void.h index cbdf0d7..b9cf3b3 100644 --- a/source/tinystl/type_traits/primary_type_categories/is_void.h +++ b/source/tinystl/type_traits/is_void.h @@ -1,7 +1,7 @@ #pragma once -#include "tinystl/type_traits/const_volatility_specifiers/remove_cv.h" -#include "tinystl/type_traits/type_relationships/is_same.h" +#include "tinystl/type_traits/remove_cv.h" +#include "tinystl/type_traits/is_same.h" namespace tinystl { @@ -12,4 +12,4 @@ struct is_void : is_same::type> {}; template inline constexpr bool is_void_v = is_void::value; -} // namespace tinystl \ No newline at end of file +} // namespace tinystl diff --git a/source/tinystl/type_traits/sign_modifiers/make_unsigned.h b/source/tinystl/type_traits/make_unsigned.h similarity index 99% rename from source/tinystl/type_traits/sign_modifiers/make_unsigned.h rename to source/tinystl/type_traits/make_unsigned.h index e83bff9..d1832f8 100644 --- a/source/tinystl/type_traits/sign_modifiers/make_unsigned.h +++ b/source/tinystl/type_traits/make_unsigned.h @@ -12,4 +12,4 @@ struct make_unsigned template< class T > using make_unsigned_t = typename make_unsigned::type; -} \ No newline at end of file +} diff --git a/source/tinystl/type_traits/member_relationships/.gitkeep b/source/tinystl/type_traits/member_relationships/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/source/tinystl/type_traits/operations_on_traits/.gitkeep b/source/tinystl/type_traits/operations_on_traits/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/source/tinystl/type_traits/pointers/.gitkeep b/source/tinystl/type_traits/pointers/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/source/tinystl/type_traits/property_queries/.gitkeep b/source/tinystl/type_traits/property_queries/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/source/tinystl/type_traits/references/.gitkeep b/source/tinystl/type_traits/references/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/source/tinystl/type_traits/const_volatility_specifiers/remove_cv.h b/source/tinystl/type_traits/remove_cv.h similarity index 97% rename from source/tinystl/type_traits/const_volatility_specifiers/remove_cv.h rename to source/tinystl/type_traits/remove_cv.h index 26f56a1..700b943 100644 --- a/source/tinystl/type_traits/const_volatility_specifiers/remove_cv.h +++ b/source/tinystl/type_traits/remove_cv.h @@ -45,4 +45,4 @@ using remove_const_t = typename remove_const::type; // since C++14 template using remove_volatile_t = typename remove_volatile::type; // since C++14 -}; // namespace tinystl \ No newline at end of file +}; // namespace tinystl diff --git a/source/tinystl/type_traits/supported_operations/.gitkeep b/source/tinystl/type_traits/supported_operations/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/source/tinystl/type_traits/miscellaneous_transformations/void_t.h b/source/tinystl/type_traits/void_t.h similarity index 97% rename from source/tinystl/type_traits/miscellaneous_transformations/void_t.h rename to source/tinystl/type_traits/void_t.h index ed8b34a..4b6d42c 100644 --- a/source/tinystl/type_traits/miscellaneous_transformations/void_t.h +++ b/source/tinystl/type_traits/void_t.h @@ -3,4 +3,4 @@ namespace tinystl { template using void_t = void; -} \ No newline at end of file +} diff --git a/test/container/array.cpp b/test/container/array.cpp index fbceb81..1565d66 100644 --- a/test/container/array.cpp +++ b/test/container/array.cpp @@ -203,4 +203,4 @@ TEST_CASE("Non-member functions", "[array][non-member]") { REQUIRE(arr1 <= arr2); REQUIRE(arr1 >= arr2); } -} \ No newline at end of file +} diff --git a/test/type_traits/is_same.cpp b/test/type_traits/is_same.cpp index bb5f20e..b726cac 100644 --- a/test/type_traits/is_same.cpp +++ b/test/type_traits/is_same.cpp @@ -40,4 +40,4 @@ TEST_CASE("is_same basic checks", "[type_traits][is_same]") { SECTION("const-qualified type") { REQUIRE_FALSE(tinystl::is_same()); } -} \ No newline at end of file +} diff --git a/test/type_traits/remove_cv.cpp b/test/type_traits/remove_cv.cpp index 09839aa..306e741 100644 --- a/test/type_traits/remove_cv.cpp +++ b/test/type_traits/remove_cv.cpp @@ -22,4 +22,4 @@ TEST_CASE("remove_cv_t type trait", "[type_traits][remove_cv]") { REQUIRE(same, const int *>); REQUIRE(same, int *>); } -} \ No newline at end of file +}