0022627: Change OCCT memory management defaults
[occt.git] / src / TDataXtd / TDataXtd_Position.cxx
1 // File:        TDataXtd_Position.cxx
2 // Created:     Mon Apr  6 18:31:09 2009
3 // Author:      Sergey ZARITCHNY
4 //              <sergey.zaritchny@opencascade.com>
5 //Copyright:    Open CasCade SA 2009
6
7
8 #include <TDataXtd_Position.ixx>
9 #include <TDF_Label.hxx>
10
11 //=======================================================================
12 //function : Set (class method)
13 //purpose  : 
14 //=======================================================================
15 void TDataXtd_Position::Set(const TDF_Label& aLabel, const gp_Pnt& aPos) 
16 {
17   Handle(TDataXtd_Position) pos;
18   if (!aLabel.FindAttribute(TDataXtd_Position::GetID(), pos)) {
19     pos = new TDataXtd_Position();
20     aLabel.AddAttribute(pos);
21   }
22   pos->SetPosition( aPos ); 
23 }
24
25 //=======================================================================
26 //function : Set
27 //purpose  : 
28 //=======================================================================
29 Handle(TDataXtd_Position) TDataXtd_Position::Set (const TDF_Label& L)
30 {
31   Handle(TDataXtd_Position) POS;
32   if (!L.FindAttribute (TDataXtd_Position::GetID (), POS)) {    
33     POS = new TDataXtd_Position;
34     L.AddAttribute(POS);
35   }
36   return POS;
37 }
38
39 //=======================================================================
40 //function : Get (class method)
41 //purpose  : 
42 //=======================================================================
43 Standard_Boolean TDataXtd_Position::Get(const TDF_Label& aLabel, gp_Pnt& aPos) 
44 {
45   Handle(TDataXtd_Position) pos;
46   if( aLabel.FindAttribute( TDataXtd_Position::GetID(), pos) ) {
47     aPos = pos->GetPosition();
48     return Standard_True; 
49   }
50   return Standard_False; 
51 }
52
53 //=======================================================================
54 //function : GetID
55 //purpose  : 
56 //=======================================================================
57 const Standard_GUID& TDataXtd_Position::GetID() 
58 {
59   static Standard_GUID TDataXtd_Position_guid("55553252-ce0c-11d1-b5d8-00a0c9064368");
60   return TDataXtd_Position_guid;
61 }
62
63 //=======================================================================
64 //function : TDataXtd_Position
65 //purpose  : 
66 //=======================================================================
67 TDataXtd_Position::TDataXtd_Position()
68   :myPosition(gp_Pnt(0.,0.,0.))
69 {
70 }
71
72 //=======================================================================
73 //function : GetPosition
74 //purpose  : 
75 //=======================================================================
76 const gp_Pnt& TDataXtd_Position::GetPosition() const
77 {
78   return myPosition;
79 }
80
81 //=======================================================================
82 //function : Position
83 //purpose  : 
84 //=======================================================================
85 void TDataXtd_Position::SetPosition(const gp_Pnt& aPos) 
86 {
87   // OCC2932 correction
88   if(myPosition.X() == aPos.X() &&
89      myPosition.Y() == aPos.Y() &&
90      myPosition.Z() == aPos.Z())
91     return;
92
93   Backup();
94   myPosition = aPos;
95 }
96
97  
98
99 //=======================================================================
100 //function : ID
101 //purpose  : 
102 //=======================================================================
103 const Standard_GUID& TDataXtd_Position::ID() const
104 {
105   return GetID();
106 }
107
108 //=======================================================================
109 //function : Restore
110 //purpose  : 
111 //=======================================================================
112 void TDataXtd_Position::Restore(const Handle(TDF_Attribute)& anAttribute) 
113 {
114   myPosition = Handle(TDataXtd_Position)::DownCast(anAttribute)->GetPosition();
115 }
116
117 //=======================================================================
118 //function : NewEmpty
119 //purpose  : 
120 //=======================================================================
121 Handle(TDF_Attribute) TDataXtd_Position::NewEmpty() const
122 {
123   return new TDataXtd_Position; 
124 }
125
126 //=======================================================================
127 //function : Paste
128 //purpose  : 
129 //=======================================================================
130 void TDataXtd_Position::Paste(const Handle(TDF_Attribute)& intoAttribute,
131                              const Handle(TDF_RelocationTable)&) const
132 {
133   Handle(TDataXtd_Position)::DownCast(intoAttribute)->SetPosition(myPosition);
134 }