From d7407cdcaeab6702d88b54cf45fdbbd58f8d74f9 Mon Sep 17 00:00:00 2001 From: eap Date: Tue, 18 Oct 2005 12:47:00 +0000 Subject: [PATCH] PAL10196. Rename GetGroupNames() -> GetGroupNamesAndTypes(), add checkFamilyId() --- src/DriverMED/DriverMED_R_SMESHDS_Mesh.cxx | 55 +++++++++++++++------- src/DriverMED/DriverMED_R_SMESHDS_Mesh.h | 13 ++++- 2 files changed, 50 insertions(+), 18 deletions(-) diff --git a/src/DriverMED/DriverMED_R_SMESHDS_Mesh.cxx b/src/DriverMED/DriverMED_R_SMESHDS_Mesh.cxx index 1433e3208..4bf953aef 100644 --- a/src/DriverMED/DriverMED_R_SMESHDS_Mesh.cxx +++ b/src/DriverMED/DriverMED_R_SMESHDS_Mesh.cxx @@ -184,6 +184,7 @@ Driver_Mesh::Status DriverMED_R_SMESHDS_Mesh::Perform() if(MYDEBUG) MESSAGE(aGroupName); aFamily->AddGroupName(aGroupName); } + aFamily->SetId( aFamId ); myFamilies[aFamId] = aFamily; } } @@ -231,6 +232,7 @@ Driver_Mesh::Status DriverMED_R_SMESHDS_Mesh::Perform() EBooleen anIsNodeNum = aNodeInfo->IsElemNum(); TInt aNbElems = aNodeInfo->GetNbElem(); if(MYDEBUG) MESSAGE("Perform - aNodeInfo->GetNbElem() = "<MemberOf(aGroupName)) + if (aFamily->GetType() == theGroup->GetType() && aFamily->MemberOf(aGroupName)) { const set& anElements = aFamily->GetElements(); - set::iterator anElemsIter = anElements.begin(); + set::const_iterator anElemsIter = anElements.begin(); const SMDS_MeshElement * element = 0; for (; anElemsIter != anElements.end(); anElemsIter++) { @@ -607,7 +611,7 @@ void DriverMED_R_SMESHDS_Mesh::GetSubMesh (SMESHDS_SubMesh* theSubMesh, if (aFamily->MemberOf(aName)) { const set& anElements = aFamily->GetElements(); - set::iterator anElemsIter = anElements.begin(); + set::const_iterator anElemsIter = anElements.begin(); if (aFamily->GetType() == SMDSAbs_Node) { for (; anElemsIter != anElements.end(); anElemsIter++) @@ -676,3 +680,20 @@ void DriverMED_R_SMESHDS_Mesh::CreateAllSubMeshes () } } } +/*! + * \brief Ensure aFamily to have required ID + * \param aFamily - a family to check and update + * \param anID - an ID aFamily should have + * \retval bool - true if successful + */ +bool DriverMED_R_SMESHDS_Mesh::checkFamilyID(DriverMED_FamilyPtr & aFamily, int anID) const +{ + if ( !aFamily || aFamily->GetId() != anID ) { + map::const_iterator i_fam = myFamilies.find(anID); + if ( i_fam == myFamilies.end() ) + return false; + aFamily = i_fam->second; + } + return ( aFamily->GetId() == anID ); +} + diff --git a/src/DriverMED/DriverMED_R_SMESHDS_Mesh.h b/src/DriverMED/DriverMED_R_SMESHDS_Mesh.h index fe1322b12..cb72bccdf 100644 --- a/src/DriverMED/DriverMED_R_SMESHDS_Mesh.h +++ b/src/DriverMED/DriverMED_R_SMESHDS_Mesh.h @@ -36,12 +36,14 @@ class SMESHDS_Mesh; class SMESHDS_Group; class SMESHDS_SubMesh; +typedef std::pair< std::string, SMDSAbs_ElementType > TNameAndType; + class DriverMED_R_SMESHDS_Mesh: public Driver_SMESHDS_Mesh { public: virtual Status Perform(); - std::list GetGroupNames(); + std::list< TNameAndType > GetGroupNamesAndTypes(); void GetGroup(SMESHDS_Group* theGroup); void CreateAllSubMeshes(); void GetSubMesh(SMESHDS_SubMesh* theSubMesh, const int theId); @@ -49,6 +51,15 @@ class DriverMED_R_SMESHDS_Mesh: public Driver_SMESHDS_Mesh std::list GetMeshNames(Status& theStatus); void SetMeshName(std::string theMeshName); + private: + /*! + * \brief Ensure aFamily has required ID + * \param aFamily - a family to check + * \param anID - an ID aFamily should have + * \retval bool - true if successful + */ + bool checkFamilyID(DriverMED_FamilyPtr & aFamily, int anID) const; + private: std::string myMeshName; std::map myFamilies;