Fix spine::Vector copy assignment. (#2828)

This commit is contained in:
James Chen 2025-05-05 19:24:21 +08:00 committed by GitHub
parent 7fd1e5340c
commit b57acb040c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -39,6 +39,9 @@ namespace spine {
template<typename T>
class SP_API Vector : public SpineObject {
public:
using size_type = size_t;
using value_type = T;
Vector() : _size(0), _capacity(0), _buffer(NULL) {
}
@ -118,14 +121,14 @@ namespace spine {
}
}
inline void addAll(Vector<T> &inValue) {
inline void addAll(const Vector<T> &inValue) {
ensureCapacity(this->size() + inValue.size());
for (size_t i = 0; i < inValue.size(); i++) {
add(inValue[i]);
}
}
inline void clearAndAddAll(Vector<T> &inValue) {
inline void clearAndAddAll(const Vector<T> &inValue) {
this->clear();
this->addAll(inValue);
}
@ -172,6 +175,12 @@ namespace spine {
return _buffer[inIndex];
}
inline const T &operator[](size_t inIndex) const {
assert(inIndex < _size);
return _buffer[inIndex];
}
inline friend bool operator==(Vector<T> &lhs, Vector<T> &rhs) {
if (lhs.size() != rhs.size()) {
return false;
@ -190,6 +199,13 @@ namespace spine {
return !(lhs == rhs);
}
Vector &operator=(const Vector &inVector) {
if (this != &inVector) {
clearAndAddAll(inVector);
}
return *this;
}
inline T *buffer() {
return _buffer;
}
@ -223,7 +239,6 @@ namespace spine {
buffer->~T();
}
// Vector &operator=(const Vector &inVector) {};
};
}