0027772: Foundation Classes - define Standard_Boolean using C++ type "bool" instead...
[occt.git] / src / TDataStd / TDataStd_BooleanList.cxx
CommitLineData
b311480e 1// Created on: 2007-05-29
2// Created by: Vlad Romashko
973c2be1 3// Copyright (c) 2007-2014 OPEN CASCADE SAS
b311480e 4//
973c2be1 5// This file is part of Open CASCADE Technology software library.
b311480e 6//
d5f74e42 7// This library is free software; you can redistribute it and/or modify it under
8// the terms of the GNU Lesser General Public License version 2.1 as published
973c2be1 9// by the Free Software Foundation, with special exception defined in the file
10// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
11// distribution for complete text of the license and disclaimer of any warranty.
b311480e 12//
973c2be1 13// Alternatively, this file may be used under the terms of Open CASCADE
14// commercial license or contractual agreement.
7fd59977 15
42cf5bc1 16
17#include <Standard_GUID.hxx>
18#include <Standard_Type.hxx>
19#include <TDataStd_BooleanList.hxx>
7fd59977 20#include <TDataStd_ListIteratorOfListOfByte.hxx>
42cf5bc1 21#include <TDF_Attribute.hxx>
22#include <TDF_Label.hxx>
23#include <TDF_RelocationTable.hxx>
7fd59977 24
92efcf78 25IMPLEMENT_STANDARD_RTTIEXT(TDataStd_BooleanList,TDF_Attribute)
26
7fd59977 27//=======================================================================
28//function : GetID
29//purpose :
30//=======================================================================
31const Standard_GUID& TDataStd_BooleanList::GetID()
32{
33 static Standard_GUID TDataStd_BooleanListID ("23A9D60E-A033-44d8-96EE-015587A41BBC");
34 return TDataStd_BooleanListID;
35}
36
37//=======================================================================
38//function : TDataStd_BooleanList
39//purpose : Empty Constructor
40//=======================================================================
41TDataStd_BooleanList::TDataStd_BooleanList()
42{
43
44}
45
46//=======================================================================
47//function : Set
48//purpose :
49//=======================================================================
50Handle(TDataStd_BooleanList) TDataStd_BooleanList::Set(const TDF_Label& label)
51{
52 Handle(TDataStd_BooleanList) A;
53 if (!label.FindAttribute (TDataStd_BooleanList::GetID(), A))
54 {
55 A = new TDataStd_BooleanList;
56 label.AddAttribute(A);
57 }
58 return A;
59}
60
61//=======================================================================
62//function : IsEmpty
63//purpose :
64//=======================================================================
65Standard_Boolean TDataStd_BooleanList::IsEmpty() const
66{
67 return myList.IsEmpty();
68}
69
70//=======================================================================
71//function : Extent
72//purpose :
73//=======================================================================
74Standard_Integer TDataStd_BooleanList::Extent() const
75{
76 return myList.Extent();
77}
78
79//=======================================================================
80//function : Prepend
81//purpose :
82//=======================================================================
83void TDataStd_BooleanList::Prepend(const Standard_Boolean value)
84{
85 Backup();
86 myList.Prepend( value ? 1 : 0 );
87}
88
89//=======================================================================
90//function : Append
91//purpose :
92//=======================================================================
93void TDataStd_BooleanList::Append(const Standard_Boolean value)
94{
95 Backup();
96 myList.Append( value ? 1 : 0 );
97}
98
99//=======================================================================
100//function : Clear
101//purpose :
102//=======================================================================
103void TDataStd_BooleanList::Clear()
104{
105 Backup();
106 myList.Clear();
107}
108
109//=======================================================================
110//function : First
111//purpose :
112//=======================================================================
113Standard_Boolean TDataStd_BooleanList::First() const
114{
115 return myList.First() == 1;
116}
117
118//=======================================================================
119//function : Last
120//purpose :
121//=======================================================================
122Standard_Boolean TDataStd_BooleanList::Last() const
123{
124 return myList.Last() == 1;
125}
126
127//=======================================================================
128//function : List
129//purpose :
130//=======================================================================
131const TDataStd_ListOfByte& TDataStd_BooleanList::List() const
132{
133 return myList;
134}
135
136//=======================================================================
1ff07227 137//function : InsertBefore
138//purpose : Inserts the <value> before the <index> position.
139//=======================================================================
140Standard_Boolean TDataStd_BooleanList::InsertBefore(const Standard_Integer index,
141 const Standard_Boolean before_value)
142{
143 Standard_Integer i(1);
144 Standard_Boolean found(Standard_False);
145 TDataStd_ListIteratorOfListOfByte itr(myList);
146 for (; itr.More(); itr.Next(), ++i)
147 {
148 if (i == index)
149 {
150 Backup();
151 myList.InsertBefore(before_value ? 1 : 0, itr);
152 found = Standard_True;
153 break;
154 }
155 }
156 return found;
157}
158
159//=======================================================================
160//function : InsertAfter
161//purpose : Inserts the <value> after the <index> position.
162//=======================================================================
163Standard_Boolean TDataStd_BooleanList::InsertAfter(const Standard_Integer index,
164 const Standard_Boolean after_value)
165{
166 Standard_Integer i(1);
167 Standard_Boolean found(Standard_False);
168 TDataStd_ListIteratorOfListOfByte itr(myList);
169 for (; itr.More(); itr.Next(), ++i)
170 {
171 if (i == index)
172 {
173 Backup();
174 myList.InsertAfter(after_value ? 1 : 0, itr);
175 found = Standard_True;
176 break;
177 }
178 }
179 return found;
180}
181
182//=======================================================================
183//function : Remove
184//purpose : Removes the <value> at the <index> position.
185//=======================================================================
186Standard_Boolean TDataStd_BooleanList::Remove(const Standard_Integer index)
187{
188 Standard_Integer i(1);
189 Standard_Boolean found(Standard_False);
190 TDataStd_ListIteratorOfListOfByte itr(myList);
191 for (; itr.More(); itr.Next(), ++i)
192 {
193 if (i == index)
194 {
195 Backup();
196 myList.Remove(itr);
197 found = Standard_True;
198 break;
199 }
200 }
201 return found;
202}
203
204//=======================================================================
7fd59977 205//function : ID
206//purpose :
207//=======================================================================
208const Standard_GUID& TDataStd_BooleanList::ID () const
209{
210 return GetID();
211}
212
213//=======================================================================
214//function : NewEmpty
215//purpose :
216//=======================================================================
217Handle(TDF_Attribute) TDataStd_BooleanList::NewEmpty () const
218{
219 return new TDataStd_BooleanList();
220}
221
222//=======================================================================
223//function : Restore
224//purpose :
225//=======================================================================
226void TDataStd_BooleanList::Restore(const Handle(TDF_Attribute)& With)
227{
228 myList.Clear();
229 Handle(TDataStd_BooleanList) aList = Handle(TDataStd_BooleanList)::DownCast(With);
230 TDataStd_ListIteratorOfListOfByte itr(aList->List());
231 for (; itr.More(); itr.Next())
232 {
dde68833 233 myList.Append (itr.Value() ? 1 : 0);
7fd59977 234 }
235}
236
237//=======================================================================
238//function : Paste
239//purpose :
240//=======================================================================
241void TDataStd_BooleanList::Paste (const Handle(TDF_Attribute)& Into,
242 const Handle(TDF_RelocationTable)& ) const
243{
244 Handle(TDataStd_BooleanList) aList = Handle(TDataStd_BooleanList)::DownCast(Into);
245 aList->Clear();
246 TDataStd_ListIteratorOfListOfByte itr(myList);
247 for (; itr.More(); itr.Next())
248 {
dde68833 249 aList->Append (itr.Value() != 0);
7fd59977 250 }
251}
252
253//=======================================================================
254//function : Dump
255//purpose :
256//=======================================================================
257Standard_OStream& TDataStd_BooleanList::Dump (Standard_OStream& anOS) const
258{
259 anOS << "BooleanList";
260 return anOS;
261}