7fd59977 |
1 | -- File: SelectDeduct.cdl |
2 | -- Created: Tue Nov 17 19:13:08 1992 |
3 | -- Author: Christian CAILLET |
4 | -- <cky@topsn2> |
5 | ---Copyright: Matra Datavision 1992 |
6 | |
7 | |
8 | deferred class SelectDeduct from IFSelect inherits Selection |
9 | |
10 | ---Purpose : A SelectDeduct determines a list of Entities from an Input |
11 | -- Selection, by a computation : Output list is not obliged to be |
12 | -- a sub-list of Input list |
13 | -- (for more specific, see SelectExtract for filtered sub-lists, |
14 | -- and SelectExplore for recurcive exploration) |
15 | -- |
16 | -- A SelectDeduct may use an alternate input for one shot |
17 | -- This allows to use an already existing definition, by |
18 | -- overloading the input selection by an alternate list, |
19 | -- already defined, for one use : |
20 | -- If this alternate list is set, InputResult queries it instead |
21 | -- of calling the input selection, then clears it immediately |
22 | |
23 | uses AsciiString from TCollection, EntityIterator, Graph, |
24 | SelectionIterator, SelectPointed |
25 | |
26 | raises InterfaceError |
27 | |
28 | is |
29 | |
30 | SetInput (me : mutable; sel : mutable Selection); |
31 | ---Purpose : Defines or Changes the Input Selection |
32 | |
33 | Input (me) returns mutable Selection; |
34 | ---Purpose : Returns the Input Selection |
35 | |
36 | HasInput (me) returns Boolean; |
37 | ---Purpose : Returns True if the Input Selection is defined, False else |
38 | |
39 | HasAlternate (me) returns Boolean; |
40 | ---Purpose : Tells if an Alternate List has been set, i.e. : the Alternate |
41 | -- Definition is present and set |
42 | |
43 | Alternate (me : mutable) returns SelectPointed; |
44 | ---Purpose : Returns the Alternate Definition |
45 | -- It is returned modifiable, hence an already defined |
46 | -- SelectPointed can be used |
47 | -- But if it was not yet defined, it is created the first time |
48 | -- |
49 | -- It is exploited by InputResult |
50 | ---C++ : return & |
51 | |
52 | InputResult (me; G : Graph) returns EntityIterator; |
53 | ---Purpose : Returns the Result determined by Input Selection, as Unique |
54 | -- if Input Selection is not defined, returns an empty list. |
55 | -- |
56 | -- If Alternate is set, InputResult takes its definition instead |
57 | -- of calling the Input Selection, then clears it |
58 | |
59 | -- RootResult remains to be defined by each class of Selection |
60 | |
61 | |
62 | FillIterator (me; iter : in out SelectionIterator); |
63 | ---Purpose : Puts in an Iterator the Selections from which "me" depends |
64 | -- This list contains one Selection : the InputSelection |
65 | |
66 | fields |
67 | |
68 | thesel : Selection; |
69 | thealt : SelectPointed; |
70 | |
71 | end SelectDeduct; |