X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHDS%2FSMESHDS_SubMesh.hxx;h=3a31915c44685922bbc9f7dff3d3c0ef46bc73c0;hp=334965d89a2d52a9900d24178b22a9ff48eff54c;hb=2f529dcd2629679dadcca3047583bfcf28ca7b1a;hpb=8b4ba0cdff7660465a9ea7b26ef0df0757afed97 diff --git a/src/SMESHDS/SMESHDS_SubMesh.hxx b/src/SMESHDS/SMESHDS_SubMesh.hxx index 334965d89..3a31915c4 100644 --- a/src/SMESHDS/SMESHDS_SubMesh.hxx +++ b/src/SMESHDS/SMESHDS_SubMesh.hxx @@ -1,138 +1,99 @@ -// File generated by CPPExt (Transient) +// Copyright (C) 2007-2016 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; - +#include "SMESH_SMESHDS.hxx" -class SMESHDS_SubMesh : public MMgt_TShared { +#include "SMDS_ElementHolder.hxx" +#include "SMDS_Mesh.hxx" +#include -public: +#include +class SMESHDS_SubMesh; +typedef boost::container::flat_set< const SMESHDS_SubMesh* > TSubMeshSet; - 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(); +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 SMDS_ElementHolder +{ + public: + SMESHDS_SubMesh(const SMESHDS_Mesh *parent, int index); + virtual ~SMESHDS_SubMesh(); + virtual bool IsComplexSubmesh() const { return !mySubMeshes.empty(); } - // 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; + // if !IsComplexSubmesh() + virtual void AddElement(const SMDS_MeshElement * ME); + virtual bool RemoveElement(const SMDS_MeshElement * ME); // ret true if ME was in + virtual void AddNode(const SMDS_MeshNode * ME); + virtual bool RemoveNode(const SMDS_MeshNode * ME); // ret true if ME was in -protected: + // 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; - // Methods PROTECTED - // + // for both types + virtual int NbElements() const; + virtual int NbNodes() const; + virtual SMDS_ElemIteratorPtr GetElements() 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(); - // Fields PROTECTED - // + SMESHDS_Mesh* GetParent() const { return const_cast< SMESHDS_Mesh*>( myParent ); } + int GetID() const { return myIndex; } + protected: // methods of SMDS_ElementHolder -private: + virtual SMDS_ElemIteratorPtr getElements(); + virtual void tmpClear(); + virtual void add( const SMDS_MeshElement* element ); + virtual void compact() {} - // 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; + private: + int myIndex; + int myNbElements; + int myNbNodes; + const SMDS_MeshElement* my1stElemNode[2]; // elem and node with least ID, to optimize iteration + const SMESHDS_Mesh * myParent; + TSubMeshSet mySubMeshes; }; - - - - - -// other inline functions and methods (like "C++: function call" methods) -// - - #endif