From 703a73fa846531a0888c8f99489c8e213f5c5d81 Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Mon, 6 Jul 2020 10:56:26 +0200 Subject: BLI: refactor how buffers for small object optimization are stored Previously, there was an error when operator-> was returning an invalid type. See error C2839. --- source/blender/blenlib/BLI_array.hh | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) (limited to 'source/blender/blenlib/BLI_array.hh') diff --git a/source/blender/blenlib/BLI_array.hh b/source/blender/blenlib/BLI_array.hh index ee4e9702779..9732f43a268 100644 --- a/source/blender/blenlib/BLI_array.hh +++ b/source/blender/blenlib/BLI_array.hh @@ -74,7 +74,7 @@ class Array { Allocator allocator_; /** A placeholder buffer that will remain uninitialized until it is used. */ - AlignedBuffer inline_buffer_; + TypedBuffer inline_buffer_; public: /** @@ -82,7 +82,7 @@ class Array { */ Array() { - data_ = this->inline_buffer(); + data_ = inline_buffer_; size_ = 0; } @@ -167,7 +167,7 @@ class Array { uninitialized_relocate_n(other.data_, size_, data_); } - other.data_ = other.inline_buffer(); + other.data_ = other.inline_buffer_; other.size_ = 0; } @@ -335,18 +335,13 @@ class Array { T *get_buffer_for_size(uint size) { if (size <= InlineBufferCapacity) { - return this->inline_buffer(); + return inline_buffer_; } else { return this->allocate(size); } } - T *inline_buffer() const - { - return (T *)inline_buffer_.ptr(); - } - T *allocate(uint size) { return (T *)allocator_.allocate(size * sizeof(T), alignof(T), AT); @@ -354,7 +349,7 @@ class Array { bool uses_inline_buffer() const { - return data_ == this->inline_buffer(); + return data_ == inline_buffer_; } }; -- cgit v1.2.3