From 5d147e239ea39ae43da3a1b0ddb63d50b79e06db Mon Sep 17 00:00:00 2001 From: jfa Date: Thu, 16 Feb 2006 12:30:40 +0000 Subject: [PATCH] PAL11544: Improve memory management: implement and use destructors. --- src/SMESHDS/SMESHDS_Command.cxx | 10 +++++++++- src/SMESHDS/SMESHDS_Mesh.cxx | 1 + src/SMESHDS/SMESHDS_Script.cxx | 18 +++++++++++++++--- src/SMESHDS/SMESHDS_Script.hxx | 6 ++++-- 4 files changed, 29 insertions(+), 6 deletions(-) diff --git a/src/SMESHDS/SMESHDS_Command.cxx b/src/SMESHDS/SMESHDS_Command.cxx index b55b5af1c..d8b664e0e 100644 --- a/src/SMESHDS/SMESHDS_Command.cxx +++ b/src/SMESHDS/SMESHDS_Command.cxx @@ -33,7 +33,7 @@ using namespace std; //======================================================================= -//function : +//function : Constructor //purpose : //======================================================================= SMESHDS_Command::SMESHDS_Command(const SMESHDS_CommandType aType):myType(aType), @@ -41,6 +41,14 @@ myNumber(0) { } +//======================================================================= +//function : Destructor +//purpose : +//======================================================================= +SMESHDS_Command::~SMESHDS_Command() +{ +} + //======================================================================= //function : //purpose : diff --git a/src/SMESHDS/SMESHDS_Mesh.cxx b/src/SMESHDS/SMESHDS_Mesh.cxx index 028e7e254..d22746e32 100644 --- a/src/SMESHDS/SMESHDS_Mesh.cxx +++ b/src/SMESHDS/SMESHDS_Mesh.cxx @@ -1182,4 +1182,5 @@ void SMESHDS_Mesh::SetMeshElementOnShape(const SMDS_MeshElement* anElement, SMESHDS_Mesh::~SMESHDS_Mesh() { + delete myScript; } diff --git a/src/SMESHDS/SMESHDS_Script.cxx b/src/SMESHDS/SMESHDS_Script.cxx index 369ab4697..16c606945 100644 --- a/src/SMESHDS/SMESHDS_Script.cxx +++ b/src/SMESHDS/SMESHDS_Script.cxx @@ -30,6 +30,15 @@ using namespace std; +//======================================================================= +//function : Destructor +//purpose : +//======================================================================= +SMESHDS_Script::~SMESHDS_Script() +{ + Clear(); +} + //======================================================================= //function : getCommand //purpose : @@ -222,7 +231,6 @@ void SMESHDS_Script::ChangePolyhedronNodes (const int ElementID, //function : Renumber //purpose : //======================================================================= - void SMESHDS_Script::Renumber (const bool isNodes, const int startID, const int deltaID) { getCommand(SMESHDS_Renumber)->Renumber( isNodes, startID, deltaID ); @@ -234,7 +242,11 @@ void SMESHDS_Script::Renumber (const bool isNodes, const int startID, const int //======================================================================= void SMESHDS_Script::Clear() { - myCommands.clear(); + list::iterator anIt = myCommands.begin(); + for (; anIt != myCommands.end(); anIt++) { + delete (*anIt); + } + myCommands.clear(); } //======================================================================= @@ -243,5 +255,5 @@ void SMESHDS_Script::Clear() //======================================================================= const list& SMESHDS_Script::GetCommands() { - return myCommands; + return myCommands; } diff --git a/src/SMESHDS/SMESHDS_Script.hxx b/src/SMESHDS/SMESHDS_Script.hxx index 3874facfc..366ac3bdc 100644 --- a/src/SMESHDS/SMESHDS_Script.hxx +++ b/src/SMESHDS/SMESHDS_Script.hxx @@ -36,6 +36,9 @@ class SMESHDS_Script { public: + SMESHDS_Script() {}; + ~SMESHDS_Script(); + void AddNode(int NewNodeID, double x, double y, double z); void AddEdge(int NewEdgeID, int idnode1, int idnode2); void AddFace(int NewFaceID, int idnode1, int idnode2, int idnode3); @@ -66,8 +69,7 @@ class SMESHDS_Script void Renumber (const bool isNodes, const int startID, const int deltaID); void Clear(); const std::list & GetCommands(); - ~SMESHDS_Script(); - + private: SMESHDS_Command* getCommand(const SMESHDS_CommandType aType); -- 2.39.2