0030281: Regression to 7.2.0: Modeling Algorithms - Wrong result of CUT operation
[occt.git] / src / BRepMesh / BRepMesh_PairOfPolygon.hxx
1 // Copyright (c) 2013 OPEN CASCADE SAS
2 //
3 // This file is part of Open CASCADE Technology software library.
4 //
5 // This library is free software; you can redistribute it and/or modify it under
6 // the terms of the GNU Lesser General Public License version 2.1 as published
7 // by the Free Software Foundation, with special exception defined in the file
8 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
9 // distribution for complete text of the license and disclaimer of any warranty.
10 //
11 // Alternatively, this file may be used under the terms of Open CASCADE
12 // commercial license or contractual agreement.
13
14 #ifndef _BRepMesh_PairOfPolygon_HeaderFile
15 #define _BRepMesh_PairOfPolygon_HeaderFile
16
17 #include <Standard.hxx>
18 #include <Standard_DefineAlloc.hxx>
19 #include <Standard_Macro.hxx>
20
21 class Poly_PolygonOnTriangulation;
22
23 class BRepMesh_PairOfPolygon
24 {
25 public:
26
27   DEFINE_STANDARD_ALLOC
28
29   //! Constructor. Creates empty pair with null fileds.
30   BRepMesh_PairOfPolygon()
31   {
32   }
33
34   //! Clears pair handles.
35   inline void Clear()
36   {
37     myFirst.Nullify();
38     myLast.Nullify();
39   }
40   
41   //! Sets the first element of the pair.
42   //! If last element is empty, also assignes the given polygon to it.
43   //! @param thePolygon plygon to be set.
44   inline void Prepend(const Handle(Poly_PolygonOnTriangulation)& thePolygon)
45   {
46     myFirst = thePolygon;
47
48     if (myLast.IsNull())
49       myLast = thePolygon;
50   }
51
52   //! Sets the last element of the pair.
53   //! If first element is empty, also assignes the given polygon to it.
54   //! @param thePolygon plygon to be set.
55   inline void Append(const Handle(Poly_PolygonOnTriangulation)& thePolygon)
56   {
57     if (myFirst.IsNull())
58       myFirst = thePolygon;
59
60     myLast = thePolygon;
61   }
62
63   //! Returns first polygon on triangulation.
64   inline const Handle(Poly_PolygonOnTriangulation)& First() const
65   {
66     return myFirst;
67   }
68
69   //! Returns last polygon on triangulation.
70   inline const Handle(Poly_PolygonOnTriangulation)& Last() const
71   {
72     return myLast;
73   }
74
75 private:
76
77   Handle(Poly_PolygonOnTriangulation) myFirst;
78   Handle(Poly_PolygonOnTriangulation) myLast;
79 };
80
81 #endif