BLI: simplify naming of listbase wrapper

This commit is contained in:
Jacques Lucke 2020-04-21 17:38:19 +02:00
parent 3059353b38
commit 29e9506a7f
4 changed files with 10 additions and 13 deletions

@ -29,17 +29,17 @@
namespace BLI { namespace BLI {
template<typename T> class IntrusiveListBaseWrapper { template<typename T> class ListBaseWrapper {
private: private:
ListBase *m_listbase; ListBase *m_listbase;
public: public:
IntrusiveListBaseWrapper(ListBase *listbase) : m_listbase(listbase) ListBaseWrapper(ListBase *listbase) : m_listbase(listbase)
{ {
BLI_assert(listbase); BLI_assert(listbase);
} }
IntrusiveListBaseWrapper(ListBase &listbase) : IntrusiveListBaseWrapper(&listbase) ListBaseWrapper(ListBase &listbase) : ListBaseWrapper(&listbase)
{ {
} }

@ -130,13 +130,10 @@ template<typename T, uint N = 4, typename Allocator = GuardedAllocator> class Ve
/** /**
* Create a vector from a ListBase. * Create a vector from a ListBase.
*/ */
Vector(ListBase &values, bool intrusive_next_and_prev_pointers) : Vector() Vector(ListBase &values) : Vector()
{ {
BLI_assert(intrusive_next_and_prev_pointers); for (T value : ListBaseWrapper<typename std::remove_pointer<T>::type>(values)) {
if (intrusive_next_and_prev_pointers) { this->append(value);
for (T value : IntrusiveListBaseWrapper<typename std::remove_pointer<T>::type>(values)) {
this->append(value);
}
} }
} }

@ -53,7 +53,7 @@
using BLI::Array; using BLI::Array;
using BLI::ArrayRef; using BLI::ArrayRef;
using BLI::IndexRange; using BLI::IndexRange;
using BLI::IntrusiveListBaseWrapper; using BLI::ListBaseWrapper;
using BLI::MutableArrayRef; using BLI::MutableArrayRef;
using BLI::Vector; using BLI::Vector;
@ -93,7 +93,7 @@ static void compute_vertex_mask__armature_mode(MDeformVert *dvert,
/* Element i is true if there is a selected bone that uses vertex group i. */ /* Element i is true if there is a selected bone that uses vertex group i. */
Vector<bool> selected_bone_uses_group; Vector<bool> selected_bone_uses_group;
for (bDeformGroup *def : IntrusiveListBaseWrapper<bDeformGroup>(ob->defbase)) { for (bDeformGroup *def : ListBaseWrapper<bDeformGroup>(ob->defbase)) {
bPoseChannel *pchan = BKE_pose_channel_find_name(armature_ob->pose, def->name); bPoseChannel *pchan = BKE_pose_channel_find_name(armature_ob->pose, def->name);
bool bone_for_group_exists = pchan && pchan->bone && (pchan->bone->flag & BONE_SELECTED); bool bone_for_group_exists = pchan && pchan->bone && (pchan->bone->flag & BONE_SELECTED);
selected_bone_uses_group.append(bone_for_group_exists); selected_bone_uses_group.append(bone_for_group_exists);

@ -45,7 +45,7 @@ struct TestListValue {
int value; int value;
}; };
TEST(vector, IntrusiveListBaseConstructor) TEST(vector, ListBaseConstructor)
{ {
TestListValue *value1 = new TestListValue{0, 0, 4}; TestListValue *value1 = new TestListValue{0, 0, 4};
TestListValue *value2 = new TestListValue{0, 0, 5}; TestListValue *value2 = new TestListValue{0, 0, 5};
@ -55,7 +55,7 @@ TEST(vector, IntrusiveListBaseConstructor)
BLI_addtail(&list, value1); BLI_addtail(&list, value1);
BLI_addtail(&list, value2); BLI_addtail(&list, value2);
BLI_addtail(&list, value3); BLI_addtail(&list, value3);
Vector<TestListValue *> vec(list, true); Vector<TestListValue *> vec(list);
EXPECT_EQ(vec.size(), 3); EXPECT_EQ(vec.size(), 3);
EXPECT_EQ(vec[0]->value, 4); EXPECT_EQ(vec[0]->value, 4);