28 #if !defined(_SCRAT_ARRAY_H_)
29 #define _SCRAT_ARRAY_H_
34 #include "sqratObject.h"
35 #include "sqratFunction.h"
36 #include "sqratGlobalMethods.h"
86 sq_pushinteger(vm, index);
103 sq_pushinteger(vm, index);
104 sq_newclosure(vm, func, 0);
124 sq_pushinteger(vm, index);
144 BindInstance<V>(index, val,
false);
161 BindFunc(index, &method,
sizeof(method), SqGlobalFunc(method));
184 template <
typename T>
187 sq_pushobject(vm, obj);
188 sq_pushinteger(vm, index);
189 #if !defined (SCRAT_NO_ERROR_CHECKING)
190 if (SQ_FAILED(sq_get(vm, -2))) {
199 #if !defined (SCRAT_NO_ERROR_CHECKING)
206 return element.
value;
220 sq_pushinteger(vm, index);
221 #if !defined (SCRAT_NO_ERROR_CHECKING)
222 if(SQ_FAILED(sq_get(vm, -2))) {
226 SQObjectType value_type = sq_gettype(vm, -1);
227 if (value_type != OT_CLOSURE && value_type != OT_NATIVECLOSURE) {
234 sq_getstackobj(vm, -1, &funcObj);
252 template <
typename T>
256 sq_pushobject(vm, value);
257 #if !defined (SCRAT_NO_ERROR_CHECKING)
258 if (size > sq_getsize(vm, -1)) {
266 while (SQ_SUCCEEDED(sq_next(vm, -2))) {
267 sq_getinteger(vm, -2, &i);
268 if (i >= size)
break;
271 #if !defined (SCRAT_NO_ERROR_CHECKING)
277 array[i] = element.
value;
296 sq_arrayappend(vm, -2);
315 sq_arrayappend(vm, -2);
335 sq_arrayinsert(vm, -2, destpos);
355 sq_arrayinsert(vm, -2, destpos);
369 if(SQ_FAILED(sq_arraypop(vm, -1,
true))) {
373 sq_getstackobj(vm, -1, &slotObj);
390 sq_arrayremove(vm, -1, itemidx);
405 sq_arrayresize(vm, -1, newsize);
418 sq_arrayreverse(vm, -1);
431 sq_pushobject(vm, obj);
432 SQInteger r = sq_getsize(vm, -1);
462 sq_newarray(vm, size);
463 sq_getstackobj(vm,-1,&obj);
506 Var(HSQUIRRELVM vm, SQInteger idx) {
508 sq_resetobject(&obj);
509 sq_getstackobj(vm,idx,&obj);
511 #if !defined (SCRAT_NO_ERROR_CHECKING)
512 SQObjectType value_type = sq_gettype(vm, idx);
513 if (value_type != OT_ARRAY) {
528 sq_resetobject(&obj);
530 sq_pushobject(vm,obj);
552 Var(HSQUIRRELVM vm, SQInteger idx) {
554 sq_resetobject(&obj);
555 sq_getstackobj(vm,idx,&obj);
556 value =
Array(obj, vm);
557 SQObjectType value_type = sq_gettype(vm, idx);
558 #if !defined (SCRAT_NO_ERROR_CHECKING)
559 if (value_type != OT_ARRAY) {
574 sq_resetobject(&obj);
576 sq_pushobject(vm,obj);
static HSQUIRRELVM Get()
Definition: sqratUtil.h:92
Array(const Object &obj)
Definition: sqratArray.h:474
T value
The actual value of get operations.
Definition: sqratTypes.h:152
static void push(HSQUIRRELVM vm, Array value)
Definition: sqratArray.h:572
ArrayBase(HSQUIRRELVM v=DefaultVM::Get())
Definition: sqratArray.h:52
Definition: sqratTypes.h:150
ArrayBase & Resize(const SQInteger newsize)
Definition: sqratArray.h:403
static string FormatTypeError(HSQUIRRELVM vm, SQInteger idx, const string &expectedType)
Definition: sqratUtil.h:149
ArrayBase(const Object &obj)
Definition: sqratArray.h:61
ArrayBase & Reverse()
Definition: sqratArray.h:416
ArrayBase & SquirrelFunc(const SQInteger index, SQFUNCTION func)
Definition: sqratArray.h:101
ArrayBase & Insert(const SQInteger destpos, const V &val)
Definition: sqratArray.h:332
Var(HSQUIRRELVM vm, SQInteger idx)
Definition: sqratArray.h:506
Array(HSQUIRRELVM v, const SQInteger size=0)
Definition: sqratArray.h:461
Definition: sqratTypes.h:331
ArrayBase & Append(V *val)
Definition: sqratArray.h:312
ArrayBase & Remove(const SQInteger itemidx)
Definition: sqratArray.h:388
Array value
The actual value of get operations.
Definition: sqratArray.h:540
ArrayBase & Func(const SQInteger index, F method)
Definition: sqratArray.h:160
ArrayBase & SetInstance(const SQInteger index, V *val)
Definition: sqratArray.h:143
Represents a function in Squirrel.
Definition: sqratFunction.h:40
Array()
Definition: sqratArray.h:451
void Bind(const SQInteger index, Object &obj)
Definition: sqratArray.h:84
Array value
The actual value of get operations.
Definition: sqratArray.h:494
Function GetFunction(const SQInteger index)
Definition: sqratArray.h:217
Definition: sqratUtil.h:291
virtual HSQOBJECT GetObject() const
Definition: sqratObject.h:182
SQInteger Length() const
Definition: sqratArray.h:429
Object()
Definition: sqratObject.h:65
Definition: sqratObject.h:48
static Error & Instance()
Definition: sqratUtil.h:134
The base class for Array that implements almost all of its functionality.
Definition: sqratArray.h:43
ArrayBase(HSQOBJECT o, HSQUIRRELVM v=DefaultVM::Get())
Definition: sqratArray.h:71
void Throw(HSQUIRRELVM vm, const string &err)
Definition: sqratUtil.h:210
const T & value
The actual value of get operations.
Definition: sqratTypes.h:333
Object Pop()
Definition: sqratArray.h:366
ArrayBase & Insert(const SQInteger destpos, V *val)
Definition: sqratArray.h:352
SharedPtr< T > GetValue(int index)
Definition: sqratArray.h:185
ArrayBase & Append(const V &val)
Definition: sqratArray.h:293
static void push(HSQUIRRELVM vm, const Array &value)
Definition: sqratArray.h:526
Array(HSQOBJECT o, HSQUIRRELVM v=DefaultVM::Get())
Definition: sqratArray.h:484
ArrayBase & SetValue(const SQInteger index, const V &val)
Definition: sqratArray.h:122
Represents an array in Squirrel.
Definition: sqratArray.h:441
void GetArray(T *array, int size)
Definition: sqratArray.h:253
Var(HSQUIRRELVM vm, SQInteger idx)
Definition: sqratArray.h:552