Quellcode durchsuchen

Added global function "getdefaultdelegate" and fix all other "getdelegate" exposed in SquiLu.

mingodad vor 13 Jahren
Ursprung
Commit
75b03f6d50
1 geänderte Dateien mit 17 neuen und 9 gelöschten Zeilen
  1. 17 9
      squirrel/sqbaselib.cpp

+ 17 - 9
squirrel/sqbaselib.cpp

@@ -190,6 +190,13 @@ static SQInteger base_gettypetag(HSQUIRRELVM v)
     else sq_pushnull(v);
 	return 1;
 }
+
+static SQInteger base_getdefaultdelegate(HSQUIRRELVM v)
+{
+    if(sq_getdefaultdelegate(v, sq_gettype(v, 2)) != SQ_OK)
+        sq_pushnull(v);
+	return 1;
+}
 
 static SQInteger base_assert(HSQUIRRELVM v)
 {
@@ -360,6 +367,7 @@ static SQRegFunction base_funcs[]={
 	{_SC("getstackinfos"),base_getstackinfos,2, _SC(".n")},
 	{_SC("getstacktop"),base_getstacktop,1, _SC(".")},
 	{_SC("gettypetag"),base_gettypetag,2, _SC("..")},
+	{_SC("getdefaultdelegate"),base_getdefaultdelegate,2, _SC("..")},
 	{_SC("getroottable"),base_getroottable,1, NULL},
 	{_SC("setroottable"),base_setroottable,2, NULL},
 	{_SC("getconsttable"),base_getconsttable,1, NULL},
@@ -984,7 +992,7 @@ static SQInteger array_concat2 (HSQUIRRELVM v) {
 
 static SQInteger array_getdelegate(HSQUIRRELVM v)
 {
-	return SQ_SUCCEEDED(sq_getdelegate(v,-1))?1:SQ_ERROR;
+	return SQ_SUCCEEDED(sq_getdefaultdelegate(v,OT_ARRAY))?1:SQ_ERROR;
 }
 
 static SQInteger array_empty(HSQUIRRELVM v)
@@ -1469,7 +1477,7 @@ static SQInteger string_rep (HSQUIRRELVM v) {
 
 static SQRESULT string_getdelegate(HSQUIRRELVM v)
 {
-	return SQ_SUCCEEDED(sq_getdelegate(v,-1))?1:SQ_ERROR;
+	return SQ_SUCCEEDED(sq_getdefaultdelegate(v,OT_STRING))?1:SQ_ERROR;
 }
 
 //DAD end
@@ -1718,7 +1726,7 @@ SQRegFunction SQSharedState::_string_default_delegate_funcz[]={
 //NUMBER DEFAULT DELEGATE//////////////////////////
 static SQInteger number_getdelegate(HSQUIRRELVM v)
 {
-	return SQ_SUCCEEDED(sq_getdelegate(v,-1))?1:SQ_ERROR;
+	return SQ_SUCCEEDED(sq_getdefaultdelegate(v,OT_INTEGER))?1:SQ_ERROR;
 }
 
 SQRegFunction SQSharedState::_number_default_delegate_funcz[]={
@@ -1833,7 +1841,7 @@ static SQInteger closure_getinfos(HSQUIRRELVM v) {
 //CLOSURE DEFAULT DELEGATE//////////////////////////
 static SQInteger closure_getdelegate(HSQUIRRELVM v)
 {
-	return SQ_SUCCEEDED(sq_getdelegate(v,-1))?1:SQ_ERROR;
+	return SQ_SUCCEEDED(sq_getdefaultdelegate(v,OT_CLOSURE))?1:SQ_ERROR;
 }
 
 
@@ -1868,7 +1876,7 @@ static SQInteger generator_getstatus(HSQUIRRELVM v)
 //GENERATOR DEFAULT DELEGATE//////////////////////////
 static SQInteger generator_getdelegate(HSQUIRRELVM v)
 {
-	return SQ_SUCCEEDED(sq_getdelegate(v,-1))?1:SQ_ERROR;
+	return SQ_SUCCEEDED(sq_getdefaultdelegate(v,OT_GENERATOR))?1:SQ_ERROR;
 }
 
 SQRegFunction SQSharedState::_generator_default_delegate_funcz[]={
@@ -1990,7 +1998,7 @@ static SQInteger thread_getstackinfos(HSQUIRRELVM v)
 //THREAD DEFAULT DELEGATE//////////////////////////
 static SQInteger thread_getdelegate(HSQUIRRELVM v)
 {
-	return SQ_SUCCEEDED(sq_getdelegate(v,-1))?1:SQ_ERROR;
+	return SQ_SUCCEEDED(sq_getdefaultdelegate(v,OT_THREAD))?1:SQ_ERROR;
 }
 
 
@@ -2059,7 +2067,7 @@ static SQInteger class_rawnewmember(HSQUIRRELVM v)
 
 static SQInteger class_getdelegate(HSQUIRRELVM v)
 {
-	return SQ_SUCCEEDED(sq_getdelegate(v,-1))?1:SQ_ERROR;
+	return SQ_SUCCEEDED(sq_getdefaultdelegate(v,OT_CLASS))?1:SQ_ERROR;
 }
 
 SQRegFunction SQSharedState::_class_default_delegate_funcz[] = {
@@ -2089,7 +2097,7 @@ static SQInteger instance_getclass(HSQUIRRELVM v)
 
 static SQInteger instance_getdelegate(HSQUIRRELVM v)
 {
-	return SQ_SUCCEEDED(sq_getdelegate(v,-1))?1:SQ_ERROR;
+	return SQ_SUCCEEDED(sq_getdefaultdelegate(v,OT_INSTANCE))?1:SQ_ERROR;
 }
 
 SQRegFunction SQSharedState::_instance_default_delegate_funcz[] = {
@@ -2113,7 +2121,7 @@ static SQInteger weakref_ref(HSQUIRRELVM v)
 
 static SQInteger weakref_getdelegate(HSQUIRRELVM v)
 {
-	return SQ_SUCCEEDED(sq_getdelegate(v,-1))?1:SQ_ERROR;
+	return SQ_SUCCEEDED(sq_getdefaultdelegate(v,OT_WEAKREF))?1:SQ_ERROR;
 }
 
 SQRegFunction SQSharedState::_weakref_default_delegate_funcz[] = {