0031313: Foundation Classes - Dump improvement for classes
[occt.git] / src / TDocStd / TDocStd_Modified.cxx
1 // Created on: 1999-07-12
2 // Created by: Denis PASCAL
3 // Copyright (c) 1999-1999 Matra Datavision
4 // Copyright (c) 1999-2014 OPEN CASCADE SAS
5 //
6 // This file is part of Open CASCADE Technology software library.
7 //
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
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.
13 //
14 // Alternatively, this file may be used under the terms of Open CASCADE
15 // commercial license or contractual agreement.
16
17 #include <TDocStd_Modified.hxx>
18
19 #include <Standard_DomainError.hxx>
20 #include <Standard_GUID.hxx>
21 #include <Standard_Type.hxx>
22 #include <TDF_Attribute.hxx>
23 #include <TDF_Data.hxx>
24 #include <TDF_Label.hxx>
25 #include <TDF_RelocationTable.hxx>
26
27 IMPLEMENT_STANDARD_RTTIEXT(TDocStd_Modified,TDF_Attribute)
28
29 //=======================================================================
30 //function : IsEmpty
31 //purpose  : 
32 //=======================================================================
33 Standard_Boolean TDocStd_Modified::IsEmpty(const TDF_Label& access) 
34 {
35   Handle(TDocStd_Modified) MDF;
36   if (!access.Root().FindAttribute (TDocStd_Modified::GetID(), MDF)) {
37     return Standard_True;
38   }
39   else return MDF->IsEmpty();
40 }
41
42 //=======================================================================
43 //function : Add
44 //purpose  : 
45 //=======================================================================
46
47 Standard_Boolean TDocStd_Modified::Add(const TDF_Label& alabel) 
48 {  
49   Handle(TDocStd_Modified) MDF;
50   if (!alabel.Root().FindAttribute (TDocStd_Modified::GetID(), MDF)) {
51     MDF = new TDocStd_Modified();
52     alabel.Root().AddAttribute(MDF);
53   }
54   return MDF->AddLabel (alabel);
55 }
56
57 //=======================================================================
58 //function : Remove
59 //purpose  : 
60 //=======================================================================
61
62 Standard_Boolean TDocStd_Modified::Remove(const TDF_Label& alabel) 
63 {  
64   Handle(TDocStd_Modified) MDF;
65   if (!alabel.Root().FindAttribute (TDocStd_Modified::GetID(), MDF)) {
66     return Standard_True;
67   }
68   else return MDF->RemoveLabel (alabel);
69 }
70
71 //=======================================================================
72 //function : Contains
73 //purpose  : 
74 //=======================================================================
75
76 Standard_Boolean TDocStd_Modified::Contains (const TDF_Label& alabel) 
77 {  
78   Handle(TDocStd_Modified) MDF;
79   if (!alabel.Root().FindAttribute (TDocStd_Modified::GetID(), MDF)) {
80     return Standard_False;
81   }
82   return (MDF->Get().Contains(alabel));
83 }
84
85 //=======================================================================
86 //function : Get
87 //purpose  : 
88 //=======================================================================
89
90 const TDF_LabelMap& TDocStd_Modified::Get (const TDF_Label& access) 
91 {  
92   Handle(TDocStd_Modified) MDF;
93   if (!access.Root().FindAttribute (TDocStd_Modified::GetID(), MDF)) {
94     throw Standard_DomainError("TDocStd_Modified::Get : IsEmpty");
95   }
96   return MDF->Get();
97 }
98
99 //=======================================================================
100 //function : Clear
101 //purpose  : 
102 //=======================================================================
103
104 void TDocStd_Modified::Clear (const TDF_Label& access) 
105 {  
106   Handle(TDocStd_Modified) MDF;
107   if (!access.Root().FindAttribute (TDocStd_Modified::GetID(), MDF)) {
108     return;
109   }
110   else MDF->Clear();
111 }
112
113 //=======================================================================
114 //function : GetID
115 //purpose  : 
116 //=======================================================================
117
118 const Standard_GUID& TDocStd_Modified::GetID() 
119
120   static Standard_GUID TDocStd_ModifiedID ("2a96b622-ec8b-11d0-bee7-080009dc3333");
121   return TDocStd_ModifiedID; 
122 }
123
124
125 //=======================================================================
126 //function : TDocStd_Modified
127 //purpose  : 
128 //=======================================================================
129
130 TDocStd_Modified::TDocStd_Modified () { }
131
132
133 //=======================================================================
134 //function : AddLabel
135 //purpose  : 
136 //=======================================================================
137
138 Standard_Boolean TDocStd_Modified::AddLabel (const TDF_Label& L) 
139 {
140   Backup ();
141   return myModified.Add(L);
142 }
143
144
145 //=======================================================================
146 //function : RemoveLabel
147 //purpose  : 
148 //=======================================================================
149
150 Standard_Boolean TDocStd_Modified::RemoveLabel (const TDF_Label& L) 
151 {
152   Backup ();
153   return myModified.Remove(L);
154 }
155
156 //=======================================================================
157 //function : IsEmpty
158 //purpose  : 
159 //=======================================================================
160
161 Standard_Boolean TDocStd_Modified::IsEmpty () const
162 {
163   return myModified.IsEmpty();
164 }
165
166
167 //=======================================================================
168 //function : Clear
169 //purpose  : 
170 //=======================================================================
171
172 void TDocStd_Modified::Clear () 
173 {  
174   Backup ();
175   myModified.Clear();
176 }
177
178 //=======================================================================
179 //function : Get 
180 //purpose  : 
181 //=======================================================================
182
183 const TDF_LabelMap& TDocStd_Modified::Get () const
184 {  
185   return myModified;
186 }
187
188
189 //=======================================================================
190 //function : ID
191 //purpose  : 
192 //=======================================================================
193
194 const Standard_GUID& TDocStd_Modified::ID () const { return GetID(); }
195
196
197 //=======================================================================
198 //function : NewEmpty
199 //purpose  : 
200 //=======================================================================
201
202 Handle(TDF_Attribute) TDocStd_Modified::NewEmpty () const
203 {
204   return new TDocStd_Modified ();
205 }
206
207 //=======================================================================
208 //function : Restore
209 //purpose  : 
210 //=======================================================================
211
212 void TDocStd_Modified::Restore(const Handle(TDF_Attribute)& With) {
213   Handle(TDocStd_Modified) MDF = Handle(TDocStd_Modified)::DownCast(With);
214   myModified = MDF->myModified;
215 }
216
217 //=======================================================================
218 //function : Paste
219 //purpose  : 
220 //=======================================================================
221
222 void TDocStd_Modified::Paste (const Handle(TDF_Attribute)&,
223                               const Handle(TDF_RelocationTable)&) const
224 {
225 }
226
227 //=======================================================================
228 //function : Dump
229 //purpose  : 
230 //=======================================================================
231
232 Standard_OStream& TDocStd_Modified::Dump (Standard_OStream& anOS) const
233 {  
234   anOS << "Modified";
235   return anOS;
236 }
237