1 //  GEOM PARTITION : partition algorithm
2 //
3 //  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
6 //  This library is free software; you can redistribute it and/or
7 //  modify it under the terms of the GNU Lesser General Public
8 //  License as published by the Free Software Foundation; either
9 //  version 2.1 of the License.
10 //
11 //  This library is distributed in the hope that it will be useful,
12 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 //  Lesser General Public License for more details.
15 //
16 //  You should have received a copy of the GNU Lesser General Public
17 //  License along with this library; if not, write to the Free Software
18 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
19 //
20 //  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
21 //
22 //
23 //
24 //  File   : Partition_Loop.hxx
25 //  Module : GEOM
26 
27 #ifndef _Partition_Loop_HeaderFile
28 #define _Partition_Loop_HeaderFile
29 
30 #ifndef _TopoDS_Face_HeaderFile
31 #include <TopoDS_Face.hxx>
32 #endif
33 #ifndef _TopTools_ListOfShape_HeaderFile
34 #include <TopTools_ListOfShape.hxx>
35 #endif
36 #ifndef _TopTools_DataMapOfShapeListOfShape_HeaderFile
37 #include <TopTools_DataMapOfShapeListOfShape.hxx>
38 #endif
39 #ifndef _Standard_Version_HeaderFile
40 #include <Standard_Version.hxx>
41 #endif
42 class TopoDS_Face;
43 class TopoDS_Edge;
44 #if OCC_VERSION_HEX < 0x070000
45    class TopTools_ListOfShape;
46 #endif
47 
48 
49 #ifndef _Standard_HeaderFile
50 #include <Standard.hxx>
51 #endif
52 #ifndef _Standard_Macro_HeaderFile
53 #include <Standard_Macro.hxx>
54 #endif
55 
56 class Partition_Loop  {
57 
58 public:
59 
operator new(size_t,void * anAddress)60    inline void* operator new(size_t,void* anAddress)
61    {
62       return anAddress;
63    }
operator new(size_t size)64    inline void* operator new(size_t size)
65    {
66       return Standard::Allocate(size);
67    }
operator delete(void * anAddress)68    inline void  operator delete(void *anAddress)
69    {
70       if (anAddress) Standard::Free((Standard_Address&)anAddress);
71    }
72    //    inline void  operator delete(void *anAddress, size_t size)
73    //      {
74    //        if (anAddress) Standard::Free((Standard_Address&)anAddress,size);
75    //      }
76    // Methods PUBLIC
77    //
78    Partition_Loop();
79    void Init(const TopoDS_Face& F) ;
80    void AddConstEdge(const TopoDS_Edge& E) ;
81    void Perform() ;
82    const TopTools_ListOfShape& NewWires() const;
83    void WiresToFaces() ;
84    const TopTools_ListOfShape& NewFaces() const;
85 
86 
87 
88 
89 protected:
90 
91    // Methods PROTECTED
92    //
93 
94 
95    // Fields PROTECTED
96    //
97 
98 
99 private:
100 
101    // Methods PRIVATE
102    //
103 
104 
105    // Fields PRIVATE
106    //
107    TopoDS_Face myFace;
108    TopTools_ListOfShape myConstEdges;
109    TopTools_ListOfShape myNewWires;
110    TopTools_ListOfShape myNewFaces;
111 
112 
113 };
114 
115 
116 
117 
118 
119 // other inline functions and methods (like "C++: function call" methods)
120 //
121 
122 
123 #endif
124