mirror of
https://github.com/thunderbrewhq/squall.git
synced 2025-12-12 02:22:30 +00:00
feat(array): add copy assignment operator to TSFixedArray
This commit is contained in:
parent
8bdbe3c653
commit
0a941aaa08
1 changed files with 33 additions and 0 deletions
|
|
@ -9,7 +9,10 @@ template <class T>
|
||||||
class TSFixedArray : public TSBaseArray<T> {
|
class TSFixedArray : public TSBaseArray<T> {
|
||||||
public:
|
public:
|
||||||
~TSFixedArray();
|
~TSFixedArray();
|
||||||
|
TSFixedArray<T>& operator=(const TSFixedArray<T>& source);
|
||||||
|
void ReallocAndClearData(uint32_t count);
|
||||||
void ReallocData(uint32_t count);
|
void ReallocData(uint32_t count);
|
||||||
|
void Set(uint32_t count, const T* data);
|
||||||
void SetCount(uint32_t count);
|
void SetCount(uint32_t count);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -25,6 +28,25 @@ TSFixedArray<T>::~TSFixedArray() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
TSFixedArray<T>& TSFixedArray<T>::operator=(const TSFixedArray<T>& source) {
|
||||||
|
if (this != &source) {
|
||||||
|
this->Set(source.Count(), source.Ptr());
|
||||||
|
}
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
void TSFixedArray<T>::ReallocAndClearData(uint32_t count) {
|
||||||
|
this->m_alloc = count;
|
||||||
|
|
||||||
|
if (this->m_data || count) {
|
||||||
|
void* m = SMemReAlloc(this->m_data, sizeof(T) * count, this->MemFileName(), this->MemLineNo(), 0x0);
|
||||||
|
this->m_data = static_cast<T*>(m);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
void TSFixedArray<T>::ReallocData(uint32_t count) {
|
void TSFixedArray<T>::ReallocData(uint32_t count) {
|
||||||
T* oldData = this->m_data;
|
T* oldData = this->m_data;
|
||||||
|
|
@ -60,6 +82,17 @@ void TSFixedArray<T>::ReallocData(uint32_t count) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
void TSFixedArray<T>::Set(uint32_t count, const T* data) {
|
||||||
|
this->ReallocAndClearData(count);
|
||||||
|
|
||||||
|
for (uint32_t i; i < count; i++) {
|
||||||
|
new (&this->m_data[i]) T(data[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
this->m_count = count;
|
||||||
|
}
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
void TSFixedArray<T>::SetCount(uint32_t count) {
|
void TSFixedArray<T>::SetCount(uint32_t count) {
|
||||||
if (count != this->m_count) {
|
if (count != this->m_count) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue