0024157: Parallelization of assembly part of BO
[occt.git] / src / IFSelect / IFSelect_TransformStandard.cdl
1 -- Created on: 1994-05-27
2 -- Created by: Christian CAILLET
3 -- Copyright (c) 1994-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 class TransformStandard  from IFSelect  inherits Transformer
24
25     ---Purpose : This class runs transformations made by Modifiers, as
26     --           the ModelCopier does when it produces files (the same set
27     --           of Modifiers can then be used, as to transform the starting
28     --           Model, as at file sending time).
29     --           
30     --           First, considering the resulting model, two options :
31     --           - modifications are made directly on the starting model
32     --             (OnTheSpot option), or
33     --           - data are copied by the standard service Copy, only the
34     --             remaining (not yet sent in a file) entities are copied
35     --             (StandardCopy option)
36     --           
37     --           If a Selection is set, it forces the list of Entities on which
38     --           the Modifiers are applied. Else, each Modifier is considered
39     --           its Selection. By default, it is for the whole Model
40     --           
41     --           Then, the Modifiers are sequentially applied
42     --           If at least one Modifier "May Change Graph", or if the option
43     --           StandardCopy is selected, the graph will be recomputed
44     --           (by the WorkSession, see method RunTransformer)
45     --           
46     --           Remark that a TransformStandard with option StandardCopy
47     --           and no Modifier at all has the effect of computing the
48     --           remaining data (those not yet sent in any output file).
49     --           Moreover, the Protocol is not changed
50
51 uses AsciiString from TCollection,
52      CheckIterator, Graph, Protocol from Interface, InterfaceModel,
53      CopyTool, CopyControl,
54      Selection, Modifier, SequenceOfGeneralModifier
55
56
57 is
58
59     Create returns mutable TransformStandard;
60     ---Purpose : Creates a TransformStandard, option StandardCopy, no Modifier
61
62         --  Description  --
63
64     SetCopyOption (me : mutable; option : Boolean);
65     ---Purpose : Sets the Copy option to a new value :
66     --           - True for StandardCopy  - False for OnTheSpot
67
68     CopyOption (me) returns Boolean;
69     ---Purpose : Returns the Copy option
70
71     SetSelection (me : mutable; sel : Selection);
72     ---Purpose : Sets a Selection (or unsets if Null)
73     --           This Selection then defines the list of entities on which the
74     --           Modifiers will be applied
75     --           If it is set, it has priority on Selections of Modifiers
76     --           Else, for each Modifier its Selection is evaluated
77     --           By default, all the Model is taken
78
79     Selection (me) returns Selection;
80     ---Purpose : Returns the Selection, Null by default
81
82     NbModifiers (me) returns Integer;
83     ---Purpose : Returns the count of recorded Modifiers
84
85     Modifier (me; num : Integer) returns mutable Modifier;
86     ---Purpose : Returns a Modifier given its rank in the list
87
88     ModifierRank (me; modif : Modifier) returns Integer;
89     ---Purpose : Returns the rank of a Modifier in the list, 0 if unknown
90
91     AddModifier (me : mutable; modif : mutable Modifier; atnum : Integer = 0)
92         returns Boolean;
93     ---Purpose : Adds a Modifier to the list :
94     --           - <atnum> = 0 (default) : at the end of the list
95     --           - <atnum> > 0 : at rank <atnum>
96     --           Returns True if done, False if <atnum> is out of range
97
98     RemoveModifier (me : mutable; modif : Modifier) returns Boolean;
99     ---Purpose : Removes a Modifier from the list
100     --           Returns True if done, False if <modif> not in the list
101
102     RemoveModifier (me : mutable; num : Integer) returns Boolean;
103     ---Purpose : Removes a Modifier from the list, given its rank
104     --           Returns True if done, False if <num> is out of range
105
106         --    Action    --
107
108     Perform (me : mutable; G : Graph; protocol : Protocol from Interface;
109              checks : in out CheckIterator;
110              newmod : out mutable InterfaceModel)  returns Boolean;
111     ---Purpose : Performs the Standard Transformation, by calling Copy then
112     --           ApplyModifiers (which can return an error status)
113
114     Copy         (me; G : Graph; TC : in out CopyTool;
115                   newmod : out mutable InterfaceModel);
116     ---Purpose : This the first operation. It calls StandardCopy or OnTheSpot
117     --           according the option
118
119     StandardCopy (me; G : Graph; TC : in out CopyTool;
120                   newmod : out mutable InterfaceModel);
121     ---Purpose : This is the standard action of Copy : its takes into account
122     --           only the remaining entities (noted by Graph Status positive)
123     --           and their proper dependances of course. Produces a new model.
124
125     OnTheSpot    (me; G : Graph; TC : in out CopyTool;
126                   newmod : out mutable InterfaceModel);
127     ---Purpose : This is the OnTheSpot action : each entity is bound with ...
128     --           itself. The produced model is the same as the starting one.
129
130     ApplyModifiers (me;  G : Graph;  protocol : Protocol from Interface;
131                     TC : in out CopyTool; checks : in out CheckIterator;
132                     newmod : out mutable InterfaceModel) returns Boolean;
133     ---Purpose : Applies the modifiers sequencially.
134     --           For each one, prepares required data (if a Selection is
135     --           associated as a filter).
136     --           For the option OnTheSpot, it determines if the graph may be
137     --           changed and updates <newmod> if required
138     --           If a Modifier causes an error (check "HasFailed"),
139     --           ApplyModifier stops : the following Modifiers are ignored
140
141     Updated (me; entfrom : Transient; entto : out mutable Transient)
142         returns Boolean;
143     ---Purpose : This methods allows to know what happened to a starting
144     --           entity after the last Perform. It reads result from the map
145     --           which was filled by Perform.
146
147         --    Others    --
148
149     Label (me) returns AsciiString from TCollection;
150     ---Purpose : Returns a text which defines the way a Transformer works :
151     --           "On the spot edition" or "Standard Copy" followed by
152     --           "<nn> Modifiers"
153
154 fields
155
156     thecopy   : Boolean;
157     thesel    : Selection;
158     themodifs : SequenceOfGeneralModifier;
159     themap    : CopyControl;
160
161 end TransformStandard;