Browse Source

Added String.ToWStringBuffer() method.

Brucey 2 years ago
parent
commit
95c4e34167
4 changed files with 15 additions and 4 deletions
  1. 1 0
      blitz.mod/blitz_classes.i
  2. 1 0
      blitz.mod/blitz_classes.win32.i
  3. 11 4
      blitz.mod/blitz_string.c
  4. 2 0
      blitz.mod/blitz_string.h

+ 1 - 0
blitz.mod/blitz_classes.i

@@ -69,6 +69,7 @@ String^Object{
 	+FromUTF32String:String( utf32String:UInt Ptr )="bbStringFromUTF32String"
 	+FromUTF32Bytes:String( utf32String:UInt Ptr, count )="bbStringFromUTF32Bytes"
 
+	-ToWStringBuffer:Short Ptr(buf:Short Ptr, length:Size_T Var)="bbStringToWStringBuffer"
 }AF="bbStringClass"
 
 ___Array^Object{

+ 1 - 0
blitz.mod/blitz_classes.win32.i

@@ -74,6 +74,7 @@ String^Object{
 	+FromUTF32String:String( utf32String:UInt Ptr )="bbStringFromUTF32String"
 	+FromUTF32Bytes:String( utf32String:UInt Ptr, count )="bbStringFromUTF32Bytes"
 
+	-ToWStringBuffer:Short Ptr(buf:Short Ptr, length:Size_T Var)="bbStringToWStringBuffer"
 }AF="bbStringClass"
 
 ___Array^Object{

+ 11 - 4
blitz.mod/blitz_string.c

@@ -95,7 +95,8 @@ struct BBClass_String bbStringClass={
 
 	bbStringToUTF32String,
 	bbStringFromUTF32String,
-	bbStringFromUTF32Bytes
+	bbStringFromUTF32Bytes,
+	bbStringToWStringBuffer,
 };
 
 BBString bbEmptyString={
@@ -824,10 +825,16 @@ unsigned char *bbStringToCString( BBString *str ){
 
 BBChar *bbStringToWString( BBString *str ){
 	BBChar *p;
-	int sz=str->length;
-	p=(BBChar*)bbMemAlloc( (sz+1)*sizeof(BBChar) );
+	size_t sz=str->length + 1;
+	p=(BBChar*)bbMemAlloc( sz * sizeof(BBChar) );
+	return bbStringToWStringBuffer(str, p, &sz);
+}
+
+BBChar *bbStringToWStringBuffer( BBString *str, BBChar * buf, size_t * length ){
+	size_t sz = str->length + 1 < *length ? str->length + 1 : *length;
+	BBChar * p = buf;
 	memcpy(p,str->buf,sz*sizeof(BBChar));
-	p[sz]=0;
+	p[sz-1]=0;
 	return p;
 }
 

+ 2 - 0
blitz.mod/blitz_string.h

@@ -98,6 +98,7 @@ struct BBClass_String{
 	BBUINT* (*bbStringToUTF32String)( BBString *str );
 	BBString* (*bbStringFromUTF32String)( const BBUINT *p );
 	BBString* (*bbStringFromUTF32Bytes)( const BBUINT *p, int n );
+	BBChar* (*bbStringToWStringBuffer)( BBString *str, BBChar * buf, size_t * length );
 };
 
 extern	struct BBClass_String bbStringClass;
@@ -193,6 +194,7 @@ BBULONG bbStringHash( BBString * x );
 #endif
 
 unsigned char *bbStringToUTF8StringBuffer( BBString *str, unsigned char * buf, size_t * length );
+BBChar *bbStringToWStringBuffer( BBString *str, BBChar * buf, size_t * length );
 
 #ifdef __cplusplus
 }