Browse Source

Add String.to_utf8() and String.to_ascii()

est31 10 years ago
parent
commit
f83f96cb44
1 changed files with 36 additions and 1 deletions
  1. 36 1
      core/variant_call.cpp

+ 36 - 1
core/variant_call.cpp

@@ -285,6 +285,36 @@ static void _call_##m_type##_##m_method(Variant& r_ret,Variant& p_self,const Var
 	VCALL_LOCALMEM1R(String,pad_decimals);
 	VCALL_LOCALMEM1R(String,pad_zeros);
 
+	static void _call_String_to_ascii(Variant& r_ret,Variant& p_self,const Variant** p_args) {
+
+		String *s = reinterpret_cast<String*>(p_self._data._mem);
+		CharString charstr = s->ascii();
+
+		ByteArray retval;
+		size_t len = charstr.length();
+		retval.resize(len);
+		ByteArray::Write w = retval.write();
+		copymem(w.ptr(), charstr.ptr(), len);
+		w = DVector<uint8_t>::Write();
+
+		r_ret = retval;
+	}
+
+	static void _call_String_to_utf8(Variant& r_ret,Variant& p_self,const Variant** p_args) {
+
+		String *s = reinterpret_cast<String*>(p_self._data._mem);
+		CharString charstr = s->utf8();
+
+		ByteArray retval;
+		size_t len = charstr.length();
+		retval.resize(len);
+		ByteArray::Write w = retval.write();
+		copymem(w.ptr(), charstr.ptr(), len);
+		w = DVector<uint8_t>::Write();
+
+		r_ret = retval;
+	}
+
 
 	VCALL_LOCALMEM0R(Vector2,normalized);
 	VCALL_LOCALMEM0R(Vector2,length);
@@ -1215,9 +1245,10 @@ _VariantCall::addfunc(Variant::m_vtype,Variant::m_ret,_SCS(#m_method),VCALL(m_cl
 	ADDFUNC0(STRING,STRING,String,capitalize,varray());
 	ADDFUNC2(STRING,STRING_ARRAY,String,split,STRING,"divisor",BOOL,"allow_empty",varray(true));
 	ADDFUNC2(STRING,REAL_ARRAY,String,split_floats,STRING,"divisor",BOOL,"allow_empty",varray(true));
-	ADDFUNC0(STRING,STRING,String,to_upper,varray());
 
+	ADDFUNC0(STRING,STRING,String,to_upper,varray());
 	ADDFUNC0(STRING,STRING,String,to_lower,varray());
+
 	ADDFUNC1(STRING,STRING,String,left,INT,"pos",varray());
 	ADDFUNC1(STRING,STRING,String,right,INT,"pos",varray());
 	ADDFUNC0(STRING,STRING,String,strip_edges,varray());
@@ -1249,6 +1280,10 @@ _VariantCall::addfunc(Variant::m_vtype,Variant::m_ret,_SCS(#m_method),VCALL(m_cl
 	ADDFUNC1(STRING,STRING,String,pad_decimals,INT,"digits",varray());
 	ADDFUNC1(STRING,STRING,String,pad_zeros,INT,"digits",varray());
 
+	ADDFUNC0(STRING,STRING,String,to_ascii,varray());
+	ADDFUNC0(STRING,STRING,String,to_utf8,varray());
+
+
 	ADDFUNC0(VECTOR2,VECTOR2,Vector2,normalized,varray());
 	ADDFUNC0(VECTOR2,REAL,Vector2,length,varray());
 	ADDFUNC0(VECTOR2,REAL,Vector2,atan2,varray());