Integration of OCCT 6.5.0 from SVN
[occt.git] / src / TopOpeBRepDS / TopOpeBRepDS_Marker.cxx
1 // File:        TopOpeBRepDS_Marker.cxx
2 // Created:     Wed Oct 22 18:57:02 1997
3 // Author:      Jean Yves LEBEY
4 //              <jyl@bistrox.paris1.matra-dtv.fr>
5
6 #include <TopOpeBRepDS_Marker.ixx>
7 #include <TopOpeBRepDS_define.hxx>
8 //#include <TopExp.hxx>
9 //#include <TopTools_IndexedMapOfShape.hxx>
10
11 TopOpeBRepDS_Marker::TopOpeBRepDS_Marker()
12 {
13   Reset();
14 }
15
16 void TopOpeBRepDS_Marker::Reset()
17 {
18   myhe.Nullify();
19   myne = 0;
20 }
21
22 void TopOpeBRepDS_Marker::Set(const Standard_Integer ie, const Standard_Boolean b)
23 {
24   Allocate(ie);
25   if (!(ie>=1 && ie<=myne)) return;
26   myhe->SetValue(ie,b); 
27 }
28
29 void TopOpeBRepDS_Marker::Set(const Standard_Boolean b, const Standard_Integer na, const Standard_Address aa)
30 {
31   char ** a = (char**)aa;
32 //  Standard_Integer ia,ie;
33   Standard_Integer ia;
34   if (!na) myhe->Init(b);
35   else for (ia=0; ia<na; ia++) Set(atoi(a[ia]),b);
36 }
37
38 Standard_Boolean TopOpeBRepDS_Marker::GetI(const Standard_Integer ie) const
39 {
40   if (myhe.IsNull()) return Standard_False;
41   if (!(ie>=1 && ie<=myne)) return Standard_False;
42   return myhe->Value(ie);
43 }
44
45 void TopOpeBRepDS_Marker::Allocate(const Standard_Integer n)
46 {
47   Standard_Boolean all = (n > myne);
48   Standard_Integer nall = n;
49   if (all) {
50     if (myne == 0) nall = 1000;
51     myhe = new TColStd_HArray1OfBoolean(0,nall);
52     myhe->Init(Standard_False);
53   }
54   if (nall) myne = nall;
55 }