Salome HOME
Update copyright information
[modules/geom.git] / src / NMTDS / NMTDS_ShapesDataStructure.hxx
1 // Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 // Copyright (C) 2003-2007  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.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22 \r
23 #ifndef _NMTDS_ShapesDataStructure_HeaderFile\r
24 #define _NMTDS_ShapesDataStructure_HeaderFile\r
25 \r
26 #ifndef _Standard_HeaderFile\r
27 #include <Standard.hxx>\r
28 #endif\r
29 #ifndef _Standard_Macro_HeaderFile\r
30 #include <Standard_Macro.hxx>\r
31 #endif\r
32 \r
33 #ifndef _TopoDS_Shape_HeaderFile\r
34 #include <TopoDS_Shape.hxx>\r
35 #endif\r
36 #ifndef _NMTDS_CArray1OfIndexRange_HeaderFile\r
37 #include <NMTDS_CArray1OfIndexRange.hxx>\r
38 #endif\r
39 #ifndef _TopTools_DataMapOfShapeInteger_HeaderFile\r
40 #include <TopTools_DataMapOfShapeInteger.hxx>\r
41 #endif\r
42 #ifndef _BooleanOperations_ShapesDataStructure_HeaderFile\r
43 #include <BooleanOperations_ShapesDataStructure.hxx>\r
44 #endif\r
45 #ifndef _Standard_Integer_HeaderFile\r
46 #include <Standard_Integer.hxx>\r
47 #endif\r
48 class TopoDS_Shape;\r
49 class NMTDS_CArray1OfIndexRange;\r
50 class BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors;\r
51 class TColStd_IndexedMapOfInteger;\r
52 class Bnd_Box;\r
53 \r
54 \r
55 \r
56 class NMTDS_ShapesDataStructure  : public BooleanOperations_ShapesDataStructure {\r
57 public:\r
58 \r
59   void* operator new(size_t,void* anAddress) \r
60   {\r
61     return anAddress;\r
62   }\r
63   void* operator new(size_t size) \r
64   {\r
65     return Standard::Allocate(size); \r
66   }\r
67   void  operator delete(void *anAddress) \r
68   {\r
69     if (anAddress) Standard::Free((Standard_Address&)anAddress); \r
70   }\r
71 \r
72   \r
73   Standard_EXPORT   NMTDS_ShapesDataStructure();\r
74   \r
75   Standard_EXPORT     void SetCompositeShape(const TopoDS_Shape& aS) ;\r
76   \r
77   Standard_EXPORT     void Init() ;\r
78   \r
79   Standard_EXPORT    const NMTDS_CArray1OfIndexRange& Ranges() const;\r
80   \r
81   Standard_EXPORT    const TopoDS_Shape& CompositeShape() const;\r
82   \r
83   Standard_EXPORT     Standard_Integer ShapeRangeIndex(const Standard_Integer aId) const;\r
84   \r
85   Standard_EXPORT   virtual  Standard_Integer Rank(const Standard_Integer anIndex) const;\r
86   \r
87   Standard_EXPORT   virtual  Standard_Integer ShapeIndex(const TopoDS_Shape& aS,const Standard_Integer iRank) const;\r
88   \r
89   Standard_EXPORT     void FillMap(const TopoDS_Shape& aS,BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMSA,BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMS) const;\r
90   \r
91   Standard_EXPORT     void FillSubshapes(const TopoDS_Shape& aS,BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMSA,BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMS) const;\r
92   \r
93   Standard_EXPORT     void GetAllSuccessors(const Standard_Integer anIndex,TColStd_IndexedMapOfInteger& aScrs) const;\r
94   \r
95   Standard_EXPORT     void ComputeBoxEx(const Standard_Integer anIndex,Bnd_Box& aBox) const;\r
96 \r
97 \r
98 \r
99 \r
100 \r
101 protected:\r
102 \r
103 \r
104 \r
105 TopoDS_Shape myCompositeShape;\r
106 NMTDS_CArray1OfIndexRange myRanges;\r
107 TopTools_DataMapOfShapeInteger myShapeIndexMap;\r
108 \r
109 \r
110 private:\r
111 \r
112 \r
113 \r
114 \r
115 \r
116 };\r
117 \r
118 \r
119 \r
120 \r
121 \r
122 // other Inline functions and methods (like "C++: function call" methods)\r
123 \r
124 \r
125 #endif\r