0023948: Wrong intersection between a surface of revolution and a plane.
[occt.git] / src / TDF / TDF_Data.cdl
CommitLineData
b311480e 1-- Created by: DAUTRY Philippe
2-- Copyright (c) 1997-1999 Matra Datavision
973c2be1 3-- Copyright (c) 1999-2014 OPEN CASCADE SAS
b311480e 4--
973c2be1 5-- This file is part of Open CASCADE Technology software library.
b311480e 6--
d5f74e42 7-- This library is free software; you can redistribute it and/or modify it under
8-- the terms of the GNU Lesser General Public License version 2.1 as published
973c2be1 9-- by the Free Software Foundation, with special exception defined in the file
10-- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
11-- distribution for complete text of the license and disclaimer of any warranty.
b311480e 12--
973c2be1 13-- Alternatively, this file may be used under the terms of Open CASCADE
14-- commercial license or contractual agreement.
b311480e 15
7fd59977 16-- ------------
7fd59977 17
18---Version: 0.0
b311480e 19--Version Date Purpose
7fd59977 20-- 0.0 Feb 4 1997 Creation
21
22class Data from TDF inherits TShared from MMgt
23
24 ---Purpose: This class is used to manipulate a complete
25 -- independant, self sufficient data structure and
26 -- its services:
27 --
28 -- Access to the root label;
29 --
30 -- Opens, aborts, commits a transaction;
31 --
32 -- Generation and use of Delta, depending on the time.
33-- This class uses a special allocator
34-- (see LabelNodeAllocator() method)
35-- for more efficient allocation of
36-- objects in memory.
37uses
38
39 Attribute from TDF,
40 Label from TDF,
41 LabelNodePtr from TDF,
42 Delta from TDF,
43 IDFilter from TDF,
6af4fe1c 44 ListOfInteger from TColStd,
7fd59977 45 HAllocator from TDF
46
47raises
48
49 NoMoreObject from Standard
50
51is
52
6e33d3ce 53 Create returns Data from TDF;
7fd59977 54 ---Purpose: A new and empty Data structure.
55
56 -- -----------------------------------------------------------------------
57
58 Root(me) returns Label from TDF;
59 ---Purpose: Returns the root label of the Data structure.
60 --
61 ---C++: inline
62 ---C++: return const
63
64 -- -----------------------------------------------------------------------
65
66 -- Important notice: For a more secure use of Open/Commit/Abort
67 -- transactions, see class Transaction from TDF.
68
69 Transaction(me) returns Integer;
70 ---Purpose: Returns the current transaction number.
71
72 OpenTransaction(me : mutable) returns Integer
73 is private;
74 ---Purpose: Increments the transaction number and returns it.
75
76 CommitTransaction(me : mutable;
77 withDelta : Boolean from Standard = Standard_False)
78 returns Delta from TDF
79 raises NoMoreObject from Standard
80 is private;
81 ---Purpose: Decrements the transaction number and commits the
82 -- modifications.
83 --
84 -- Raises if there is no current transaction.
85 --
86 -- Optionnal <withDelta> set to True indiquates a
87 -- Delta must be generated.
88
89 CommitUntilTransaction(me : mutable;
90 untilTransaction : Integer from Standard;
91 withDelta : Boolean from Standard = Standard_False)
92 returns Delta from TDF
93 is private;
94 ---Purpose: Decrements the transaction number and commits the
95 -- modifications until AND including the transaction
96 -- <untilTransaction>.
97
98 AbortTransaction(me : mutable)
99 raises NoMoreObject from Standard
100 is private;
101 ---Purpose: Decrements the transaction number and forgets the
102 -- modifications.
103 --
104 -- Raises if there is no current transaction.
105
106 AbortUntilTransaction(me : mutable;
107 untilTransaction : Integer from Standard)
108 is private;
109 ---Purpose: Decrements the transaction number and forgets the
110 -- modifications until AND including the transaction
111 -- <untilTransaction>.
112
113 -- -----------------------------------------------------------------------
114
115 Time(me) returns Integer from Standard;
116 ---Purpose: Returns the current tick. It is incremented each Commit.
117 --
118 ---C++: inline
119
120 IsApplicable (me;
121 aDelta : Delta from TDF)
122 returns Boolean from Standard;
123 ---Purpose: Returns true if <aDelta> is applicable HERE and NOW.
124
125
126 Undo(me : mutable;
127 aDelta : Delta from TDF;
128 withDelta : Boolean from Standard = Standard_False)
129 returns Delta from TDF;
130 ---Purpose: Apply <aDelta> to undo a set of attribute
131 -- modifications.
132 --
133 -- Optionnal <withDelta> set to True indiquates a
134 -- Delta Set must be generated. (See above)
135
136 -- -----------------------------------------------------------------------
137
138 Destroy(me : mutable);
139 ---C++: alias ~
140
141
142 -- Private internal use methods ------------------------------------------
143
144 CommitTransaction(me : mutable;
145 aLabel : Label from TDF;
146 aDelta : Delta from TDF;
147 withDelta : Boolean from Standard)
148 returns Integer from Standard
149 is private;
150 ---Purpose: Decrements the transaction number and commits the
151 -- modifications. Used to implement the recursif
152 -- commit process. The returned boolean says how many
153 -- attributes (new, modified or deleted) has been
154 -- committed from the previous transaction into the
155 -- current one.
156
157
158 -- Miscelleaneous
159 -- --------------
160
161 NotUndoMode(me) returns Boolean from Standard;
162 ---Purpose: Returns the undo mode status.
163 --
164 ---C++: inline
165
166
167 Dump(me; anOS : in out OStream from Standard)
168 returns OStream from Standard;
169 ---Purpose: Dumps the Data on <aStream>.
170 --
171 ---C++: return &
172 ---C++: alias operator<<
173
174 -- methods for check modifications outside the transaction -----------
175
176 AllowModification(me: mutable; isAllowed : Boolean from Standard );
177 ---Purpose: Sets modification mode.
178 --
179 ---C++: inline
180
181 IsModificationAllowed(me) returns Boolean from Standard;
182 ---Purpose: returns modification mode.
183 --
184 ---C++: inline
185
186 LabelNodeAllocator(me) returns HAllocator from TDF;
187 ---Purpose: Returns TDF_HAllocator, which is an
188-- incremental allocator used by
189-- TDF_LabelNode.
190-- This allocator is used to
191-- manage TDF_LabelNode objects,
192-- but it can also be used for
193-- allocating memory to
194-- application-specific data (be
195-- careful because this
196-- allocator does not release
197-- the memory).
198-- The benefits of this
199-- allocation scheme are
200-- noticeable when dealing with
201-- large OCAF documents, due to:
202-- 1. Very quick allocation of
203-- objects (memory heap is not
204-- used, the algorithm that
205-- replaces it is very simple).
206-- 2. Very quick destruction of
207-- objects (memory is released not
208-- by destructors of TDF_LabelNode,
209-- but rather by the destructor of
210-- TDF_Data).
211-- 3. TDF_LabelNode objects do not
212-- fragmentize the memory; they are
213-- kept compactly in a number of
214-- arrays of 16K each.
215-- 4. Swapping is reduced on large
216-- data, because each document now
217-- occupies a smaller number of
218-- memory pages.
219 ---C++: inline
220 ---C++: return const &
221
222fields
223
224 myRoot : LabelNodePtr from TDF;
225 myTransaction : Integer from Standard;
226 myNbTouchedAtt : Integer from Standard;
227 myNotUndoMode : Boolean from Standard;
228 myTime : Integer from Standard;
6af4fe1c 229 myTimes : ListOfInteger from TColStd;
7fd59977 230 myLabelNodeAllocator: HAllocator from TDF;
231 myAllowModification : Boolean from Standard;
232
233friends
234
235 class Transaction from TDF,
236 class LabelNode from TDF
237
238
239end Data;