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.
25 lines
527 B
C
25 lines
527 B
C
#ifndef SQSTRING_H
|
|
#define SQSTRING_H
|
|
#include "squirrel.h"
|
|
#include "sqobject.h"
|
|
#include "sqstate.h"
|
|
|
|
struct SQString : public SQRefCounted
|
|
{
|
|
SQSharedState* _sharedstate;
|
|
SQInteger _len;
|
|
char gap34[4];
|
|
SQHash _hash;
|
|
SQChar _val[1];
|
|
|
|
static SQString* Create(SQSharedState* sharedstate, const SQChar* s, SQInteger len)
|
|
{
|
|
SQString* str = v_StringTable__Add(sharedstate->_stringtable, s, len);
|
|
str->_sharedstate = sharedstate;
|
|
|
|
return str;
|
|
}
|
|
};
|
|
static_assert(offsetof(SQString, _val) == 0x40);
|
|
|
|
#endif // SQSTRING_H
|