THRIFT-5742 Add addRange() function to Set helper classes to support adding data from arbitrary enumerable source containers
Client: hx
Patch: Jens Geyer
diff --git a/lib/haxe/src/org/apache/thrift/helper/IntSet.hx b/lib/haxe/src/org/apache/thrift/helper/IntSet.hx
index 91e5d8e..676463b 100644
--- a/lib/haxe/src/org/apache/thrift/helper/IntSet.hx
+++ b/lib/haxe/src/org/apache/thrift/helper/IntSet.hx
@@ -30,9 +30,7 @@
 
     public function new( values : Array<Int> = null) {
         if ( values != null) {
-            for ( value in values) {
-                 add(value);
-            }
+            addRange(values.iterator());
         }
     }
 
@@ -57,6 +55,14 @@
         return true;
     }
 
+    public function addRange( values : Iterator<Int>) {
+        if ( values != null) {
+            for ( value in values) {
+                 add(value);
+            }
+        }
+    }
+
     public function clear() : Void {
         while( _size > 0) {
             remove( _elements.keys().next());
diff --git a/lib/haxe/src/org/apache/thrift/helper/ObjectSet.hx b/lib/haxe/src/org/apache/thrift/helper/ObjectSet.hx
index 60e88e4..5a3831c 100644
--- a/lib/haxe/src/org/apache/thrift/helper/ObjectSet.hx
+++ b/lib/haxe/src/org/apache/thrift/helper/ObjectSet.hx
@@ -30,9 +30,7 @@
 
     public function new( values : Array<K> = null) {
         if ( values != null) {
-            for ( value in values) {
-                 add(value);
-            }
+            addRange(values.iterator());
         }
     }
 
@@ -57,6 +55,14 @@
         return true;
     }
 
+    public function addRange( values : Iterator<K>) {
+        if ( values != null) {
+            for ( value in values) {
+                 add(value);
+            }
+        }
+    }
+
     public function clear() : Void {
         while( _size > 0) {
             remove( _elements.keys().next());
diff --git a/lib/haxe/src/org/apache/thrift/helper/StringSet.hx b/lib/haxe/src/org/apache/thrift/helper/StringSet.hx
index b47f868..2c255e6 100644
--- a/lib/haxe/src/org/apache/thrift/helper/StringSet.hx
+++ b/lib/haxe/src/org/apache/thrift/helper/StringSet.hx
@@ -30,9 +30,7 @@
 
     public function new( values : Array<String> = null) {
         if ( values != null) {
-            for ( value in values) {
-                 add(value);
-            }
+            addRange(values.iterator());
         }
     }
 
@@ -57,6 +55,14 @@
         return true;
     }
 
+    public function addRange( values : Iterator<String>) {
+        if ( values != null) {
+            for ( value in values) {
+                 add(value);
+            }
+        }
+    }
+
     public function clear() : Void {
         while( _size > 0) {
             remove( _elements.keys().next());