Salome HOME
PAL13409: EDF282 SMESH: Tetrahedron is added if we specify Mefisto.
[modules/smesh.git] / src / SMDS / SMDS_MeshNode.hxx
index f53630705b57fff437725290405a7d9307216d49..884e1280db7960f569dba5ae58bf74cb80596200 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with this library; if not, write to the Free Software 
 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
 // 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 
 #include "SMDS_MeshElement.hxx"
 #include "SMDS_Position.hxx"
+#include <NCollection_List.hxx>
 
-#include <set>
-using namespace std;
+//#ifdef WNT
+//#include <SALOME_WNT.hxx>
+//#else
+//#define SALOME_WNT_EXPORT
+//#endif
 
-class SMDS_MeshNode:public SMDS_MeshElement
+#if defined WNT && defined WIN32 && defined SMDS_EXPORTS
+#define SMDS_WNT_EXPORT __declspec( dllexport )
+#else
+#define SMDS_WNT_EXPORT
+#endif
+
+class SMDS_WNT_EXPORT SMDS_MeshNode:public SMDS_MeshElement
 {
 
   public:
        SMDS_MeshNode(double x, double y, double z);
-       void Print(ostream & OS) const;
+       void Print(std::ostream & OS) const;
        double X() const;
        double Y() const;
        double Z() const;
@@ -46,23 +56,31 @@ class SMDS_MeshNode:public SMDS_MeshElement
        void RemoveInverseElement(const SMDS_MeshElement * parent);
        void ClearInverseElements();
        bool emptyInverseElements();
-       SMDS_Iterator<const SMDS_MeshElement*> * GetInverseElementIterator() const;     
-       void SetPosition(SMDS_Position * aPos);
-       SMDS_Position *GetPosition();
-       const SMDS_Position *GetPosition() const;
+       SMDS_ElemIteratorPtr GetInverseElementIterator() const; 
+       void SetPosition(const SMDS_PositionPtr& aPos);
+       const SMDS_PositionPtr& GetPosition() const;
        SMDSAbs_ElementType GetType() const;
        int NbNodes() const;
        void setXYZ(double x, double y, double z);
        friend bool operator<(const SMDS_MeshNode& e1, const SMDS_MeshNode& e2);
 
+  /*!
+   * \brief Return node by its index
+    * \param ind - node index
+    * \retval const SMDS_MeshNode* - the node
+   * 
+   * Index is wrapped if it is out of a valid range
+   */
+  virtual const SMDS_MeshNode* GetNode(const int) const { return this; }
+
   protected:
-       SMDS_Iterator<const SMDS_MeshElement *> *
+       SMDS_ElemIteratorPtr
                elementsIterator(SMDSAbs_ElementType type) const;
 
   private:
        double myX, myY, myZ;
-       SMDS_Position *myPosition;
-       set<const SMDS_MeshElement*> myInverseElements;
+       SMDS_PositionPtr myPosition;
+       NCollection_List<const SMDS_MeshElement*> myInverseElements;
 };
 
 #endif