X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHDS%2FSMESHDS_SubMesh.hxx;h=c70857c6028dbb30952e6fa6671643a764a11e23;hp=334965d89a2d52a9900d24178b22a9ff48eff54c;hb=7084b4f9799cf4a0145ba86ab8b653de8f2d2bdb;hpb=8b4ba0cdff7660465a9ea7b26ef0df0757afed97 diff --git a/src/SMESHDS/SMESHDS_SubMesh.hxx b/src/SMESHDS/SMESHDS_SubMesh.hxx index 334965d89..c70857c60 100644 --- a/src/SMESHDS/SMESHDS_SubMesh.hxx +++ b/src/SMESHDS/SMESHDS_SubMesh.hxx @@ -1,138 +1,91 @@ -// File generated by CPPExt (Transient) +// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE // -// Copyright (C) 1991,1995 by -// -// MATRA DATAVISION, FRANCE -// -// This software is furnished in accordance with the terms and conditions -// of the contract and with the inclusion of the above copyright notice. -// This software or any other copy thereof may not be provided or otherwise -// be made available to any other person. No title to an ownership of the -// software is hereby transferred. -// -// At the termination of the contract, the software and all copies of this -// software must be deleted. +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// 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, 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 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +// SMESH SMESHDS : management of mesh data and SMESH document +// File : SMESHDS_SubMesh.hxx +// Module : SMESH // #ifndef _SMESHDS_SubMesh_HeaderFile #define _SMESHDS_SubMesh_HeaderFile -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_SMESHDS_SubMesh_HeaderFile -#include "Handle_SMESHDS_SubMesh.hxx" -#endif - -#ifndef _Handle_SMDS_Mesh_HeaderFile -#include "Handle_SMDS_Mesh.hxx" -#endif -#ifndef _SMDS_MapOfMeshElement_HeaderFile -#include "SMDS_MapOfMeshElement.hxx" -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -#ifndef _TColStd_ListOfInteger_HeaderFile -#include -#endif -#ifndef _MMgt_TShared_HeaderFile -#include -#endif -#ifndef _Handle_SMDS_MeshElement_HeaderFile -#include "Handle_SMDS_MeshElement.hxx" -#endif -#ifndef _Handle_SMDS_MeshNode_HeaderFile -#include "Handle_SMDS_MeshNode.hxx" -#endif -#ifndef _Standard_Integer_HeaderFile -#include -#endif -class SMDS_Mesh; -class SMDS_MeshElement; -class SMDS_MeshNode; -class SMDS_MapOfMeshElement; -class TColStd_ListOfInteger; - - -class SMESHDS_SubMesh : public MMgt_TShared { - -public: - - inline void* operator new(size_t,void* anAddress) - { - return anAddress; - } - inline void* operator new(size_t size) - { - return Standard::Allocate(size); - } - inline void operator delete(void *anAddress) - { - if (anAddress) Standard::Free((Standard_Address&)anAddress); - } -// inline void operator delete(void *anAddress, size_t size) -// { -// if (anAddress) Standard::Free((Standard_Address&)anAddress,size); -// } - // Methods PUBLIC - // -Standard_EXPORT SMESHDS_SubMesh(const Handle(SMDS_Mesh)& M); -Standard_EXPORT void AddElement(const Handle(SMDS_MeshElement)& ME) ; -Standard_EXPORT void RemoveElement(const Handle(SMDS_MeshElement)& ME) ; -Standard_EXPORT void AddNode(const Handle(SMDS_MeshNode)& ME) ; -Standard_EXPORT void RemoveNode(const Handle(SMDS_MeshNode)& ME) ; -Standard_EXPORT Standard_Integer NbElements() ; -Standard_EXPORT const SMDS_MapOfMeshElement& GetElements() ; -Standard_EXPORT const TColStd_ListOfInteger& GetIDElements() ; -Standard_EXPORT Standard_Integer NbNodes() ; -Standard_EXPORT const SMDS_MapOfMeshElement& GetNodes() ; -Standard_EXPORT const TColStd_ListOfInteger& GetIDNodes() ; -Standard_EXPORT ~SMESHDS_SubMesh(); - - - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& SMESHDS_SubMesh_Type_(); - Standard_EXPORT const Handle(Standard_Type)& DynamicType() const; - Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)&) const; - -protected: - - // Methods PROTECTED - // - - - // Fields PROTECTED - // - - -private: - - // Methods PRIVATE - // - - - // Fields PRIVATE - // -Handle_SMDS_Mesh myMesh; -SMDS_MapOfMeshElement myElements; -SMDS_MapOfMeshElement myNodes; -Standard_Boolean myListOfEltIDIsUpdate; -TColStd_ListOfInteger myListOfEltID; -Standard_Boolean myListOfNodeIDIsUpdate; -TColStd_ListOfInteger myListOfNodeID; - - +#include "SMESH_SMESHDS.hxx" + +#include "SMDS_Mesh.hxx" +#include +#include + +class SMESHDS_SubMesh; +typedef SMDS_Iterator SMESHDS_SubMeshIterator; +typedef boost::shared_ptr< SMESHDS_SubMeshIterator > SMESHDS_SubMeshIteratorPtr; + +class SMESHDS_Mesh; + +class SMESHDS_EXPORT SMESHDS_SubMesh +{ + public: + SMESHDS_SubMesh(SMESHDS_Mesh *parent, int index); + virtual ~SMESHDS_SubMesh(); + + virtual bool IsComplexSubmesh() const { return !mySubMeshes.empty(); } + + // if !IsComplexSubmesh() + virtual void AddElement(const SMDS_MeshElement * ME); + virtual bool RemoveElement(const SMDS_MeshElement * ME, bool isElemDeleted); // ret true if ME was in + virtual void AddNode(const SMDS_MeshNode * ME); + virtual bool RemoveNode(const SMDS_MeshNode * ME, bool isNodeDeleted); // ret true if ME was in + + // if IsComplexSubmesh() + void AddSubMesh( const SMESHDS_SubMesh* theSubMesh ); + bool RemoveSubMesh( const SMESHDS_SubMesh* theSubMesh ); + void RemoveAllSubmeshes(); + bool ContainsSubMesh( const SMESHDS_SubMesh* theSubMesh ) const; + int NbSubMeshes() const { return mySubMeshes.size(); } + SMESHDS_SubMeshIteratorPtr GetSubMeshIterator() const; + + // for both types + virtual int NbElements() const; + virtual SMDS_ElemIteratorPtr GetElements() const; + virtual int NbNodes() const; + virtual SMDS_NodeIteratorPtr GetNodes() const; + virtual bool Contains(const SMDS_MeshElement * ME) const; // check if elem or node is in + virtual bool IsQuadratic() const; + + // clear the contents + virtual void Clear(); + int getSize(); + void compactList(); + + SMESHDS_Mesh* GetParent() const { return const_cast< SMESHDS_Mesh*>( myParent ); } + int GetID() const { return myIndex; } + + private: + SMESHDS_Mesh * myParent; + std::vector myElements; + std::vector myNodes; + + int myUnusedIdNodes; + int myUnusedIdElements; + int myIndex; + + std::set mySubMeshes; }; - - - - - -// other inline functions and methods (like "C++: function call" methods) -// - - #endif