|
@@ -387,6 +387,52 @@ static SQRESULT base_str_from_chars (HSQUIRRELVM v) {
|
|
|
return 1;
|
|
return 1;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+/////////////////////////////////////////////////////////////////
|
|
|
|
|
+//TABLE DEFAULT DELEGATE
|
|
|
|
|
+
|
|
|
|
|
+static SQRESULT table_rawdelete(HSQUIRRELVM v)
|
|
|
|
|
+{
|
|
|
|
|
+ if(SQ_FAILED(sq_rawdeleteslot(v,1,SQTrue)))
|
|
|
|
|
+ return SQ_ERROR;
|
|
|
|
|
+ return 1;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+static SQRESULT container_rawexists(HSQUIRRELVM v)
|
|
|
|
|
+{
|
|
|
|
|
+ sq_pushbool(v, sq_rawexists(v,-2));
|
|
|
|
|
+ return 1;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+static SQRESULT container_rawset(HSQUIRRELVM v)
|
|
|
|
|
+{
|
|
|
|
|
+ return sq_rawset(v,-3);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+static SQRESULT container_rawget(HSQUIRRELVM v)
|
|
|
|
|
+{
|
|
|
|
|
+ switch(sq_gettop(v)){
|
|
|
|
|
+ case 2: return SQ_SUCCEEDED(sq_rawget(v,-2))?1:SQ_ERROR;break;
|
|
|
|
|
+ case 3: {
|
|
|
|
|
+ sq_push(v, 2); //copy key to top
|
|
|
|
|
+ sq_rawget(v,-4); //if it fail pop the key and default value is on top
|
|
|
|
|
+ return 1;
|
|
|
|
|
+ }
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ return sq_throwerror(v, _SC("invalid number of parameters"));
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+static SQRESULT obj_clear(HSQUIRRELVM v)
|
|
|
|
|
+{
|
|
|
|
|
+ return sq_clear(v,-1);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+static SQRESULT default_delegate_len(HSQUIRRELVM v)
|
|
|
|
|
+{
|
|
|
|
|
+ v->Push(SQInteger(sq_getsize(v,1)));
|
|
|
|
|
+ return 1;
|
|
|
|
|
+}
|
|
|
|
|
|
|
|
static SQRegFunction base_funcs[]={
|
|
static SQRegFunction base_funcs[]={
|
|
|
//generic
|
|
//generic
|
|
@@ -425,6 +471,12 @@ static SQRegFunction base_funcs[]={
|
|
|
{_SC("call_delayed_release_hooks"),base_call_delayed_release_hooks,1, NULL},
|
|
{_SC("call_delayed_release_hooks"),base_call_delayed_release_hooks,1, NULL},
|
|
|
#endif
|
|
#endif
|
|
|
{_SC("str_from_chars"),base_str_from_chars,-2, _SC(".i")},
|
|
{_SC("str_from_chars"),base_str_from_chars,-2, _SC(".i")},
|
|
|
|
|
+ {_SC("table_rawget"),container_rawget,-3, _SC(".t.")},
|
|
|
|
|
+ {_SC("table_rawset"),container_rawset,4, _SC(".t..")},
|
|
|
|
|
+ {_SC("table_rawdelete"),table_rawdelete,3, _SC(".t.")},
|
|
|
|
|
+ {_SC("table_rawin"),container_rawexists,3, _SC(".t.")},
|
|
|
|
|
+ {_SC("table_len"),default_delegate_len,2, _SC(".t")},
|
|
|
|
|
+ {_SC("table_clear"),obj_clear,2, _SC(".t")},
|
|
|
{0,0}
|
|
{0,0}
|
|
|
};
|
|
};
|
|
|
|
|
|
|
@@ -459,12 +511,6 @@ void sq_base_register(HSQUIRRELVM v)
|
|
|
sq_pop(v,1);
|
|
sq_pop(v,1);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-static SQRESULT default_delegate_len(HSQUIRRELVM v)
|
|
|
|
|
-{
|
|
|
|
|
- v->Push(SQInteger(sq_getsize(v,1)));
|
|
|
|
|
- return 1;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
static SQRESULT default_delegate_tofloat(HSQUIRRELVM v)
|
|
static SQRESULT default_delegate_tofloat(HSQUIRRELVM v)
|
|
|
{
|
|
{
|
|
|
SQObjectPtr &o=stack_get(v,1);
|
|
SQObjectPtr &o=stack_get(v,1);
|
|
@@ -535,12 +581,6 @@ static SQRESULT obj_delegate_weakref(HSQUIRRELVM v)
|
|
|
return 1;
|
|
return 1;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-static SQRESULT obj_clear(HSQUIRRELVM v)
|
|
|
|
|
-{
|
|
|
|
|
- return sq_clear(v,-1);
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
static SQRESULT number_delegate_tochar(HSQUIRRELVM v)
|
|
static SQRESULT number_delegate_tochar(HSQUIRRELVM v)
|
|
|
{
|
|
{
|
|
|
SQObject &o=stack_get(v,1);
|
|
SQObject &o=stack_get(v,1);
|
|
@@ -554,39 +594,6 @@ static SQRESULT number_delegate_tochar(HSQUIRRELVM v)
|
|
|
/////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////
|
|
|
//TABLE DEFAULT DELEGATE
|
|
//TABLE DEFAULT DELEGATE
|
|
|
|
|
|
|
|
-static SQRESULT table_rawdelete(HSQUIRRELVM v)
|
|
|
|
|
-{
|
|
|
|
|
- if(SQ_FAILED(sq_rawdeleteslot(v,1,SQTrue)))
|
|
|
|
|
- return SQ_ERROR;
|
|
|
|
|
- return 1;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-static SQRESULT container_rawexists(HSQUIRRELVM v)
|
|
|
|
|
-{
|
|
|
|
|
- sq_pushbool(v, sq_rawexists(v,-2));
|
|
|
|
|
- return 1;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-static SQRESULT container_rawset(HSQUIRRELVM v)
|
|
|
|
|
-{
|
|
|
|
|
- return sq_rawset(v,-3);
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-static SQRESULT container_rawget(HSQUIRRELVM v)
|
|
|
|
|
-{
|
|
|
|
|
- switch(sq_gettop(v)){
|
|
|
|
|
- case 2: return SQ_SUCCEEDED(sq_rawget(v,-2))?1:SQ_ERROR;break;
|
|
|
|
|
- case 3: {
|
|
|
|
|
- sq_push(v, 2); //copy key to top
|
|
|
|
|
- sq_rawget(v,-4); //if it fail pop the key and default value is on top
|
|
|
|
|
- return 1;
|
|
|
|
|
- }
|
|
|
|
|
- break;
|
|
|
|
|
- }
|
|
|
|
|
- return sq_throwerror(v, _SC("invalid number of parameters"));
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
static SQRESULT container_get(HSQUIRRELVM v)
|
|
static SQRESULT container_get(HSQUIRRELVM v)
|
|
|
{
|
|
{
|
|
|
switch(sq_gettop(v)){
|
|
switch(sq_gettop(v)){
|