]> Creatis software - bbtk.git/blobdiff - kernel/src/bbtkPackage.cxx
#3477 bug InputText initial value
[bbtk.git] / kernel / src / bbtkPackage.cxx
index b5b15c4cda0e9476a43a5f3c92517ccbea665604..bcb83089a34c8c5ff3898cc58779cfa822dc22d3 100644 (file)
@@ -1,33 +1,40 @@
+/*
+ # ---------------------------------------------------------------------
+ #
+ # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
+ #                        pour la SantÈ)
+ # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+ # Previous Authors : Laurent Guigues, Jean-Pierre Roux
+ # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
+ #
+ #  This software is governed by the CeCILL-B license under French law and
+ #  abiding by the rules of distribution of free software. You can  use,
+ #  modify and/ or redistribute the software under the terms of the CeCILL-B
+ #  license as circulated by CEA, CNRS and INRIA at the following URL
+ #  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+ #  or in the file LICENSE.txt.
+ #
+ #  As a counterpart to the access to the source code and  rights to copy,
+ #  modify and redistribute granted by the license, users are provided only
+ #  with a limited warranty  and the software's author,  the holder of the
+ #  economic rights,  and the successive licensors  have only  limited
+ #  liability.
+ #
+ #  The fact that you are presently reading this means that you have had
+ #  knowledge of the CeCILL-B license and that you accept its terms.
+ # ------------------------------------------------------------------------ */
+
+
 
 /*=========================================================================                                                                               
   Program:   bbtk
   Module:    $RCSfile: bbtkPackage.cxx,v $
   Language:  C++
-  Date:      $Date: 2010/02/08 15:15:24 $
-  Version:   $Revision: 1.34 $
+  Date:      $Date: 2012/11/16 08:49:01 $
+  Version:   $Revision: 1.37 $
 =========================================================================*/
 
-/* ---------------------------------------------------------------------
-
-* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
-* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
-*
-*  This software is governed by the CeCILL-B license under French law and 
-*  abiding by the rules of distribution of free software. You can  use, 
-*  modify and/ or redistribute the software under the terms of the CeCILL-B 
-*  license as circulated by CEA, CNRS and INRIA at the following URL 
-*  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html 
-*  or in the file LICENSE.txt.
-*
-*  As a counterpart to the access to the source code and  rights to copy,
-*  modify and redistribute granted by the license, users are provided only
-*  with a limited warranty  and the software's author,  the holder of the
-*  economic rights,  and the successive licensors  have only  limited
-*  liability. 
-*
-*  The fact that you are presently reading this means that you have had
-*  knowledge of the CeCILL-B license and that you accept its terms.
-* ------------------------------------------------------------------------ */                                                                         
+
 
 /**
  *\file
@@ -80,6 +87,8 @@ namespace bbtk
   {
     bbtkDebugMessage("object",2,"==> Package('"<<name<<"',...)"
                     <<bbtkendl);
+
+                        
     std::string default_doc_dir = ConfigurationFile::GetInstance().Get_default_temp_dir();
     char c = default_doc_dir.c_str()[strlen(default_doc_dir.c_str())-1];
     std::string url = default_doc_dir; 
@@ -102,7 +111,6 @@ namespace bbtk
     //    std::cout  << "relurl=["<<relurl<<"]"<<std::endl;
     bbtkDebugMessage("object",2,"<== Package::Package('"<<name<<"',...) OK"
                     <<bbtkendl);
-
   }
   //==========================================================================
 
@@ -349,12 +357,12 @@ namespace bbtk
   /// to test that a dyn lib is a valid bbtk package lib
   /// NB : The BBTK version exported from the library 
   ///      is tested against the current bbtk version
-  DynamicLibraryHandler Package::OpenDynamicLibrary
-  ( const std::string& libname,
-    const std::string& package_name,
-    DLGetPackageFunction& getpack,
-    DLDeletePackageFunction& delpack)
+  DynamicLibraryHandler Package::OpenDynamicLibrary( const std::string& libname,const std::string& package_name,
+                                                                                                        DLGetPackageFunction& getpack, DLDeletePackageFunction& delpack)
   {
+
+printf("EED Package::OpenDynamicLibrary  %s   %s \n", libname.c_str(), package_name.c_str() );
+
     bbtkDebugMessage("package",3,"==> Package::OpenDynamicLibrary("
                     <<libname<<")"<<std::endl);
 #if defined(__GNUC__)
@@ -362,12 +370,11 @@ namespace bbtk
     // Open shared lib
     void *handler;
     handler = dlopen(libname.c_str(), BBTK_RTLD_TIME | BBTK_RTLD_SCOPE );
-//EED     handler = dlopen(libname.c_str(), RTLD_LAZY | RTLD_LOCAL );
-         
+//     handler = dlopen(libname.c_str(), RTLD_LAZY | RTLD_LOCAL );
     if (!handler)
       {
-       bbtkMessage("package",2,
-                   "Could not open shared library [" <<libname<<"] : "
+       bbtkMessage("package",0,
+                   "BBTK ..ERROR.. loading could not open shared library [" <<libname<<"] : "
                    <<dlerror() << std::endl);
        return 0;
       }
@@ -376,15 +383,13 @@ namespace bbtk
 
     // Loads the Package bbtk version function 
     std::string getvername(package_name);
-    getvername += 
-      BBTK_STRINGIFY_SYMBOL(BBTK_GET_PACKAGE_BBTK_VERSION_FUNCTION_NAME);
-    DLGetPackageBBTKVersionFunction getbbtkversion 
-      = (DLGetPackageBBTKVersionFunction)(dlsym(handler,getvername.c_str()));
+    getvername += BBTK_STRINGIFY_SYMBOL(BBTK_GET_PACKAGE_BBTK_VERSION_FUNCTION_NAME);
+    DLGetPackageBBTKVersionFunction getbbtkversion  = (DLGetPackageBBTKVersionFunction)(dlsym(handler,getvername.c_str()));
     if (!getbbtkversion)
       {
        bbtkDebugMessage("package",3,"***"<<std::endl);
-       bbtkMessage("package",2,
-                   "Shared library ["<<libname
+       bbtkMessage("package",0,
+                   "BBTK ..ERROR.. loading shared library ["<<libname
                    <<"] is not a valid bbtk package."
                    <<" Symbol ["<<getvername<<"] :"<<dlerror()<< std::endl);
        dlclose(handler);
@@ -394,14 +399,16 @@ namespace bbtk
     bbtkDebugMessage("package",3,"* Symbol ["<<getvername
                     <<"] found"<<std::endl);
     // version matches ?
+
     if (getbbtkversion() != bbtk::GetVersion())
       {
-       bbtkMessage("package",2,
-                   "Shared library ["<<libname
+       bbtkMessage("package",0,
+                   "BBTK ..ERROR.. loading: "<<package_name
+                       <<" - Shared library ["<<libname
                    <<"] was build with bbtk version "
                    <<getbbtkversion()
                    <<" but the current program runs with version "
-                   <<bbtk::GetVersion()<<" : cannot load it"<<std::endl);
+                   <<bbtk::GetVersion()<<" : cannot load it. You have to recompile your BBTK-Package."<<std::endl);
        dlclose(handler);
        return 0;
        
@@ -414,8 +421,8 @@ namespace bbtk
     getpack = (DLGetPackageFunction)(dlsym(handler, getpackname.c_str()));
     if (!getpack)
       {
-       bbtkMessage("package",2,
-                   "Shared library ["<<libname
+       bbtkMessage("package",0,
+                   "BBTK ..ERROR.. loading shared library ["<<libname
                    <<"] is not a valid bbtk package."
                    <<" Symbol ["<<getpackname<<"] :"<<dlerror()<< std::endl);
        dlclose(handler);
@@ -430,8 +437,8 @@ namespace bbtk
     delpack = (DLDeletePackageFunction)(dlsym(handler, delpackname.c_str()));
     if (!delpack)
       {
-       bbtkMessage("package",2,
-                   "Shared library ["<<libname
+       bbtkMessage("package",0,
+                   "BBTK ..ERROR.. loading shared library ["<<libname
                    <<"] is not a valid bbtk package."
                    <<" Symbol ["<<delpackname<<"] :"<<dlerror()<< std::endl);
        dlclose(handler);
@@ -447,8 +454,8 @@ namespace bbtk
     handler = LoadLibrary(libname.c_str());
     if (!handler)
       {
-       bbtkMessage("package",2,
-                   "Could not open shared library [" <<libname<<"]"
+       bbtkMessage("package",0,
+                   "BBTK ..ERROR..  could not open shared library [" <<libname<<"]"
                    << std::endl);
        DWORD dwErrorCode = 0;
        dwErrorCode = GetLastError();
@@ -461,16 +468,14 @@ namespace bbtk
     
     // Loads the Package bbtk version function 
     std::string getvername(package_name);
-    getvername += 
-      BBTK_STRINGIFY_SYMBOL(BBTK_GET_PACKAGE_BBTK_VERSION_FUNCTION_NAME);
-    DLGetPackageBBTKVersionFunction getbbtkversion 
-      = (DLGetPackageBBTKVersionFunction)(GetProcAddress(handler,
-                                                       getvername.c_str()));
+    getvername += BBTK_STRINGIFY_SYMBOL(BBTK_GET_PACKAGE_BBTK_VERSION_FUNCTION_NAME);
+    DLGetPackageBBTKVersionFunction getbbtkversion = (DLGetPackageBBTKVersionFunction)(GetProcAddress(handler, getvername.c_str()));
+         
     if (!getbbtkversion)
       {
        FreeLibrary(handler);
-       bbtkMessage("package",2,
-                   "Shared library ["<<libname
+       bbtkMessage("package",0,
+                   "BBTK ..ERROR.. loading shared library ["<<libname
                    <<"] is not a valid bbtk package."
                    <<" Symbol ["<<getbbtkversion<<"] not found"<< std::endl);
        return 0;
@@ -479,15 +484,15 @@ namespace bbtk
     // version matches ?
     if (getbbtkversion() != bbtk::GetVersion())
       {
-       FreeLibrary(handler);
-       bbtkMessage("package",2,
-                   "Shared library ["<<libname
-                   <<"] was build with bbtk version "
-                   <<getbbtkversion()
-                   <<" but the current program runs with version "
-                   <<bbtk::GetVersion()<<" : cannot load it"<<std::endl);
-       return 0;
-       
+                 FreeLibrary(handler);
+                 bbtkMessage("package",0,
+                               "BBTK ..ERROR.. loading: "<<package_name
+                               <<" - Shared library ["<<libname
+                               <<"] was build with bbtk version "
+                               <<getbbtkversion()
+                               <<" but the current program runs with version "
+                               <<bbtk::GetVersion()<<" : cannot load it. You have to recompile your BBTK-Package."<<std::endl);
+                 return 0;
       }
 
      // Loads the Package get function
@@ -497,8 +502,8 @@ namespace bbtk
     if (!getpack)
       {
        FreeLibrary(handler);
-       bbtkMessage("package",2,
-                   "Shared library ["<<libname
+       bbtkMessage("package",0,
+                   "BBTK ..ERROR.. loading shared library ["<<libname
                    <<"] is not a valid bbtk package."
                    <<" Symbol ["<<getpackname<<"] not found"<< std::endl);
        return 0;
@@ -511,8 +516,8 @@ namespace bbtk
     if (!delpack)
       {
        FreeLibrary(handler);
-       bbtkMessage("package",2,
-                   "Shared library ["<<libname
+       bbtkMessage("package",0,
+                   "BBTK ..ERROR.. loading shared library ["<<libname
                    <<"] is not a valid bbtk package."
                    <<" Symbol ["<<delpackname<<"] not found"<< std::endl);
        return 0;
@@ -677,6 +682,17 @@ namespace bbtk
   }
   //==========================================================================
 
+       bool Package::ifBoxExist( std::string type)     
+    {
+               bool ok=false;
+               DescriptorMapType::const_iterator i = mDescriptorMap.find(type);
+               if (i != mDescriptorMap.end())  
+               {
+                       ok=true;
+               }
+               return ok;
+    }
+       
   //==========================================================================
   /// Creates an instance of a black box of type <type> with name <name>
   BlackBox::Pointer Package::NewBlackBox(const std::string& type, 
@@ -706,7 +722,7 @@ namespace bbtk
                                const DataInfo& typeout,
                                const std::string& name) const
   {
-    bbtkDebugMessageInc("kernel",8,"Package<"<<GetName()<<
+      bbtkDebugMessageInc("kernel",8,"Package<"<<GetName()<<
                        ">::NewAdaptor("
                        <<typein<<","
                        <<typeout<<",\""
@@ -722,8 +738,7 @@ namespace bbtk
       }
     BlackBox::Pointer bb =i->second.lock()->NewBlackBox(name);
     bbtkDebugDecTab("kernel",8);
-    return bb;   
-
+    return bb;
   }
   //==========================================================================
 
@@ -1197,10 +1212,7 @@ namespace bbtk
            s << "<hr>\n";
            */
          }
-      }
-
-    else 
-      {
+      } else {
        s << "<h1 class=\"settitle\">"<<title<<"</h1>\n";
        s << "<p><TABLE cellspacing=0  cellpadding=3>\n";
        s << "<TR><TD style='vertical-align: top;'><b> Description </b></TD><TD style='vertical-align: top;'> : </TD><TD style='vertical-align: top;'> " 
@@ -1392,10 +1404,21 @@ namespace bbtk
     return s;
   }
   //==========================================================================
-  
+  void  Package::GetBoxesInside(NodeTreeC& tree, int cont) 
+  {
+               DescriptorMapType::const_iterator i;
+               std::cout<<"*********a********"<<std::endl;
+               for (i=mDescriptorMap.begin(); i!=mDescriptorMap.end(); ++i) 
+               {
+                       i->second->GetBoxesInside(tree, cont);
+                       std::cout<<"*****************"<<std::endl;
+               }    
+  }
+       //==========================================================================
   //==========================================================================
   std::set<Package::WeakPointer> 
   Package::mReleasedDynamicallyLoadedPackages;
   //==========================================================================
+
 }