5c45f9e84b8843e247387113874559874ff10fcf
[occt.git] / src / BOPTest / BOPTest_Objects.cxx
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 <BOPTest_Objects.ixx>
16
17 #include <NCollection_BaseAllocator.hxx>
18 #include <NCollection_IncAllocator.hxx>
19
20 static Handle(NCollection_BaseAllocator)& Allocator1();
21
22 //=======================================================================
23 //function : BOPTest_Session
24 //purpose  : 
25 //=======================================================================
26 class BOPTest_Session {
27  public:
28   //
29   BOPTest_Session() {
30     Init();
31   };
32   //
33   ~BOPTest_Session(){
34     Clear();
35   };
36   //
37   // Init
38   void Init() {
39     Handle(NCollection_BaseAllocator) pA1, pA2;
40     //
41     pA1=new NCollection_IncAllocator;
42     pA2=new NCollection_IncAllocator;
43     //
44     myPaveFiller=new BOPAlgo_PaveFiller(pA1);
45     myBuilderDefault=new BOPAlgo_Builder(pA2);
46     //
47     myBuilder=myBuilderDefault;
48     myRunParallel=Standard_False;
49     myFuzzyValue=0.;
50   };
51   //
52   // Clear
53   void Clear() {
54     if (myPaveFiller) {
55       delete myPaveFiller;
56       myPaveFiller=NULL;
57     }
58     //
59     if (myBuilderDefault) {
60       delete myBuilderDefault;
61       myBuilderDefault=NULL;
62     }
63   };
64   //
65   // IsValid
66   Standard_Boolean IsValid() const {
67     return (myPaveFiller!=NULL);
68   }
69   // PaveFiller
70   BOPAlgo_PaveFiller& PaveFiller() {
71     return *myPaveFiller;
72   };
73   //
74   // Builder
75   BOPAlgo_Builder& Builder() {
76     return *myBuilder;
77   };
78   // 
79   // SetBuilder
80   void SetBuilder(BOPAlgo_Builder* pBuilder) {
81     myBuilder=pBuilder;
82   };
83   //
84   // SetBuilderDef
85   void SetBuilderDefault() {
86     myBuilder=myBuilderDefault;
87   };
88   //
89   BOPCol_ListOfShape& Shapes() {
90     return myShapes;
91   }
92   //
93   BOPCol_ListOfShape& Tools() {
94     return myTools;
95   }
96   //
97   void SetRunParallel(const Standard_Boolean bFlag) {
98     myRunParallel=bFlag;
99   };
100   //
101   Standard_Boolean RunParallel()const {
102     return myRunParallel;
103   };
104   //
105   void SetFuzzyValue(const Standard_Real aValue) {
106     myFuzzyValue=aValue;
107   };
108   //
109   Standard_Real FuzzyValue()const {
110     return myFuzzyValue;
111   };
112   //
113  protected:
114   //
115   BOPAlgo_PaveFiller* myPaveFiller;
116   BOPAlgo_Builder* myBuilder;
117   BOPAlgo_Builder* myBuilderDefault;
118   //
119   BOPCol_ListOfShape myShapes;
120   BOPCol_ListOfShape myTools;
121   Standard_Boolean myRunParallel;
122   Standard_Real myFuzzyValue;
123 };
124 //
125 //=======================================================================
126 //function : GetSession
127 //purpose  : 
128 //=======================================================================
129 static BOPTest_Session& GetSession()
130 {
131   static BOPTest_Session* pSession=new BOPTest_Session;
132   //
133   if (!pSession->IsValid()) {
134     pSession->Init();
135   }
136   return *pSession;
137 }
138 //
139 //=======================================================================
140 //function : Init
141 //purpose  : 
142 //=======================================================================
143 void BOPTest_Objects::Init() 
144 {
145   GetSession().Init();
146 }
147 //=======================================================================
148 //function : Clear
149 //purpose  : 
150 //=======================================================================
151 void BOPTest_Objects::Clear() 
152 {
153   GetSession().Clear();
154   Shapes().Clear();
155   Tools().Clear();
156 }
157 //=======================================================================
158 //function : PaveFiller
159 //purpose  : 
160 //=======================================================================
161 BOPAlgo_PaveFiller& BOPTest_Objects::PaveFiller() 
162 {
163   return GetSession().PaveFiller();
164 }
165 //=======================================================================
166 //function : PDS
167 //purpose  : 
168 //=======================================================================
169 BOPDS_PDS BOPTest_Objects::PDS() 
170 {
171   return BOPTest_Objects::PaveFiller().PDS();
172 }
173 //=======================================================================
174 //function : Builder
175 //purpose  : 
176 //=======================================================================
177 BOPAlgo_Builder& BOPTest_Objects::Builder()
178 {
179   return GetSession().Builder();
180 }
181 //=======================================================================
182 //function : SetBuilder
183 //purpose  : 
184 //=======================================================================
185 void BOPTest_Objects::SetBuilder(const BOPAlgo_PBuilder& theBuilder)
186 {
187   BOPAlgo_Builder* pB;
188   //
189   pB=(BOPAlgo_Builder*)theBuilder;
190   GetSession().SetBuilder(pB);
191 }
192 //=======================================================================
193 //function : SetBuilderDefault
194 //purpose  : 
195 //=======================================================================
196 void BOPTest_Objects::SetBuilderDefault()
197 {
198   GetSession().SetBuilderDefault();
199 }
200 //=======================================================================
201 //function : BOP
202 //purpose  : 
203 //=======================================================================
204 BOPAlgo_BOP& BOPTest_Objects::BOP()
205 {
206   static BOPAlgo_BOP sBOP(Allocator1());
207   return sBOP;
208 }
209 //=======================================================================
210 //function : Section
211 //purpose  : 
212 //=======================================================================
213 BOPAlgo_Section& BOPTest_Objects::Section()
214 {
215   static BOPAlgo_Section sSection(Allocator1());
216   return sSection;
217 }
218 //=======================================================================
219 //function : Shapes
220 //purpose  : 
221 //=======================================================================
222 BOPCol_ListOfShape& BOPTest_Objects::Shapes()
223 {
224   return GetSession().Shapes();
225 }
226 //=======================================================================
227 //function : Tools
228 //purpose  : 
229 //=======================================================================
230 BOPCol_ListOfShape& BOPTest_Objects::Tools()
231 {
232   return GetSession().Tools();
233 }
234 //=======================================================================
235 //function : SetRunParallel
236 //purpose  : 
237 //=======================================================================
238 void BOPTest_Objects::SetRunParallel(const Standard_Boolean bFlag)
239 {
240   GetSession().SetRunParallel(bFlag);
241 }
242 //=======================================================================
243 //function : RunParallel
244 //purpose  : 
245 //=======================================================================
246 Standard_Boolean BOPTest_Objects::RunParallel()
247 {
248   return GetSession().RunParallel();
249 }
250 //=======================================================================
251 //function : SetFuzzyValue
252 //purpose  : 
253 //=======================================================================
254 void BOPTest_Objects::SetFuzzyValue(const Standard_Real aValue)
255 {
256   GetSession().SetFuzzyValue(aValue);
257 }
258 //=======================================================================
259 //function : FuzzyValue
260 //purpose  : 
261 //=======================================================================
262 Standard_Real BOPTest_Objects::FuzzyValue()
263 {
264   return GetSession().FuzzyValue();
265 }
266 //=======================================================================
267 //function : Allocator1
268 //purpose  : 
269 //=======================================================================
270 Handle(NCollection_BaseAllocator)& Allocator1() 
271 {
272   static Handle(NCollection_BaseAllocator) sAL1=
273     new NCollection_IncAllocator;
274   return sAL1;
275 }