0031137: Modeling Data, BinTools_ShapeSet - avoid allocation of temporary arrays
[occt.git] / src / Poly / Poly_Triangle.hxx
index 9722440..b00ff5f 100644 (file)
 #include <Standard.hxx>
 #include <Standard_DefineAlloc.hxx>
 #include <Standard_Handle.hxx>
-
 #include <Standard_Integer.hxx>
-class Standard_OutOfRange;
-
+#include <Standard_OutOfRange.hxx>
 
-//! Describes a component triangle of a triangulation
-//! (Poly_Triangulation object).
-//! A Triangle is defined by a triplet of nodes. Each node is an
-//! index in the table of nodes specific to an existing
+//! Describes a component triangle of a triangulation (Poly_Triangulation object).
+//! A Triangle is defined by a triplet of nodes.
+//! Each node is an index in the table of nodes specific to an existing
 //! triangulation of a shape, and represents a point on the surface.
-class Poly_Triangle 
+class Poly_Triangle
 {
 public:
 
   DEFINE_STANDARD_ALLOC
 
-  
   //! Constructs a triangle and sets all indices to zero.
-  Standard_EXPORT Poly_Triangle();
-  
-  //! Constructs a triangle and sets its three indices
-  //! to N1, N2 and N3 respectively, where these node values
-  //! are indices in the table of nodes specific to an existing
-  //! triangulation of a shape.
-  Standard_EXPORT Poly_Triangle(const Standard_Integer N1, const Standard_Integer N2, const Standard_Integer N3);
-  
-  //! Sets the value of  the three nodes of this triangle to N1, N2 and N3   respectively.
-  Standard_EXPORT void Set (const Standard_Integer N1, const Standard_Integer N2, const Standard_Integer N3);
-  
-  //! Sets the value of  the Indexth node of this triangle to Node.
-  //! Raises OutOfRange if Index is not in 1,2,3
-    void Set (const Standard_Integer Index, const Standard_Integer Node);
-  
-  //! Returns the node indices of this triangle in N1, N2 and N3.
-  Standard_EXPORT void Get (Standard_Integer& N1, Standard_Integer& N2, Standard_Integer& N3) const;
+  Poly_Triangle() { myNodes[0] =  myNodes[1] = myNodes[2] = 0; }
+
+  //! Constructs a triangle and sets its three indices,
+  //! where these node values are indices in the table of nodes specific to an existing triangulation of a shape.
+  Poly_Triangle (const Standard_Integer theN1, const Standard_Integer theN2, const Standard_Integer theN3)
+  {
+    myNodes[0] = theN1;
+    myNodes[1] = theN2;
+    myNodes[2] = theN3;
+  }
+
+  //! Sets the value of the three nodes of this triangle.
+  void Set (const Standard_Integer theN1, const Standard_Integer theN2, const Standard_Integer theN3)
+  {
+    myNodes[0] = theN1;
+    myNodes[1] = theN2;
+    myNodes[2] = theN3;
+  }
   
+  //! Sets the value of node with specified index of this triangle.
+  //! Raises Standard_OutOfRange if index is not in 1,2,3
+  void Set (const Standard_Integer theIndex, const Standard_Integer theNode)
+  {
+    Standard_OutOfRange_Raise_if(theIndex < 1 || theIndex > 3, "Poly_Triangle::Set(), invalid index");
+    myNodes[theIndex - 1] = theNode;
+  }
+
+  //! Returns the node indices of this triangle.
+  void Get (Standard_Integer& theN1, Standard_Integer& theN2, Standard_Integer& theN3) const
+  {
+    theN1 = myNodes[0];
+    theN2 = myNodes[1];
+    theN3 = myNodes[2];
+  }
+
   //! Get the node of given Index.
   //! Raises OutOfRange from Standard if Index is not in 1,2,3
-    Standard_Integer Value (const Standard_Integer Index) const;
-  Standard_Integer operator() (const Standard_Integer Index) const
-{
-  return Value(Index);
-}
-  
-  //! Get the node of given Index.
-  //! Raises OutOfRange if Index is not in 1,2,3
-    Standard_Integer& ChangeValue (const Standard_Integer Index);
-  Standard_Integer& operator() (const Standard_Integer Index)
-{
-  return ChangeValue(Index);
-}
-
-
-
-
-protected:
-
+  Standard_Integer Value (const Standard_Integer theIndex) const
+  {
+    Standard_OutOfRange_Raise_if(theIndex < 1 || theIndex > 3, "Poly_Triangle::Value(), invalid index");
+    return myNodes[theIndex - 1];
+  }
 
+  Standard_Integer operator() (const Standard_Integer Index) const { return Value(Index); }
 
+  //! Get the node of given Index.
+  //! Raises OutOfRange if Index is not in 1,2,3
+  Standard_Integer& ChangeValue (const Standard_Integer theIndex)
+  {
+    Standard_OutOfRange_Raise_if(theIndex < 1 || theIndex > 3, "Poly_Triangle::ChangeValue(), invalid index");
+    return myNodes[theIndex - 1];
+  }
 
+  Standard_Integer& operator() (const Standard_Integer Index) { return ChangeValue(Index); }
 
 private:
 
-
-
   Standard_Integer myNodes[3];
 
-
 };
 
-
-#include <Poly_Triangle.lxx>
-
-
-
-
-
 #endif // _Poly_Triangle_HeaderFile