From 403384998a6bb5f428e15ced5503206b45032b25 Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Wed, 8 Jul 2020 22:27:25 +0200 Subject: BLI: improve constructors and conversions to span This allows us to avoid many calls to `as_span()` methods. I will remove those in the next commit. Furthermore, constructors of Vector and Array can convert from one type to another now. I tested these changes on Linux with gcc and on Windows. --- tests/gtests/blenlib/BLI_memory_utils_test.cc | 37 ++++++++++++++++++++++++ tests/gtests/blenlib/BLI_vector_test.cc | 12 ++++++++ tests/gtests/functions/FN_attributes_ref_test.cc | 3 +- 3 files changed, 51 insertions(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/gtests/blenlib/BLI_memory_utils_test.cc b/tests/gtests/blenlib/BLI_memory_utils_test.cc index eb896c0cca6..b99db5c5eca 100644 --- a/tests/gtests/blenlib/BLI_memory_utils_test.cc +++ b/tests/gtests/blenlib/BLI_memory_utils_test.cc @@ -1,5 +1,6 @@ /* Apache License, Version 2.0 */ +#include "BLI_float3.hh" #include "BLI_memory_utils.hh" #include "BLI_strict_flags.h" #include "testing/testing.h" @@ -119,4 +120,40 @@ TEST(memory_utils, UninitializedFillN_StrongExceptionSafety) EXPECT_EQ(MyValue::alive, 0); } +class TestBaseClass { + virtual void mymethod(){}; +}; + +class TestChildClass : public TestBaseClass { + void mymethod() override + { + } +}; + +static_assert(is_convertible_pointer_v); +static_assert(is_convertible_pointer_v); +static_assert(is_convertible_pointer_v); +static_assert(is_convertible_pointer_v); +static_assert(!is_convertible_pointer_v); +static_assert(!is_convertible_pointer_v); +static_assert(!is_convertible_pointer_v); +static_assert(is_convertible_pointer_v); +static_assert(!is_convertible_pointer_v); +static_assert(is_convertible_pointer_v); +static_assert(!is_convertible_pointer_v); +static_assert(is_convertible_pointer_v); +static_assert(!is_convertible_pointer_v); +static_assert(!is_convertible_pointer_v); +static_assert(!is_convertible_pointer_v); +static_assert(!is_convertible_pointer_v); +static_assert(!is_convertible_pointer_v); +static_assert(is_convertible_pointer_v); +static_assert(is_convertible_pointer_v); +static_assert(!is_convertible_pointer_v); +static_assert(!is_convertible_pointer_v); +static_assert(!is_convertible_pointer_v); +static_assert(is_convertible_pointer_v); +static_assert(is_convertible_pointer_v); +static_assert(is_convertible_pointer_v); + } // namespace blender diff --git a/tests/gtests/blenlib/BLI_vector_test.cc b/tests/gtests/blenlib/BLI_vector_test.cc index 1f6bd1ded5b..92fb12fb4e5 100644 --- a/tests/gtests/blenlib/BLI_vector_test.cc +++ b/tests/gtests/blenlib/BLI_vector_test.cc @@ -59,6 +59,18 @@ TEST(vector, InitializerListConstructor) EXPECT_EQ(vec[3], 6); } +TEST(vector, ConvertingConstructor) +{ + std::array values = {5.4f, 7.3f, -8.1f, 5.0f, 0.0f}; + Vector vec = values; + EXPECT_EQ(vec.size(), 5u); + EXPECT_EQ(vec[0], 5); + EXPECT_EQ(vec[1], 7); + EXPECT_EQ(vec[2], -8); + EXPECT_EQ(vec[3], 5); + EXPECT_EQ(vec[4], 0); +} + struct TestListValue { TestListValue *next, *prev; int value; diff --git a/tests/gtests/functions/FN_attributes_ref_test.cc b/tests/gtests/functions/FN_attributes_ref_test.cc index 1c05bb930db..fee8c5dc058 100644 --- a/tests/gtests/functions/FN_attributes_ref_test.cc +++ b/tests/gtests/functions/FN_attributes_ref_test.cc @@ -65,7 +65,8 @@ TEST(mutable_attributes_ref, ComplexTest) Array sizes(amount); Array names(amount); - Array buffers = {positions.data(), ids.data(), sizes.data(), names.data()}; + Array buffers = { + (void *)positions.data(), (void *)ids.data(), (void *)sizes.data(), (void *)names.data()}; MutableAttributesRef attributes{info, buffers, IndexRange(1, 3)}; EXPECT_EQ(attributes.size(), 3); EXPECT_EQ(attributes.info().size(), 4); -- cgit v1.2.3