Subversion Repositories Applications.papyrus

Rev

Rev 1372 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1372 Rev 1422
1
/*
1
/*
2
	Copyright (c) 2004-2006, The Dojo Foundation
2
	Copyright (c) 2004-2006, The Dojo Foundation
3
	All Rights Reserved.
3
	All Rights Reserved.
4
 
4
 
5
	Licensed under the Academic Free License version 2.1 or above OR the
5
	Licensed under the Academic Free License version 2.1 or above OR the
6
	modified BSD license. For more information on Dojo licensing, see:
6
	modified BSD license. For more information on Dojo licensing, see:
7
 
7
 
8
		http://dojotoolkit.org/community/licensing.shtml
8
		http://dojotoolkit.org/community/licensing.shtml
9
*/
9
*/
-
 
10
 
-
 
11
 
10
 
12
 
11
dojo.provide("dojo.collections.Set");
13
dojo.provide("dojo.collections.Set");
12
dojo.require("dojo.collections.Collections");
14
dojo.require("dojo.collections.Collections");
13
dojo.require("dojo.collections.ArrayList");
15
dojo.require("dojo.collections.ArrayList");
14
dojo.collections.Set = new function () {
16
dojo.collections.Set = new function () {
15
	this.union = function (setA, setB) {
17
	this.union = function (setA, setB) {
16
		if (setA.constructor == Array) {
18
		if (setA.constructor == Array) {
17
			var setA = new dojo.collections.ArrayList(setA);
19
			var setA = new dojo.collections.ArrayList(setA);
18
		}
20
		}
19
		if (setB.constructor == Array) {
21
		if (setB.constructor == Array) {
20
			var setB = new dojo.collections.ArrayList(setB);
22
			var setB = new dojo.collections.ArrayList(setB);
21
		}
23
		}
22
		if (!setA.toArray || !setB.toArray) {
24
		if (!setA.toArray || !setB.toArray) {
23
			dojo.raise("Set operations can only be performed on array-based collections.");
25
			dojo.raise("Set operations can only be performed on array-based collections.");
24
		}
26
		}
25
		var result = new dojo.collections.ArrayList(setA.toArray());
27
		var result = new dojo.collections.ArrayList(setA.toArray());
26
		var e = setB.getIterator();
28
		var e = setB.getIterator();
27
		while (!e.atEnd()) {
29
		while (!e.atEnd()) {
28
			var item = e.get();
30
			var item = e.get();
29
			if (!result.contains(item)) {
31
			if (!result.contains(item)) {
30
				result.add(item);
32
				result.add(item);
31
			}
33
			}
32
		}
34
		}
33
		return result;
35
		return result;
34
	};
36
	};
35
	this.intersection = function (setA, setB) {
37
	this.intersection = function (setA, setB) {
36
		if (setA.constructor == Array) {
38
		if (setA.constructor == Array) {
37
			var setA = new dojo.collections.ArrayList(setA);
39
			var setA = new dojo.collections.ArrayList(setA);
38
		}
40
		}
39
		if (setB.constructor == Array) {
41
		if (setB.constructor == Array) {
40
			var setB = new dojo.collections.ArrayList(setB);
42
			var setB = new dojo.collections.ArrayList(setB);
41
		}
43
		}
42
		if (!setA.toArray || !setB.toArray) {
44
		if (!setA.toArray || !setB.toArray) {
43
			dojo.raise("Set operations can only be performed on array-based collections.");
45
			dojo.raise("Set operations can only be performed on array-based collections.");
44
		}
46
		}
45
		var result = new dojo.collections.ArrayList();
47
		var result = new dojo.collections.ArrayList();
46
		var e = setB.getIterator();
48
		var e = setB.getIterator();
47
		while (!e.atEnd()) {
49
		while (!e.atEnd()) {
48
			var item = e.get();
50
			var item = e.get();
49
			if (setA.contains(item)) {
51
			if (setA.contains(item)) {
50
				result.add(item);
52
				result.add(item);
51
			}
53
			}
52
		}
54
		}
53
		return result;
55
		return result;
54
	};
56
	};
55
	this.difference = function (setA, setB) {
57
	this.difference = function (setA, setB) {
56
		if (setA.constructor == Array) {
58
		if (setA.constructor == Array) {
57
			var setA = new dojo.collections.ArrayList(setA);
59
			var setA = new dojo.collections.ArrayList(setA);
58
		}
60
		}
59
		if (setB.constructor == Array) {
61
		if (setB.constructor == Array) {
60
			var setB = new dojo.collections.ArrayList(setB);
62
			var setB = new dojo.collections.ArrayList(setB);
61
		}
63
		}
62
		if (!setA.toArray || !setB.toArray) {
64
		if (!setA.toArray || !setB.toArray) {
63
			dojo.raise("Set operations can only be performed on array-based collections.");
65
			dojo.raise("Set operations can only be performed on array-based collections.");
64
		}
66
		}
65
		var result = new dojo.collections.ArrayList();
67
		var result = new dojo.collections.ArrayList();
66
		var e = setA.getIterator();
68
		var e = setA.getIterator();
67
		while (!e.atEnd()) {
69
		while (!e.atEnd()) {
68
			var item = e.get();
70
			var item = e.get();
69
			if (!setB.contains(item)) {
71
			if (!setB.contains(item)) {
70
				result.add(item);
72
				result.add(item);
71
			}
73
			}
72
		}
74
		}
73
		return result;
75
		return result;
74
	};
76
	};
75
	this.isSubSet = function (setA, setB) {
77
	this.isSubSet = function (setA, setB) {
76
		if (setA.constructor == Array) {
78
		if (setA.constructor == Array) {
77
			var setA = new dojo.collections.ArrayList(setA);
79
			var setA = new dojo.collections.ArrayList(setA);
78
		}
80
		}
79
		if (setB.constructor == Array) {
81
		if (setB.constructor == Array) {
80
			var setB = new dojo.collections.ArrayList(setB);
82
			var setB = new dojo.collections.ArrayList(setB);
81
		}
83
		}
82
		if (!setA.toArray || !setB.toArray) {
84
		if (!setA.toArray || !setB.toArray) {
83
			dojo.raise("Set operations can only be performed on array-based collections.");
85
			dojo.raise("Set operations can only be performed on array-based collections.");
84
		}
86
		}
85
		var e = setA.getIterator();
87
		var e = setA.getIterator();
86
		while (!e.atEnd()) {
88
		while (!e.atEnd()) {
87
			if (!setB.contains(e.get())) {
89
			if (!setB.contains(e.get())) {
88
				return false;
90
				return false;
89
			}
91
			}
90
		}
92
		}
91
		return true;
93
		return true;
92
	};
94
	};
93
	this.isSuperSet = function (setA, setB) {
95
	this.isSuperSet = function (setA, setB) {
94
		if (setA.constructor == Array) {
96
		if (setA.constructor == Array) {
95
			var setA = new dojo.collections.ArrayList(setA);
97
			var setA = new dojo.collections.ArrayList(setA);
96
		}
98
		}
97
		if (setB.constructor == Array) {
99
		if (setB.constructor == Array) {
98
			var setB = new dojo.collections.ArrayList(setB);
100
			var setB = new dojo.collections.ArrayList(setB);
99
		}
101
		}
100
		if (!setA.toArray || !setB.toArray) {
102
		if (!setA.toArray || !setB.toArray) {
101
			dojo.raise("Set operations can only be performed on array-based collections.");
103
			dojo.raise("Set operations can only be performed on array-based collections.");
102
		}
104
		}
103
		var e = setB.getIterator();
105
		var e = setB.getIterator();
104
		while (!e.atEnd()) {
106
		while (!e.atEnd()) {
105
			if (!setA.contains(e.get())) {
107
			if (!setA.contains(e.get())) {
106
				return false;
108
				return false;
107
			}
109
			}
108
		}
110
		}
109
		return true;
111
		return true;
110
	};
112
	};
111
}();
113
}();
112
 
114