]> Creatis software - bbtk.git/blobdiff - kernel/src/bbtkPackage.h
*** empty log message ***
[bbtk.git] / kernel / src / bbtkPackage.h
index 089dbee65498918ab3c7c829d20a754d994c6b84..78d98cc0311ab2d3ec3c32618bfc90710082958f 100644 (file)
@@ -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/07/24 14:37:05 $
+  Version:   $Revision: 1.10 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See doc/license.txt or
@@ -330,11 +330,26 @@ namespace bbtk
                             VERSION,                                   \
                             BBTK_STRINGIFY_SYMBOL(BBTK_VERSION)        \
                             );                                         \
+      bbtk::Object::InsertInPackageList( NAME ## GetPackagePointer() ); \
       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; \
   }
 //====================================================================