mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
This patch removes a lot of old code. Context is now exclusively grabbed from the CSquirrelVM instance. This patch also comes with a few new types: SQArray and SQTable! The implementation also allows pushing Vector3D's on the stack, but these are handled slightly differently.. The largest field in tagSQObjectValue is 8 bytes, Vector3D is 12 bytes unaligned, but the tagSQObjectValue field in the tagSQObject struct is aligned to a 8 byte boundary while the field prior is only 4 bytes, Vector3D starts right after the type field in the tagSQObject (at the padding) to keep the whole structure the same size, therefore a new field has been added in between the padding (_pad) with a simple Vector3D accessor. Also added a hook to allow registering proper script enums.
26 lines
592 B
C++
26 lines
592 B
C++
/* see copyright notice in squirrel.h */
|
|
#ifndef _SQUTILS_H_
|
|
#define _SQUTILS_H_
|
|
|
|
template<typename T> class sqvector
|
|
{
|
|
private:
|
|
SQInteger _globalnum;
|
|
|
|
public:
|
|
T& top() const { return _vals[_size - 1]; }
|
|
inline SQUnsignedInteger size() const { return _size; }
|
|
bool empty() const { return (_size <= 0); }
|
|
|
|
SQUnsignedInteger capacity() { return _allocated; }
|
|
inline T& back() const { return _vals[_size - 1]; }
|
|
inline T& operator[](SQUnsignedInteger pos) const { return _vals[pos]; }
|
|
T* _vals;
|
|
|
|
private:
|
|
SQUnsignedInteger _size;
|
|
SQUnsignedInteger _allocated;
|
|
};
|
|
|
|
#endif //_SQUTILS_H_
|