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.
20 lines
410 B
C++
20 lines
410 B
C++
#include "sqtable.h"
|
|
|
|
void SQTable::_ClearNodes()
|
|
{
|
|
for (SQInteger i = 0; i < _numofnodes; i++) { _nodes[i].key = _null_; _nodes[i].val = _null_; }
|
|
}
|
|
|
|
// TODO: untested
|
|
bool SQTable::Get(const SQObjectPtr& key, SQObjectPtr& val)
|
|
{
|
|
if (sq_type(key) == OT_NULL)
|
|
return false;
|
|
_HashNode* n = _Get(key, HashObj(key) & (_numofnodes - 1));
|
|
if (n) {
|
|
val = _realval(n->val);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|