63fed01e6fa411de525893f4e6816c9e06bb5a1d
[occt.git] / src / TopLoc / TopLoc_SListOfItemLocation.cxx
1 // Created on: 1993-02-26
2 // Created by: Remi LEQUETTE
3 // Copyright (c) 1993-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 <TopLoc_SListOfItemLocation.ixx>
18
19 #include <Standard_NoSuchObject.hxx>
20
21 //=======================================================================
22 //function : TopLoc_SListOfItemLocation
23 //purpose  : 
24 //=======================================================================
25
26 TopLoc_SListOfItemLocation::TopLoc_SListOfItemLocation()
27 {}
28
29 //=======================================================================
30 //function : TopLoc_SListOfItemLocation
31 //purpose  : 
32 //=======================================================================
33
34 TopLoc_SListOfItemLocation::TopLoc_SListOfItemLocation(const TopLoc_ItemLocation& anItem,
35                                      const TopLoc_SListOfItemLocation& aTail) : 
36        myNode(new TopLoc_SListNodeOfItemLocation(anItem,aTail))
37 {}
38
39 //=======================================================================
40 //function : TopLoc_SListOfItemLocation
41 //purpose  : 
42 //=======================================================================
43
44 TopLoc_SListOfItemLocation::TopLoc_SListOfItemLocation(const TopLoc_SListOfItemLocation& Other) : 
45        myNode(Other.myNode)
46 {
47 }
48
49 //=======================================================================
50 //function : Assign
51 //purpose  : 
52 //=======================================================================
53
54 TopLoc_SListOfItemLocation& TopLoc_SListOfItemLocation::Assign(const TopLoc_SListOfItemLocation& Other)
55 {
56   if (this == &Other) return *this;
57   Clear();
58   myNode = Other.myNode;
59
60   return *this;
61 }
62
63 //=======================================================================
64 //function : Clear
65 //purpose  : 
66 //=======================================================================
67
68 void TopLoc_SListOfItemLocation::Clear()
69 {
70   if (!myNode.IsNull()) {
71     myNode.Nullify();
72   }
73 }
74
75 //=======================================================================
76 //function : Value
77 //purpose  : 
78 //=======================================================================
79
80 const TopLoc_ItemLocation& TopLoc_SListOfItemLocation::Value() const
81 {
82   Standard_NoSuchObject_Raise_if(myNode.IsNull(),"TopLoc_SListOfItemLocation::Value");
83   return myNode->Value();
84 }
85
86 //=======================================================================
87 //function : ChangeValue
88 //purpose  : 
89 //=======================================================================
90
91 TopLoc_ItemLocation& TopLoc_SListOfItemLocation::ChangeValue()
92 {
93   Standard_NoSuchObject_Raise_if(myNode.IsNull(),"TopLoc_SListOfItemLocation::Value");
94   return myNode->Value();
95 }
96
97 //=======================================================================
98 //function : SetValue
99 //purpose  : 
100 //=======================================================================
101
102 void TopLoc_SListOfItemLocation::SetValue(const TopLoc_ItemLocation& anItem)
103 {
104   Standard_NoSuchObject_Raise_if(myNode.IsNull(),"TopLoc_SListOfItemLocation::Value");
105   myNode->Value() = anItem;
106 }
107
108 //=======================================================================
109 //function : Tail
110 //purpose  : 
111 //=======================================================================
112
113 const TopLoc_SListOfItemLocation& TopLoc_SListOfItemLocation::Tail() const
114 {
115   if (!myNode.IsNull()) 
116     return  myNode->Tail();
117   else
118     return *this;
119 }
120
121 //=======================================================================
122 //function : ChangeTail
123 //purpose  : 
124 //=======================================================================
125
126 TopLoc_SListOfItemLocation& TopLoc_SListOfItemLocation::ChangeTail()
127 {
128   if (!myNode.IsNull()) 
129     return myNode->Tail();
130   else
131     return *this;
132 }
133
134 //=======================================================================
135 //function : SetTail
136 //purpose  : 
137 //=======================================================================
138
139 void TopLoc_SListOfItemLocation::SetTail(const TopLoc_SListOfItemLocation& aList)
140 {
141   if (!myNode.IsNull())
142     myNode->Tail() = aList;
143   else
144     Assign(aList);
145 }