1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
|
-- File: TCollection_Set.cdl
-- Created: Tue Mar 2 11:06:03 1993
-- Author: Remi LEQUETTE
-- <rle@phylox>
---Copyright: Matra Datavision 1993
generic class Set from TCollection (Item as any)
---Purpose: A set is an unordered collection of items without
-- duplications. To test for duplications the operators == and !=
-- are used on the items.
-- Use a SetIterator to explore a Set.
-- Warning
-- A set generates the same result as a map. A map is
-- more effective; therefore it is advisable to use maps instead of sets.
-- Set is a generic class which consists of Items, types of elements in a set.
raises
NoSuchObject from Standard
private class SetList instantiates List from TCollection(Item);
class SetIterator from TCollection
---Purpose: Functions used for iterating the contents of a Set.
-- Note: an iterator class is automatically instantiated from
-- this generic class at the time of instantiation of a Set.
-- Warning
-- - A set is a non-ordered data structure. The order in
-- which entries of a set are explored by the iterator
-- depends on its contents, and changes when the set is edited.
-- - It is not recommended to modify the contents of a set
-- during iteration: the result is unpredictable.
raises NoSuchObject from Standard
is
Create returns SetIterator from TCollection;
---Purpose: Creates an empty iterator for a Set;
-- use the function Initialize to define the set to explore;.
Create(S : Set from TCollection) returns SetIterator from TCollection;
---Purpose: Creates an iterator on the set <S>.
Initialize(me : in out; S : Set from TCollection)
---Purpose: Sets or resets the iterator on the set <S>.
is static;
More(me) returns Boolean from Standard
---Purpose: Returns True if there are other items.
---C++: inline
is static;
Next(me: in out)
---Purpose: Positions the iterator to the next item.
---C++: inline
is static;
Value(me) returns any Item
raises NoSuchObject from Standard
---Purpose: Returns the item value corresponding to the
-- current position of the iterator.
---C++: return const &
---C++: inline
is static;
fields
myIterator : ListIteratorOfSetList;
end SetIterator from TCollection;
is
Create returns Set from TCollection;
---Purpose: Creation of an empty set.
Create(Other : Set from TCollection)
returns Set from TCollection
is private;
---Purpose: Creates by copying an existing Set.
-- Warning: Prints a message when other is not empty. It is
-- recommanded to use Assign (operator =).
Extent(me) returns Integer from Standard
---Level: Public
---Purpose: Returns the number of items in the set.
---C++: inline
is static;
IsEmpty(me) returns Boolean from Standard
---Level: Public
---Purpose: Returns True if the set is empty. i.e.
-- Extent() == 0.
---C++: inline
is static;
Clear(me : in out)
---Level: Public
---Purpose: Removes all items from the set.
---C++: inline
is static;
Add(me : in out; T : Item) returns Boolean from Standard
---Level: Public
---Purpose: Adds the item <T> in the set if it does not
-- already exist.Returns False if the item T already exists.
-- Example:
-- before
-- me = {a,b,c,d}, T = y
-- after
-- me = {a,b,c,d,y} returns True
is static;
Remove(me : in out; T : Item) returns Boolean from Standard
---Level: Public
---Purpose: Removes the item <T> from the set. Returns True if
-- the item was in the set.
-- Example:
-- before
-- me = {a,b,c,d}, T = a
-- after
-- me = {b,c,d} returns True
is static;
Union(me : in out; B : Set from TCollection)
---Level: Public
---Purpose: Add to <me> all the items of the set <B>
-- which are not in <me>.
-- Example:
-- before
-- me = {a,b,c}, B = {d,a,f}
-- after
-- me = {a,b,c,d,f}, B = {d,a,f}
is static;
Intersection(me : in out; B : Set from TCollection)
---Level: Public
---Purpose: Removes from <me> all the items which are not in <B>.
-- Example:
-- before
-- me = {a,b,c}, B = {d,a,f}
-- after
-- me = {a}, B = {d,a,f}
is static;
Difference(me : in out; B: Set from TCollection)
---Level: Public
---Purpose: Removes from <me> all the items which are in <B>.
-- Example:
-- before
-- me = {a,b,c}, B = {d,a,f}
-- after
-- me = {b,c}, B = {d,a,f}
is static;
Contains(me; T : Item) returns Boolean from Standard
---Level: Public
---Purpose: Returns True if the item <T> is in the set.
is static;
IsASubset(me; S : Set from TCollection) returns Boolean from Standard
---Level: Public
---Purpose: returns True if <S> is a subset of <me>. i.e. all
-- elements of <S> are in <me>.
is static;
IsAProperSubset(me; S : Set from TCollection)
returns Boolean from Standard
---Level: Public
---Purpose: returns True if <S> is strictly contained in <me>.
-- i.e <S> is a subset and its extent is not equal to
-- the extent of <me>.
is static;
fields
myItems : SetList;
friends
class SetIterator from TCollection
end Set from TCollection;
|