0022815: Missing delete operator for placement new
[occt.git] / src / LDOM / LDOM_NodeList.cxx
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
11 typedef const LDOM_BasicNode * LDOM_BasicNodePtr;
12
13 DECLARE_SEQUENCE   (LDOM_BasicNodeSequence, LDOM_BasicNodePtr)
14 IMPLEMENT_SEQUENCE (LDOM_BasicNodeSequence, LDOM_BasicNodePtr)
15
16 //=======================================================================
17 //function : LDOM_NodeList()
18 //purpose  : Constructor
19 //=======================================================================
20
21 LDOM_NodeList::LDOM_NodeList (  )
22 {
23   mySeq = new LDOM_BasicNodeSequence;
24 }
25
26 //=======================================================================
27 //function : LDOM_NodeList
28 //purpose  : 
29 //=======================================================================
30
31 LDOM_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
42 void 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
52 LDOM_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
64 LDOM_NodeList::~LDOM_NodeList ()
65 {
66   delete mySeq;
67 }
68
69 //=======================================================================
70 //function : operator =
71 //purpose  : Assignment
72 //=======================================================================
73
74 LDOM_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
86 LDOM_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
98 Standard_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
108 Standard_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
118 LDOM_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
130 Standard_Integer LDOM_NodeList::getLength () const
131 {
132   return mySeq -> Length();
133 }
134