Просмотр исходного кода

Fix calls to new base table functions

mingodad 10 лет назад
Родитель
Сommit
305909b5fd
1 измененных файлов с 63 добавлено и 19 удалено
  1. 63 19
      SquiLu/squirrel/sqbaselib.cpp

+ 63 - 19
SquiLu/squirrel/sqbaselib.cpp

@@ -388,33 +388,33 @@ static SQRESULT base_str_from_chars (HSQUIRRELVM v) {
 }
 
 /////////////////////////////////////////////////////////////////
-//TABLE DEFAULT DELEGATE
+//TABLE BASE FUNCTIONS
 
-static SQRESULT table_rawdelete(HSQUIRRELVM v)
+static SQRESULT bf_table_rawdelete(HSQUIRRELVM v)
 {
-	if(SQ_FAILED(sq_rawdeleteslot(v,1,SQTrue)))
+	if(SQ_FAILED(sq_rawdeleteslot(v,2,SQTrue)))
 		return SQ_ERROR;
 	return 1;
 }
 
 
-static SQRESULT container_rawexists(HSQUIRRELVM v)
+static SQRESULT bf_table_rawexists(HSQUIRRELVM v)
 {
 	sq_pushbool(v, sq_rawexists(v,-2));
 	return 1;
 }
 
-static SQRESULT container_rawset(HSQUIRRELVM v)
+static SQRESULT bf_table_rawset(HSQUIRRELVM v)
 {
 	return sq_rawset(v,-3);
 }
 
-static SQRESULT container_rawget(HSQUIRRELVM v)
+static SQRESULT bf_table_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
+        case 3: return SQ_SUCCEEDED(sq_rawget(v,-2))?1:SQ_ERROR;break;
+        case 4: {
+            sq_push(v, 3); //copy key to top
             sq_rawget(v,-4); //if it fail pop the key and default value is on top
             return 1;
         }
@@ -423,14 +423,14 @@ static SQRESULT container_rawget(HSQUIRRELVM v)
     return sq_throwerror(v, _SC("invalid number of parameters"));
 }
 
-static SQRESULT obj_clear(HSQUIRRELVM v)
+static SQRESULT bf_table_clear(HSQUIRRELVM v)
 {
 	return sq_clear(v,-1);
 }
 
-static SQRESULT default_delegate_len(HSQUIRRELVM v)
+static SQRESULT bf_table_len(HSQUIRRELVM v)
 {
-	v->Push(SQInteger(sq_getsize(v,1)));
+	v->Push(SQInteger(sq_getsize(v,2)));
 	return 1;
 }
 
@@ -470,13 +470,12 @@ static SQRegFunction base_funcs[]={
 	{_SC("check_delayed_release_hooks"),base_check_delayed_release_hooks,-1, _SC(".b")},
 	{_SC("call_delayed_release_hooks"),base_call_delayed_release_hooks,1, NULL},
 #endif
-	{_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")},
+	{_SC("table_rawget"),bf_table_rawget,-3, _SC(".t.")},
+	{_SC("table_rawset"),bf_table_rawset,4, _SC(".t..")},
+	{_SC("table_rawdelete"),bf_table_rawdelete,3, _SC(".t.")},
+	{_SC("table_rawin"),bf_table_rawexists,3, _SC(".t.")},
+	{_SC("table_len"),bf_table_len,2, _SC(".t")},
+	{_SC("table_clear"),bf_table_clear,2, _SC(".t")},
 	{0,0}
 };
 
@@ -511,6 +510,12 @@ void sq_base_register(HSQUIRRELVM v)
 	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)
 {
 	SQObjectPtr &o=stack_get(v,1);
@@ -581,6 +586,12 @@ static SQRESULT obj_delegate_weakref(HSQUIRRELVM v)
 	return 1;
 }
 
+static SQRESULT obj_clear(HSQUIRRELVM v)
+{
+	return sq_clear(v,-1);
+}
+
+
 static SQRESULT number_delegate_tochar(HSQUIRRELVM v)
 {
 	SQObject &o=stack_get(v,1);
@@ -594,6 +605,39 @@ static SQRESULT number_delegate_tochar(HSQUIRRELVM v)
 /////////////////////////////////////////////////////////////////
 //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)
 {
     switch(sq_gettop(v)){