X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHUtils%2FSMESH_TypeDefs.hxx;h=2e920132d4aecac0e10e544f6e3340ae1f1f101a;hb=HEAD;hp=8da7c6a9b09bb2f51b83b35f8e94def565c5ce04;hpb=d9f4b53e489dd5857db264ede6acded7b076c9f1;p=modules%2Fsmesh.git diff --git a/src/SMESHUtils/SMESH_TypeDefs.hxx b/src/SMESHUtils/SMESH_TypeDefs.hxx index 8da7c6a9b..9ae5a4ce2 100644 --- a/src/SMESHUtils/SMESH_TypeDefs.hxx +++ b/src/SMESHUtils/SMESH_TypeDefs.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2022 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2024 CEA, EDF, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -27,6 +27,8 @@ #ifndef __SMESH_TypeDefs_HXX__ #define __SMESH_TypeDefs_HXX__ +#include + #include "SMESH_Utils.hxx" #include "SMDS_SetIterator.hxx" @@ -36,6 +38,7 @@ #include #include +#include #include #include @@ -156,6 +159,19 @@ struct SMESH_TLink: public NLink const SMDS_MeshNode* node2() const { return second; } // methods for usage of SMESH_TLink as a hasher in NCollection maps + //static int HashCode(const SMESH_TLink& link, int aLimit) + //{ + // return smIdHasher::HashCode( link.node1()->GetID() + link.node2()->GetID(), aLimit ); + //} + //static Standard_Boolean IsEqual(const SMESH_TLink& l1, const SMESH_TLink& l2) + //{ + // return ( l1.node1() == l2.node1() && l1.node2() == l2.node2() ); + //} +}; +// a hasher in NCollection maps +struct SMESH_TLinkHasher +{ +#if OCC_VERSION_LARGE < 0x07080000 static int HashCode(const SMESH_TLink& link, int aLimit) { return smIdHasher::HashCode( link.node1()->GetID() + link.node2()->GetID(), aLimit ); @@ -164,6 +180,16 @@ struct SMESH_TLink: public NLink { return ( l1.node1() == l2.node1() && l1.node2() == l2.node2() ); } +#else + size_t operator()(const SMESH_TLink& link) const + { + return smIdHasher()( link.node1()->GetID() + link.node2()->GetID() ); + } + bool operator()(const SMESH_TLink& l1, const SMESH_TLink& l2) const + { + return ( l1.node1() == l2.node1() && l1.node2() == l2.node2() ); + } +#endif }; typedef SMESH_TLink SMESH_Link; @@ -202,6 +228,7 @@ struct SMESH_TNodeXYZ : public gp_XYZ } return false; } + void SetXYZ( const gp_XYZ& p ) { SetCoord( p.X(), p.Y(), p.Z() ); } 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(); } @@ -217,6 +244,7 @@ typedef SMESH_TNodeXYZ SMESH_NodeXYZ; struct SMESH_Hasher { +#if OCC_VERSION_LARGE < 0x07080000 static Standard_Integer HashCode(const SMDS_MeshElement* e, const Standard_Integer upper) { return smIdHasher::HashCode( e->GetID(), upper ); @@ -225,6 +253,17 @@ struct SMESH_Hasher { return ( e1 == e2 ); } +#else + size_t operator()(const SMDS_MeshElement* e) const + { + return smIdHasher()( e->GetID() ); + } + + bool operator()(const SMDS_MeshElement* e1, const SMDS_MeshElement* e2) const + { + return ( e1 == e2 ); + } +#endif }; //-------------------------------------------------- @@ -261,10 +300,8 @@ typedef std::vector< const SMDS_MeshElement* > SMESH_SequenceOfElemPtr; // -------------------------------------------------------------------------------- // class SMESH_SequenceOfNode -#include -typedef const SMDS_MeshNode* SMDS_MeshNodePtr; -DEFINE_SEQUENCE(SMESH_SequenceOfNode, - SMESH_BaseCollectionNodePtr, SMDS_MeshNodePtr) +typedef const SMDS_MeshNode* SMDS_MeshNodePtr; +typedef NCollection_Sequence< SMDS_MeshNodePtr > SMESH_SequenceOfNode; #endif