X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMDS%2FSMDS_LinearEdge.cxx;h=1d58368d426263a16f74037bddc22475403586ec;hp=37a3cc3e709d01d595a78d6df9dd236d33815905;hb=19fe2e412fa1cb1fd33d7a2580b2483280db811e;hpb=251f8c052dd12dd29922210dc901b295fe999a0e diff --git a/src/SMDS/SMDS_LinearEdge.cxx b/src/SMDS/SMDS_LinearEdge.cxx index 37a3cc3e7..1d58368d4 100644 --- a/src/SMDS/SMDS_LinearEdge.cxx +++ b/src/SMDS/SMDS_LinearEdge.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -28,11 +28,10 @@ #endif #include "SMDS_LinearEdge.hxx" -#include "SMDS_IteratorOfElements.hxx" #include "SMDS_MeshNode.hxx" -#include "utilities.h" +#include "SMDS_SetIterator.hxx" -using namespace std; +#include //======================================================================= //function : SMDS_LinearEdge @@ -42,22 +41,10 @@ using namespace std; SMDS_LinearEdge::SMDS_LinearEdge(const SMDS_MeshNode * node1, const SMDS_MeshNode * node2) { - //MESSAGE("SMDS_LinearEdge " << GetID()); myNodes[0] = node1; myNodes[1] = node2; } -//======================================================================= -//function : Print -//purpose : -//======================================================================= - -void SMDS_LinearEdge::Print(ostream & OS) const -{ - OS << "edge <" << GetID() << "> : (" << myNodes[0] << " , " << myNodes[1] - << ") " << endl; -} - int SMDS_LinearEdge::NbNodes() const { return 2; @@ -68,75 +55,29 @@ int SMDS_LinearEdge::NbEdges() const return 1; } -class SMDS_LinearEdge_MyNodeIterator: public SMDS_ElemIterator +int SMDS_LinearEdge::NbFaces() const { - const SMDS_MeshNode * const * myNodes; - int myIndex; -public: - SMDS_LinearEdge_MyNodeIterator(const SMDS_MeshNode * const * nodes) : - myNodes(nodes), myIndex(0) - { - } - - bool more() - { - return myIndex < 2; - } - - const SMDS_MeshElement* next() - { - myIndex++; - return myNodes[myIndex - 1]; - } -}; + return 0; +} -SMDS_ElemIteratorPtr SMDS_LinearEdge::elementsIterator(SMDSAbs_ElementType type) const +int SMDS_LinearEdge::GetNodeIndex( const SMDS_MeshNode* node ) const { - switch (type) - { - case SMDSAbs_Edge: - return SMDS_MeshElement::elementsIterator(SMDSAbs_Edge); - case SMDSAbs_Node: - return SMDS_ElemIteratorPtr(new SMDS_LinearEdge_MyNodeIterator(myNodes)); - default: - return SMDS_ElemIteratorPtr - (new SMDS_IteratorOfElements(this, - type, - SMDS_ElemIteratorPtr - (new SMDS_LinearEdge_MyNodeIterator(myNodes)))); - } + if ( node == myNodes[0] ) return 0; + if ( node == myNodes[1] ) return 1; + return -1; } -bool operator<(const SMDS_LinearEdge & e1, const SMDS_LinearEdge & e2) +SMDS_ElemIteratorPtr SMDS_LinearEdge::nodesIterator() const { - int id11 = e1.myNodes[0]->getVtkId(); - int id21 = e2.myNodes[0]->getVtkId(); - int id12 = e1.myNodes[1]->getVtkId(); - int id22 = e2.myNodes[1]->getVtkId(); - int tmp; - - if (id11 >= id12) - { - tmp = id11; - id11 = id12; - id12 = tmp; - } - if (id21 >= id22) - { - tmp = id21; - id21 = id22; - id22 = tmp; - } + return boost::make_shared< SMDS_NodeArrayElemIterator >( &myNodes[0], &myNodes[0] + NbNodes() ); +} - if (id11 < id21) - return true; - else if (id11 == id21) - return (id21 < id22); - else - return false; +SMDS_NodeIteratorPtr SMDS_LinearEdge::nodeIterator() const +{ + return boost::make_shared< SMDS_NodeArrayIterator >( &myNodes[0], &myNodes[0] + NbNodes() ); } -/*! +/* * \brief Return node by its index * \param ind - node index * \retval const SMDS_MeshNode* - the node @@ -151,10 +92,9 @@ const SMDS_MeshNode* SMDS_LinearEdge::GetNode(const int ind) const //purpose : //======================================================================= -bool SMDS_LinearEdge::ChangeNodes(const SMDS_MeshNode * node1, - const SMDS_MeshNode * node2) +bool SMDS_LinearEdge::ChangeNodes(const SMDS_MeshNode* nodes[], const int nbNodes) { - myNodes[0] = node1; - myNodes[1] = node2; - return true; + myNodes[0] = nodes[0]; + myNodes[1] = nodes[1]; + return nbNodes == 2; }