| /* |
| Copyright (c) 2004-2006, The Dojo Foundation |
| All Rights Reserved. |
| |
| Licensed under the Academic Free License version 2.1 or above OR the |
| modified BSD license. For more information on Dojo licensing, see: |
| |
| http://dojotoolkit.org/community/licensing.shtml |
| */ |
| |
| |
| |
| dojo.provide("dojo.collections.Set"); |
| dojo.require("dojo.collections.Collections"); |
| dojo.require("dojo.collections.ArrayList"); |
| dojo.collections.Set = new function () { |
| this.union = function (setA, setB) { |
| if (setA.constructor == Array) { |
| var setA = new dojo.collections.ArrayList(setA); |
| } |
| if (setB.constructor == Array) { |
| var setB = new dojo.collections.ArrayList(setB); |
| } |
| if (!setA.toArray || !setB.toArray) { |
| dojo.raise("Set operations can only be performed on array-based collections."); |
| } |
| var result = new dojo.collections.ArrayList(setA.toArray()); |
| var e = setB.getIterator(); |
| while (!e.atEnd()) { |
| var item = e.get(); |
| if (!result.contains(item)) { |
| result.add(item); |
| } |
| } |
| return result; |
| }; |
| this.intersection = function (setA, setB) { |
| if (setA.constructor == Array) { |
| var setA = new dojo.collections.ArrayList(setA); |
| } |
| if (setB.constructor == Array) { |
| var setB = new dojo.collections.ArrayList(setB); |
| } |
| if (!setA.toArray || !setB.toArray) { |
| dojo.raise("Set operations can only be performed on array-based collections."); |
| } |
| var result = new dojo.collections.ArrayList(); |
| var e = setB.getIterator(); |
| while (!e.atEnd()) { |
| var item = e.get(); |
| if (setA.contains(item)) { |
| result.add(item); |
| } |
| } |
| return result; |
| }; |
| this.difference = function (setA, setB) { |
| if (setA.constructor == Array) { |
| var setA = new dojo.collections.ArrayList(setA); |
| } |
| if (setB.constructor == Array) { |
| var setB = new dojo.collections.ArrayList(setB); |
| } |
| if (!setA.toArray || !setB.toArray) { |
| dojo.raise("Set operations can only be performed on array-based collections."); |
| } |
| var result = new dojo.collections.ArrayList(); |
| var e = setA.getIterator(); |
| while (!e.atEnd()) { |
| var item = e.get(); |
| if (!setB.contains(item)) { |
| result.add(item); |
| } |
| } |
| return result; |
| }; |
| this.isSubSet = function (setA, setB) { |
| if (setA.constructor == Array) { |
| var setA = new dojo.collections.ArrayList(setA); |
| } |
| if (setB.constructor == Array) { |
| var setB = new dojo.collections.ArrayList(setB); |
| } |
| if (!setA.toArray || !setB.toArray) { |
| dojo.raise("Set operations can only be performed on array-based collections."); |
| } |
| var e = setA.getIterator(); |
| while (!e.atEnd()) { |
| if (!setB.contains(e.get())) { |
| return false; |
| } |
| } |
| return true; |
| }; |
| this.isSuperSet = function (setA, setB) { |
| if (setA.constructor == Array) { |
| var setA = new dojo.collections.ArrayList(setA); |
| } |
| if (setB.constructor == Array) { |
| var setB = new dojo.collections.ArrayList(setB); |
| } |
| if (!setA.toArray || !setB.toArray) { |
| dojo.raise("Set operations can only be performed on array-based collections."); |
| } |
| var e = setB.getIterator(); |
| while (!e.atEnd()) { |
| if (!setA.contains(e.get())) { |
| return false; |
| } |
| } |
| return true; |
| }; |
| }(); |
| |