created project with cmake

This commit is contained in:
Luis Stanglmeier 2022-06-23 13:44:39 +02:00
parent c4b3d8ac5f
commit 5f6abf300e
54 changed files with 412 additions and 310 deletions

View file

@ -0,0 +1,131 @@
#pragma once
#include "LSFramework.Exports.h"
#include "LSMacros.h"
#include <vector>
template <class T>
class LSFRAMEWORK_API LSVector
{
public:
LSVector()
{
}
LSVector(size_t zSize)
{
m_pData = new T[zSize];
m_zCapacity = zSize;
}
LSVector(const LSVector& oRhs)
: m_pData(oRhs.m_pData)
, m_zSize(oRhs.m_zSize)
, m_zCapacity(oRhs.m_zCapacity)
{
}
~LSVector()
{
DELETE_ARRAY(m_pData)
}
T& PushBack(T oNewobj)
{
return Assign(oNewobj);
}
T& Assign(T oNewobj)
{
if (m_zSize == m_zCapacity)
{
m_zCapacity *= c_dCapacityIncreaseFactor;
T* pNew = new T[m_zCapacity];
memmove(pNew, m_pData, m_zSize);
DELETE_ARRAY(m_pData);
m_pData = pNew;
}
m_zSize += 1;
m_pData[m_zSize] = oNewobj;
return m_pData[m_zSize];
}
T& Insert(T oNewobj, const size_t zPos)
{
if (zPos == m_zCapacity)
{
return Assign(oNewobj);
}
else
{
m_pData[zPos] = oNewobj;
return m_pData[zPos];
}
}
void PopBack()
{
Remove(m_zSize);
}
void Remove(const size_t zPos)
{
memset(m_pData[zPos], 0, sizeof(T));
}
T& At(const size_t zPos)
{
return m_pData[zPos];
}
void Reserve(const size_t zNewCapacity)
{
if (zNewCapacity < m_zCapacity) return;
T* pOld = m_pData;
m_pData = new T[zNewCapacity];
memmove_s(m_pData, zNewCapacity, pOld, m_zSize);
m_zCapacity = zNewCapacity;
DELETE_ARRAY(pOld);
}
void Clear()
{
DELETE_ARRAY(m_pData)
}
size_t Size() const
{
return m_zSize;
}
size_t Capacity() const
{
return m_zCapacity;
}
T* Data() const
{
return m_pData;
}
LSVector operator=(const LSVector oRhs)
{
LSVector vTemp();
vTemp.m_pData = oRhs.m_pData;
}
T& operator[](const size_t _Pos)
{
m_pData + _Pos * sizeof(T);
}
private:
std::vector<int> s;
T* m_pData = nullptr;
size_t m_zSize = 0;
size_t m_zCapacity = 0;
const float c_dCapacityIncreaseFactor = 1.5;
};