diff options
author | Ken Martin <ken.martin@kitware.com> | 2002-09-17 14:38:00 (GMT) |
---|---|---|
committer | Ken Martin <ken.martin@kitware.com> | 2002-09-17 14:38:00 (GMT) |
commit | 0a2f6c876caa216e9ce9fdc662b8d70335d4738a (patch) | |
tree | 8a7f0ea832514f44082d3f841446b0f9c76f29b6 /Source | |
parent | d17830ee5e9d44e8874880e33b038170ad8700d0 (diff) | |
download | CMake-0a2f6c876caa216e9ce9fdc662b8d70335d4738a.zip CMake-0a2f6c876caa216e9ce9fdc662b8d70335d4738a.tar.gz CMake-0a2f6c876caa216e9ce9fdc662b8d70335d4738a.tar.bz2 |
added destructor to loaded commands
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmCPluginAPI.h | 2 | ||||
-rw-r--r-- | Source/cmLoadCommandCommand.cxx | 12 |
2 files changed, 13 insertions, 1 deletions
diff --git a/Source/cmCPluginAPI.h b/Source/cmCPluginAPI.h index f1ef9ba..d7ba6d4 100644 --- a/Source/cmCPluginAPI.h +++ b/Source/cmCPluginAPI.h @@ -176,6 +176,7 @@ Finally we define the key data structures and function prototypes typedef int (*CM_INITIAL_PASS_FUNCTION)(void *info, void *mf, int argc, char *[]); typedef void (*CM_FINAL_PASS_FUNCTION)(void *info, void *mf); + typedef void (*CM_DESTRUCTOR_FUNCTION)(void *info); typedef struct { unsigned char magic1; @@ -184,6 +185,7 @@ Finally we define the key data structures and function prototypes int m_Inherited; CM_INITIAL_PASS_FUNCTION InitialPass; CM_FINAL_PASS_FUNCTION FinalPass; + CM_DESTRUCTOR_FUNCTION Destructor; CM_DOC_FUNCTION GetTerseDocumentation; CM_DOC_FUNCTION GetFullDocumentation; void *ClientData; diff --git a/Source/cmLoadCommandCommand.cxx b/Source/cmLoadCommandCommand.cxx index 3c098f5..7dec12c 100644 --- a/Source/cmLoadCommandCommand.cxx +++ b/Source/cmLoadCommandCommand.cxx @@ -28,6 +28,9 @@ public: this->info.CAPI = &cmStaticCAPI; } + ///! clean up any memory allocated by the plugin + ~cmLoadedCommand(); + /** * This is a virtual constructor for the command. */ @@ -139,7 +142,14 @@ void cmLoadedCommand::FinalPass() { this->info.FinalPass((void *)&this->info,(void *)this->m_Makefile); } - +} + +cmLoadedCommand::~cmLoadedCommand() +{ + if (this->info.Destructor) + { + this->info.Destructor((void *)&this->info); + } } // cmLoadCommandCommand |