X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHDS%2FSMESHDS_Mesh.hxx;h=ef18cb4160a6113312e5a4e74159d0112d7e7189;hp=d7eccde86aa41e923c19bdc8e7ef484a48494e6d;hb=2d46bce2985c40bfac0593abad88d590a8efca48;hpb=b64e58d0115eccb2b35fea2b2f787f1be4c44ef2 diff --git a/src/SMESHDS/SMESHDS_Mesh.hxx b/src/SMESHDS/SMESHDS_Mesh.hxx index d7eccde86..ef18cb416 100644 --- a/src/SMESHDS/SMESHDS_Mesh.hxx +++ b/src/SMESHDS/SMESHDS_Mesh.hxx @@ -27,171 +27,87 @@ #ifndef _SMESHDS_Mesh_HeaderFile #define _SMESHDS_Mesh_HeaderFile -#ifndef _Standard_HeaderFile -#include -#endif -#ifndef _Handle_SMESHDS_Mesh_HeaderFile -#include "Handle_SMESHDS_Mesh.hxx" -#endif +#include "SMDS_Mesh.hxx" +#include "SMDS_MeshNode.hxx" +#include "SMDS_MeshEdge.hxx" +#include "SMDS_MeshFace.hxx" +#include "SMDS_MeshVolume.hxx" +#include "SMESHDS_Hypothesis.hxx" +#include "SMESHDS_SubMesh.hxx" +#include "SMESHDS_Script.hxx" -#ifndef _Standard_Integer_HeaderFile -#include -#endif -#ifndef _TopoDS_Shape_HeaderFile +#include #include -#endif -#ifndef _TopoDS_Shell_HeaderFile #include -#endif -#ifndef _TopTools_IndexedMapOfShape_HeaderFile -#include -#endif -#ifndef _SMESHDS_DataMapOfIntegerSubMesh_HeaderFile -#include "SMESHDS_DataMapOfIntegerSubMesh.hxx" -#endif -#ifndef _SMESHDS_DataMapOfShapeListOfPtrHypothesis_HeaderFile -#include "SMESHDS_DataMapOfShapeListOfPtrHypothesis.hxx" -#endif -#ifndef _Handle_SMESHDS_Script_HeaderFile -#include "Handle_SMESHDS_Script.hxx" -#endif -#ifndef _SMDS_Mesh_HeaderFile -#include "SMDS_Mesh.hxx" -#endif -#ifndef _Standard_Boolean_HeaderFile -#include -#endif -#ifndef _SMESHDS_PtrHypothesis_HeaderFile -#include "SMESHDS_PtrHypothesis.hxx" -#endif -#ifndef _Standard_Real_HeaderFile -#include -#endif -#ifndef _Handle_SMDS_MeshNode_HeaderFile -#include "Handle_SMDS_MeshNode.hxx" -#endif -#ifndef _Handle_SMDS_MeshElement_HeaderFile -#include "Handle_SMDS_MeshElement.hxx" -#endif -#ifndef _Handle_SMESHDS_SubMesh_HeaderFile -#include "Handle_SMESHDS_SubMesh.hxx" -#endif -class SMESHDS_Script; -class TopoDS_Shape; -class SMDS_MeshNode; -class TopoDS_Shell; -class TopoDS_Face; -class TopoDS_Edge; -class TopoDS_Vertex; -class SMDS_MeshElement; -class SMESHDS_SubMesh; -class SMESHDS_ListOfPtrHypothesis; - - -class SMESHDS_Mesh : public SMDS_Mesh { - -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_Mesh(const Standard_Integer MeshID); -Standard_EXPORT void ShapeToMesh(const TopoDS_Shape& S) ; -Standard_EXPORT Standard_Boolean AddHypothesis(const TopoDS_Shape& SS,const SMESHDS_PtrHypothesis& H) ; -Standard_EXPORT Standard_Boolean RemoveHypothesis(const TopoDS_Shape& S,const SMESHDS_PtrHypothesis& H) ; -Standard_EXPORT virtual Standard_Integer AddNode(const Standard_Real x,const Standard_Real y,const Standard_Real z) ; -Standard_EXPORT virtual void RemoveNode(const Standard_Integer ID) ; -Standard_EXPORT void MoveNode(const Standard_Integer ID,const Standard_Real x,const Standard_Real y,const Standard_Real z) ; -Standard_EXPORT virtual Standard_Integer AddEdge(const Standard_Integer idnode1,const Standard_Integer idnode2) ; -Standard_EXPORT virtual Standard_Integer AddFace(const Standard_Integer idnode1,const Standard_Integer idnode2,const Standard_Integer idnode3) ; -Standard_EXPORT virtual Standard_Integer AddFace(const Standard_Integer idnode1,const Standard_Integer idnode2,const Standard_Integer idnode3,const Standard_Integer idnode4) ; -Standard_EXPORT virtual Standard_Integer AddVolume(const Standard_Integer idnode1,const Standard_Integer idnode2,const Standard_Integer idnode3,const Standard_Integer idnode4) ; -Standard_EXPORT virtual Standard_Integer AddVolume(const Standard_Integer idnode1,const Standard_Integer idnode2,const Standard_Integer idnode3,const Standard_Integer idnode4,const Standard_Integer idnode5) ; -Standard_EXPORT virtual Standard_Integer AddVolume(const Standard_Integer idnode1,const Standard_Integer idnode2,const Standard_Integer idnode3,const Standard_Integer idnode4,const Standard_Integer idnode5,const Standard_Integer idnode6) ; -Standard_EXPORT virtual Standard_Integer AddVolume(const Standard_Integer idnode1,const Standard_Integer idnode2,const Standard_Integer idnode3,const Standard_Integer idnode4,const Standard_Integer idnode5,const Standard_Integer idnode6,const Standard_Integer idnode7,const Standard_Integer idnode8) ; -Standard_EXPORT virtual void RemoveElement(const Standard_Integer IDelem) ; -Standard_EXPORT void SetNodeInVolume(const Handle(SMDS_MeshNode)& aNode,const TopoDS_Shell& S) ; -Standard_EXPORT void SetNodeOnFace(const Handle(SMDS_MeshNode)& aNode,const TopoDS_Face& S) ; -Standard_EXPORT void SetNodeOnEdge(const Handle(SMDS_MeshNode)& aNode,const TopoDS_Edge& S) ; -Standard_EXPORT void SetNodeOnVertex(const Handle(SMDS_MeshNode)& aNode,const TopoDS_Vertex& S) ; -Standard_EXPORT void UnSetNodeOnShape(const Handle(SMDS_MeshNode)& aNode) ; -Standard_EXPORT void SetMeshElementOnShape(const Handle(SMDS_MeshElement)& anElt,const TopoDS_Shape& S) ; -Standard_EXPORT void UnSetMeshElementOnShape(const Handle(SMDS_MeshElement)& anElt,const TopoDS_Shape& S) ; -Standard_EXPORT TopoDS_Shape ShapeToMesh() ; -Standard_EXPORT Standard_Boolean HasMeshElements(const TopoDS_Shape& S) ; -Standard_EXPORT Handle_SMESHDS_SubMesh MeshElements(const TopoDS_Shape& S) ; -Standard_EXPORT Standard_Boolean HasHypothesis(const TopoDS_Shape& S) ; -Standard_EXPORT const SMESHDS_ListOfPtrHypothesis& GetHypothesis(const TopoDS_Shape& S) ; -Standard_EXPORT const Handle_SMESHDS_Script& GetScript() ; -Standard_EXPORT void ClearScript() ; -Standard_EXPORT Standard_Integer ShapeToIndex(const TopoDS_Shape& aShape) ; -Standard_EXPORT TopoDS_Shape IndexToShape(const Standard_Integer ShapeIndex) ; -Standard_EXPORT void NewSubMesh(const Standard_Integer Index) ; -Standard_EXPORT void SetNodeInVolume(const Handle(SMDS_MeshNode)& aNode,const Standard_Integer Index) ; -Standard_EXPORT void SetNodeOnFace(const Handle(SMDS_MeshNode)& aNode,const Standard_Integer Index) ; -Standard_EXPORT void SetNodeOnEdge(const Handle(SMDS_MeshNode)& aNode,const Standard_Integer Index) ; -Standard_EXPORT void SetNodeOnVertex(const Handle(SMDS_MeshNode)& aNode,const Standard_Integer Index) ; -Standard_EXPORT void SetMeshElementOnShape(const Handle(SMDS_MeshElement)& anElt,const Standard_Integer Index) ; -Standard_EXPORT ~SMESHDS_Mesh(); - - - - - // Type management - // - Standard_EXPORT friend Handle_Standard_Type& SMESHDS_Mesh_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 - // -Standard_Integer myMeshID; -TopoDS_Shape myShape; -TopTools_IndexedMapOfShape myIndexToShape; -SMESHDS_DataMapOfIntegerSubMesh myShapeIndexToSubMesh; -SMESHDS_DataMapOfShapeListOfPtrHypothesis myShapeToHypothesis; -Handle_SMESHDS_Script myScript; - - +#include +#include +#include +//Not portable see http://gcc.gnu.org/onlinedocs/libstdc++/faq/index.html#5_4 to know more. +#include +using namespace __gnu_cxx; + +using namespace std; + +class SMESHDS_Mesh:public SMDS_Mesh +{ + + public: + + SMESHDS_Mesh(int MeshID); + void ShapeToMesh(const TopoDS_Shape & S); + bool AddHypothesis(const TopoDS_Shape & SS, const SMESHDS_Hypothesis * H); + bool RemoveHypothesis(const TopoDS_Shape & S, const SMESHDS_Hypothesis * H); + SMDS_MeshNode * AddNode(double x, double y, double z); + virtual void RemoveNode(int ID); + void MoveNode(int ID, double x, double y, double z); + SMDS_MeshEdge* AddEdge(int idnode1, int idnode2); + SMDS_MeshFace* AddFace(int idnode1, int idnode2, int idnode3); + SMDS_MeshFace* AddFace(int idnode1, int idnode2, int idnode3, int idnode4); + SMDS_MeshVolume* AddVolume(int idnode1, int idnode2, int idnode3, int idnode4); + SMDS_MeshVolume* AddVolume(int idnode1, int idnode2, int idnode3, int idnode4, + int idnode5); + SMDS_MeshVolume* AddVolume(int idnode1, int idnode2, int idnode3, int idnode4, + int idnode5, int idnode6); + SMDS_MeshVolume* AddVolume(int idnode1, int idnode2, int idnode3, int idnode4, + int idnode5, int idnode6, int idnode7, int idnode8); + virtual void RemoveElement(int IDelem); + void SetNodeInVolume(SMDS_MeshNode * aNode, const TopoDS_Shell & S); + void SetNodeOnFace(SMDS_MeshNode * aNode, const TopoDS_Face & S); + void SetNodeOnEdge(SMDS_MeshNode * aNode, const TopoDS_Edge & S); + void SetNodeOnVertex(SMDS_MeshNode * aNode, const TopoDS_Vertex & S); + void UnSetNodeOnShape(const SMDS_MeshNode * aNode); + void SetMeshElementOnShape(const SMDS_MeshElement * anElt, + const TopoDS_Shape & S); + void UnSetMeshElementOnShape(const SMDS_MeshElement * anElt, + const TopoDS_Shape & S); + TopoDS_Shape ShapeToMesh() const; + bool HasMeshElements(const TopoDS_Shape & S); + SMESHDS_SubMesh * MeshElements(const TopoDS_Shape & S); + bool HasHypothesis(const TopoDS_Shape & S); + const list& GetHypothesis(const TopoDS_Shape & S) const; + SMESHDS_Script * GetScript(); + void ClearScript(); + int ShapeToIndex(const TopoDS_Shape & aShape); + TopoDS_Shape IndexToShape(int ShapeIndex); + void NewSubMesh(int Index); + void SetNodeInVolume(const SMDS_MeshNode * aNode, int Index); + void SetNodeOnFace(SMDS_MeshNode * aNode, int Index); + void SetNodeOnEdge(SMDS_MeshNode * aNode, int Index); + void SetNodeOnVertex(SMDS_MeshNode * aNode, int Index); + void SetMeshElementOnShape(const SMDS_MeshElement * anElt, int Index); + ~SMESHDS_Mesh(); + + private: + struct HashTopoDS_Shape + { + size_t operator()(const TopoDS_Shape& S) const {return S.HashCode(2147483647);} + }; + typedef hash_map,HashTopoDS_Shape > ShapeToHypothesis; + int myMeshID; + TopoDS_Shape myShape; + TopTools_IndexedMapOfShape myIndexToShape; + map myShapeIndexToSubMesh; + ShapeToHypothesis myShapeToHypothesis; + SMESHDS_Script * myScript; }; - - - - - -// other inline functions and methods (like "C++: function call" methods) -// - - #endif