|
@@ -28,4 +28,46 @@ package php;
|
|
|
|
|
|
@:arrayAccess function get(key:Int):String;
|
|
|
@:arrayAccess function set(key:Int, val:String):String;
|
|
|
+
|
|
|
+ public inline function iterator() {
|
|
|
+ return new NativeStringIterator(this);
|
|
|
+ }
|
|
|
+
|
|
|
+ public inline function keyValueIterator() {
|
|
|
+ return new NativeStringKeyValueIterator(this);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+class NativeStringIterator {
|
|
|
+ var s:NativeString;
|
|
|
+ var i:Int = 0;
|
|
|
+
|
|
|
+ public inline function new(s:NativeString) {
|
|
|
+ this.s = s;
|
|
|
+ }
|
|
|
+
|
|
|
+ public inline function hasNext():Bool {
|
|
|
+ return i < Global.strlen(s);
|
|
|
+ }
|
|
|
+
|
|
|
+ public inline function next():String {
|
|
|
+ return s[i++];
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+class NativeStringKeyValueIterator {
|
|
|
+ var s:NativeString;
|
|
|
+ var i:Int = 0;
|
|
|
+
|
|
|
+ public inline function new(s:NativeString) {
|
|
|
+ this.s = s;
|
|
|
+ }
|
|
|
+
|
|
|
+ public inline function hasNext():Bool {
|
|
|
+ return i < Global.strlen(s);
|
|
|
+ }
|
|
|
+
|
|
|
+ public inline function next():{key:Int, value:String} {
|
|
|
+ return {key:i, value:s[i++]};
|
|
|
+ }
|
|
|
}
|