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