a5f1e792e7d910fbcd5d02ae4f40a7e31ddf7db2
[occt.git] / src / TDataStd / TDataStd_AsciiString.cxx
1 // Created on: 2007-07-31
2 // Created by: Sergey ZARITCHNY
3 // Copyright (c) 2007-2014 OPEN CASCADE SAS
4 //
5 // This file is part of Open CASCADE Technology software library.
6 //
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
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.
12 //
13 // Alternatively, this file may be used under the terms of Open CASCADE
14 // commercial license or contractual agreement.
15
16
17 #include <Standard_GUID.hxx>
18 #include <Standard_Type.hxx>
19 #include <TCollection_AsciiString.hxx>
20 #include <TDataStd_AsciiString.hxx>
21 #include <TDF_Attribute.hxx>
22 #include <TDF_Label.hxx>
23 #include <TDF_RelocationTable.hxx>
24
25 IMPLEMENT_STANDARD_RTTIEXT(TDataStd_AsciiString,TDF_Attribute)
26
27 //=======================================================================
28 //function : TDataStd_AsciiString
29 //purpose  : 
30 //=======================================================================
31 TDataStd_AsciiString::TDataStd_AsciiString()
32 {
33   myString.Clear();
34 }
35
36 //=======================================================================
37 //function : GetID
38 //purpose  : 
39 //=======================================================================
40
41 const Standard_GUID& TDataStd_AsciiString::GetID()
42 {
43   static Standard_GUID theGUID ("3bbefc60-e618-11d4-ba38-0060b0ee18ea");
44   return theGUID;
45 }
46
47 //=======================================================================
48 //function : ID
49 //purpose  : 
50 //=======================================================================
51
52 const Standard_GUID& TDataStd_AsciiString::ID() const
53 {
54   return myID;
55 }
56
57 //=======================================================================
58 //function : SetAttr
59 //purpose  : Implements Set functionality
60 //=======================================================================
61 static Handle(TDataStd_AsciiString) SetAttr(
62                                      const TDF_Label&               label,
63                                      const TCollection_AsciiString& theString,
64                                      const Standard_GUID&           theGuid) 
65 {
66   Handle(TDataStd_AsciiString) A;
67   if (!label.FindAttribute(theGuid, A)) {
68     A = new TDataStd_AsciiString ();
69     A->SetID(theGuid);
70     label.AddAttribute(A);
71   }
72   A->Set (theString); 
73   return A;
74 }
75
76 //=======================================================================
77 //function : Set
78 //purpose  : 
79 //=======================================================================
80
81 Handle(TDataStd_AsciiString) TDataStd_AsciiString::Set (
82                              const TDF_Label& theLabel,
83                              const TCollection_AsciiString& theAsciiString)
84 {
85   return SetAttr(theLabel, theAsciiString, GetID());
86 }
87
88 //=======================================================================
89 //function : Set
90 //purpose  : Set user defined attribute
91 //=======================================================================
92
93 Handle(TDataStd_AsciiString) TDataStd_AsciiString::Set (
94                            const TDF_Label&    theLabel,
95                            const Standard_GUID& theGuid,
96                            const TCollection_AsciiString& theAsciiString)
97 {
98   return SetAttr(theLabel, theAsciiString, theGuid);
99 }
100 //=======================================================================
101 //function : Set
102 //purpose  : 
103 //=======================================================================
104
105 void TDataStd_AsciiString::Set (const TCollection_AsciiString& theAsciiString)
106 {
107   if(myString == theAsciiString) return;
108   Backup();
109   myString = theAsciiString;
110 }
111
112 //=======================================================================
113 //function : Get
114 //purpose  : 
115 //=======================================================================
116
117 const TCollection_AsciiString& TDataStd_AsciiString::Get () const
118 {
119   return myString;
120 }
121
122 //=======================================================================
123 //function : SetID
124 //purpose  :
125 //=======================================================================
126
127 void TDataStd_AsciiString::SetID( const Standard_GUID&  theGuid)
128 {  
129   if(myID == theGuid) return;
130
131   Backup();
132   myID = theGuid;
133 }
134
135 //=======================================================================
136 //function : SetID
137 //purpose  : sets default ID
138 //=======================================================================
139 void TDataStd_AsciiString::SetID()
140 {
141   Backup();
142   myID = GetID();
143 }
144 //=======================================================================
145 //function : NewEmpty
146 //purpose  : 
147 //=======================================================================
148
149 Handle(TDF_Attribute) TDataStd_AsciiString::NewEmpty () const
150 {
151   return new TDataStd_AsciiString();
152 }
153
154 //=======================================================================
155 //function : Restore
156 //purpose  : 
157 //=======================================================================
158
159 void TDataStd_AsciiString::Restore (const Handle(TDF_Attribute)& theWith)
160 {
161   Handle(TDataStd_AsciiString) R = Handle(TDataStd_AsciiString)::DownCast(theWith);
162   myString = R->Get();
163   myID     = R->ID();
164 }
165
166 //=======================================================================
167 //function : Paste
168 //purpose  : 
169 //=======================================================================
170
171 void TDataStd_AsciiString::Paste (const Handle(TDF_Attribute)& theInto,
172                               const Handle(TDF_RelocationTable)& /* RT */) const
173
174   Handle(TDataStd_AsciiString) R = Handle(TDataStd_AsciiString)::DownCast (theInto);
175   R->Set(myString);
176   R->SetID(myID);
177 }
178
179 //=======================================================================
180 //function : IsEmpty
181 //purpose  : 
182 //=======================================================================
183 Standard_Boolean TDataStd_AsciiString::IsEmpty () const
184 {
185   return myString.IsEmpty();
186 }
187 //=======================================================================
188 //function : Dump
189 //purpose  : 
190 //=======================================================================
191
192 Standard_OStream& TDataStd_AsciiString::Dump(Standard_OStream& theOS) const
193 {
194   Standard_OStream& anOS = TDF_Attribute::Dump( theOS );
195   anOS << myString;
196   anOS << " Name=|"<<myString<<"|";
197   Standard_Character sguid[Standard_GUID_SIZE_ALLOC];
198   myID.ToCString(sguid);
199   anOS << sguid << "|" <<endl;
200   return anOS;
201 }