mirror of
https://github.com/doldecomp/sms.git
synced 2026-11-09 17:11:05 -10:00
70 lines
1.2 KiB
C++
70 lines
1.2 KiB
C++
#ifndef ENEMY_SOLID_STACK_HPP
|
|
#define ENEMY_SOLID_STACK_HPP
|
|
|
|
#include <dolphin/types.h>
|
|
#include <dolphin/types.h>
|
|
|
|
template <class T> class TSolidStack {
|
|
/* 0x0 */ int mCapacity;
|
|
/* 0x4 */ int mSize;
|
|
/* 0x8 */ T* mData;
|
|
/* 0xC */ // vt
|
|
public:
|
|
TSolidStack(int capacity)
|
|
: mCapacity(capacity)
|
|
, mSize(0)
|
|
, mData(nullptr)
|
|
{
|
|
mData = new T[mCapacity];
|
|
}
|
|
|
|
// matching
|
|
T pop()
|
|
{
|
|
if (mSize <= 0)
|
|
return mData[mSize];
|
|
|
|
--mSize;
|
|
return mData[mSize];
|
|
}
|
|
|
|
// fabricated
|
|
void push(const T& value)
|
|
{
|
|
if (mSize < mCapacity) {
|
|
mData[mSize] = value;
|
|
++mSize;
|
|
}
|
|
}
|
|
|
|
// fabricated and wrong
|
|
T top() const { return operator[](mSize - 1); }
|
|
// fabricated
|
|
const T& peek() const { return mData[mSize - 1]; }
|
|
// fabricated and wrong
|
|
T operator[](int index) const { return mData[index]; }
|
|
|
|
// fabricated
|
|
BOOL contain(const T& value) const
|
|
{
|
|
for (int i = 0; i < mSize; ++i)
|
|
if (mData[mSize - 1 - i] == value)
|
|
return true;
|
|
|
|
return false;
|
|
}
|
|
|
|
// fabricated
|
|
void clear() { mSize = 0; }
|
|
|
|
// fabricated
|
|
bool empty() const { return mSize == 0; }
|
|
|
|
// fabricated
|
|
int size() const { return mSize; }
|
|
|
|
virtual ~TSolidStack() { }
|
|
};
|
|
|
|
#endif
|