From 1e6426e41638f37e994b5da9a566d331e529d180 Mon Sep 17 00:00:00 2001 From: Tobias Zindl Date: Fri, 6 Oct 2023 07:52:20 +0200 Subject: [PATCH] :sparkles: add is_pointer trait --- include/zll/meta/is_pointer.hpp | 20 ++++++++++++++++++++ include/zll/type_traits.hpp | 1 + tests/unit_tests/meson.build | 3 ++- tests/unit_tests/meta/is_pointer_tests.cpp | 20 ++++++++++++++++++++ 4 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 include/zll/meta/is_pointer.hpp create mode 100644 tests/unit_tests/meta/is_pointer_tests.cpp diff --git a/include/zll/meta/is_pointer.hpp b/include/zll/meta/is_pointer.hpp new file mode 100644 index 0000000..a10152b --- /dev/null +++ b/include/zll/meta/is_pointer.hpp @@ -0,0 +1,20 @@ +#ifndef ZLL_META_ISPOINTER_HPP +#define ZLL_META_ISPOINTER_HPP + +#include "zll/meta/integral_constant.hpp" + +namespace zll { +namespace meta { + +// clang-format off +template struct is_pointer : false_type {}; +template struct is_pointer : true_type {}; +template struct is_pointer : true_type {}; +template struct is_pointer : true_type {}; +template struct is_pointer : true_type {}; +// clang-format on + +} // namespace meta +} // namespace zll + +#endif // ZLL_META_ISPOINTER_HPP diff --git a/include/zll/type_traits.hpp b/include/zll/type_traits.hpp index b58ea95..a206b73 100644 --- a/include/zll/type_traits.hpp +++ b/include/zll/type_traits.hpp @@ -1,6 +1,7 @@ #ifndef ZLL_TYPETRAITS_HPP #define ZLL_TYPETRAITS_HPP +#include "zll/meta/is_pointer.hpp" #include "zll/meta/is_same.hpp" #include "zll/meta/remove_cv.hpp" diff --git a/tests/unit_tests/meson.build b/tests/unit_tests/meson.build index 6b4a9ed..fcfe88b 100644 --- a/tests/unit_tests/meson.build +++ b/tests/unit_tests/meson.build @@ -1,6 +1,7 @@ unit_tests_srcs = [ 'meta/integral_constant_tests.cpp', + 'meta/is_pointer_tests.cpp', 'meta/is_same_tests.cpp', 'meta/remove_cv_tests.cpp', 'main.cpp', @@ -14,4 +15,4 @@ unit_tests_exec = executable( dependencies: [utest_dep, dis_dep], ) -test('zll-unit-tests', unit_tests_exec, suite: 'dis') +test('zll-unit-tests', unit_tests_exec, suite: 'zll') diff --git a/tests/unit_tests/meta/is_pointer_tests.cpp b/tests/unit_tests/meta/is_pointer_tests.cpp new file mode 100644 index 0000000..732f61a --- /dev/null +++ b/tests/unit_tests/meta/is_pointer_tests.cpp @@ -0,0 +1,20 @@ +#include "zll/meta/is_pointer.hpp" +#include "zll/meta/is_same.hpp" + +#include + +struct test_dummy {}; + +UTEST(meta_is_pointer, is_pointer) { + ASSERT_TRUE(zll::meta::is_pointer::value); + ASSERT_TRUE(zll::meta::is_pointer::value); + ASSERT_TRUE(zll::meta::is_pointer::value); + ASSERT_TRUE(zll::meta::is_pointer::value); + ASSERT_TRUE(zll::meta::is_pointer::value); + ASSERT_TRUE(zll::meta::is_pointer::value); + + ASSERT_FALSE(zll::meta::is_pointer::value); + ASSERT_FALSE(zll::meta::is_pointer::value); + ASSERT_FALSE(zll::meta::is_pointer::value); + ASSERT_FALSE(zll::meta::is_pointer::value); +}