summaryrefslogtreecommitdiff
path: root/inc/BOP_BlockBuilder.hxx
blob: 5025c593071f4fd39b08b0ae9fc20d01b9dce23b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
// This file is generated by WOK (CPPExt).
// Please do not edit this file; modify original file instead.
// The copyright and license terms as defined for the original file apply to 
// this header file considered to be the "object code" form of the original source.

#ifndef _BOP_BlockBuilder_HeaderFile
#define _BOP_BlockBuilder_HeaderFile

#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Standard_Macro_HeaderFile
#include <Standard_Macro.hxx>
#endif

#ifndef _TColStd_DataMapOfIntegerInteger_HeaderFile
#include <TColStd_DataMapOfIntegerInteger.hxx>
#endif
#ifndef _TopTools_IndexedMapOfOrientedShape_HeaderFile
#include <TopTools_IndexedMapOfOrientedShape.hxx>
#endif
#ifndef _TColStd_SequenceOfInteger_HeaderFile
#include <TColStd_SequenceOfInteger.hxx>
#endif
#ifndef _Standard_Integer_HeaderFile
#include <Standard_Integer.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
class BOP_ShapeSet;
class BOP_BlockIterator;
class TopoDS_Shape;



//!  auxiliary class to storage and operate with data of <br>
//!  connexity blocks inside the given ShapeSet <br>
//! <br>
class BOP_BlockBuilder  {
public:

  void* operator new(size_t,void* anAddress) 
  {
    return anAddress;
  }
  void* operator new(size_t size) 
  {
    return Standard::Allocate(size); 
  }
  void  operator delete(void *anAddress) 
  {
    if (anAddress) Standard::Free((Standard_Address&)anAddress); 
  }

  
//! Empty  Constructor <br>
  Standard_EXPORT   BOP_BlockBuilder();
  
//! Create an  object for given ShapeSet <br>
  Standard_EXPORT   BOP_BlockBuilder(BOP_ShapeSet& SS);
  
//! Compute the set of connexity blocks of elements <br>
//! for of the ShapeSet SS <br>
//! <br>
//! <br>
//!   I t e r a t i o n   o n   b l o c k s made by MakeBlock <br>
//! <br>
  Standard_EXPORT     void MakeBlock(BOP_ShapeSet& SS) ;
  
  Standard_EXPORT     void InitBlock() ;
  
  Standard_EXPORT     Standard_Boolean MoreBlock() const;
  
  Standard_EXPORT     void NextBlock() ;
  
//! Returns the BlockIterator for the current block  . <br>
  Standard_EXPORT     BOP_BlockIterator BlockIterator() const;
  
//! Returns the current element of <BI>. <br>
  Standard_EXPORT    const TopoDS_Shape& Element(const BOP_BlockIterator& BI) const;
  
//! Returns the current element with index  <I> . <br>
  Standard_EXPORT    const TopoDS_Shape& Element(const Standard_Integer I) const;
  
//! Returns the index of the current element . <br>
  Standard_EXPORT     Standard_Integer Element(const TopoDS_Shape& S) const;
  
//! Internal <br>
  Standard_EXPORT     Standard_Boolean ElementIsValid(const BOP_BlockIterator& BI) const;
  
//! Internal <br>
  Standard_EXPORT     Standard_Boolean ElementIsValid(const Standard_Integer I) const;
  
//! Internal <br>
  Standard_EXPORT     Standard_Integer AddElement(const TopoDS_Shape& S) ;
  
//! Internal <br>
  Standard_EXPORT     void SetValid(const BOP_BlockIterator& BI,const Standard_Boolean IsValid) ;
  
//! Internal <br>
  Standard_EXPORT     void SetValid(const Standard_Integer I,const Standard_Boolean IsValid) ;
  
//! Returns TRUE if all elements inside the current block <br>
//! are biconnexial <br>
  Standard_EXPORT     Standard_Boolean CurrentBlockIsRegular() ;





protected:





private:



TColStd_DataMapOfIntegerInteger myOrientedShapeMapIsValid;
TopTools_IndexedMapOfOrientedShape myOrientedShapeMap;
TColStd_SequenceOfInteger myBlocks;
Standard_Integer myBlockIndex;
Standard_Boolean myIsDone;
TColStd_SequenceOfInteger myBlocksIsRegular;


};





// other Inline functions and methods (like "C++: function call" methods)


#endif