0024157: Parallelization of assembly part of BO
[occt.git] / src / IFSelect / IFSelect_Dispatch.cdl
1 -- Created on: 1992-11-17
2 -- Created by: Christian CAILLET
3 -- Copyright (c) 1992-1999 Matra Datavision
4 -- Copyright (c) 1999-2012 OPEN CASCADE SAS
5 --
6 -- The content of this file is subject to the Open CASCADE Technology Public
7 -- License Version 6.5 (the "License"). You may not use the content of this file
8 -- except in compliance with the License. Please obtain a copy of the License
9 -- at http://www.opencascade.org and read it completely before using this file.
10 --
11 -- The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
12 -- main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
13 --
14 -- The Original Code and all software distributed under the License is
15 -- distributed on an "AS IS" basis, without warranty of any kind, and the
16 -- Initial Developer hereby disclaims all such warranties, including without
17 -- limitation, any warranties of merchantability, fitness for a particular
18 -- purpose or non-infringement. Please see the License for the specific terms
19 -- and conditions governing the rights and limitations under the License.
20
21
22
23 deferred class Dispatch  from IFSelect  inherits TShared
24
25     ---Purpose : This class allows to describe how a set of Entities has to be
26     --           dispatched into resulting Packets : a Packet is a sub-set of
27     --           the initial set of entities.
28     --           
29     --           Thus, it can generate zero, one, or more Packets according
30     --           input set and criterium of dispatching. And it can let apart
31     --           some entities : it is the Remainder, which can be recovered
32     --           by a specific Selection (RemainderFromDispatch).
33     --           
34     --           Depending of sub-classes, a Dispatch can potentially generate
35     --           a limited or not count of packet, and a remainder or none.
36     --           
37     --           The input set is read from a specified Selection, attached to
38     --           the Dispatch : the Final Selection of the Dispatch. The input
39     --           is the Unique Root Entities list of the Final Selection
40
41 uses AsciiString from TCollection, HAsciiString from TCollection,
42      SubPartsIterator, EntityIterator,
43      Graph, Selection, SelectionIterator
44
45 raises InterfaceError
46
47 is
48
49     SetRootName (me : mutable; name : mutable HAsciiString);
50     ---Purpose : Sets a Root Name as an HAsciiString
51     --           To reset it, give a Null Handle (then, a ShareOut will have
52     --           to define the Default Root Name)
53
54     HasRootName (me) returns Boolean;
55     ---Purpose : Returns True if a specific Root Name has been set
56     --           (else, the Default Root Name has to be used)
57
58     RootName (me) returns any HAsciiString;
59     ---Purpose : Returns the Root Name for files produced by this dispatch
60     --           It is empty if it has not been set or if it has been reset
61     ---C++ : return const &
62
63
64     SetFinalSelection (me : mutable; sel : mutable Selection);
65     ---Purpose : Stores (or Changes) the Final Selection for a Dispatch
66
67     FinalSelection (me) returns mutable Selection;
68     ---Purpose : Returns the Final Selection of a Dispatch
69     -- we 'd like : C++ : return const &
70
71     Selections (me) returns SelectionIterator;
72     ---Purpose : Returns the complete list of source Selections (starting
73     --           from FinalSelection)
74
75     CanHaveRemainder (me) returns Boolean  is virtual;
76     ---Purpose : Returns True if a Dispatch can have a Remainder, i.e. if its
77     --           criterium can let entities apart. It is a potential answer,
78     --           remainder can be empty at run-time even if answer is True.
79     --           (to attach a RemainderFromDispatch Selection is not allowed if
80     --           answer is True).
81     --           Default answer given here is False (can be redefined)
82
83     LimitedMax (me; nbent : Integer; max : out Integer) returns Boolean  is virtual;
84     ---Purpose : Returns True if a Dispatch generates a count of Packets always
85     --           less than or equal to a maximum value : it can be computed
86     --           from the total count of Entities to be dispatched : <nbent>.
87     --           If answer is False, no limited maximum is expected for account
88     --           If answer is True, expected maximum is given in argument <max>
89     --           Default answer given here is False (can be redefined)
90
91     Label (me) returns AsciiString from TCollection  is deferred;
92     ---Purpose : Returns a text which defines the way a Dispatch produces
93     --           packets (which will become files) from its Input
94
95         --  --    Evaluation    --  --
96
97     GetEntities (me; G : Graph) returns EntityIterator;
98     ---Purpose : Gets Unique Root Entities from the Final Selection, given an
99     --           input Graph
100     --           This the starting step for an Evaluation (Packets - Remainder)
101
102     PacketsCount (me; G : Graph; count : out Integer) returns Boolean  is virtual;
103     ---Purpose : Returns True if Count of Packets is actually known, and the
104     --           value of the count in argument "count". Returns False if
105     --           this count is unknown. Input is given as a Graph.
106     --           This method is intended to be quick (used for file names)
107     --           hence if this count is long to compute (that is, as a result
108     --           of complete evaluation made by method Packets), it is
109     --           preferable to answer "unknown" by returning False
110     --           Default answer if False. Can be redefined.
111
112     Packets (me; G : Graph; packs : in out SubPartsIterator)
113         raises InterfaceError  is deferred;
114     ---Purpose : Returns the list of produced Packets into argument <pack>.
115     --           Each Packet corresponds to a Part, the Entities listed are the
116     --           Roots given by the Selection. Input is given as a Graph.
117     --           Thus, to create a file from a packet, it suffices to take the
118     --           entities listed in a Part of Packets (that is, a Packet)
119     --           without worrying about Shared entities
120     --           This method can raise an Exception if data are not coherent
121
122     Packeted (me; G : Graph) returns EntityIterator;
123     ---Purpose : Returns the list of all Input Entities (see GetEntities) which
124     --           are put in a Packet. That is, Entities listed in GetEntities
125     --           but not in Remainder (see below). Input is given as a Graph.
126     ---See also : GetEntities, Remainder
127
128     Remainder (me; G : Graph) returns EntityIterator  is virtual;
129     ---Purpose : Returns Remainder which is a set of Entities. Can be empty.
130     --           Default evaluation is empty (has to be redefined if
131     --           CanHaveRemainder is redefined to return True).
132
133 fields
134
135     thename  : HAsciiString;
136     thefinal : Selection;
137
138 end Dispatch;