feat(rage): add atArray (#2)

Co-authored-by: maybegreat48
This commit is contained in:
maybegreat48 2023-08-27 10:21:16 +00:00 committed by GitHub
parent a2a74e151a
commit 6bf009fae7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 72 additions and 0 deletions

View File

@ -7,6 +7,7 @@
#include "network/rlGamerInfoBase.hpp" #include "network/rlGamerInfoBase.hpp"
#include "network/rlGamerInfo.hpp" #include "network/rlGamerInfo.hpp"
#include "player/CPlayerInfo.hpp" #include "player/CPlayerInfo.hpp"
#include "rage/atArray.hpp"
#include "rage/joaat.hpp" #include "rage/joaat.hpp"
#include "rage/vector.hpp" #include "rage/vector.hpp"
#include "script/scriptHandlerNetComponent.hpp" #include "script/scriptHandlerNetComponent.hpp"

71
rage/atArray.hpp Normal file
View File

@ -0,0 +1,71 @@
#pragma once
#include <cstdint>
#include <initializer_list>
#include <ostream>
#include <vector>
namespace rage
{
#pragma pack(push, 8)
template <typename T>
class atArray
{
public:
atArray() :
m_data(nullptr),
m_size(0),
m_count(0)
{
}
T* begin() const
{
return &m_data[0];
}
T* end() const
{
return &m_data[m_size];
}
T* data() const
{
return m_data;
}
std::uint16_t size() const
{
return m_size;
}
std::uint16_t count() const
{
return m_count;
}
T& operator[](std::uint16_t index) const
{
return m_data[index];
}
bool contains(T comparator)
{
for (auto iter_value : this)
{
if (iter_value == comparator)
{
return true;
}
}
return false;
}
private:
T* m_data;
std::uint16_t m_size;
std::uint16_t m_count;
};
static_assert(sizeof(rage::atArray<std::uint32_t>) == 0x10, "rage::atArray is not properly sized");
#pragma pack(pop)
}