Integration of OCCT 6.5.0 from SVN
[occt.git] / src / LDOM / LDOM_NodeList.cxx
CommitLineData
7fd59977 1// File: LDOM_NodeList.cxx
2// Created: 28.06.01 15:05:19
3// Author: Alexander GRIGORIEV
4// Copyright: OpenCascade 2001
5// History:
6
7#include <LDOM_DeclareSequence.hxx>
8#include <LDOM_NodeList.hxx>
9#include <LDOM_BasicNode.hxx>
10
11typedef const LDOM_BasicNode * LDOM_BasicNodePtr;
12
13DECLARE_SEQUENCE (LDOM_BasicNodeSequence, LDOM_BasicNodePtr)
14IMPLEMENT_SEQUENCE (LDOM_BasicNodeSequence, LDOM_BasicNodePtr)
15
16//=======================================================================
17//function : LDOM_NodeList()
18//purpose : Constructor
19//=======================================================================
20
21LDOM_NodeList::LDOM_NodeList ( )
22{
23 mySeq = new LDOM_BasicNodeSequence;
24}
25
26//=======================================================================
27//function : LDOM_NodeList
28//purpose :
29//=======================================================================
30
31LDOM_NodeList::LDOM_NodeList (const Handle(LDOM_MemManager)& aDoc)
32 : myDoc (aDoc)
33{
34 mySeq = new LDOM_BasicNodeSequence;
35}
36
37//=======================================================================
38//function : Append
39//purpose :
40//=======================================================================
41
42void LDOM_NodeList::Append (const LDOM_BasicNode& aNode) const
43{
44 mySeq -> Append (&aNode);
45}
46
47//=======================================================================
48//function : LDOM_NodeList
49//purpose : Copy constructor
50//=======================================================================
51
52LDOM_NodeList::LDOM_NodeList (const LDOM_NodeList& theOther)
53{
54 mySeq = new LDOM_BasicNodeSequence;
55 * mySeq = * theOther.mySeq;
56 myDoc = theOther.myDoc;
57}
58
59//=======================================================================
60//function : ~LDOM_NodeList
61//purpose : Destructor
62//=======================================================================
63
64LDOM_NodeList::~LDOM_NodeList ()
65{
66 delete mySeq;
67}
68
69//=======================================================================
70//function : operator =
71//purpose : Assignment
72//=======================================================================
73
74LDOM_NodeList& LDOM_NodeList::operator = (const LDOM_NodeList& theOther)
75{
76 myDoc = theOther.myDoc;
77 * mySeq = * theOther.mySeq;
78 return * this;
79}
80
81//=======================================================================
82//function : operator =
83//purpose : Nullify
84//=======================================================================
85
86LDOM_NodeList& LDOM_NodeList::operator = (const LDOM_NullPtr *)
87{
88 myDoc.Nullify();
89 mySeq -> Clear ();
90 return * this;
91}
92
93//=======================================================================
94//function : operator ==
95//purpose :
96//=======================================================================
97
98Standard_Boolean LDOM_NodeList::operator == (const LDOM_NullPtr *) const
99{
100 return myDoc.IsNull() || mySeq -> Length () == 0;
101}
102
103//=======================================================================
104//function : operator !=
105//purpose :
106//=======================================================================
107
108Standard_Boolean LDOM_NodeList::operator != (const LDOM_NullPtr *) const
109{
110 return ! (myDoc.IsNull() || mySeq -> Length () == 0);
111}
112
113//=======================================================================
114//function : item
115//purpose :
116//=======================================================================
117
118LDOM_Node LDOM_NodeList::item (const Standard_Integer anIndex) const
119{
120 if (myDoc.IsNull() || anIndex < 0 || anIndex >= mySeq -> Length ())
121 return LDOM_Node();
122 return LDOM_Node (* mySeq -> Value(anIndex+1), myDoc);
123}
124
125//=======================================================================
126//function : getLength
127//purpose :
128//=======================================================================
129
130Standard_Integer LDOM_NodeList::getLength () const
131{
132 return mySeq -> Length();
133}
134