]> SALOME platform Git repositories - modules/geom.git/blob - src/NMTDS/NMTDS_ShapesDataStructure.hxx
Salome HOME
Mantis issue 0021453: EDF GEOM: (regression). A fix by PKV.
[modules/geom.git] / src / NMTDS / NMTDS_ShapesDataStructure.hxx
1 // Copyright (C) 2007-2011  CEA/DEN, EDF R&D, OPEN CASCADE\r
2 //\r
3 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,\r
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS\r
5 //\r
6 // This library is free software; you can redistribute it and/or\r
7 // modify it under the terms of the GNU Lesser General Public\r
8 // License as published by the Free Software Foundation; either\r
9 // version 2.1 of the License.\r
10 //\r
11 // This library is distributed in the hope that it will be useful,\r
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of\r
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
14 // Lesser General Public License for more details.\r
15 //\r
16 // You should have received a copy of the GNU Lesser General Public\r
17 // License along with this library; if not, write to the Free Software\r
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA\r
19 //\r
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com\r
21 \r
22 #ifndef _NMTDS_ShapesDataStructure_HeaderFile\r
23 #define _NMTDS_ShapesDataStructure_HeaderFile\r
24 \r
25 #ifndef _Standard_HeaderFile\r
26 #include <Standard.hxx>\r
27 #endif\r
28 #ifndef _Standard_Macro_HeaderFile\r
29 #include <Standard_Macro.hxx>\r
30 #endif\r
31 \r
32 #ifndef _TopoDS_Shape_HeaderFile\r
33 #include <TopoDS_Shape.hxx>\r
34 #endif\r
35 #ifndef _NMTDS_CArray1OfIndexRange_HeaderFile\r
36 #include <NMTDS_CArray1OfIndexRange.hxx>\r
37 #endif\r
38 #ifndef _TopTools_DataMapOfShapeInteger_HeaderFile\r
39 #include <TopTools_DataMapOfShapeInteger.hxx>\r
40 #endif\r
41 #ifndef _BooleanOperations_ShapesDataStructure_HeaderFile\r
42 #include <BooleanOperations_ShapesDataStructure.hxx>\r
43 #endif\r
44 #ifndef _Standard_Integer_HeaderFile\r
45 #include <Standard_Integer.hxx>\r
46 #endif\r
47 class TopoDS_Shape;\r
48 class NMTDS_CArray1OfIndexRange;\r
49 class BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors;\r
50 class TColStd_IndexedMapOfInteger;\r
51 class Bnd_Box;\r
52 \r
53 \r
54 \r
55 class NMTDS_ShapesDataStructure  : public BooleanOperations_ShapesDataStructure {\r
56 public:\r
57 \r
58   void* operator new(size_t,void* anAddress) \r
59   {\r
60     return anAddress;\r
61   }\r
62   void* operator new(size_t size) \r
63   {\r
64     return Standard::Allocate(size); \r
65   }\r
66   void  operator delete(void *anAddress) \r
67   {\r
68     if (anAddress) Standard::Free((Standard_Address&)anAddress); \r
69   }\r
70 \r
71   \r
72   Standard_EXPORT   NMTDS_ShapesDataStructure();\r
73   \r
74   Standard_EXPORT     void SetCompositeShape(const TopoDS_Shape& aS) ;\r
75   \r
76   Standard_EXPORT     void Init() ;\r
77   \r
78   Standard_EXPORT    const NMTDS_CArray1OfIndexRange& Ranges() const;\r
79   \r
80   Standard_EXPORT    const TopoDS_Shape& CompositeShape() const;\r
81   \r
82   Standard_EXPORT     Standard_Integer ShapeRangeIndex(const Standard_Integer aId) const;\r
83   \r
84   Standard_EXPORT   virtual  Standard_Integer Rank(const Standard_Integer anIndex) const;\r
85   \r
86   Standard_EXPORT   virtual  Standard_Integer ShapeIndex(const TopoDS_Shape& aS,const Standard_Integer iRank) const;\r
87   \r
88   Standard_EXPORT     void FillMap(const TopoDS_Shape& aS,BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMSA,BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMS) const;\r
89   \r
90   Standard_EXPORT     void FillSubshapes(const TopoDS_Shape& aS,BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMSA,BooleanOperations_IndexedDataMapOfShapeAncestorsSuccessors& aMS) const;\r
91   \r
92   Standard_EXPORT     void GetAllSuccessors(const Standard_Integer anIndex,TColStd_IndexedMapOfInteger& aScrs) const;\r
93   \r
94   Standard_EXPORT     void ComputeBoxEx(const Standard_Integer anIndex,Bnd_Box& aBox) const;\r
95 \r
96 \r
97 \r
98 \r
99 \r
100 protected:\r
101 \r
102 \r
103 \r
104 TopoDS_Shape myCompositeShape;\r
105 NMTDS_CArray1OfIndexRange myRanges;\r
106 TopTools_DataMapOfShapeInteger myShapeIndexMap;\r
107 \r
108 \r
109 private:\r
110 \r
111 \r
112 \r
113 \r
114 \r
115 };\r
116 \r
117 \r
118 \r
119 \r
120 \r
121 // other Inline functions and methods (like "C++: function call" methods)\r
122 \r
123 \r
124 #endif\r