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=b172560d05537bb19b1a85122cad1045f9c7d9b9;hb=d8bc11015235c68631ac85d7e8cf278edc9809d1;hpb=77bf33663f94d6669ed79afe6dc33c2a1b335d86 diff --git a/src/SMDS/SMDS_LinearEdge.cxx b/src/SMDS/SMDS_LinearEdge.cxx index b172560d0..1d58368d4 100644 --- a/src/SMDS/SMDS_LinearEdge.cxx +++ b/src/SMDS/SMDS_LinearEdge.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2013 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 @@ -6,7 +6,7 @@ // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either -// version 2.1 of the License. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -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; }