0029590: Coding - avoid usage of Standard_EXPORT attribute for inline methods
[occt.git] / src / BOPTools / BOPTools_ShapeSet.lxx
1 // Created by: Peter KURNEV
2 // Copyright (c) 1999-2014 OPEN CASCADE SAS
3 //
4 // This file is part of Open CASCADE Technology software library.
5 //
6 // This library is free software; you can redistribute it and/or modify it under
7 // the terms of the GNU Lesser General Public License version 2.1 as published
8 // by the Free Software Foundation, with special exception defined in the file
9 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
10 // distribution for complete text of the license and disclaimer of any warranty.
11 //
12 // Alternatively, this file may be used under the terms of Open CASCADE
13 // commercial license or contractual agreement.
14
15 #include <TopExp_Explorer.hxx>
16 #include <TopoDS_Edge.hxx>
17 #include <BRep_Tool.hxx>
18
19 //=======================================================================
20 //function : 
21 //purpose  : 
22 //=======================================================================
23   inline BOPTools_ShapeSet::BOPTools_ShapeSet()
24 {
25 }
26 //=======================================================================
27 //function : 
28 //purpose  : 
29 //=======================================================================
30   inline BOPTools_ShapeSet::BOPTools_ShapeSet(const Handle(NCollection_BaseAllocator)& theObj)
31 :
32   myMap(100, theObj)
33 {
34 }
35 //=======================================================================
36 //function : ~
37 //purpose  : 
38 //=======================================================================
39   inline BOPTools_ShapeSet::~BOPTools_ShapeSet()
40 {
41 }
42 //=======================================================================
43 //function : Clear
44 //purpose  : 
45 //=======================================================================
46   inline void BOPTools_ShapeSet::Clear()
47 {
48   myMap.Clear();
49 }
50 //=======================================================================
51 //function : SetShape
52 //purpose  : 
53 //=======================================================================
54   inline void BOPTools_ShapeSet::SetShape(const TopoDS_Shape& theShape)
55 {
56   myShape=theShape;
57 }
58 //=======================================================================
59 //function : Shape
60 //purpose  : 
61 //=======================================================================
62   inline const TopoDS_Shape& BOPTools_ShapeSet::Shape()const
63 {
64   return myShape;
65 }
66
67 //=======================================================================
68 //function : Add
69 //purpose  : 
70 //=======================================================================
71   inline void BOPTools_ShapeSet::Add(const TopoDS_Shape& theShape)
72 {
73   myMap.Add(theShape);
74 }
75 //=======================================================================
76 //function : Add
77 //purpose  : 
78 //=======================================================================
79   inline void BOPTools_ShapeSet::Add(const TopoDS_Shape& theShape,
80                                      const TopAbs_ShapeEnum theType)
81 {
82   TopExp_Explorer aExp(theShape, theType);
83   for(; aExp.More(); aExp.Next()) {
84     const TopoDS_Shape& aS=aExp.Current();
85     myMap.Add(aS);
86   }
87 }
88 //=======================================================================
89 //function : Add
90 //purpose  : 
91 //=======================================================================
92   inline void BOPTools_ShapeSet::Add(const TopTools_ListOfShape& theLS)
93 {
94   TopTools_ListIteratorOfListOfShape aIt;
95   //
96   aIt.Init(theLS);
97   for (; aIt.More(); aIt.Next()) {
98     const TopoDS_Shape& aS=aIt.Value();
99     myMap.Add(aS);
100   }
101 }
102 //=======================================================================
103 //function : AddEdge
104 //purpose  : 
105 //=======================================================================
106   inline void BOPTools_ShapeSet::AddEdge(const TopoDS_Edge& theEdge)
107 {
108   if (!BRep_Tool::Degenerated(theEdge)){
109     myMap.Add(theEdge);
110   }
111 }
112 //=======================================================================
113 //function : AddEdges
114 //purpose  : 
115 //=======================================================================
116   inline void BOPTools_ShapeSet::AddEdges(const TopTools_ListOfShape& theLS)
117 {
118   TopTools_ListIteratorOfListOfShape aIt;
119   //
120   aIt.Initialize(theLS);
121   for (; aIt.More(); aIt.Next()) {
122     const TopoDS_Edge& aE=(*(TopoDS_Edge*)&aIt.Value());
123     AddEdge(aE);
124   }
125 }
126 //=======================================================================
127 //function : AddEdges
128 //purpose  : 
129 //=======================================================================
130   inline void BOPTools_ShapeSet::AddEdges(const TopoDS_Shape& theFace)
131 {
132   TopExp_Explorer aExp(theFace, TopAbs_EDGE);
133   for(; aExp.More(); aExp.Next()) {
134     const TopoDS_Edge& aE=(*(TopoDS_Edge*)&aExp.Current());
135     AddEdge(aE);
136   }
137 }
138 //=======================================================================
139 //function : Get 
140 //purpose  : 
141 //=======================================================================
142   inline void BOPTools_ShapeSet::Get(TopTools_ListOfShape& theLS)const
143 {
144   TopTools_MapIteratorOfMapOfOrientedShape aIt;
145   //
146   aIt.Initialize(myMap);
147   for (; aIt.More(); aIt.Next()) {
148     const TopoDS_Shape& aS=aIt.Value();
149     theLS.Append(aS);
150   }
151 }
152 //=======================================================================
153 //function : Contains
154 //purpose  : 
155 //=======================================================================
156   inline Standard_Boolean BOPTools_ShapeSet::Contains(const BOPTools_ShapeSet& theOther)const
157 {
158   Standard_Boolean bRet;
159   TopTools_MapIteratorOfMapOfOrientedShape aIt;
160   //
161   aIt.Initialize(theOther.myMap);
162   for (; aIt.More(); aIt.Next()) {
163     const TopoDS_Shape& aS=aIt.Value();
164     bRet=myMap.Contains(aS);
165     if (!bRet) {
166       break;
167     }
168   }
169   return bRet;
170 }
171 //=======================================================================
172 //function : Subtract
173 //purpose  : 
174 //=======================================================================
175   inline void BOPTools_ShapeSet::Subtract(const BOPTools_ShapeSet& theOther)
176 {
177   TopTools_MapIteratorOfMapOfOrientedShape aIt;
178   //
179   aIt.Initialize(theOther.myMap);
180   for (; aIt.More(); aIt.Next()) {
181     const TopoDS_Shape& aS=aIt.Value();
182     if (myMap.Contains(aS)) {
183       myMap.Remove(aS);
184     }
185   }
186 }