Przeglądaj źródła

Modified the new "write" method to accept variable number of parameters.

mingodad 13 lat temu
rodzic
commit
d330fce5e3
1 zmienionych plików z 21 dodań i 1 usunięć
  1. 21 1
      sqstdlib/sqstdstream.cpp

+ 21 - 1
sqstdlib/sqstdstream.cpp

@@ -115,6 +115,26 @@ SQInteger _stream_readn(HSQUIRRELVM v)
 }
 
 SQInteger _stream_write(HSQUIRRELVM v)
+{
+	const SQChar *str;
+	SQInteger total_size, size;
+	SETUP_STREAM(v);
+	total_size = 0;
+	for(SQInteger i=2, len=sq_gettop(v); i <= len; ++i){
+        if(SQ_FAILED(sq_tostring(v,i)))
+            return sq_throwerror(v,_SC("invalid parameter"));
+        sq_getstring(v,-1,&str);
+        size = sq_getsize(v,-1);
+        if(self->Write((SQChar*)str,size) != size)
+            return sq_throwerror(v,_SC("io error"));
+        sq_poptop(v); //remove converted string
+        total_size += size;
+	}
+	sq_pushinteger(v,total_size);
+	return 1;
+}
+
+SQInteger _stream_write_fmt(HSQUIRRELVM v)
 {
 	const SQChar *str;
 	SQInteger size;
@@ -275,7 +295,7 @@ static SQRegFunction _stream_methods[] = {
 	_DECL_STREAM_FUNC(read,2,_SC("xn")),
 	_DECL_STREAM_FUNC(readblob,2,_SC("xn")),
 	_DECL_STREAM_FUNC(readn,2,_SC("xn")),
-	_DECL_STREAM_FUNC(write,2,_SC("x.")),
+	_DECL_STREAM_FUNC(write,-2,_SC("x.")),
 	_DECL_STREAM_FUNC(writeblob,-2,_SC("xx")),
 	_DECL_STREAM_FUNC(writen,3,_SC("xnn")),
 	_DECL_STREAM_FUNC(seek,-2,_SC("xnn")),