X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHUtils%2FSMESH_TypeDefs.hxx;h=f6fcdb505ef2105b2e757d4bd19c296b634715e6;hb=88ff35ddd4a4442397bc5f6ba893aaf9c51b1856;hp=9fbc5b076ade419dc7c865af26091a5a74b79c3b;hpb=560f8b2d0c2a7fdb4047f981cfac56ed3629bc1a;p=modules%2Fsmesh.git diff --git a/src/SMESHUtils/SMESH_TypeDefs.hxx b/src/SMESHUtils/SMESH_TypeDefs.hxx index 9fbc5b076..f6fcdb505 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-2021 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 @@ -32,6 +32,8 @@ #include "SMDS_SetIterator.hxx" #include "SMDS_MeshNode.hxx" +#include + #include #include @@ -76,6 +78,7 @@ namespace SMESHUtils TVECTOR v2( vec ); vec.swap( v2 ); } + /*! * \brief Auto pointer */ @@ -91,6 +94,7 @@ namespace SMESHUtils private: Deleter( const Deleter& ); }; + /*! * \brief Auto pointer to array */ @@ -104,6 +108,9 @@ namespace SMESHUtils ArrayDeleter( const ArrayDeleter& ); }; + /*! + * \return SMDS_ElemIteratorPtr on an std container of SMDS_MeshElement's + */ template < class ELEM_SET > SMDS_ElemIteratorPtr elemSetIterator( const ELEM_SET& elements ) { @@ -111,6 +118,24 @@ namespace SMESHUtils < 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 ); + } } //======================================================================= @@ -131,7 +156,7 @@ struct SMESH_TLink: public NLink // methods for usage of SMESH_TLink as a hasher in NCollection maps static int HashCode(const SMESH_TLink& link, int aLimit) { - return ::HashCode( link.node1()->GetID() + link.node2()->GetID(), aLimit ); + return smIdHasher::HashCode( link.node1()->GetID() + link.node2()->GetID(), aLimit ); } static Standard_Boolean IsEqual(const SMESH_TLink& l1, const SMESH_TLink& l2) { @@ -185,6 +210,21 @@ struct SMESH_TNodeXYZ : public gp_XYZ }; 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 smIdHasher::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 @@ -198,7 +238,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(); }