0030773: Application Framework - To allow to inherit existing attributes to reuse...
[occt.git] / src / TDataStd / TDataStd_Relation.cxx
1 // Created on: 1997-12-10
2 // Created by: Denis PASCAL
3 // Copyright (c) 1997-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 <TDataStd_Relation.hxx>
18
19 #include <Standard_Dump.hxx>
20 #include <Standard_GUID.hxx>
21 #include <Standard_Type.hxx>
22 #include <TCollection_AsciiString.hxx>
23 #include <TCollection_ExtendedString.hxx>
24 #include <TDataStd_Variable.hxx>
25 #include <TDF_Attribute.hxx>
26 #include <TDF_Label.hxx>
27 #include <TDF_ListIteratorOfAttributeList.hxx>
28 #include <TDF_RelocationTable.hxx>
29
30 IMPLEMENT_DERIVED_ATTRIBUTE(TDataStd_Relation,TDF_Attribute)
31
32 //=======================================================================
33 //function : GetID
34 //purpose  : 
35 //=======================================================================
36 const Standard_GUID& TDataStd_Relation::GetID() 
37 {  
38   static Standard_GUID TDataStd_RelationID("ce24146b-8e57-11d1-8953-080009dc4425");
39   return TDataStd_RelationID;
40 }
41
42 //=======================================================================
43 //function : Set
44 //purpose  : 
45 //=======================================================================
46
47 Handle(TDataStd_Relation) TDataStd_Relation::Set(const TDF_Label& L) 
48 {  
49   Handle(TDataStd_Relation) A;
50   if (!L.FindAttribute (TDataStd_Relation::GetID(), A)) {
51     A = new TDataStd_Relation ();
52     L.AddAttribute(A);
53   }
54   return A;
55 }
56
57 //=======================================================================
58 //function : TDataStd_Relation
59 //purpose  : 
60 //=======================================================================
61
62 TDataStd_Relation::TDataStd_Relation()
63 {
64 }
65
66 //=======================================================================
67 //function : SetRelation
68 //purpose  : 
69 //=======================================================================
70
71 void TDataStd_Relation::SetRelation(const TCollection_ExtendedString& R)
72 {
73   SetExpression(R);
74 }
75
76 //=======================================================================
77 //function : GetRelation
78 //purpose  : 
79 //=======================================================================
80
81 const TCollection_ExtendedString& TDataStd_Relation::GetRelation() const
82 {
83   return GetExpression();
84 }
85
86 //=======================================================================
87 //function : ID
88 //purpose  : 
89 //=======================================================================
90
91 const Standard_GUID& TDataStd_Relation::ID() const
92 {
93   return GetID();
94 }
95
96 //=======================================================================
97 //function : Dump
98 //purpose  : 
99 //=======================================================================
100
101 Standard_OStream& TDataStd_Relation::Dump(Standard_OStream& anOS) const
102
103   anOS << "Relation";
104   return anOS;
105 }
106
107 //=======================================================================
108 //function : DumpJson
109 //purpose  : 
110 //=======================================================================
111 void TDataStd_Relation::DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth) const
112 {
113   OCCT_DUMP_TRANSIENT_CLASS_BEGIN (theOStream)
114
115   OCCT_DUMP_BASE_CLASS (theOStream, theDepth, TDF_Attribute)
116
117   OCCT_DUMP_FIELD_VALUE_STRING (theOStream, GetRelation())
118
119   for (TDF_AttributeList::Iterator aVariableIt (myVariables); aVariableIt.More(); aVariableIt.Next())
120   {
121     const Handle(TDF_Attribute)& aVariable = aVariableIt.Value();
122     OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, aVariable.get())
123   }
124 }