mirror of
https://github.com/thunderbrewhq/squall.git
synced 2025-12-12 10:32:29 +00:00
fix(array): fix various bugs with array clearing
This commit is contained in:
parent
181ef114e4
commit
7e89d65d7a
3 changed files with 73 additions and 10 deletions
|
|
@ -8,17 +8,20 @@
|
|||
template <class T>
|
||||
class TSBaseArray {
|
||||
public:
|
||||
uint32_t m_alloc = 0;
|
||||
uint32_t m_count = 0;
|
||||
T* m_data = nullptr;
|
||||
// Member variables
|
||||
uint32_t m_alloc;
|
||||
uint32_t m_count;
|
||||
T* m_data;
|
||||
|
||||
// Virtual member functions
|
||||
virtual const char* MemFileName() const;
|
||||
virtual int32_t MemLineNo() const;
|
||||
|
||||
// Member functions
|
||||
T& operator[](uint32_t index);
|
||||
void CheckArrayBounds(uint32_t index) const;
|
||||
void Constructor();
|
||||
uint32_t Count() const;
|
||||
void Clear();
|
||||
T* Ptr();
|
||||
const T* Ptr() const;
|
||||
T* Top();
|
||||
|
|
@ -48,14 +51,15 @@ void TSBaseArray<T>::CheckArrayBounds(uint32_t index) const {
|
|||
}
|
||||
|
||||
template <class T>
|
||||
uint32_t TSBaseArray<T>::Count() const {
|
||||
return this->m_count;
|
||||
void TSBaseArray<T>::Constructor() {
|
||||
this->m_alloc = 0;
|
||||
this->m_count = 0;
|
||||
this->m_data = nullptr;
|
||||
}
|
||||
|
||||
template <class T>
|
||||
void TSBaseArray<T>::Clear() {
|
||||
delete[] this->m_data;
|
||||
TSBaseArray<T>();
|
||||
uint32_t TSBaseArray<T>::Count() const {
|
||||
return this->m_count;
|
||||
}
|
||||
|
||||
template <class T>
|
||||
|
|
|
|||
|
|
@ -8,14 +8,21 @@
|
|||
template <class T>
|
||||
class TSFixedArray : public TSBaseArray<T> {
|
||||
public:
|
||||
TSFixedArray();
|
||||
~TSFixedArray();
|
||||
TSFixedArray<T>& operator=(const TSFixedArray<T>& source);
|
||||
void Clear();
|
||||
void ReallocAndClearData(uint32_t count);
|
||||
void ReallocData(uint32_t count);
|
||||
void Set(uint32_t count, const T* data);
|
||||
void SetCount(uint32_t count);
|
||||
};
|
||||
|
||||
template <class T>
|
||||
TSFixedArray<T>::TSFixedArray() {
|
||||
this->Constructor();
|
||||
}
|
||||
|
||||
template <class T>
|
||||
TSFixedArray<T>::~TSFixedArray() {
|
||||
for (uint32_t i = 0; i < this->Count(); i++) {
|
||||
|
|
@ -37,6 +44,12 @@ TSFixedArray<T>& TSFixedArray<T>::operator=(const TSFixedArray<T>& source) {
|
|||
return *this;
|
||||
}
|
||||
|
||||
template <class T>
|
||||
void TSFixedArray<T>::Clear() {
|
||||
this->~TSFixedArray<T>();
|
||||
this->Constructor();
|
||||
}
|
||||
|
||||
template <class T>
|
||||
void TSFixedArray<T>::ReallocAndClearData(uint32_t count) {
|
||||
this->m_alloc = count;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue