0031313: Foundation Classes - Dump improvement for classes
[occt.git] / src / XCAFDoc / XCAFDoc_Material.cxx
1 // Copyright (c) 1999-2014 OPEN CASCADE SAS
2 //
3 // This file is part of Open CASCADE Technology software library.
4 //
5 // This library is free software; you can redistribute it and/or modify it under
6 // the terms of the GNU Lesser General Public License version 2.1 as published
7 // by the Free Software Foundation, with special exception defined in the file
8 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
9 // distribution for complete text of the license and disclaimer of any warranty.
10 //
11 // Alternatively, this file may be used under the terms of Open CASCADE
12 // commercial license or contractual agreement.
13
14 #include <XCAFDoc_Material.hxx>
15
16 #include <Standard_Dump.hxx>
17 #include <Standard_GUID.hxx>
18 #include <Standard_Type.hxx>
19 #include <TCollection_HAsciiString.hxx>
20 #include <TDF_Attribute.hxx>
21 #include <TDF_Label.hxx>
22 #include <TDF_RelocationTable.hxx>
23
24 IMPLEMENT_STANDARD_RTTIEXT(XCAFDoc_Material,TDF_Attribute)
25
26 //=======================================================================
27 //function : XCAFDoc_Material
28 //purpose  : 
29 //=======================================================================
30 XCAFDoc_Material::XCAFDoc_Material()
31 {
32 }
33
34
35 //=======================================================================
36 //function : GetID
37 //purpose  : 
38 //=======================================================================
39
40 const Standard_GUID& XCAFDoc_Material::GetID() 
41 {
42   static Standard_GUID MatID ("efd212f8-6dfd-11d4-b9c8-0060b0ee281b");
43   return MatID;
44 }
45
46
47 //=======================================================================
48 //function : Set
49 //purpose  : 
50 //=======================================================================
51
52 Handle(XCAFDoc_Material) XCAFDoc_Material::Set(const TDF_Label& label,
53                                                const Handle(TCollection_HAsciiString)& aName,
54                                                const Handle(TCollection_HAsciiString)& aDescription,
55                                                const Standard_Real aDensity,
56                                                const Handle(TCollection_HAsciiString)& aDensName,
57                                                const Handle(TCollection_HAsciiString)& aDensValType)
58 {
59   Handle(XCAFDoc_Material) A;
60   if (!label.FindAttribute(XCAFDoc_Material::GetID(), A)) {
61     A = new XCAFDoc_Material();
62     label.AddAttribute(A);
63   }
64   A->Set(aName,aDescription,aDensity,aDensName,aDensValType); 
65   return A;
66 }
67
68
69 //=======================================================================
70 //function : Set
71 //purpose  : 
72 //=======================================================================
73
74 void XCAFDoc_Material::Set(const Handle(TCollection_HAsciiString)& aName,
75                            const Handle(TCollection_HAsciiString)& aDescription,
76                            const Standard_Real aDensity,
77                            const Handle(TCollection_HAsciiString)& aDensName,
78                            const Handle(TCollection_HAsciiString)& aDensValType)
79 {
80   myName = aName;
81   myDescription = aDescription;
82   myDensity = aDensity;
83   myDensName = aDensName;
84   myDensValType = aDensValType;
85 }
86
87
88 //=======================================================================
89 //function : GetName
90 //purpose  : 
91 //=======================================================================
92
93 Handle(TCollection_HAsciiString) XCAFDoc_Material::GetName() const
94 {
95   return myName;
96 }
97
98
99 //=======================================================================
100 //function : GetDescription
101 //purpose  : 
102 //=======================================================================
103
104 Handle(TCollection_HAsciiString) XCAFDoc_Material::GetDescription() const
105 {
106   return myDescription;
107 }
108
109
110 //=======================================================================
111 //function : GetDensity
112 //purpose  : 
113 //=======================================================================
114
115 Standard_Real XCAFDoc_Material::GetDensity() const
116 {
117   return myDensity;
118 }
119
120
121 //=======================================================================
122 //function : GetDensName
123 //purpose  : 
124 //=======================================================================
125
126 Handle(TCollection_HAsciiString) XCAFDoc_Material::GetDensName() const
127 {
128   return myDensName;
129 }
130
131
132 //=======================================================================
133 //function : GetDensValType
134 //purpose  : 
135 //=======================================================================
136
137 Handle(TCollection_HAsciiString) XCAFDoc_Material::GetDensValType() const
138 {
139   return myDensValType;
140 }
141
142
143 //=======================================================================
144 //function : ID
145 //purpose  : 
146 //=======================================================================
147
148 const Standard_GUID& XCAFDoc_Material::ID() const
149 {
150   return GetID();
151 }
152
153
154 //=======================================================================
155 //function : Restore
156 //purpose  : 
157 //=======================================================================
158
159 void XCAFDoc_Material::Restore(const Handle(TDF_Attribute)& With) 
160 {
161   myName = Handle(XCAFDoc_Material)::DownCast(With)->GetName();
162   myDensity = Handle(XCAFDoc_Material)::DownCast(With)->GetDensity();
163   myDescription = Handle(XCAFDoc_Material)::DownCast(With)->GetDescription();
164   myDensName = Handle(XCAFDoc_Material)::DownCast(With)->GetDensName();
165   myDensValType = Handle(XCAFDoc_Material)::DownCast(With)->GetDensValType();
166 }
167
168
169 //=======================================================================
170 //function : NewEmpty
171 //purpose  : 
172 //=======================================================================
173
174 Handle(TDF_Attribute) XCAFDoc_Material::NewEmpty() const
175 {
176   return new XCAFDoc_Material();
177 }
178
179
180 //=======================================================================
181 //function : Paste
182 //purpose  : 
183 //=======================================================================
184
185 void XCAFDoc_Material::Paste(const Handle(TDF_Attribute)& Into,
186                              const Handle(TDF_RelocationTable)& /*RT*/) const
187 {
188   Handle(XCAFDoc_Material)::DownCast(Into)->Set(myName,myDescription,myDensity,
189                                                 myDensName,myDensValType);
190 }
191
192 //=======================================================================
193 //function : DumpJson
194 //purpose  : 
195 //=======================================================================
196 void XCAFDoc_Material::DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth) const
197 {
198   OCCT_DUMP_TRANSIENT_CLASS_BEGIN (theOStream)
199
200   OCCT_DUMP_BASE_CLASS (theOStream, theDepth, TDF_Attribute)
201
202   OCCT_DUMP_FIELD_VALUE_STRING (theOStream, myName.get())
203   OCCT_DUMP_FIELD_VALUE_STRING (theOStream, myDescription.get())
204   OCCT_DUMP_FIELD_VALUE_NUMERICAL (theOStream, myDensity)
205   OCCT_DUMP_FIELD_VALUE_STRING (theOStream, myDensName.get())
206   OCCT_DUMP_FIELD_VALUE_STRING (theOStream, myDensValType.get())
207 }