X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHUtils%2FSMESH_TypeDefs.hxx;h=ddca90c8124121670c6c3c31471a3942d4e48bd1;hp=dc74b070247dbd56726b7030b4641d3312a4e28e;hb=0fc0831670e27a5611b941c52dc152fd63964515;hpb=04f997252152407f9180e03f0af428ab2ca6f4be diff --git a/src/SMESHUtils/SMESH_TypeDefs.hxx b/src/SMESHUtils/SMESH_TypeDefs.hxx index dc74b0702..ddca90c81 100644 --- a/src/SMESHUtils/SMESH_TypeDefs.hxx +++ b/src/SMESHUtils/SMESH_TypeDefs.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2020 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 @@ -29,6 +29,7 @@ #include "SMESH_Utils.hxx" +#include "SMDS_SetIterator.hxx" #include "SMDS_MeshNode.hxx" #include @@ -39,6 +40,8 @@ #include #include +#include + typedef std::map, TIDCompare > TElemOfElemListMap; typedef std::map + SMDS_ElemIteratorPtr elemSetIterator( const ELEM_SET& elements ) + { + typedef SMDS_SetIterator + < SMDS_pElement, typename ELEM_SET::const_iterator> TSetIterator; + return boost::make_shared< TSetIterator >( elements.begin(), elements.end() ); + } + + /*! + * \brief Increment enum value + */ + template < typename ENUM > + void Increment( ENUM& v, int delta=1 ) + { + v = ENUM( int(v)+delta ); + } + + /*! + * \brief Return incremented enum value + */ + template < typename ENUM > + ENUM Add( ENUM v, int delta ) + { + return ENUM( int(v)+delta ); + } } //======================================================================= @@ -127,6 +161,7 @@ struct SMESH_TLink: public NLink return ( l1.node1() == l2.node1() && l1.node2() == l2.node2() ); } }; +typedef SMESH_TLink SMESH_Link; //======================================================================= /*! @@ -163,12 +198,31 @@ struct SMESH_TNodeXYZ : public gp_XYZ } return false; } + const SMDS_MeshNode* Node() const { return _node; } double Distance(const SMDS_MeshNode* n) const { return (SMESH_TNodeXYZ( n )-*this).Modulus(); } double SquareDistance(const SMDS_MeshNode* n) const { return (SMESH_TNodeXYZ( n )-*this).SquareModulus(); } bool operator==(const SMESH_TNodeXYZ& other) const { return _node == other._node; } + bool operator!=(const SMESH_TNodeXYZ& other) const { return _node != other._node; } + bool operator!() const { return !_node; } + const SMDS_MeshNode* operator->() const { return _node; } }; typedef SMESH_TNodeXYZ SMESH_NodeXYZ; +// -------------------------------------------------------------------------------- +// SMESH_Hasher provide methods needed to put mesh data to NCollection maps + +struct SMESH_Hasher +{ + static Standard_Integer HashCode(const SMDS_MeshElement* e, const Standard_Integer upper) + { + return ::HashCode( e->GetID(), upper ); + } + static Standard_Boolean IsEqual( const SMDS_MeshElement* e1, const SMDS_MeshElement* e2 ) + { + return ( e1 == e2 ); + } +}; + //-------------------------------------------------- /*! * \brief Data of a node generated on FACE boundary @@ -182,7 +236,7 @@ typedef struct uvPtStruct double x, y; // 2d parameter, normalized [0,1] const SMDS_MeshNode * node; - uvPtStruct(): node(NULL) {} + uvPtStruct(const SMDS_MeshNode* n = 0): node(n) {} inline gp_XY UV() const { return gp_XY( u, v ); } inline void SetUV( const gp_XY& uv ) { u = uv.X(); v = uv.Y(); } @@ -198,17 +252,12 @@ typedef std::vector< UVPtStruct > UVPtStructVec; // -------------------------------------------------------------------------------- // class SMESH_SequenceOfElemPtr -#include - -class SMDS_MeshElement; - -typedef const SMDS_MeshElement* SMDS_MeshElementPtr; - -DEFINE_SEQUENCE (SMESH_SequenceOfElemPtr, SMESH_BaseCollectionElemPtr, SMDS_MeshElementPtr) +typedef std::vector< const SMDS_MeshElement* > SMESH_SequenceOfElemPtr; // -------------------------------------------------------------------------------- // class SMESH_SequenceOfNode +#include typedef const SMDS_MeshNode* SMDS_MeshNodePtr; DEFINE_SEQUENCE(SMESH_SequenceOfNode,