2
0
Эх сурвалжийг харах

[cs/java] StringBuf implementation

Caue Waneck 13 жил өмнө
parent
commit
2840191b76

+ 27 - 1
std/StringBuf.hx

@@ -35,6 +35,10 @@ class StringBuf {
 	public function new() {
 		#if (js || cpp)
 			b = new Array();
+		#elseif cs
+			b = new cs.StringBuilder();
+		#elseif java
+			b = new java.lang.StringBuilder();
 		#else
 			b = "";
 		#end
@@ -48,6 +52,10 @@ class StringBuf {
 			b[b.length] = x == null ? 'null' : x;
 		#elseif cpp
 			b[b.length] = x;
+		#elseif cs
+			b.Append(x);
+		#elseif java
+			b.append(x);
 		#else
 			b += x;
 		#end
@@ -64,6 +72,12 @@ class StringBuf {
 				b += s.substr(pos,len);
 		#elseif (js || cpp)
 			b[b.length] = s.substr(pos,len);
+		#elseif cs
+			var l:Int = (len == null) ? (s.length - pos) : len;
+			b.Append(s, pos, l);
+		#elseif java
+			var l:Int = (len == null) ? s.length : len;
+			b.append(s, pos, l);
 		#else
 			b += s.substr(pos,len);
 		#end
@@ -77,6 +91,10 @@ class StringBuf {
 			b[b.length] = String.fromCharCode(c);
 		#elseif (flash && !flash9)
 			b += String["fromCharCode"](c);
+		#elseif cs
+			b.Append(cast(c, cs.StdTypes.Char16));
+		#elseif java
+			b.append(cast(c, java.StdTypes.Char16));
 		#else
 			b += String.fromCharCode(c);
 		#end
@@ -89,6 +107,10 @@ class StringBuf {
 	public inline function toString() : String {
 		#if (js || cpp)
 			return b.join("");
+		#elseif cs
+			return b.ToString();
+		#elseif java
+			return b.toString();
 		#else
 			return b;
 		#end
@@ -97,8 +119,12 @@ class StringBuf {
 	private var b :
 	#if (js || cpp)
 		Array<Dynamic>
+	#elseif cs 
+	cs.StringBuilder
+	#elseif java
+		java.lang.StringBuilder
 	#else
 		String
 	#end;
 
-}
+}

+ 15 - 0
std/cs/StringBuilder.hx

@@ -0,0 +1,15 @@
+package cs;
+
+//FIXME this class is here due to seemingly a bug in type resolution inside _std packages.
+//Once this bug is fixed, it will be moved back to the system.text package
+@:native('System.Text.StringBuilder') extern class StringBuilder 
+{
+
+	function new():Void;
+	
+	@:overload(function(obj:Dynamic):cs.StringBuilder {})
+	@:overload(function(str:String, startIndex:Int, len:Int):cs.StringBuilder {})
+	function Append(char:cs.StdTypes.Char16):StringBuilder;
+	
+	function ToString():String;
+}

+ 13 - 0
std/java/lang/StringBuilder.hx

@@ -0,0 +1,13 @@
+package java.lang;
+
+extern class StringBuilder 
+{
+
+	function new():Void;
+	
+	@:overload(function(obj:Dynamic):Void {})
+	@:overload(function(str:String, start:Int, end:Int):Void {})
+	function append(char:java.StdTypes.Char16):Void;
+	
+	function toString():String;
+}