squall/storm/array/TSBaseArray.hpp

50 lines
925 B
C++
Raw Normal View History

2020-09-24 23:33:18 -05:00
#ifndef STORM_ARRAY_TS_BASE_ARRAY_HPP
#define STORM_ARRAY_TS_BASE_ARRAY_HPP
#include <cstdint>
#include <typeinfo>
2020-09-24 23:33:18 -05:00
template <class T>
2020-09-24 23:33:18 -05:00
class TSBaseArray {
public:
uint32_t m_alloc = 0;
uint32_t m_count = 0;
T* m_data = nullptr;
virtual const char* MemFileName() const;
virtual int32_t MemLineNo() const;
2020-09-24 23:33:18 -05:00
T& operator[](uint32_t i);
uint32_t Count(void) const;
2020-09-24 23:33:18 -05:00
void Clear(void);
};
template <class T>
2020-09-24 23:33:18 -05:00
T& TSBaseArray<T>::operator[](uint32_t i) {
this->CheckArrayBounds(i);
2020-09-24 23:33:18 -05:00
return this->m_data[i];
}
template <class T>
uint32_t TSBaseArray<T>::Count() const {
2020-09-24 23:33:18 -05:00
return this->m_count;
}
template <class T>
2020-09-24 23:33:18 -05:00
void TSBaseArray<T>::Clear() {
delete[] this->m_data;
TSBaseArray<T>();
}
template <class T>
const char* TSBaseArray<T>::MemFileName() const {
return typeid(T).name();
}
template <class T>
int32_t TSBaseArray<T>::MemLineNo() const {
return -2;
}
2020-09-24 23:33:18 -05:00
#endif