b311480e |
1 | -- Created on: 1992-11-17 |
2 | -- Created by: Christian CAILLET |
3 | -- Copyright (c) 1992-1999 Matra Datavision |
973c2be1 |
4 | -- Copyright (c) 1999-2014 OPEN CASCADE SAS |
b311480e |
5 | -- |
973c2be1 |
6 | -- This file is part of Open CASCADE Technology software library. |
b311480e |
7 | -- |
d5f74e42 |
8 | -- This library is free software; you can redistribute it and/or modify it under |
9 | -- the terms of the GNU Lesser General Public License version 2.1 as published |
973c2be1 |
10 | -- by the Free Software Foundation, with special exception defined in the file |
11 | -- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT |
12 | -- distribution for complete text of the license and disclaimer of any warranty. |
b311480e |
13 | -- |
973c2be1 |
14 | -- Alternatively, this file may be used under the terms of Open CASCADE |
15 | -- commercial license or contractual agreement. |
7fd59977 |
16 | |
17 | class ShareOut from IFSelect inherits TShared |
18 | |
19 | ---Purpose : This class gathers the informations required to produce one or |
20 | -- several file(s) from the content of an InterfaceModel (passing |
21 | -- through the creation of intermediate Models). |
22 | -- |
23 | -- It can correspond to a complete Divide up of a set of Entities |
24 | -- intended to be exhaustive and to limit duplications. Or to a |
25 | -- simple Extraction of some Entities, in order to work on them. |
26 | -- |
27 | -- A ShareOut is composed of a list of Dispatches. |
28 | -- To Each Dispatch in the ShareOut, is bound an Id. Number |
29 | -- This Id. Number allows to identify a Display inside the |
30 | -- ShareOut in a stable way (for instance, to attach file names) |
31 | -- |
32 | -- ShareOut can be seen as a "passive" description, activated |
33 | -- through a ShareOutResult, which gives the InterfaceModel on |
34 | -- which to work, as a unique source. Thus it is easy to change |
35 | -- it without coherence problems |
36 | -- |
37 | -- Services about it are provided by the class ShareOutResult |
38 | -- which is a service class : simulation (list of files and of |
39 | -- entities per file; "forgotten" entities; duplicated entities), |
40 | -- exploitation (generation of derivated Models, each of them |
41 | -- generating an output file) |
42 | |
43 | uses SequenceOfInteger from TColStd, CString, |
44 | HAsciiString from TCollection, AsciiString from TCollection, |
45 | Dispatch, TSeqOfDispatch, |
46 | GeneralModifier, Modifier, SequenceOfGeneralModifier |
47 | |
48 | raises InterfaceError, OutOfRange |
49 | |
50 | is |
51 | |
52 | Create returns mutable ShareOut; |
53 | ---Purpose : Creates an empty ShareOut |
54 | |
55 | Clear (me : mutable; onlydisp : Boolean); |
56 | ---Purpose : Removes in one operation all the Dispatches with their Idents |
57 | -- Also clears all informations about Names, and all Results but |
58 | -- naming informations which are : |
59 | -- - kept if <onlydisp> is True. |
60 | -- - cleared if <onlydisp> is False (complete clearing) |
61 | -- If <onlydisp> is True, that's all. Else, clears also Modifiers |
62 | |
63 | ClearResult (me : mutable; alsoname : Boolean); |
64 | ---Purpose : Clears all data produced (apart from Dispatches, etc...) |
65 | -- if <alsoname> is True, all is cleared. Else, informations |
66 | -- about produced Names are kept (to maintain unicity of naming |
67 | -- across clearings) |
68 | |
69 | RemoveItem (me : mutable; item : Transient) returns Boolean; |
70 | ---Purpose : Removes an item, which can be, either a Dispatch (removed from |
71 | -- the list of Dispatches), or a GeneralModifier (removed from |
72 | -- the list of Model Modifiers or from the list of File Modifiers |
73 | -- according to its type). |
74 | -- Returns True if done, False if has not been found or if it is |
75 | -- neither a Dispatch, nor a Modifier. |
76 | |
77 | |
78 | LastRun (me) returns Integer; |
79 | ---Purpose : Returns the rank of last run item (ClearResult resets it to 0) |
80 | |
81 | SetLastRun (me : mutable; last : Integer); |
82 | ---Purpose : Records a new alue for the rank of last run item |
83 | |
84 | NbDispatches (me) returns Integer; |
85 | ---Purpose : Returns the count of Dispatches |
86 | |
87 | DispatchRank (me; disp : Dispatch) returns Integer; |
88 | ---Purpose : Returns the Rank of a Dispatch, given its Value (Handle). |
89 | -- Returns 0 if the Dispatch is unknown in the ShareOut |
90 | |
91 | Dispatch (me; num : Integer) returns mutable Dispatch |
92 | ---Purpose : Returns a Dispatch, given its rank in the list |
93 | raises OutOfRange; |
94 | -- Error if <num> is out of range |
95 | ---C++ : return const & |
96 | |
97 | AddDispatch (me : mutable; disp : mutable Dispatch) |
98 | ---Purpose : Adds a Dispatch to the list |
99 | raises InterfaceError; |
100 | -- Error if the Dispatch is attached to a ShareOut other than "me" |
101 | |
102 | RemoveDispatch (me : mutable; rank : Integer) returns Boolean; |
103 | ---Purpose : Removes a Dispatch, given its rank in the list |
104 | -- Returns True if done, False if rank is not between |
105 | -- (LastRun + 1) and (NbDispatches) |
106 | |
107 | -- -- Modifiers to be applied -- -- |
108 | |
109 | AddModifier (me : mutable; modifier : mutable GeneralModifier; |
110 | atnum : Integer); |
111 | ---Purpose : Sets a Modifier to be applied on all Dispatches to be run |
112 | -- If <modifier> is a ModelModifier, adds it to the list of |
113 | -- Model Modifiers; else to the list of File Modifiers |
114 | -- By default (atnum = 0) at the end of the list, else at <atnum> |
115 | -- Each Modifier is used, after each copy of a packet of Entities |
116 | -- into a Model : its criteria are checked and if they are OK, |
117 | -- the method Perform of this Modifier is run. |
118 | |
119 | AddModifier (me : mutable; modifier : mutable GeneralModifier; |
120 | dispnum : Integer; atnum : Integer); |
121 | ---Purpose : Sets a Modifier to be applied on the Dispatch <dispnum> |
122 | -- If <modifier> is a ModelModifier, adds it to the list of |
123 | -- Model Modifiers; else to the list of File Modifiers |
124 | -- This is the same list as for all Dispatches, but the |
125 | -- Modifier is qualified to be applied to one Dispatch only |
126 | -- Then, <atnum> refers to the entire list |
127 | -- By default (atnum = 0) at the end of the list, else at <atnum> |
128 | -- Remark : if the Modifier was already in the list and if |
129 | -- <atnum> = 0, the Modifier is not moved, but only qualified |
130 | -- for a Dispatch |
131 | |
132 | |
133 | AddModif (me : mutable; modifier : mutable GeneralModifier; |
134 | formodel : Boolean; atnum : Integer = 0); |
135 | ---Purpose : Adds a Modifier to the list of Modifiers : Model Modifiers if |
136 | -- <formodel> is True, File Modifiers else (internal). |
137 | |
138 | NbModifiers (me; formodel : Boolean) returns Integer; |
139 | ---Purpose : Returns count of Modifiers (which apply to complete Models) : |
140 | -- Model Modifiers if <formodel> is True, File Modifiers else |
141 | |
142 | GeneralModifier (me; formodel : Boolean; num : Integer) |
143 | returns mutable GeneralModifier; |
144 | ---Purpose : Returns a Modifier of the list, given its rank : |
145 | -- Model Modifiers if <formodel> is True, File Modifiers else |
146 | |
147 | ModelModifier (me; num : Integer) returns mutable Modifier; |
148 | ---Purpose : Returns a Modifier of the list of Model Modifiers, duely casted |
149 | |
150 | ModifierRank (me; modifier : GeneralModifier) returns Integer; |
151 | ---Purpose : Gives the rank of a Modifier in the list, 0 if not in the list |
152 | -- Model Modifiers if <modifier> is kind of ModelModifer, |
153 | -- File Modifiers else |
154 | |
155 | RemoveModifier (me : mutable; formodel : Boolean; num : Integer) |
156 | returns Boolean; |
157 | ---Purpose : Removes a Modifier, given it rank in the list : |
158 | -- Model Modifiers if <formodel> is True, File Modifiers else |
159 | -- Returns True if done, False if <num> is out of range |
160 | |
161 | ChangeModifierRank (me : mutable; formodel : Boolean; befor,after : Integer) |
162 | returns Boolean; |
163 | ---Purpose : Changes the rank of a modifier in the list : |
164 | -- Model Modifiers if <formodel> is True, File Modifiers else |
165 | -- from <before> to <after> |
166 | -- Returns True if done, False else (before or after out of range) |
167 | |
168 | -- -- Names for produced Files -- -- |
169 | |
170 | SetRootName (me : mutable; num : Integer; name : mutable HAsciiString) |
171 | returns Boolean; |
172 | ---Purpose : Attaches a Root Name to a Dispatch given its rank, as an |
173 | -- HAsciiString (standard form). A Null Handle resets this name. |
174 | -- Returns True if OK, False if this Name is already attached, |
175 | -- for a Dispatch or for Default, or <num> out of range |
176 | |
177 | HasRootName (me; num : Integer) returns Boolean; |
178 | ---Purpose : Returns True if the Dispatch of rank <num> has an attached |
179 | -- Root Name. False else, or if num is out of range |
180 | |
181 | RootName (me; num : Integer) returns mutable HAsciiString from TCollection; |
182 | ---Purpose : Returns the Root bound to a Dispatch, given its rank |
183 | -- Returns a Null Handle if not defined |
184 | |
185 | RootNumber (me; name : HAsciiString) returns Integer; |
186 | ---Purpose : Returns an integer value about a given root name : |
187 | -- - positive : it's the rank of the Dispatch which has this name |
188 | -- - null : this root name is unknown |
189 | -- - negative (-1) : this root name is the default root name |
190 | |
191 | SetPrefix (me : mutable; pref : HAsciiString from TCollection); |
192 | ---Purpose : Defines or Changes the general Prefix (which is prepended to |
193 | -- complete file name generated). If this method is not call, |
194 | -- Prefix remains empty |
195 | |
196 | SetDefaultRootName (me : mutable; defrt : HAsciiString from TCollection) |
197 | returns Boolean; |
198 | ---Purpose : Defines or Changes the Default Root Name to a new value (which |
199 | -- is used for dispatches which have no attached root name). |
200 | -- If this method is not called, DefaultRootName remains empty |
201 | -- Returns True if OK, False if this Name is already attached, |
202 | -- for a Dispatch or for Default |
203 | |
204 | SetExtension (me : mutable; ext : HAsciiString from TCollection); |
205 | ---Purpose : Defines or Changes the general Extension (which is appended to |
206 | -- complete file name generated). If this method is not call, |
207 | -- Extension remains empty |
208 | |
209 | Prefix (me) returns HAsciiString from TCollection; |
210 | ---Purpose : Returns the general Prefix. Can be empty. |
211 | |
212 | DefaultRootName (me) returns HAsciiString from TCollection; |
213 | ---Purpose : Returns the Default Root Name. Can be empty. |
214 | |
215 | Extension (me) returns HAsciiString from TCollection; |
216 | ---Purpose : Returns the general Extension. Can be empty (not recommanded) |
217 | |
218 | FileName (me : mutable; dnum, pnum : Integer; nbpack : Integer = 0) |
219 | returns AsciiString from TCollection; |
220 | ---Purpose : Computes the complete file name for a Packet of a Dispatch, |
221 | -- given Dispatch Number (Rank), Packet Number, and Count of |
222 | -- Packets generated by this Dispatch (0 if unknown) |
223 | -- |
224 | -- File Name is made of following strings, concatenated : |
225 | -- General Prefix, Root Name for Dispatch, Packet Suffix, and |
226 | -- General Extension. If no Root Name is specified for a |
227 | -- Dispatch, DefaultRootName is considered (and pnum is not used, |
228 | -- but <thenbdefs> is incremented and used |
229 | -- Error if no Root is defined for this <idnum> |
230 | |
231 | fields |
232 | |
233 | thedisps : TSeqOfDispatch; |
234 | themodelmodifiers : SequenceOfGeneralModifier; |
235 | thefilemodifiers : SequenceOfGeneralModifier; |
236 | thepref : HAsciiString from TCollection; |
237 | thedefrt : HAsciiString from TCollection; |
238 | theext : HAsciiString from TCollection; |
239 | thenbdefs : Integer; |
240 | thelastrun : Integer; |
241 | |
242 | end ShareOut; |