mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-08 03:28:20 +02:00
Initial checkin
This commit is contained in:
parent
c74712dad9
commit
078564ac9e
3242 changed files with 1616395 additions and 0 deletions
130
BeefySysLib/Span.h
Normal file
130
BeefySysLib/Span.h
Normal file
|
@ -0,0 +1,130 @@
|
|||
#pragma once
|
||||
|
||||
#include "../Common.h"
|
||||
|
||||
NS_BF_BEGIN
|
||||
|
||||
template <typename T>
|
||||
class Span
|
||||
{
|
||||
public:
|
||||
T* mVals;
|
||||
int mSize;
|
||||
|
||||
public:
|
||||
struct Iterator
|
||||
{
|
||||
public:
|
||||
T* mPtr;
|
||||
|
||||
public:
|
||||
Iterator(T* ptr)
|
||||
{
|
||||
mPtr = ptr;
|
||||
}
|
||||
|
||||
Iterator& operator++()
|
||||
{
|
||||
mPtr++;
|
||||
return *this;
|
||||
}
|
||||
|
||||
bool operator!=(const Iterator& itr) const
|
||||
{
|
||||
return itr.mPtr != mPtr;
|
||||
}
|
||||
|
||||
bool operator==(const Iterator& itr) const
|
||||
{
|
||||
return itr.mPtr == mPtr;
|
||||
}
|
||||
|
||||
T& operator*()
|
||||
{
|
||||
return *mPtr;
|
||||
}
|
||||
};
|
||||
|
||||
Span()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
Span(T* mPtr, int size)
|
||||
{
|
||||
mSize = (int)refVec.size();
|
||||
mVals = NULL;
|
||||
}
|
||||
|
||||
T& operator[](int idx) const
|
||||
{
|
||||
return mVals[idx];
|
||||
}
|
||||
|
||||
Iterator begin() const
|
||||
{
|
||||
return mVals;
|
||||
}
|
||||
|
||||
Iterator end() const
|
||||
{
|
||||
return mVals + mSize;
|
||||
}
|
||||
|
||||
T back() const
|
||||
{
|
||||
return mVals[mSize - 1];
|
||||
}
|
||||
|
||||
int size() const
|
||||
{
|
||||
return mSize;
|
||||
}
|
||||
|
||||
bool empty() const
|
||||
{
|
||||
return mSize == 0;
|
||||
}
|
||||
|
||||
bool IsEmpty() const
|
||||
{
|
||||
return mSize == 0;
|
||||
}
|
||||
|
||||
T Get(int idx)
|
||||
{
|
||||
if ((idx < 0) || (idx >= mSize))
|
||||
return (T)0;
|
||||
return mVals[idx];
|
||||
}
|
||||
|
||||
template <typename T2>
|
||||
T2 GetAs(int idx)
|
||||
{
|
||||
if ((idx < 0) || (idx >= mSize))
|
||||
return (T2)0;
|
||||
return (T2)mVals[idx];
|
||||
}
|
||||
|
||||
T GetLast()
|
||||
{
|
||||
if (mSize == 0)
|
||||
return (T)0;
|
||||
return mVals[mSize - 1];
|
||||
}
|
||||
|
||||
T GetFirst()
|
||||
{
|
||||
if (mSize == 0)
|
||||
return (T)0;
|
||||
return mVals[0];
|
||||
}
|
||||
|
||||
void SetSize(int size)
|
||||
{
|
||||
BF_ASSERT(size <= mSize);
|
||||
mSize = size;
|
||||
}
|
||||
};
|
||||
|
||||
NS_BF_END
|
Loading…
Add table
Add a link
Reference in a new issue