From 7e61fd339b29c05f7426fe0758955f933e90aed0 Mon Sep 17 00:00:00 2001 From: guigues Date: Wed, 21 May 2008 12:50:11 +0000 Subject: [PATCH] Autodestruction of packages on automatic dlclose after main (if a package was not held by a factory - e.g. simply linked against - then it did not autodestruct ) --- kernel/src/bbtkPackage.h | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/kernel/src/bbtkPackage.h b/kernel/src/bbtkPackage.h index 089dbee..5dccf50 100644 --- a/kernel/src/bbtkPackage.h +++ b/kernel/src/bbtkPackage.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkPackage.h,v $ Language: C++ - Date: $Date: 2008/04/18 12:59:15 $ - Version: $Revision: 1.8 $ + Date: $Date: 2008/05/21 12:50:11 $ + Version: $Revision: 1.9 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See doc/license.txt or @@ -333,8 +333,22 @@ namespace bbtk return NAME ## GetPackagePointer(); \ } \ BBTK_PACKAGE_EXPORT const std::string& \ - BBTK_CDECL NAME ## GetPackageBBTKVersion () \ + BBTK_CDECL NAME ## GetPackageBBTKVersion () \ { return bbtk::GetVersion(); } \ + class NAME ## PackageAutodestructor \ + { \ + public: \ + NAME ## PackageAutodestructor() {} \ + ~NAME ## PackageAutodestructor() \ + { \ + if (NAME ## GetPackagePointer().use_count()>0) \ + { \ + bbtk::Package::WeakPointer p = NAME ## GetPackagePointer(); \ + bbtk::Package::Release(p); \ + } \ + } \ + }; \ + NAME ## PackageAutodestructor NAME ## PackageAutodestructorInstance; \ } //==================================================================== -- 2.45.1