| 216 | unsigned short m_size; |
| 217 | |
| 218 | void resize(unsigned short new_size, const DfArray<T>* replacement) |
| 219 | { |
| 220 | if (new_size == m_size) |
| 221 | return; |
| 222 | |
| 223 | T* old_data = m_data; |
| 224 | |
| 225 | m_data = (T*) new T[new_size]; |
| 226 | |
| 227 | T* copysrc = replacement ? replacement->m_data : old_data; |
| 228 | unsigned short copysize = replacement ? replacement->m_size : m_size; |
| 229 | |
| 230 | if (copysrc) |
| 231 | std::memcpy(m_data, copysrc, sizeof(T) * std::min(copysize, new_size)); |
| 232 | |
| 233 | if (new_size > m_size) |
| 234 | std::memset(m_data + m_size, 0, sizeof(T) * (new_size - m_size)); |
| 235 | |
| 236 | delete[] old_data; |
| 237 | |
| 238 | m_size = new_size; |
| 239 | } |
| 240 | public: |
| 241 | DfArray() : m_data(nullptr), m_size(0) {} |
| 242 | ~DfArray() { delete[] m_data; } |