From 4ad5b5ee44357ad873bc8c43230defb6d0a79879 Mon Sep 17 00:00:00 2001 From: guigues Date: Fri, 18 Apr 2008 12:59:13 +0000 Subject: [PATCH] === MAJOR RELEASE ==== * All bbtk major objects are now smart pointed (using boost::shared_ptr) and auto-destruct when no more used. They inherit from bbtk::Object with pose the basis for the mechanism... --- kernel/appli/bbc/main.cxx.in | 5 +- kernel/appli/bbfy/bbfy.cpp | 10 +- kernel/appli/bbi/bbi.cxx | 8 + kernel/appli/bbs2cpp/bbs2cpp.cxx | 4 +- kernel/cmake/BBTKDefineOptions.cmake | 9 + kernel/cmake/BBTKKernelConfig.cmake | 1 + kernel/doc/bbtkDoxygen/Doxyfile.txt.in | 2 +- kernel/src/CMakeLists.txt | 1 - kernel/src/bbtkAtomicBlackBox.cxx | 63 +- kernel/src/bbtkAtomicBlackBox.h | 32 +- kernel/src/bbtkAtomicBlackBoxDescriptor.cxx | 51 ++ kernel/src/bbtkAtomicBlackBoxDescriptor.h | 48 +- kernel/src/bbtkAtomicBlackBoxMacros.h | 401 ++++++--- kernel/src/bbtkBlackBox.cxx | 153 ++-- kernel/src/bbtkBlackBox.h | 82 +- kernel/src/bbtkBlackBoxDescriptor.cxx | 62 +- kernel/src/bbtkBlackBoxDescriptor.h | 42 +- kernel/src/bbtkBlackBoxInputConnector.cxx | 20 +- kernel/src/bbtkBlackBoxInputConnector.h | 24 +- kernel/src/bbtkBlackBoxOutputConnector.cxx | 50 +- kernel/src/bbtkBlackBoxOutputConnector.h | 13 +- kernel/src/bbtkComplexBlackBox.cxx | 313 ++++--- kernel/src/bbtkComplexBlackBox.h | 78 +- kernel/src/bbtkComplexBlackBoxDescriptor.cxx | 130 ++- kernel/src/bbtkComplexBlackBoxDescriptor.h | 50 +- kernel/src/bbtkConnection.cxx | 227 ++++-- kernel/src/bbtkConnection.h | 62 +- kernel/src/bbtkData.h | 5 +- kernel/src/bbtkExecuter.cxx | 202 +++-- kernel/src/bbtkExecuter.h | 40 +- kernel/src/bbtkFactory.cxx | 426 ++++------ kernel/src/bbtkFactory.h | 168 +--- kernel/src/bbtkInterpreter.cxx | 124 ++- kernel/src/bbtkInterpreter.h | 135 ++-- kernel/src/bbtkMessageManager.cxx | 12 +- kernel/src/bbtkObject.cxx | 192 +++++ kernel/src/bbtkObject.h | 193 +++++ kernel/src/bbtkPackage.cxx | 761 +++++++++++++++--- kernel/src/bbtkPackage.h | 221 +++-- kernel/src/bbtkTranscriptor.cxx | 49 +- kernel/src/bbtkTranscriptor.h | 15 +- kernel/src/bbtkVirtualExec.cxx | 22 + kernel/src/bbtkVirtualExec.h | 81 +- kernel/src/bbtkWxBlackBox.cxx | 38 +- kernel/src/bbtkWxBlackBox.h | 76 +- kernel/src/bbtkWxGUIConsole.cxx | 17 +- kernel/src/bbtkWxGUIConsole.h | 10 +- kernel/src/bbtkWxGUIPackageBrowser.cxx | 27 +- kernel/src/bbtkWxGUIPackageBrowser.h | 12 +- kernel/src/bbtkWxGUIPackageBrowser2.cxx | 41 +- kernel/src/bbtkWxGUIPackageBrowser2.h | 20 +- kernel/src/bbtkWxGUIScriptingInterface.cxx | 28 +- kernel/src/bbtkWxGUIScriptingInterface.h | 10 +- .../itk/src/bbitkAnyImageToTypedImage.cxx | 4 +- packages/itk/src/bbitkAnyImageToTypedImage.h | 17 +- .../src/bbitkBinaryThresholdImageFilter.cxx | 4 +- .../itk/src/bbitkBinaryThresholdImageFilter.h | 13 +- packages/itk/src/bbitkExtractImageFilter.cxx | 4 +- packages/itk/src/bbitkExtractImageFilter.h | 15 +- packages/itk/src/bbitkImage.cxx | 4 +- packages/itk/src/bbitkImageProperties.cxx | 6 +- packages/itk/src/bbitkImageProperties.h | 8 +- packages/itk/src/bbitkImageReader.cxx | 8 +- packages/itk/src/bbitkImageReader.h | 8 +- packages/itk/src/bbitkImageRegion.cxx | 4 +- packages/itk/src/bbitkImageRegion.h | 2 +- packages/itk/src/bbitkImageSeriesReader.cxx | 8 +- packages/itk/src/bbitkImageSeriesReader.h | 8 +- packages/itk/src/bbitkImageToString.cxx | 4 +- packages/itk/src/bbitkImageWriter.cxx | 6 +- packages/itk/src/bbitkImageWriter.h | 6 +- packages/itk/src/bbitkResampleImageFilter.cxx | 2 +- packages/itk/src/bbitkResampleImageFilter.h | 2 +- .../itk/src/bbitkTypedImageToAnyImage.cxx | 4 +- packages/itk/src/bbitkTypedImageToAnyImage.h | 8 +- .../src/bbitkvtkitkImage2vtkImageData.cxx | 6 +- .../src/bbitkvtkitkImage2vtkImageData.h | 8 +- .../src/bbitkvtkvtkImageData2itkImage.cxx | 6 +- .../src/bbitkvtkvtkImageData2itkImage.h | 8 +- packages/std/src/bbstdASCII.cxx | 126 +-- packages/std/src/bbstdASCII.h | 44 +- packages/std/src/bbstdCast.cxx | 4 +- packages/std/src/bbstdCast.h | 4 +- packages/std/src/bbstdConcatStrings.cxx | 62 +- packages/std/src/bbstdConcatStrings.h | 2 +- packages/std/src/bbstdConfiguration.cxx | 4 +- packages/std/src/bbstdConfiguration.h | 2 +- packages/std/src/bbstdExecBbiCommand.cxx | 5 +- packages/std/src/bbstdExecBbiCommand.h | 22 +- packages/std/src/bbstdExecSystemCommand.cxx | 2 +- packages/std/src/bbstdExecSystemCommand.h | 18 +- packages/std/src/bbstdMagicBox.cxx | 6 +- packages/std/src/bbstdMagicBox.h | 6 +- packages/std/src/bbstdMakeFileName.cxx | 46 +- packages/std/src/bbstdMakeFileName.h | 10 +- packages/std/src/bbstdRelay.cxx | 6 +- packages/std/src/bbstdRelay.h | 8 +- packages/std/src/bbstdStringSelect.cxx | 68 +- packages/std/src/bbstdStringSelect.h | 30 +- packages/std/src/bbstdStringTo.cxx | 4 +- packages/std/src/bbstdStringTo.h | 8 +- packages/std/src/bbstdStringToVector.cxx | 4 +- packages/std/src/bbstdStringToVector.h | 4 +- packages/std/src/bbstdToString.cxx | 4 +- packages/std/src/bbstdToString.h | 8 +- packages/std/src/bbstdVectorToString.cxx | 4 +- packages/std/src/bbstdVectorToString.h | 10 +- packages/vtk/src/bbvtkImageDataToString.cxx | 8 +- packages/vtk/src/bbvtkImagePlanes.cxx | 10 +- packages/vtk/src/bbvtkImagePlanes.h | 6 +- packages/vtk/src/bbvtkIsoSurfaceExtractor.cxx | 6 +- packages/vtk/src/bbvtkIsoSurfaceExtractor.h | 6 +- packages/vtk/src/bbvtkMIPCreator.cxx | 6 +- packages/vtk/src/bbvtkMIPCreator.h | 6 +- packages/vtk/src/bbvtkMarchingCubes.cxx | 6 +- packages/vtk/src/bbvtkMarchingCubes.h | 6 +- packages/wx/src/bbwxColourSelector.cxx | 6 +- packages/wx/src/bbwxColourSelector.h | 6 +- packages/wx/src/bbwxColourSelectorButton.cxx | 6 +- packages/wx/src/bbwxColourSelectorButton.h | 6 +- packages/wx/src/bbwxCommandButton.cxx | 14 +- packages/wx/src/bbwxCommandButton.h | 6 +- packages/wx/src/bbwxDirectorySelector.cxx | 6 +- packages/wx/src/bbwxDirectorySelector.h | 6 +- packages/wx/src/bbwxFileSelector.cxx | 6 +- packages/wx/src/bbwxFileSelector.h | 6 +- packages/wx/src/bbwxInputText.cxx | 6 +- packages/wx/src/bbwxInputText.h | 6 +- packages/wx/src/bbwxLayoutLine.cxx | 6 +- packages/wx/src/bbwxLayoutLine.h | 6 +- packages/wx/src/bbwxLayoutSplit.cxx | 6 +- packages/wx/src/bbwxLayoutSplit.h | 6 +- packages/wx/src/bbwxLayoutTab.cxx | 6 +- packages/wx/src/bbwxLayoutTab.h | 6 +- packages/wx/src/bbwxRadioButton.cxx | 6 +- packages/wx/src/bbwxRadioButton.h | 6 +- packages/wx/src/bbwxSlider.cxx | 6 +- packages/wx/src/bbwxSlider.h | 6 +- packages/wxvtk/src/bbwxvtkViewer2D.cxx | 6 +- packages/wxvtk/src/bbwxvtkViewer2D.h | 6 +- packages/wxvtk/src/bbwxvtkViewer3D.cxx | 6 +- packages/wxvtk/src/bbwxvtkViewer3D.h | 6 +- ...wInteractorTovtkRenderWindowInteractor.cxx | 4 +- 143 files changed, 3658 insertions(+), 2130 deletions(-) create mode 100644 kernel/src/bbtkAtomicBlackBoxDescriptor.cxx create mode 100644 kernel/src/bbtkObject.cxx create mode 100644 kernel/src/bbtkObject.h create mode 100644 kernel/src/bbtkVirtualExec.cxx diff --git a/kernel/appli/bbc/main.cxx.in b/kernel/appli/bbc/main.cxx.in index b4ac527..47e150a 100644 --- a/kernel/appli/bbc/main.cxx.in +++ b/kernel/appli/bbc/main.cxx.in @@ -35,7 +35,7 @@ public: bool OnCmdLineParsed(wxCmdLineParser& parser); void Run(bbtk::Interpreter*); - bbtk::Executer* mExecuter; + bbtk::Executer::Pointer mExecuter; // int argc; // std::vector argv; bool command; @@ -111,7 +111,7 @@ bool wxBBIApp::OnInit( ) bbtk::Wx::CreateInvisibleTopWindow(); try { - mExecuter = new bbtk::Executer(); + mExecuter = bbtk::Executer::New(); mExecuter->SetInputs(param_map); if (help) mExecuter->SetNoExecMode(true); @@ -135,7 +135,6 @@ bool wxBBIApp::OnInit( ) mess += bbtk::std2wx ( e.GetMessage() ); wxMessageBox(mess,_T("Error"),wxOK | wxICON_ERROR); bbtk::Wx::GetTopWindow()->Close(); - delete mExecuter; return false; } if (help || !bbtk::Wx::IsSomeWindowAlive()) diff --git a/kernel/appli/bbfy/bbfy.cpp b/kernel/appli/bbfy/bbfy.cpp index a7b8533..4aeb878 100644 --- a/kernel/appli/bbfy/bbfy.cpp +++ b/kernel/appli/bbfy/bbfy.cpp @@ -541,7 +541,7 @@ void bbfy::CreateHeader() mFile << "{\n"; // Interface - mFile << " BBTK_USER_BLACK_BOX_INTERFACE(" + mFile << " BBTK_BLACK_BOX_INTERFACE(" << mName << "," << mParentBlackBox << ");\n"; @@ -846,7 +846,7 @@ void bbfy::WriteGenericITKFilterHeader() mFile << "{\n"; // Interface - mFile << " BBTK_USER_BLACK_BOX_INTERFACE(" + mFile << " BBTK_BLACK_BOX_INTERFACE(" << mName << "Generic,bbtk::AtomicBlackBox);\n"; // Inputs @@ -991,14 +991,14 @@ void bbfy::CreateCode() if (mTemplateParam.size()>0) { // Implementation - mFile << "BBTK_USER_BLACK_BOX_TEMPLATE_IMPLEMENTATION(" + mFile << "BBTK_BLACK_BOX_TEMPLATE_IMPLEMENTATION(" << mName << "," << mParentBlackBox << ");\n"; if (mGeneric) { // Implementation - mFile << "BBTK_USER_BLACK_BOX_IMPLEMENTATION(" + mFile << "BBTK_BLACK_BOX_IMPLEMENTATION(" << mName << "Generic,bbtk::AtomicBlackBox);\n"; // Package mFile << "BBTK_ADD_BLACK_BOX_TO_PACKAGE(" @@ -1015,7 +1015,7 @@ void bbfy::CreateCode() << mName << ")\n"; // Implementation - mFile << "BBTK_USER_BLACK_BOX_IMPLEMENTATION(" + mFile << "BBTK_BLACK_BOX_IMPLEMENTATION(" << mName << "," << mParentBlackBox << ");\n"; } diff --git a/kernel/appli/bbi/bbi.cxx b/kernel/appli/bbi/bbi.cxx index 0ee9e1a..3c00bb8 100644 --- a/kernel/appli/bbi/bbi.cxx +++ b/kernel/appli/bbi/bbi.cxx @@ -3,6 +3,7 @@ //========================================================================== // WITH WX //========================================================================== +#include "bbtkObject.h" #include "bbtkInterpreter.h" #include "bbtkWxBlackBox.h" #include "bbtkWxGUIConsole.h" @@ -14,6 +15,7 @@ static const wxCmdLineEntryDesc cmdLineDesc[] = { + { wxCMD_LINE_SWITCH, _T("M"), _T("Memory debug"), _T("Display memory debug message on exit") }, { wxCMD_LINE_SWITCH, _T("d"), _T("debug"), _T("Debug messages on (message All 9)") }, { wxCMD_LINE_SWITCH, _T("c"), _T("command"), _T("turn to command line mode after file(s) processing") }, { wxCMD_LINE_SWITCH, _T("q"), _T("quiet"), _T("be quiet") }, @@ -34,6 +36,7 @@ public: bool OnInit( ); int OnExit() { // std::cout << "wxBBIApp::OnExit()"<SetThrow(true); @@ -21,8 +21,6 @@ int main(int argc, char* argv[]) e.Print(); } - delete I; - return 0; } diff --git a/kernel/cmake/BBTKDefineOptions.cmake b/kernel/cmake/BBTKDefineOptions.cmake index 92f4cc9..69531a0 100644 --- a/kernel/cmake/BBTKDefineOptions.cmake +++ b/kernel/cmake/BBTKDefineOptions.cmake @@ -50,3 +50,12 @@ ELSE(BUILD_BBTK_DOC) ENDIF(BUILD_BBTK_DOC) #----------------------------------------------------------------------------- + +#----------------------------------------------------------------------------- +# BOOST C++ +OPTION(BBTK_USE_BOOST "Use the boost C++ library" ON) +IF(BBTK_USE_BOOST) +ADD_DEF( _USE_BOOST_ ) +ENDIF(BBTK_USE_BOOST) +#----------------------------------------------------------------------------- + diff --git a/kernel/cmake/BBTKKernelConfig.cmake b/kernel/cmake/BBTKKernelConfig.cmake index 4645ed2..1b61364 100644 --- a/kernel/cmake/BBTKKernelConfig.cmake +++ b/kernel/cmake/BBTKKernelConfig.cmake @@ -6,6 +6,7 @@ INCLUDE_DIRECTORIES( ${PROJECT_BINARY_DIR}/kernel/src ) # SOURCES DIR MUST ALSO BE IN INCLUDE DIRS FOR FILES COMPILED IN BINARY DIR # WHICH NEED TO INCLUDE OTHER FILES OF THE PACKAGE INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/kernel/src ) +INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/kernel/src/ThirdParty ) #---------------------------------------------------------------------------- #---------------------------------------------------------------------------- diff --git a/kernel/doc/bbtkDoxygen/Doxyfile.txt.in b/kernel/doc/bbtkDoxygen/Doxyfile.txt.in index f06f3fd..2f63cfd 100644 --- a/kernel/doc/bbtkDoxygen/Doxyfile.txt.in +++ b/kernel/doc/bbtkDoxygen/Doxyfile.txt.in @@ -1235,7 +1235,7 @@ GROUP_GRAPHS = YES # collaboration diagrams in a style similar to the OMG's Unified Modeling # Language. -UML_LOOK = YES +UML_LOOK = NO # If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. diff --git a/kernel/src/CMakeLists.txt b/kernel/src/CMakeLists.txt index 6003f59..a2933c5 100644 --- a/kernel/src/CMakeLists.txt +++ b/kernel/src/CMakeLists.txt @@ -151,7 +151,6 @@ ENDIF(NOT BBTK_INSTALL_NO_DEVELOPMENT) # Symbols must be exported (Windows) ADD_DEF(BBTK_EXPORT_SYMBOLS) -INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty) ADD_DEFINITIONS(-DCHECKBOXVIEW=1) #----------------------------------------------------------------------------- # Sources files diff --git a/kernel/src/bbtkAtomicBlackBox.cxx b/kernel/src/bbtkAtomicBlackBox.cxx index 981b16c..ae0869d 100644 --- a/kernel/src/bbtkAtomicBlackBox.cxx +++ b/kernel/src/bbtkAtomicBlackBox.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkAtomicBlackBox.cxx,v $ Language: C++ - Date: $Date: 2008/04/08 06:59:29 $ - Version: $Revision: 1.3 $ + Date: $Date: 2008/04/18 12:59:14 $ + Version: $Revision: 1.4 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -30,10 +30,12 @@ namespace bbtk AtomicBlackBox::AtomicBlackBox(const std::string &name, bool alloc) : BlackBox(name) { - bbtkDebugMessageInc("Kernel",7, - "AtomicBlackBox::AtomicBlackBox(\"" - < AtomicBlackBox::AtomicBlackBox(\"" + <AtomicBlackBox::AtomicBlackBox(" + < AtomicBlackBox::~AtomicBlackBox()" + < AtomicBlackBox::bbBackwardUpdate(" @@ -250,6 +257,32 @@ namespace bbtk bbtkDebugDecTab("Data",7); } //========================================================================= + + + + //========================================================================== + std::string AtomicBlackBox::GetObjectInfo() const + { + std::stringstream i; + return i.str(); + } + //========================================================================== + + //========================================================================== + size_t AtomicBlackBox::GetObjectSize() const + { + return sizeof(*this); + } + //========================================================================== + //========================================================================== + size_t AtomicBlackBox::GetObjectRecursiveSize() const + { + size_t s = GetObjectSize(); + return s; + } + //========================================================================== + + } // EO namespace bbtk diff --git a/kernel/src/bbtkAtomicBlackBox.h b/kernel/src/bbtkAtomicBlackBox.h index 02cb9a5..0af4403 100644 --- a/kernel/src/bbtkAtomicBlackBox.h +++ b/kernel/src/bbtkAtomicBlackBox.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkAtomicBlackBox.h,v $ Language: C++ - Date: $Date: 2008/04/08 06:59:29 $ - Version: $Revision: 1.3 $ + Date: $Date: 2008/04/18 12:59:14 $ + Version: $Revision: 1.4 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -42,6 +42,11 @@ namespace bbtk { //================================================================== public: + //================================================================== + bbtk::BlackBoxDescriptor::Pointer bbGetDescriptor() const + { + return bbmDescriptorPointer; + } //================================================================== /// Gets the output Data of a given label Data bbGetOutput( const std::string &label ); @@ -59,8 +64,9 @@ namespace bbtk //================================================================== //================================================================== - /// Destructor - virtual ~AtomicBlackBox(); + std::string GetObjectInfo() const; + size_t GetObjectSize() const; + size_t GetObjectRecursiveSize() const; //================================================================== //================================================================== @@ -72,6 +78,17 @@ namespace bbtk AtomicBlackBox(AtomicBlackBox& from, const std::string &name, bool alloc = true); //================================================================== + //================================================================== + /// Destructor + virtual ~AtomicBlackBox(); + //================================================================== + + //================================================================== + protected: + virtual void bbLockDescriptor() = 0; + // private: + // virtual void bbReleaseDescriptor(); + //================================================================== public: //================================================================== @@ -85,7 +102,7 @@ namespace bbtk /// - updates its inputs by calling bbUpdateInputs (which recursively calls bbBackwardUpdate on upstream boxes) /// - calls bbProcess which here simply calls the user callback bbUserProcess which does the actual processing. /// bbProcess is overloaded in WxBlackBox to handle widget creation and show - virtual IOStatus bbBackwardUpdate(Connection* caller); + virtual IOStatus bbBackwardUpdate(Connection::Pointer caller); //================================================================== //================================================================== @@ -126,6 +143,11 @@ namespace bbtk AtomicBlackBox() : BlackBox("") {} //================================================================== + protected: + //================================================================== + // The pointer on the descriptor + bbtk::BlackBoxDescriptor::Pointer bbmDescriptorPointer; + //================================================================== }; // Class AtomicBlackBox diff --git a/kernel/src/bbtkAtomicBlackBoxDescriptor.cxx b/kernel/src/bbtkAtomicBlackBoxDescriptor.cxx new file mode 100644 index 0000000..6511313 --- /dev/null +++ b/kernel/src/bbtkAtomicBlackBoxDescriptor.cxx @@ -0,0 +1,51 @@ +#include "bbtkAtomicBlackBoxDescriptor.h" +#include "bbtkBlackBox.h" +#include "bbtkPackage.h" + +namespace bbtk +{ + AtomicBlackBoxDescriptor::AtomicBlackBoxDescriptor() + { + bbtkDebugMessage("object",3,"==> AtomicBlackBoxDescriptor::AtomicBlackBoxDescriptor()"<(&BlackBox::bbGetInputBoxProcessMode), + new bbtk::AtomicBlackBoxTSetFunctor(&BlackBox::bbSetInputBoxProcessMode) ) ); + // Creates the input 'BoxExecute' + AddInputDescriptor + (new + bbtk::AtomicBlackBoxInputDescriptor + (typeid(AtomicBlackBoxDescriptor), + "BoxExecute", + "Any signal received by this input executes the box", + "", + new bbtk::AtomicBlackBoxTGetFunctor(&BlackBox::bbGetInputBoxExecute), + new bbtk::AtomicBlackBoxTSetFunctor(&BlackBox::bbSetInputBoxExecute) ) ); + // Creates the output 'BoxChange' + AddOutputDescriptor + (new + bbtk::AtomicBlackBoxOutputDescriptor + (typeid(AtomicBlackBoxDescriptor), + "BoxChange", + "Signal modifications of the box", + "", + new bbtk::AtomicBlackBoxTGetFunctor(&BlackBox::bbGetOutputBoxChange), + new bbtk::AtomicBlackBoxTSetFunctor(&BlackBox::bbSetOutputBoxChange) ) ); + // + AddToCategory("atomic box"); + bbtkDebugMessage("object",3,"<== AtomicBlackBoxDescriptor::AtomicBlackBoxDescriptor()"< AtomicBlackBoxDescriptor::AtomicBlackBoxDescriptor()"<(&BlackBox::bbGetInputBoxProcessMode), - new bbtk::AtomicBlackBoxTSetFunctor(&BlackBox::bbSetInputBoxProcessMode) ) ); - // Creates the input 'BoxExecute' - AddInputDescriptor - (new - bbtk::AtomicBlackBoxInputDescriptor - (typeid(AtomicBlackBoxDescriptor), - "BoxExecute", - "Any signal received by this input executes the box", - "", - new bbtk::AtomicBlackBoxTGetFunctor(&BlackBox::bbGetInputBoxExecute), - new bbtk::AtomicBlackBoxTSetFunctor(&BlackBox::bbSetInputBoxExecute) ) ); - // Creates the output 'BoxChange' - AddOutputDescriptor - (new - bbtk::AtomicBlackBoxOutputDescriptor - (typeid(AtomicBlackBoxDescriptor), - "BoxChange", - "Signal modifications of the box", - "", - new bbtk::AtomicBlackBoxTGetFunctor(&BlackBox::bbGetOutputBoxChange), - new bbtk::AtomicBlackBoxTSetFunctor(&BlackBox::bbSetOutputBoxChange) ) ); - // - AddToCategory("atomic box"); - } + /// Releases the descriptor + // virtual void Release(bool release_package = true); + + protected: + AtomicBlackBoxDescriptor(); + virtual ~AtomicBlackBoxDescriptor(); + virtual AtomicBlackBoxDescriptor::Pointer GetInstance() const = 0; + }; - } // namespace bbtk #endif diff --git a/kernel/src/bbtkAtomicBlackBoxMacros.h b/kernel/src/bbtkAtomicBlackBoxMacros.h index ed05e79..7ff6640 100644 --- a/kernel/src/bbtkAtomicBlackBoxMacros.h +++ b/kernel/src/bbtkAtomicBlackBoxMacros.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkAtomicBlackBoxMacros.h,v $ Language: C++ - Date: $Date: 2008/04/09 11:16:56 $ - Version: $Revision: 1.4 $ + Date: $Date: 2008/04/18 12:59:15 $ + Version: $Revision: 1.5 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -27,51 +27,48 @@ //============================================================================ /// Declares the standard interface of a AtomicBlackBox /// (ctor, New, descriptor related methods) -#define BBTK_USER_BLACK_BOX_INTERFACE(CLASS,PARENT) \ +#define BBTK_BLACK_BOX_INTERFACE_INTERNAL(CLASS,PARENT) \ + BBTK_OBJECT_MINIMAL_INTERFACE; \ private: \ - inline static void bbCreateDescriptorIfNeeded(); \ protected: \ CLASS(const std::string& name, bool allocate_connectors = true); \ - CLASS(CLASS& from, const std::string& name, \ + CLASS(Self& from, const std::string& name, \ bool allocate_connectors = true); \ ~CLASS(); \ - public: \ - inline static CLASS* bbNew(const std::string& name) \ - { \ - bbtkDebugMessageInc("Kernel",9,#CLASS<<"::bbNew(\""<bbGetDescriptor()->Reference(); \ - bbtkDebugDecTab("Kernel",9); \ - return c; \ - } \ - inline bbtk::BlackBox* bbClone(const std::string& name) \ - { \ - bbtkDebugMessageInc("Kernel",9,#CLASS<<"::bbClone(\""<Reference(); \ - bbtkDebugDecTab("Kernel",9); \ - return c; \ - } \ - bbtk::BlackBoxDescriptor* bbGetDescriptor() const \ + public: \ + std::string GetObjectName() const \ + { return std::string(#CLASS)+std::string(" '") \ + +bbGetNameWithParent()+std::string("'"); } \ + inline static Pointer New(const std::string& name) \ { \ - return (bbtk::BlackBoxDescriptor*)bbDescriptor(); \ + bbtkDebugMessage("object",1,"##> "<<#CLASS \ + <<"::New(\""< "<<#CLASS \ + <<"::bbClone(\""< "<<#CLASS<<"::"<<#CLASS \ + <<"(\""< "<<#CLASS<<"::"<<#CLASS \ <<"("<bbGetFullName()<<"]"< "<<#CLASS <<"::~"<< #CLASS \ + <<"() ["<bbGetFullName()<<"]"<bbGetFullName()<<"]"< "< "<<#CLASS<<"Descriptor::" \ + <<#CLASS<<"Descriptor()"< Self; \ + BBTK_BLACK_BOX_INTERFACE_INTERNAL(CLASS,PARENT); +//============================================================================ + //============================================================================ /// Begins a template AtomicBlackBox of template param T description block -#define BBTK_BEGIN_DESCRIBE_TEMPLATE_BLACK_BOX(CLASS) \ - template \ - class /*BBTK_EXPORT*/ CLASS ## Descriptor : public bbtk::BlackBoxDescriptor \ +#define BBTK_BEGIN_DESCRIBE_TEMPLATE_BLACK_BOX(CLASS,PARENT) \ + template \ + class /*BBTK_EXPORT*/ CLASS ## Descriptor : public PARENT ## Descriptor \ { \ + public: typedef CLASS ## Descriptor Self; \ + BBTK_OBJECT_MINIMAL_INTERFACE; \ public: \ - bbtk::BlackBox::Pointer CreateInstance(const std::string& name) \ + std::string GetObjectName() const \ + { \ + return std::string(BBTK_STRINGIFY(CLASS)) \ + +std::string("Descriptor<")+bbtk::TypeName() \ + +std::string("> '")+GetFullTypeName() \ + +std::string("'"); \ + } \ + static Pointer New() \ + { \ + bbtkDebugMessage("object",1,"##> "<()<<">::New" \ + <()<<">::New" \ + <::bbNew(name); \ + return CLASS::New(name); \ } \ CLASS ## Descriptor() \ { \ - bbtkDebugMessageInc("Kernel",9,#CLASS<<"Descriptor::"<<#CLASS \ - <<"Descriptor()"< "<<#CLASS<<"Descriptor<" \ + <()<<">::" \ + <<#CLASS<<"Descriptor()"<()<<">::" \ + <<#CLASS<<"Descriptor()"< \ - void CLASS::bbCreateDescriptorIfNeeded() \ - { \ - if ( !bbDescriptorPointer() ) \ - bbDescriptorPointer() = new CLASS ## Descriptor; \ - } + }; + //============================================================================ //============================================================================ @@ -392,76 +468,137 @@ //============================================================================ /// Template AtomicBlackBox std implementation of ctor and dtor -#define BBTK_USER_BLACK_BOX_TEMPLATE_IMPLEMENTATION(CLASS,PARENT) \ +#define BBTK_BLACK_BOX_TEMPLATE_IMPLEMENTATION(CLASS,PARENT) \ template \ CLASS::CLASS(const std::string& name, bool alloc) \ : PARENT(name,false) \ { \ - BBTK_BEGIN_BLACK_BOX_CONSTRUCTOR(CLASS,alloc); \ - CLASS::bbUserConstructor(); \ - BBTK_END_BLACK_BOX_CONSTRUCTOR; \ - } \ + BBTK_BEGIN_BLACK_BOX_CONSTRUCTOR(CLASS,alloc); \ + CLASS::bbUserConstructor(); \ + BBTK_END_BLACK_BOX_CONSTRUCTOR(CLASS); \ + } \ template \ - CLASS::CLASS(CLASS& from, \ - const std::string& name, bool allocate_connectors) \ + CLASS::CLASS(CLASS& from, \ + const std::string& name, bool allocate_connectors) \ : PARENT(from,name,false) \ { \ - BBTK_BEGIN_BLACK_BOX_COPY_CONSTRUCTOR(CLASS,from,allocate_connectors); \ + BBTK_BEGIN_BLACK_BOX_COPY_CONSTRUCTOR(CLASS,from,allocate_connectors); \ CLASS::bbUserCopyConstructor(); \ - BBTK_END_BLACK_BOX_CONSTRUCTOR; \ - } \ + BBTK_END_BLACK_BOX_COPY_CONSTRUCTOR(CLASS,from); \ + } \ template \ CLASS::~CLASS() \ { \ - BBTK_BEGIN_BLACK_BOX_DESTRUCTOR(CLASS); \ + BBTK_BEGIN_BLACK_BOX_DESTRUCTOR(CLASS); \ CLASS::bbUserDestructor(); \ - BBTK_END_BLACK_BOX_DESTRUCTOR; \ - } + BBTK_END_BLACK_BOX_DESTRUCTOR(CLASS); \ + } \ + template \ + void CLASS::bbLockDescriptor() \ + { \ + bbmDescriptorPointer = CLASS ## Descriptor::Instance(); \ + } //============================================================================ + + //============================================================================ // Two template params user black boxes macros +//============================================================================ + +//============================================================================ +#define BBTK_TEMPLATE2_BLACK_BOX_INTERFACE(CLASS,PARENT,T1,T2) \ + public : typedef CLASS Self; \ + BBTK_BLACK_BOX_INTERFACE_INTERNAL(CLASS,PARENT); +//=========================================================================== +//============================================================================ /// Begins a template AtomicBlackBox description block of template param T1 and T2 -#define BBTK_BEGIN_DESCRIBE_TEMPLATE2_BLACK_BOX(CLASS) \ +#define BBTK_BEGIN_DESCRIBE_TEMPLATE2_BLACK_BOX(CLASS,PARENT) \ template \ - class /*BBTK_EXPORT*/ CLASS ## Descriptor : public bbtk::BlackBoxDescriptor \ + class /*BBTK_EXPORT*/ CLASS ## Descriptor : public PARENT ## Descriptor \ { \ + public: typedef CLASS ## Descriptor Self; \ + BBTK_OBJECT_MINIMAL_INTERFACE; \ public: \ - bbtk::BlackBox::Pointer CreateInstance(const std::string& name) \ + std::string GetObjectName() const \ + { \ + return std::string(BBTK_STRINGIFY(CLASS)) \ + +std::string("Descriptor<")+bbtk::TypeName() \ + +std::string(",")+bbtk::TypeName() \ + +std::string("> '")+GetFullTypeName() \ + +std::string("'"); \ + } \ + static Pointer New() \ + { \ + bbtkDebugMessage("object",1,"##> "<()<<"," \ + <()<<">::New"<()<<"," \ + <()<<">::New"<::bbNew(name); \ + return CLASS::New(name); \ } \ CLASS ## Descriptor() \ { \ - bbtkDebugMessageInc("Kernel",9,#CLASS<<"Descriptor::"<<#CLASS \ - <<"Descriptor()"< "<<#CLASS<<"Descriptor<" \ + <()<<"," \ + <()<<">::" \ + <<#CLASS<<"Descriptor()"<()<<"," \ + <()<<">::" \ + <<#CLASS<<"Descriptor()"< \ - void CLASS::bbCreateDescriptorIfNeeded() \ - { \ - if ( !bbDescriptorPointer() ) \ - bbDescriptorPointer() = new CLASS ## Descriptor; \ - } + }; + //============================================================================ + + +/* //============================================================================ // Two template params user black boxes macros /// Begins a template AtomicBlackBox description block of template param T1 and T2 #define BBTK_BEGIN_DESCRIBE_TEMPLATE2_WITH_TYPES_BLACK_BOX(CLASS,TYPE1,TYPE2) \ template \ - class /*BBTK_EXPORT*/ CLASS ## Descriptor : public bbtk::BlackBoxDescriptor \ + class CLASS ## Descriptor : public bbtk::BlackBoxDescriptor \ { \ public: \ - bbtk::BlackBox::Pointer CreateInstance(const std::string& name) \ + virtual bbtk:AtomicBlackBoxDescriptor::Pointer GetInstance() const \ + { \ + return Instance(); \ + } \ + static bbtk:AtomicBlackBoxDescriptor::Pointer Instance() \ + { \ + static bbtk:AtomicBlackBoxDescriptor::WeakPointer i; \ + bbtk:AtomicBlackBoxDescriptor::Pointer j; \ + if (!i.lock()) { j = Self::New(); i = j; } \ + return i.lock(); \ + } \ + bbtk::BlackBox::Pointer NewBlackBox(const std::string& name) \ { \ return new CLASS(name); \ } \ @@ -476,16 +613,11 @@ #define BBTK_END_DESCRIBE_TEMPLATE2_WITH_TYPES_BLACK_BOX(CLASS,TYPE1,TYPE2) \ bbtkDecTab("Kernel",9); \ } \ - }; \ - template \ - void CLASS::bbCreateDescriptorIfNeeded() \ - { \ - if ( !bbDescriptorPointer() ) \ - bbDescriptorPointer() = new CLASS ## Descriptor; \ - } -//============================================================================ + }; +//============================================================================ +*/ //============================================================================ /// Describes a 2 template params AtomicBlackBox input (to be put inside the UBB description block) @@ -511,37 +643,43 @@ //============================================================================ /// Template AtomicBlackBox std implementation of ctor and dtor -#define BBTK_USER_BLACK_BOX_TEMPLATE2_IMPLEMENTATION(CLASS,PARENT) \ +#define BBTK_BLACK_BOX_TEMPLATE2_IMPLEMENTATION(CLASS,PARENT) \ template \ CLASS::CLASS(const std::string& name, bool alloc) \ : PARENT(name,false) \ { \ BBTK_BEGIN_BLACK_BOX_CONSTRUCTOR(CLASS,alloc); \ CLASS::bbUserConstructor(); \ - BBTK_END_BLACK_BOX_CONSTRUCTOR; \ + BBTK_END_BLACK_BOX_CONSTRUCTOR(CLASS); \ } \ - template \ - CLASS::CLASS(CLASS& from, \ - const std::string& name, bool allocate_connectors) \ + template \ + CLASS::CLASS(CLASS& from, \ + const std::string& name, bool allocate_connectors) \ : PARENT(from,name,false) \ { \ BBTK_BEGIN_BLACK_BOX_COPY_CONSTRUCTOR(CLASS,from,allocate_connectors); \ CLASS::bbUserCopyConstructor(); \ - BBTK_END_BLACK_BOX_CONSTRUCTOR; \ + BBTK_END_BLACK_BOX_COPY_CONSTRUCTOR(CLASS,from); \ } \ template \ CLASS::~CLASS() \ { \ BBTK_BEGIN_BLACK_BOX_DESTRUCTOR(CLASS); \ CLASS::bbUserDestructor(); \ - BBTK_END_BLACK_BOX_DESTRUCTOR; \ - } + BBTK_END_BLACK_BOX_DESTRUCTOR(CLASS); \ + } \ + template \ + void CLASS::bbLockDescriptor() \ + { \ + bbmDescriptorPointer = CLASS ## Descriptor::Instance(); \ + } //============================================================================ +/* //============================================================================ /// Template AtomicBlackBox std implementation of ctor and dtor -#define BBTK_USER_BLACK_BOX_TEMPLATE2_WITH_TYPES_IMPLEMENTATION(CLASS,PARENT,TYPE1,TYPE2) \ +#define BBTK_BLACK_BOX_TEMPLATE2_WITH_TYPES_IMPLEMENTATION(CLASS,PARENT,TYPE1,TYPE2) \ template \ CLASS::CLASS(const std::string& name, bool alloc) \ : PARENT(name,false) \ @@ -565,10 +703,15 @@ BBTK_BEGIN_BLACK_BOX_DESTRUCTOR(CLASS); \ this->bbUserDestructor(); \ BBTK_END_BLACK_BOX_DESTRUCTOR; \ - } + } \ + template \ + void CLASS::bbLockDescriptor() \ + { \ + bbmDescriptorPointer = CLASS ## Descriptor::Instance(); \ + } //============================================================================ - +*/ diff --git a/kernel/src/bbtkBlackBox.cxx b/kernel/src/bbtkBlackBox.cxx index 9a62efb..58ae959 100644 --- a/kernel/src/bbtkBlackBox.cxx +++ b/kernel/src/bbtkBlackBox.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkBlackBox.cxx,v $ Language: C++ -Date: $Date: 2008/04/09 11:16:57 $ -Version: $Revision: 1.9 $ +Date: $Date: 2008/04/18 12:59:15 $ +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 @@ -36,21 +36,69 @@ PURPOSE. See the above copyright notices for more information. namespace bbtk { -//EED + static bool bbmgSomeBoxExecuting = false; static bool bbmgFreezeExecution = false; - static std::set bbmgExecutionList; + static std::set bbmgExecutionList; + //========================================================================= + BlackBox::Deleter::Deleter() + { + } + //========================================================================= + + //========================================================================= + void BlackBox::Deleter::Delete(Object* p) + { + BlackBox* b = dynamic_cast(p); + if (!b) + { + bbtkInternalError("BlackBox::Deleter::Delete("<GetObjectName() + <<"["<GetObjectName();//b->bbGetNameWithParent(); + bbtkDebugMessage("object",2,"##> BlackBox::Deleter(\""<bbGetDescriptor(); + bbtkDebugMessage("object",2,"##> BlackBox::Deleter(\""<bbDelete(); + + bbtkDebugMessage("object",2,"##> BlackBox::Deleter(\""<GetPackage(); + if (!pack.expired()) + { + Package::ReleaseBlackBoxDescriptor(pack,desc); + } + else + { + bbtkDebugMessage("object",2,"##> BlackBox::Deleter(\""< BlackBox::Deleter(\""< BlackBox::BlackBox(\"" + < BlackBox::BlackBox(" + < BlackBox::~BlackBox() ["<bbDesallocateConnectors(); - //printf("EED BlackBox::~BlackBox 02 \n"); - bbtkDebugDecTab("Kernel",7); - } - //========================================================================= - - //========================================================================= - /// Destruction method of a black box - void BlackBox::bbDelete() - { - bbtkDebugMessage("Kernel",1,"BlackBox::bbDelete() [" - <UnReference(); - this->bbUserDelete(); + bbtkDebugMessage("object",4,"<== BlackBox::~BlackBox() ["<bbGetDescriptor()->GetTypeName()+">"; + return this->bbGetNameWithParent()+"<"+this->bbGetDescriptor()->GetTypeName()+">"; } //========================================================================= @@ -138,9 +178,9 @@ namespace bbtk /// Returns the name with the name of the parent prepended if any std::string BlackBox::bbGetNameWithParent() const { - if (bbmParent) + if (bbmParent.lock()) { - return bbmParent->bbGetNameWithParent() + ":" + bbmName; + return bbmParent.lock()->bbGetNameWithParent() + ":" + bbmName; } else { @@ -230,7 +270,7 @@ namespace bbtk { bbtkDebugMessage("Kernel",8,"* Allocate \""<first<<"\""<second->GetName()] - = new BlackBoxInputConnector(this); + = new BlackBoxInputConnector(GetThisPointer()); } const BlackBoxDescriptor::OutputDescriptorMapType& omap = bbGetDescriptor()->GetOutputDescriptorMap(); @@ -399,7 +439,7 @@ namespace bbtk bbtkDebugMessage("Process",9, "-> Execution triggered by Reactive mode or BoxExecute input change"<bbSetStatus(MODIFIED); - bbGlobalAddToExecutionList( this ); + bbGlobalAddToExecutionList( GetThisPointer() ); } else if ( bbGetStatus() == MODIFIED ) //! this->bbIsUptodate()) { @@ -562,7 +602,7 @@ namespace bbtk //========================================================================= /// Connects the input to the connection c - void BlackBox::bbConnectInput( const std::string& name, Connection* c) + void BlackBox::bbConnectInput( const std::string& name, Connection::Pointer c) { bbtkDebugMessageInc("Kernel",7, "BlackBox::bbConnectInput(\""< to the connection c - void BlackBox::bbConnectOutput( const std::string& name, Connection* c) + void BlackBox::bbConnectOutput( const std::string& name, Connection::Pointer c) { bbtkDebugMessageInc("Kernel",7, "BlackBox::bbConnectOutput(\""< from the connection c - void BlackBox::bbDisconnectInput( const std::string& name, Connection* c) + void BlackBox::bbDisconnectInput( const std::string& name, Connection::Pointer c) { + if (!c) return; bbtkDebugMessageInc("Kernel",7, "BlackBox::bbDisconnectInput(\""< from the connection c - void BlackBox::bbDisconnectOutput( const std::string& name, Connection* c) + void BlackBox::bbDisconnectOutput( const std::string& name, Connection::Pointer c) { + if (!c) return; bbtkDebugMessageInc("Kernel",7, "BlackBox::bbDisconnectOutput(\""<GetPackage(); + Package::Pointer p = bbGetDescriptor()->GetPackage(); if ((p != 0) && ( ! p->GetFactorySet().empty() ) ) { - Factory* f = *p->GetFactorySet().begin(); - BlackBox* a = 0; + Factory::Pointer f = p->GetFactorySet().begin()->lock(); + BlackBox::Pointer a; try { a = f->NewAdaptor( @@ -677,7 +719,7 @@ namespace bbtk } catch (bbtk::Exception e) { } - if (a!=NULL){ + if (a){ // bbUpdate(); a->bbSetInput("In",bbGetOutput(output)); a->bbExecute(); @@ -708,11 +750,11 @@ namespace bbtk if (bbGetInputType(input) != typeid(std::string)) { // Look for factory - Package* p = bbGetDescriptor()->GetPackage(); + Package::Pointer p = bbGetDescriptor()->GetPackage(); if ((p != 0) && ( ! p->GetFactorySet().empty() ) ) { - Factory* f = *p->GetFactorySet().begin(); - BlackBox* a = 0; + Factory::Pointer f = p->GetFactorySet().begin()->lock(); + BlackBox::Pointer a; try { a = f->NewAdaptor( @@ -722,7 +764,7 @@ namespace bbtk }catch (bbtk::Exception e) { } - if (a!=NULL) + if (a) { // bbUpdate(); a->bbSetInput("In",bbGetInput(input)); @@ -788,7 +830,7 @@ namespace bbtk //========================================================================= /// Write Graphviz-dot description in file void BlackBox::bbWriteDotFileBlackBox(FILE *ff, - BlackBox *parentblackbox, + BlackBox::Pointer parentblackbox, int detail, int level, bool instanceOrtype, bool relative_link ) @@ -871,15 +913,15 @@ namespace bbtk // std::cout << labelStr << std::endl; // Relation Input - if (this!=parentblackbox){ + if (GetThisPointer()!=parentblackbox){ for ( i = mInputConnectorMap.begin(); i != mInputConnectorMap.end(); ++i ) { if (i->second) { - Connection* con = i->second->GetConnection(); + Connection::Pointer con = i->second->GetConnection(); if (con!=NULL){ - BlackBox *a=con->GetBlackBoxFrom(); - BlackBox *b=con->GetBlackBoxTo(); + BlackBox::Pointer a=con->GetBlackBoxFrom(); + BlackBox::Pointer b=con->GetBlackBoxTo(); fprintf(ff," "); a->bbWriteDotInputOutputName(ff,false,detail,level); if (detail==1) @@ -904,7 +946,7 @@ namespace bbtk //========================================================================= - void BlackBox::bbShowRelations(BlackBox *parentblackbox, + void BlackBox::bbShowRelations(BlackBox::Pointer parentblackbox, int detail, int level /*,Factory *factory*/ ) { @@ -937,7 +979,7 @@ namespace bbtk ivalue.push_back(bbGetInputAsString(i->first)); if (ivalue.back().size()>valuelmax) valuelmax = ivalue.back().size(); std::string s(""); - Connection* con = i->second->GetConnection(); + Connection::Pointer con = i->second->GetConnection(); if (con!=0){ s = con->GetBlackBoxFrom()->bbGetName(); s += "."; @@ -956,14 +998,15 @@ namespace bbtk ovalue.push_back(bbGetOutputAsString(o->first)); if (ovalue.back().size()>valuelmax) valuelmax = ovalue.back().size(); std::vector ss; - const std::vector& con = o->second->GetConnectionVector(); - std::vector::const_iterator c; + const std::vector& con + = o->second->GetConnectionVector(); + std::vector::const_iterator c; for (c=con.begin();c!=con.end();++c) { std::string s; - s = (*c)->GetBlackBoxTo()->bbGetName(); + s = (*c).lock()->GetBlackBoxTo()->bbGetName(); s += "."; - s += (*c)->GetBlackBoxToInput(); + s += (*c).lock()->GetBlackBoxToInput(); ss.push_back(s); } // if con oconn.push_back(ss); @@ -1032,7 +1075,7 @@ namespace bbtk "=> BlackBox::bbGlobalProcessExecutionList()" <::iterator i; + std::set::iterator i; for (i=bbmgExecutionList.begin(); i!=bbmgExecutionList.end(); ++i) @@ -1071,7 +1114,7 @@ namespace bbtk return bbmgFreezeExecution; } - void BlackBox::bbGlobalAddToExecutionList( BlackBox* b ) + void BlackBox::bbGlobalAddToExecutionList( BlackBox::Pointer b ) { bbmgExecutionList.insert(b); } @@ -1094,6 +1137,8 @@ namespace bbtk } //========================================================================= + + } // EO namespace bbtk // EOF diff --git a/kernel/src/bbtkBlackBox.h b/kernel/src/bbtkBlackBox.h index f160dd5..04843d2 100644 --- a/kernel/src/bbtkBlackBox.h +++ b/kernel/src/bbtkBlackBox.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkBlackBox.h,v $ Language: C++ - Date: $Date: 2008/04/09 11:16:57 $ - Version: $Revision: 1.5 $ + Date: $Date: 2008/04/18 12:59:15 $ + Version: $Revision: 1.6 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See doc/license.txt or @@ -32,7 +32,6 @@ #include "bbtkSystem.h" #include "bbtkBlackBoxDescriptor.h" -//#include "bbtkConnection.h" #include "bbtkBlackBoxInputConnector.h" #include "bbtkBlackBoxOutputConnector.h" #include @@ -45,17 +44,14 @@ namespace bbtk class Factory; - class BBTK_EXPORT BlackBox + class BBTK_EXPORT BlackBox : public Object { - - + BBTK_ABSTRACT_OBJECT_INTERFACE(BlackBox); public: //================================================================== // INTERFACE //================================================================== - /// The type of pointer on a BlackBox - typedef BlackBox* Pointer; - + /// The type of map of output connector pointers typedef std::map OutputConnectorMapType; @@ -64,14 +60,13 @@ namespace bbtk InputConnectorMapType; /// Returns the pointer on the descriptor of the box - virtual BlackBoxDescriptor* bbGetDescriptor() const = 0; + virtual BlackBoxDescriptor::Pointer bbGetDescriptor() const = 0; /// Returns a pointer on a clone of the box with name - virtual BlackBox* bbClone(const std::string& name) = 0; + virtual BlackBox::Pointer bbClone(const std::string& name) = 0; - /// Destruction method of a black box - virtual void bbDelete(); /// User overloadable destruction method of a black box + /// UNUSED FOR THE MOMENT virtual void bbUserDelete(); /// Returns the Name of the Type of the BlackBox @@ -86,12 +81,12 @@ namespace bbtk virtual std::string bbGetFullName() const; /// Returns the name with the name of the parent prepended if any - std::string bbGetNameWithParent() const; + virtual std::string bbGetNameWithParent() const; /// Sets the parent of the BlackBox void bbSetParent(BlackBox::Pointer p) { bbmParent = p; } /// Returns the parent of the BlackBox, i.e the BlackBox that contains it (0 if none) - BlackBox::Pointer bbGetParent() const { return bbmParent; } + BlackBox::Pointer bbGetParent() const { return bbmParent.lock(); } /// Main processing method of the box. @@ -152,14 +147,17 @@ bool reaction = true); virtual void bbSetOutput( const std::string &name, Data data) = 0; /// Connects the input to the connection c - virtual void bbConnectInput( const std::string& name, Connection* c); + virtual void bbConnectInput( const std::string& name, + Connection::Pointer c); /// Connects the output to the connection c - virtual void bbConnectOutput( const std::string& name, Connection* c); - + virtual void bbConnectOutput( const std::string& name, + Connection::Pointer c); /// Disconnects the input from the connection c - virtual void bbDisconnectInput( const std::string& name, Connection* c); + virtual void bbDisconnectInput( const std::string& name, + Connection::Pointer c); /// Disconnects the output from the connection c - virtual void bbDisconnectOutput( const std::string& name, Connection* c); + virtual void bbDisconnectOutput( const std::string& name, + Connection::Pointer c); /// Returns the input connectors map InputConnectorMapType& bbGetInputConnectorMap() @@ -232,7 +230,7 @@ bool reaction = true); /// (uses bbGetInputAsString / bbGetOutputAsString which use adaptors) /// If relative_link is true then creates relative hrefs virtual void bbWriteDotFileBlackBox(FILE *ff, - BlackBox *parentblackbox, + BlackBox::Pointer parentblackbox, int detail, int level, bool instanceOrtype, bool relative_link ); @@ -242,13 +240,14 @@ bool reaction = true); int detail, int level); - virtual void bbShowRelations(BlackBox *parentblackbox, + virtual void bbShowRelations(BlackBox::Pointer parentblackbox, int detail, int level ); std::string bbGetOutputAsString( const std::string &output ); //,Factory *factory); std::string bbGetInputAsString( const std::string &input); //,Factory *factory); - virtual BlackBox *bbFindBlackBox(const std::string &blackboxname) { return NULL;} + virtual BlackBox::Pointer bbFindBlackBox(const std::string &blackboxname) + { return BlackBox::Pointer();} virtual void Check(bool recursive = true); @@ -260,8 +259,6 @@ bool reaction = true); BlackBox(const std::string &name); /// Constructor from an existing box (copy) with a new name BlackBox(BlackBox& from, const std::string &name); - /// Destructor - virtual ~BlackBox(); //================================================================== @@ -295,7 +292,7 @@ bool reaction = true); /// - calls bbUpdateChildren /// - calls bbShowWidget which shows the widget associated to the box (if any) public: - virtual IOStatus bbBackwardUpdate(Connection* caller) = 0; + virtual IOStatus bbBackwardUpdate(Connection::Pointer caller) = 0; //================================================================== //================================================================== @@ -309,7 +306,7 @@ bool reaction = true); /// - calls bbCreateWidget /// - calls bbProcess which is the user callback which does the actual processing /// - calls bbUpdateChildren which recursively calls bbForwardUpdate on connections attached the "Child" output - // virtual void bbForwardUpdate(Connection* caller) = 0; + // virtual void bbForwardUpdate(Connection::Pointer caller) = 0; //================================================================== protected: //================================================================== @@ -322,7 +319,7 @@ bool reaction = true); //================================================================== /// Updates the pipeline in upstream-downstream direction along the "Child"-"Parent" connections only. /// Does nothing here. Overloaded in WxContainerBlackbox - //virtual void bbUpdateChildren( Connection* caller ) { } + //virtual void bbUpdateChildren( Connection::Pointer caller ) { } //================================================================== //================================================================== @@ -333,7 +330,7 @@ bool reaction = true); /// Shows the window associated to the box /// (called after bbProcess during bbExecute) /// Does nothing here but overloaded in WxBlackBox and WxContainerBlackBox - virtual void bbShowWindow(Connection* caller) { } + virtual void bbShowWindow(Connection::Pointer caller) { } virtual void bbHideWindow() {} //================================================================== @@ -352,7 +349,7 @@ bool reaction = true); virtual bool bbCanReact() const; - static void bbGlobalAddToExecutionList( BlackBox* b ); + static void bbGlobalAddToExecutionList( BlackBox::Pointer b ); static void bbGlobalProcessExecutionList(); //================================================================== @@ -369,14 +366,31 @@ bool reaction = true); bool bbGetExecuting() const { return bbmExecuting; } void bbSetExecuting(bool b) { bbmExecuting = b; } + // Black box objects have a special deleter + // which must take care of releasing the descriptor + // **AFTER** the box is deleted + // (Releasing it in the destructor may cause dl close and crash) + /// Black box deleter + /// 1) Calls the user overloadable bbDelete method + /// 2) Releases the box descriptor + struct Deleter : public Object::Deleter + { + Deleter(); + void Delete(Object* p); + }; + + template + static boost::shared_ptr MakeBlackBoxPointer(U* s, bool lock = false) + { + return MakePointer(s,BlackBox::Deleter(),lock); + } + + virtual void bbDelete() { delete this; } private: //================================================================== // PRIVATE PART - /// Default constructor is private : derived classes must use the constructor with the BlackBox's name - BlackBox() {} - BlackBox(const BlackBox&) {} /// The status of the box IOStatus bbmStatus; /// The name of the black-box @@ -390,7 +404,7 @@ bool reaction = true); std::string bbmBoxProcessMode; /// The parent of the black box in the ComplexBlackBox hierarchy - BlackBox::Pointer bbmParent; + BlackBox::WeakPointer bbmParent; //================================================================== //================================================================== diff --git a/kernel/src/bbtkBlackBoxDescriptor.cxx b/kernel/src/bbtkBlackBoxDescriptor.cxx index 68ba243..e015608 100644 --- a/kernel/src/bbtkBlackBoxDescriptor.cxx +++ b/kernel/src/bbtkBlackBoxDescriptor.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkBlackBoxDescriptor.cxx,v $ Language: C++ - Date: $Date: 2008/04/09 11:16:57 $ - Version: $Revision: 1.15 $ + Date: $Date: 2008/04/18 12:59:15 $ + Version: $Revision: 1.16 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -29,7 +29,11 @@ namespace bbtk { - + + typedef Package::Pointer PackagePointer; + + + //========================================================================= /// Default ctor BlackBoxDescriptor::BlackBoxDescriptor() @@ -38,11 +42,12 @@ namespace bbtk mAuthor(""), mCategory(""), mKind(STANDARD), - mPackage(NULL), - mRefCount(0) + mPackage() { - bbtkDebugMessage("Kernel",9, - "BlackBoxDescriptor::BlackBoxDescriptor()"< BlackBoxDescriptor::BlackBoxDescriptor()"< BlackBoxDescriptor::~BlackBoxDescriptor() [" + <second; - bbtkDebugDecTab("Kernel",9); + bbtkDebugMessage("object",4, + "<== BlackBoxDescriptor::~BlackBoxDescriptor() [" + < BlackBoxDescriptor::Release('" + <GetTypeName()<<"')"< No more instance alive = releasing from package"<mPackage; + Package::ReleaseBlackBoxDescriptor(pack,desc); + } + else + { + bbtkMessage("object",2," --> Still some instances alive = Keeping it alive"<GetTypeName()<<"')"<GetName() + "::" + mTypeName; + if (GetPackage()!=0) return GetPackage()->GetName() + "::" + mTypeName; return "::" + mTypeName; } //========================================================================= diff --git a/kernel/src/bbtkBlackBoxDescriptor.h b/kernel/src/bbtkBlackBoxDescriptor.h index a680b54..4d047c6 100644 --- a/kernel/src/bbtkBlackBoxDescriptor.h +++ b/kernel/src/bbtkBlackBoxDescriptor.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkBlackBoxDescriptor.h,v $ Language: C++ - Date: $Date: 2008/04/09 11:16:57 $ - Version: $Revision: 1.8 $ + Date: $Date: 2008/04/18 12:59:15 $ + 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 @@ -28,6 +28,7 @@ #ifndef __bbtkBlackBoxDescriptor_h__ #define __bbtkBlackBoxDescriptor_h__ +#include "bbtkObject.h" #include "bbtkBlackBoxInputDescriptor.h" #include "bbtkBlackBoxOutputDescriptor.h" #include @@ -38,10 +39,13 @@ namespace bbtk class BlackBox; class Package; + BBTK_FORWARD_DECLARE_POINTER(BlackBox); + BBTK_FORWARD_DECLARE_POINTER(Package); //========================================================================== - class BBTK_EXPORT BlackBoxDescriptor + class BBTK_EXPORT BlackBoxDescriptor : public Object { + BBTK_ABSTRACT_OBJECT_INTERFACE(BlackBoxDescriptor); public: /// The type of descriptor of inputs typedef BlackBoxInputDescriptor InputDescriptor; @@ -62,11 +66,12 @@ namespace bbtk } Kind; - /// Default ctor - BlackBoxDescriptor(); - /// Creates an instance with name boxname of the BlackBox + /// Releases a descriptor + // static void Release(BlackBoxDescriptor::WeakPointer); + + /// Creates an instance with name boxname of the BlackBox /// of which this is the descriptor - virtual BlackBox* CreateInstance(const std::string& boxname) = 0; + virtual BlackBoxPointer NewBlackBox(const std::string& boxname) = 0; /// Returns the name of the **TYPE** of the black box const std::string& GetTypeName() const { return mTypeName; } @@ -83,11 +88,8 @@ namespace bbtk /// Returns the category(s) of the BlackBox const std::string& GetCategory() const { return mCategory; } - /// Returns the Package to which the box belongs - Package* GetPackage() { return mPackage; } - /// Returns the Package to which the box belongs (const pointer) - const Package* GetPackage() const { return mPackage; } + PackagePointer GetPackage() const { return mPackage; } /// Returns the kind of box Kind GetKind() const { return mKind; } @@ -122,7 +124,7 @@ namespace bbtk void AddToCategory( const std::string&, bool clear = false ); /// Sets the Package to which the box belongs - void SetPackage(Package *package) { mPackage = package; } + void SetPackage(PackagePointer package) { mPackage = package; } /// Sets the kind of box void SetKind(Kind kind) { mKind = kind; } @@ -140,19 +142,10 @@ namespace bbtk int detail, int level, const std::string& output_dir = "", bool relative_link = false ); - - /// Increase ref count - void Reference() { mRefCount++; } - /// Decrease ref count and delete if no more used - void UnReference(); - /// virtual void Check(bool recursive=true) const; protected: - /// Default dtor is protected : use UnRegister to destroy (ref counting) - virtual ~BlackBoxDescriptor(); - /// Adds an input descriptor void AddInputDescriptor( BlackBoxInputDescriptor *d ) { mInput[d->GetName()] = d; } @@ -172,17 +165,12 @@ namespace bbtk /// The kind of box (standard / adaptor) Kind mKind; /// The Package to which the box belongs - Package *mPackage; + PackagePointer mPackage; /// The inputs InputDescriptorMapType mInput; /// The outputs OutputDescriptorMapType mOutput; - /// Reference counting - int mRefCount; - - private: - BlackBoxDescriptor(const BlackBoxDescriptor&) {} }; // class BlackBoxDescriptor //========================================================================== diff --git a/kernel/src/bbtkBlackBoxInputConnector.cxx b/kernel/src/bbtkBlackBoxInputConnector.cxx index 9269ec1..1bbde73 100644 --- a/kernel/src/bbtkBlackBoxInputConnector.cxx +++ b/kernel/src/bbtkBlackBoxInputConnector.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkBlackBoxInputConnector.cxx,v $ Language: C++ - Date: $Date: 2008/02/05 13:23:46 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/04/18 12:59:15 $ + Version: $Revision: 1.3 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -22,11 +22,12 @@ */ #include "bbtkBlackBoxInputConnector.h" #include "bbtkMessageManager.h" +#include "bbtkBlackBox.h" namespace bbtk { - BlackBoxInputConnector::BlackBoxInputConnector(BlackBox* b) - : mBox(b), mConnection(0), mStatus(MODIFIED) + BlackBoxInputConnector::BlackBoxInputConnector(BlackBox::Pointer b) + : mBox(b), mConnection(), mStatus(MODIFIED) { bbtkDebugMessage("Kernel",9,"BlackBoxInputConnector::BlackBoxInputConnector()"<BackwardUpdate(); + IOStatus s = mConnection.lock()->BackwardUpdate(); mStatus = s; } else diff --git a/kernel/src/bbtkBlackBoxInputConnector.h b/kernel/src/bbtkBlackBoxInputConnector.h index 6575a8a..788fb4a 100644 --- a/kernel/src/bbtkBlackBoxInputConnector.h +++ b/kernel/src/bbtkBlackBoxInputConnector.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkBlackBoxInputConnector.h,v $ Language: C++ - Date: $Date: 2008/01/22 15:02:00 $ - Version: $Revision: 1.1 $ + Date: $Date: 2008/04/18 12:59:15 $ + Version: $Revision: 1.2 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -34,38 +34,38 @@ namespace bbtk { + class BlackBox; + BBTK_FORWARD_DECLARE_POINTER(BlackBox); class BBTK_EXPORT BlackBoxInputConnector { public: /// Ctor - BlackBoxInputConnector(BlackBox* b); + BlackBoxInputConnector(BlackBoxPointer b); /// Dtor ~BlackBoxInputConnector(); /// Sets a connection - void SetConnection(Connection* c); + void SetConnection(Connection::Pointer c); /// Unsets the connection /// The parameter is USELESS today but would be useful if we allow multiple connections on inputs - void UnsetConnection(Connection* c); + void UnsetConnection(Connection::Pointer c); IOStatus BackwardUpdate(); /// Returns the connection plugged into this input (const) - const Connection* GetConnection() const { return mConnection; } - /// Returns the connection plugged into this input - Connection* GetConnection() { return mConnection; } + Connection::Pointer GetConnection() const { return mConnection.lock(); } /// Returns true iff a connection is connected to it - bool IsConnected() const { return (mConnection != 0); } + bool IsConnected() const { return (mConnection.lock() != 0); } /// Returns the status of the input (UPTODATE | MODIFIED) const IOStatus& GetStatus() const { return mStatus; } /// - BlackBox* GetBlackBox() const { return mBox; } + BlackBoxPointer GetBlackBox() const { return mBox.lock(); } private: /// - BlackBox* mBox; + BlackBoxWeakPointer mBox; /// The connection plugged into the input - Connection* mConnection; + Connection::WeakPointer mConnection; /// The status of the input (UPTODATE | MODIFIED) IOStatus mStatus; }; diff --git a/kernel/src/bbtkBlackBoxOutputConnector.cxx b/kernel/src/bbtkBlackBoxOutputConnector.cxx index d2ee80e..af6bf5f 100644 --- a/kernel/src/bbtkBlackBoxOutputConnector.cxx +++ b/kernel/src/bbtkBlackBoxOutputConnector.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkBlackBoxOutputConnector.cxx,v $ Language: C++ - Date: $Date: 2008/04/09 11:16:57 $ - Version: $Revision: 1.3 $ + Date: $Date: 2008/04/18 12:59:15 $ + Version: $Revision: 1.4 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -37,19 +37,21 @@ namespace bbtk BlackBoxOutputConnector::~BlackBoxOutputConnector() { - bbtkDebugMessageInc("Kernel",9, - "BlackBoxOutputConnector::~BlackBoxOutputConnector()" - <::iterator i; - for (i=mConnection.begin();i!=mConnection.end();++i) - { - delete *i; - } - bbtkDebugDecTab("Kernel",9); + bbtkDebugMessage("Kernel",9, + "==> BlackBoxOutputConnector::~BlackBoxOutputConnector()" + <Check(); - std::vector::iterator i - = find(mConnection.begin(),mConnection.end(),c); + if (!c) + { + bbtkInternalError("BlackBoxOutputConnector::UnsetConnection("<Check(); + //Connection::WeakPointer w(c); + ConnectionVector::iterator i; + // = find(mConnection.begin(),mConnection.end(),c); + for (i=mConnection.begin(); + i!=mConnection.end(); + ++i) + { + if (i->lock()==c) break; + } if (i==mConnection.end()) { bbtkInternalError("BlackBoxOutputConnector::UnsetConnection("<::iterator i; + ConnectionVector::iterator i; for (i=mConnection.begin();i!=mConnection.end();++i) { - (*i)->SetModifiedStatus(); + (*i).lock()->SetModifiedStatus(); } bbtkDebugDecTab("Process",5); diff --git a/kernel/src/bbtkBlackBoxOutputConnector.h b/kernel/src/bbtkBlackBoxOutputConnector.h index dab1274..1ec2c36 100644 --- a/kernel/src/bbtkBlackBoxOutputConnector.h +++ b/kernel/src/bbtkBlackBoxOutputConnector.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkBlackBoxOutputConnector.h,v $ Language: C++ - Date: $Date: 2008/01/22 15:02:00 $ - Version: $Revision: 1.1 $ + Date: $Date: 2008/04/18 12:59:15 $ + Version: $Revision: 1.2 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -42,15 +42,16 @@ namespace bbtk BlackBoxOutputConnector(); ~BlackBoxOutputConnector(); - void SetConnection(Connection* c); - void UnsetConnection(Connection* c); + void SetConnection(Connection::Pointer c); + void UnsetConnection(Connection::Pointer c); //IOStatus Update(); void SetModifiedStatus(); - const std::vector& GetConnectionVector() const { return mConnection; } + typedef std::vector ConnectionVector; + const ConnectionVector& GetConnectionVector() const { return mConnection; } private: /// The vector of output connections - std::vector mConnection; + ConnectionVector mConnection; /// The status of the output //IOStatus mStatus; }; diff --git a/kernel/src/bbtkComplexBlackBox.cxx b/kernel/src/bbtkComplexBlackBox.cxx index dbd76ef..c494d65 100644 --- a/kernel/src/bbtkComplexBlackBox.cxx +++ b/kernel/src/bbtkComplexBlackBox.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkComplexBlackBox.cxx,v $ Language: C++ -Date: $Date: 2008/04/09 11:16:57 $ -Version: $Revision: 1.9 $ +Date: $Date: 2008/04/18 12:59:15 $ +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 @@ -29,19 +29,37 @@ PURPOSE. See the above copyright notices for more information. namespace bbtk { + //========================================================================== + /// Creates a new complex black box + ComplexBlackBox::Pointer ComplexBlackBox::New(const std::string& name, + ComplexBlackBoxDescriptor::Pointer desc) + { + bbtkDebugMessage("object",1,"##> ComplexBlackBox::New('"<GetTypeName()<<"')" <GetTypeName()<<"')" < ComplexBlackBox::ComplexBlackBox(\"" + < ComplexBlackBox::ComplexBlackBox(\"" <first<<"\""<second->bbClone(i->second->bbGetName()); + bbtkDebugMessageInc("object",5," * Cloning \""<first<<"\""<second->bbClone(i->second->bbGetName()); bbUnsafeAddBlackBox(B); - bbtkDebugDecTab("Kernel",9); } - bbtkDebugDecTab("Kernel",9); - bbtkDebugMessageInc("Kernel",9,"* Cloning Connections"<GetFullName()<<"\""<GetFullName()<<"\""<GetOriginalBlackBoxFrom()->bbGetName() ); + BlackBox::Pointer bbto = bbGetBlackBox( (*j)->GetOriginalBlackBoxTo()->bbGetName() ); - BlackBox* bbfrom = bbGetBlackBox( (*j)->GetOriginalBlackBoxFrom()->bbGetName() ); - BlackBox* bbto = bbGetBlackBox( (*j)->GetOriginalBlackBoxTo()->bbGetName() ); - Connection* c = mDescriptor->GetFactory()-> + Connection::Pointer c = mDescriptor.lock()->GetFactory()-> NewConnection( bbfrom, (*j)->GetOriginalBlackBoxFromOutput(), bbto, (*j)->GetOriginalBlackBoxToInput() ); - + //c->Check(); bbAddConnection(c); - bbtkDebugDecTab("Kernel",9); } - bbtkDebugDecTab("Kernel",9); bbAllocateConnectors(); - bbtkDebugDecTab("Kernel",9); + bbtkDebugMessage("object",3, + "<## ComplexBlackBox::ComplexBlackBox(\"" + <GetFullName()<<"\""< ComplexBlackBox::~ComplexBlackBox() [" + < Releasing connections"< Releasing boxes"<bbDesallocateConnectors(); + if (mLockedDescriptor) { - bbtkDebugMessageInc("Kernel",1,"* Delete \""<first<<"\""<second->bbDelete(); - bbtkDebugDecTab("Kernel",1); + bbtkMessage("object",3," --> Releasing descriptor"<bbDesallocateConnectors(); - bbtkDebugDecTab("Kernel",1); + */ + bbtkDebugMessage("object",3, + "<== ComplexBlackBox::~ComplexBlackBox() [" + <GetInputDescriptorMap(); @@ -183,6 +197,9 @@ namespace bbtk bbGetOutputConnectorMap()[o->second->GetName()] = c; //new BlackBoxOutputConnector(); } + +*/ + bbtkDebugDecTab("Kernel",8); } //========================================================================= @@ -200,27 +217,25 @@ namespace bbtk // but by the internal boxes. Hence **DO NOT** desallocate ! // just clear the maps to avoid that // BlackBox::bbDesallocateConnectors delete the connectors - bbGetInputConnectorMap().clear(); + + /* + bbGetInputConnectorMap().clear(); bbGetOutputConnectorMap().clear(); - + */ bbtkDebugDecTab("Kernel",8); } //========================================================================= //======================================================================= - BlackBox* ComplexBlackBox::bbClone(const std::string& name) + BlackBox::Pointer ComplexBlackBox::bbClone(const std::string& name) { bbtkDebugMessageInc("Kernel",9, "ComplexBlackBox::bbClone(\""<Reference(); - - bbtkDebugDecTab("Kernel",9); - - return CBB; + return MakeBlackBoxPointer(CBB); } //======================================================================= @@ -250,7 +265,7 @@ namespace bbtk } else { - std::map::iterator i; + std::map::iterator i; for (i=mBlackBoxMap.begin(); i!=mBlackBoxMap.end(); ++i) { i->second->bbExecute(force); @@ -296,7 +311,7 @@ namespace bbtk //================================================================== //================================================================== - IOStatus ComplexBlackBox::bbBackwardUpdate(Connection* caller) + IOStatus ComplexBlackBox::bbBackwardUpdate(Connection::Pointer caller) { bbtkDebugMessageInc("Process",1, "ComplexBlackBox::bbBackwardUpdate(" @@ -466,7 +481,7 @@ namespace bbtk //========================================================================= /// Connects the input to the connection c - void ComplexBlackBox::bbConnectInput( const std::string& name, Connection* c) + void ComplexBlackBox::bbConnectInput( const std::string& name, Connection::Pointer c) { bbtkDebugMessageInc("Kernel",7, "ComplexBlackBox::bbConnectInput(\"" @@ -477,7 +492,7 @@ namespace bbtk ComplexBlackBoxInputDescriptor* d = (ComplexBlackBoxInputDescriptor*) bbGetDescriptor()->GetInputDescriptor(name); - BlackBox* t = bbGetBlackBox(d->GetTarget()); + BlackBox::Pointer t = bbGetBlackBox(d->GetTarget()); c->SetBlackBoxTo(t); c->SetBlackBoxToInput(d->GetInput()); t->bbConnectInput(d->GetInput(),c); @@ -492,7 +507,7 @@ namespace bbtk //========================================================================= /// Connects the output to the connection c - void ComplexBlackBox::bbConnectOutput( const std::string& name, Connection* c) + void ComplexBlackBox::bbConnectOutput( const std::string& name, Connection::Pointer c) { bbtkDebugMessageInc("Kernel",7, "ComplexBlackBox::bbConnectOutput(\"" @@ -502,12 +517,13 @@ namespace bbtk ComplexBlackBoxOutputDescriptor* d = (ComplexBlackBoxOutputDescriptor*) bbGetDescriptor()->GetOutputDescriptor(name); - BlackBox* t = bbGetBlackBox(d->GetTarget()); + BlackBox::Pointer t = bbGetBlackBox(d->GetTarget()); + c->SetBlackBoxFrom(t); c->SetBlackBoxFromOutput(d->GetOutput()); t->bbConnectOutput(d->GetOutput(),c); - bbtkMessage("Debug",1,"ComplexBlackBox["<GetFullName()<bbGetName() @@ -529,7 +545,7 @@ namespace bbtk bbtkError("a black box called \""<bbGetName() <<"\" already exists"); } - b->bbSetParent(this); + b->bbSetParent(GetThisPointer()); mBlackBoxMap[b->bbGetName()] = b; bbtkDebugDecTab("Kernel",7); @@ -538,14 +554,14 @@ namespace bbtk //================================================================== /// Adds the black box to the complex box (unsafe) - void ComplexBlackBox::bbUnsafeAddBlackBox( BlackBox* b) + void ComplexBlackBox::bbUnsafeAddBlackBox( BlackBox::Pointer b) { bbtkDebugMessageInc("Kernel",7, "ComplexBlackBox::UnsafeAddBlackBox(\""<bbGetName() <<"\") [" <bbSetParent(this); + b->bbSetParent(GetThisPointer()); mBlackBoxMap[b->bbGetName()] = b; bbtkDebugDecTab("Kernel",7); @@ -554,13 +570,39 @@ namespace bbtk //================================================================== /// Removes the black box from the complex box - void ComplexBlackBox::bbRemoveBlackBox( const std::string& name ) + void ComplexBlackBox::bbRemoveBlackBox( const std::string& name, + bool remove_connections ) { bbtkDebugMessageInc("Kernel",7, "ComplexBlackBox::RemoveBlackBox(\""<second; + + if (remove_connections) + { + ConnectionListType::const_iterator j; + for ( j = mConnectionList.begin(); + j != mConnectionList.end(); ++j ) + { + //(*j)->Check(); + } + } + if (p.use_count()!=1) + { + bbtkError("the black box \""< - BlackBox* ComplexBlackBox::bbGetBlackBox( const std::string& name ) + BlackBox::Pointer ComplexBlackBox::bbGetBlackBox( const std::string& name ) { bbtkDebugMessageInc("Kernel",9, "ComplexBlackBox::GetBlackBox(\""< : does not throw an exception /// if it does not exist but return a null pointer - BlackBox* ComplexBlackBox::bbUnsafeGetBlackBox( const std::string& name ) + BlackBox::Pointer ComplexBlackBox::bbUnsafeGetBlackBox( const std::string& name ) { bbtkDebugMessageInc("Kernel",9, "ComplexBlackBox::UnsafeGetBlackBox(\""<"); @@ -679,11 +721,7 @@ namespace bbtk } BlackBoxMapType::iterator i = mBlackBoxMap.find(subname); - if ( i == mBlackBoxMap.end() ) - { - blackbox = NULL; - } - else + if ( i != mBlackBoxMap.end() ) { blackbox = i->second; if (restname!="") @@ -737,7 +775,9 @@ namespace bbtk fprintf(ff,"rankdir=LR%s\n",";"); fprintf(ff,"node [shape=record]%s\n",";"); - this->bbWriteDotFileBlackBox(ff,this,detail,level, + this->bbWriteDotFileBlackBox(ff, + GetThisPointer(), + detail,level, instanceOrtype, relative_link ); @@ -778,14 +818,14 @@ namespace bbtk //========================================================================= /// Write Graphviz-dot description in file void ComplexBlackBox::bbWriteDotFileBlackBox(FILE *ff, - BlackBox *parentblackbox, + BlackBox::Pointer parentblackbox, int detail, int level, bool instanceOrtype, bool relative_link ) { std::string tmp1; std::string valueStr(""); - Package *package = this->bbGetDescriptor()->GetPackage(); + Package::Pointer package = this->bbGetDescriptor()->GetPackage(); if (package!=NULL) { @@ -809,7 +849,7 @@ namespace bbtk } std::string boxname="["+bbGetTypeName()+"]"; - if (this!=parentblackbox) + if (GetThisPointer()!=parentblackbox) { if (detail==0) { @@ -916,7 +956,9 @@ namespace bbtk { if (level>-1) { - j->second->bbWriteDotFileBlackBox(ff,parentblackbox,detail, + j->second->bbWriteDotFileBlackBox(ff, + parentblackbox, + detail, level-1, instanceOrtype, relative_link); @@ -943,7 +985,7 @@ namespace bbtk fprintf(ff,":%s",cbbid->GetName().c_str() ); } fprintf(ff,"->" ); - BlackBox *bb = bbGetBlackBox( cbbid->GetTarget() ); + BlackBox::Pointer bb = bbGetBlackBox( cbbid->GetTarget() ); bb->bbWriteDotInputOutputName(ff,true,detail,level); if (detail==1) { @@ -964,7 +1006,7 @@ namespace bbtk { ComplexBlackBoxOutputDescriptor *cbbod = (ComplexBlackBoxOutputDescriptor*)yy->second; fprintf(ff," "); - BlackBox *bb = bbGetBlackBox( cbbod->GetTarget() ); + BlackBox::Pointer bb = bbGetBlackBox( cbbod->GetTarget() ); bb->bbWriteDotInputOutputName(ff,false,detail,level); if (detail==1) { @@ -984,16 +1026,16 @@ namespace bbtk // Relation from the out side of this ComplexBlackBox with its Inputs - if (this!=parentblackbox) { + if (GetThisPointer()!=parentblackbox) { for ( ii = bbGetInputConnectorMap().begin(); ii != bbGetInputConnectorMap().end(); ++ii ) { if (ii->second) { - Connection* con = ii->second->GetConnection(); + Connection::Pointer con = ii->second->GetConnection(); if (con!=NULL){ - BlackBox *a=con->GetBlackBoxFrom(); - BlackBox *b=con->GetBlackBoxTo(); + BlackBox::Pointer a=con->GetBlackBoxFrom(); + BlackBox::Pointer b=con->GetBlackBoxTo(); fprintf(ff," "); a->bbWriteDotInputOutputName(ff,false,detail,level); if (detail==1) @@ -1050,7 +1092,7 @@ namespace bbtk for ( j = mConnectionList.begin(); j != mConnectionList.end(); ++j ) { - (*j)->Check(); + //(*j)->Check(); } bbtkMessage("Debug",1,"**** Checking Complex Black Box "<<(void*)this <<" ["<GetFullTypeName() + ":" + bbGetName(); + } + else + { + return std::string(":") + bbGetName(); + } + } + //========================================================================= + + //========================================================================== + std::string ComplexBlackBox::GetObjectName() const + { + return std::string("ComplexBlackBox '")+bbGetNameWithParent() + +std::string("'"); + } + //========================================================================== + + //========================================================================== + std::string ComplexBlackBox::GetObjectInfo() const + { + std::stringstream i; + i << " - "<second->GetObjectRecursiveSize(); + } + ConnectionListType::const_iterator j; + for ( j = mConnectionList.begin(); + j != mConnectionList.end(); ++j ) + { + s += (*j)->GetObjectRecursiveSize(); + } + return s; + } + //========================================================================== + } diff --git a/kernel/src/bbtkComplexBlackBox.h b/kernel/src/bbtkComplexBlackBox.h index 6c041f4..3a5d8fb 100644 --- a/kernel/src/bbtkComplexBlackBox.h +++ b/kernel/src/bbtkComplexBlackBox.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkComplexBlackBox.h,v $ Language: C++ - Date: $Date: 2008/04/09 11:16:57 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/04/18 12:59:15 $ + Version: $Revision: 1.3 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -44,16 +44,27 @@ namespace bbtk //================================================================== class BBTK_EXPORT ComplexBlackBox : public bbtk::BlackBox { + BBTK_OBJECT_INTERFACE(ComplexBlackBox); friend class ComplexBlackBoxDescriptor; + typedef BlackBox Superclass; public: //================================================================== // PUBLIC PART : ACCESSIBLE TO THE END-USER /// Returns the pointer on the box' descriptor - BlackBoxDescriptor* bbGetDescriptor() const { return mDescriptor; } + BlackBoxDescriptor::Pointer bbGetDescriptor() const { return mDescriptor.lock(); } /// Returns a pointer on a new instance with name //BlackBox* bbNew(const std::string& name); /// Returns a pointer on a clone of the box with name - BlackBox* bbClone(const std::string& name); + BlackBox::Pointer bbClone(const std::string& name); + + /// Clear + void Clear(); + /// Set as prototype + void SetAsPrototype() { mLockedDescriptor.reset(); } + /// Returns true if it is a prototype + bool IsAPrototype() const { return (!mLockedDescriptor); } + + std::string bbGetNameWithParent() const; void bbExecute(bool force = false); @@ -67,16 +78,18 @@ namespace bbtk bool setModified = true); /// Connects the input to the connection c - virtual void bbConnectInput( const std::string& name, Connection* c); + virtual void bbConnectInput( const std::string& name, + Connection::Pointer c); /// Connects the output to the connection c - virtual void bbConnectOutput( const std::string& name, Connection* c); + virtual void bbConnectOutput( const std::string& name, + Connection::Pointer c); - BlackBox* bbGetBlackBox( const std::string& name ); + BlackBox::Pointer bbGetBlackBox( const std::string& name ); + + /// The type of map of black boxes + typedef std::map BlackBoxMapType; - const std::map& bbGetBlackBoxMap() - { - return mBlackBoxMap; - } + const BlackBoxMapType& bbGetBlackBoxMap() { return mBlackBoxMap; } void bbPrintBlackBoxes(); @@ -98,7 +111,7 @@ namespace bbtk /// Generates own description and recursively calls itself /// on internal boxes with level-1 virtual void bbWriteDotFileBlackBox(FILE *ff, - BlackBox *parentblackbox, + BlackBox::Pointer parentblackbox, int detail, int level, bool instanceOrtype, bool relative_link ); @@ -107,24 +120,29 @@ namespace bbtk bool inputoutput, int detail, int level); - virtual BlackBox *bbFindBlackBox(const std::string &blackboxname); + virtual BlackBox::Pointer bbFindBlackBox(const std::string &blackboxname); void Check(bool recursive=true); + + protected: //================================================================== // PROTECTED PART : ACCESSIBLE TO ComplexBlackBoxDescriptor + static ComplexBlackBox::Pointer + New(const std::string &name, + ComplexBlackBoxDescriptor::Pointer desc); + + private: /// Constructor that takes the ComplexBlackBox name - ComplexBlackBox(const std::string &name, ComplexBlackBoxDescriptor* desc); + ComplexBlackBox(const std::string &name, + ComplexBlackBoxDescriptor::Pointer desc); /// Constructor from an existing box (copy) with a new name ComplexBlackBox(ComplexBlackBox& from, const std::string &name); - // - ~ComplexBlackBox(); - public: - IOStatus bbBackwardUpdate(Connection* caller); + IOStatus bbBackwardUpdate(Connection::Pointer caller); // void bbForwardUpdate(Connection* caller); void bbSetModifiedStatus(BlackBoxInputConnector* c); @@ -132,15 +150,16 @@ namespace bbtk - void bbAddBlackBox( BlackBox* ); + void bbAddBlackBox( BlackBox::Pointer ); void bbAddToExecutionList( const std::string& name ); - void bbUnsafeAddBlackBox( BlackBox* ); - void bbRemoveBlackBox( const std::string& name ); - void bbAddConnection( Connection* ); + void bbUnsafeAddBlackBox( BlackBox::Pointer ); + void bbRemoveBlackBox( const std::string& name, + bool remove_connections = true); + void bbAddConnection( Connection::Pointer ); // void RemoveConnection( ); - BlackBox* bbUnsafeGetBlackBox( const std::string& name ); + BlackBox::Pointer bbUnsafeGetBlackBox( const std::string& name ); /// void bbAllocateConnectors(); @@ -151,19 +170,22 @@ namespace bbtk // PRIVATE PART : MEMBERS AND USEFULL INTERNAL METHODS /// Default constructor : derived classes must use the constructor with the ComplexBlackBox's name - ComplexBlackBox() : BlackBox("") {} + //ComplexBlackBox() : BlackBox("") {} + // true if the box is a prototype of a ComplexBlackBoxDescriptor + // bool mIsAPrototype; + + /// The descriptor pointer : is 0 if the box is a prototype + ComplexBlackBoxDescriptor::Pointer mLockedDescriptor; /// The descriptor pointer - ComplexBlackBoxDescriptor* mDescriptor; + ComplexBlackBoxDescriptor::WeakPointer mDescriptor; - /// The type of map of black boxes - typedef std::map BlackBoxMapType; /// The map of black boxes BlackBoxMapType mBlackBoxMap; /// The type of list of connections - typedef std::list ConnectionListType; + typedef std::list ConnectionListType; /// The list of connections ConnectionListType mConnectionList; diff --git a/kernel/src/bbtkComplexBlackBoxDescriptor.cxx b/kernel/src/bbtkComplexBlackBoxDescriptor.cxx index 6795575..efe06f1 100644 --- a/kernel/src/bbtkComplexBlackBoxDescriptor.cxx +++ b/kernel/src/bbtkComplexBlackBoxDescriptor.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkComplexBlackBoxDescriptor.cxx,v $ Language: C++ - Date: $Date: 2008/04/09 11:16:57 $ - Version: $Revision: 1.14 $ + Date: $Date: 2008/04/18 12:59:15 $ + Version: $Revision: 1.15 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -28,20 +28,30 @@ namespace bbtk { - + //======================================================================= + /// + ComplexBlackBoxDescriptor::Pointer + ComplexBlackBoxDescriptor::New(const std::string& name) + { + bbtkDebugMessage("object",1,"##> ComplexBlackBoxDescriptor::New(\""< ComplexBlackBoxDescriptor::ComplexBlackBoxDescriptor(\""<Reference(); - bbtkDebugDecTab("Kernel",9); + mPrototype = ComplexBlackBox::New(name+std::string("Prototype"), + MakePointer(this,true)); + mPrototype->SetAsPrototype(); + bbtkDebugMessage("object",2,"<== ComplexBlackBoxDescriptor::ComplexBlackBoxDescriptor(\""< ComplexBlackBoxDescriptor::~ComplexBlackBoxDescriptor(\""<Delete(); + mPrototype.reset(); + bbtkDebugMessage("object",2,"<== ComplexBlackBoxDescriptor::~ComplexBlackBoxDescriptor(\""< of the ComplexBlackBox of which this is the descriptor - BlackBox* ComplexBlackBoxDescriptor::CreateInstance(const std::string& name) + BlackBox::Pointer + ComplexBlackBoxDescriptor::NewBlackBox(const std::string& name) { - //bbtkError("ComplexBlackBoxDescriptor::CreateInstance not implemented"); bbtkDebugMessageInc("Kernel",5, - "ComplexBlackBoxDescriptor::CreateInstance(\"" + "ComplexBlackBoxDescriptor::NewBlackBox(\"" <bbAddBlackBox ( mFactory->NewBlackBox(type,name) ); + mPrototype->bbAddBlackBox ( GetFactory()->NewBlackBox(type,name) ); bbtkDebugDecTab("Kernel",5); } //======================================================================= + + //======================================================================= + /// Removes a black box from the complex box + void ComplexBlackBoxDescriptor::Remove( const std::string& name, + bool remove_connections) + { + mPrototype->bbRemoveBlackBox(name,remove_connections); + } + //======================================================================= - //======================================================================= + + //======================================================================= /// Adds a black box to the execution list void ComplexBlackBoxDescriptor::AddToExecutionList ( const std::string& box) { @@ -124,7 +149,7 @@ namespace bbtk <bbUnsafeGetBlackBox( box ); + BlackBox::Pointer b = mPrototype->bbUnsafeGetBlackBox( box ); if ( !b ) { bbtkError("the black box \""<bbGetBlackBox( from ); + BlackBox::Pointer bbfrom = mPrototype->bbGetBlackBox( from ); if ( !bbfrom ) { bbtkError("the black box \""<bbGetBlackBox( to ); + BlackBox::Pointer bbto = mPrototype->bbGetBlackBox( to ); if ( !bbto ) { bbtkError("the black box \""<NewConnection( bbfrom, output, bbto, input ); + Connection::Pointer c + = GetFactory()->NewConnection( bbfrom, output, bbto, input ); mPrototype->bbAddConnection(c); @@ -192,7 +218,7 @@ namespace bbtk <<"\") [" <bbGetBlackBox( box ); + BlackBox::Pointer bb = mPrototype->bbGetBlackBox( box ); if ( !bb ) { bbtkError("the black box \""<bbGetBlackBox( box ); + BlackBox::Pointer bb = mPrototype->bbGetBlackBox( box ); if ( !bb ) { bbtkError("the black box \""< Uses : "; - std::set pdeps; + std::set pdeps; ComplexBlackBox::BlackBoxMapType::const_iterator b; for ( b = B.begin(); b != B.end(); ++b ) { - BlackBoxDescriptor* d = b->second->bbGetDescriptor(); + BlackBoxDescriptor::Pointer d = b->second->bbGetDescriptor(); if (pdeps.find(d) != pdeps.end()) continue; pdeps.insert(d); - Package* p = d->GetPackage(); + Package::Pointer p = d->GetPackage(); std::string name = b->second->bbGetTypeName(); @@ -564,7 +590,43 @@ namespace bbtk } //======================================================================= - - + //========================================================================== + std::string ComplexBlackBoxDescriptor::GetObjectName() const + { + return std::string("ComplexBlackBoxDescriptor '")+GetFullTypeName() + +std::string("'"); + } + //========================================================================== + //======================================================================= + std::string ComplexBlackBoxDescriptor::GetObjectInfo() const + { + std::string i; + return i; + } + //======================================================================= + //========================================================================== +size_t ComplexBlackBoxDescriptor::GetObjectSize() const +{ + size_t s = Superclass::GetObjectSize(); + s += ComplexBlackBoxDescriptor::GetObjectInternalSize(); + return s; + } + //========================================================================== + //========================================================================== +size_t ComplexBlackBoxDescriptor::GetObjectInternalSize() const +{ + size_t s = sizeof(ComplexBlackBoxDescriptor); + return s; + } + //========================================================================== + //========================================================================== + size_t ComplexBlackBoxDescriptor::GetObjectRecursiveSize() const + { + size_t s = Superclass::GetObjectRecursiveSize(); + s += ComplexBlackBoxDescriptor::GetObjectInternalSize(); + s += mPrototype->GetObjectRecursiveSize(); + return s; + } + //========================================================================== } diff --git a/kernel/src/bbtkComplexBlackBoxDescriptor.h b/kernel/src/bbtkComplexBlackBoxDescriptor.h index a3c2d70..d359b2d 100644 --- a/kernel/src/bbtkComplexBlackBoxDescriptor.h +++ b/kernel/src/bbtkComplexBlackBoxDescriptor.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkComplexBlackBoxDescriptor.h,v $ Language: C++ - Date: $Date: 2008/04/09 11:16:57 $ - Version: $Revision: 1.4 $ + Date: $Date: 2008/04/18 12:59:15 $ + Version: $Revision: 1.5 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -38,33 +38,41 @@ namespace bbtk { class ComplexBlackBox; - + typedef boost::shared_ptr ComplexBlackBoxPointer; + //========================================================================== - class BBTK_EXPORT ComplexBlackBoxDescriptor : public bbtk::BlackBoxDescriptor + class BBTK_EXPORT ComplexBlackBoxDescriptor : + public bbtk::BlackBoxDescriptor { + BBTK_OBJECT_INTERFACE(ComplexBlackBoxDescriptor); + typedef BlackBoxDescriptor Superclass; public: friend class ComplexBlackBox; - /// Default ctor with name - ComplexBlackBoxDescriptor(const std::string& name); - protected: - /// Default dtor - ~ComplexBlackBoxDescriptor(); - public: + + static Pointer New(const std::string& name); /// Sets the factory used - void SetFactory(Factory* f) { mFactory = f; } + void SetFactory(Factory::Pointer f) { mFactory = f; } /// Gets the factory used - Factory* GetFactory() { return mFactory; } + Factory::Pointer GetFactory() const { return mFactory.lock(); } + + /// Releases the descriptor + // void Release(bool release_package = true); + /// Gets the factory used (const) - const Factory* GetFactory() const { return mFactory; } + // const Factory* GetFactory() const { return mFactory; } /// Creates an instance of name of the ComplexBlackBox of which this is the descriptor - virtual BlackBox* CreateInstance(const std::string& name); + virtual BlackBoxPointer NewBlackBox(const std::string& name); /// Adds a black box to the complex box /// Needs a factory set ! void Add ( const std::string& type, const std::string& name ); + + /// Removes a black box from the complex box + void Remove( const std::string& name, bool remove_connections = true); + /// Connects two black boxes of the complex box /// Needs a factory set ! void Connect ( const std::string& from, @@ -92,7 +100,7 @@ namespace bbtk /// void AddToExecutionList( const std::string& box ); - ComplexBlackBox* GetPrototype() { return mPrototype; } + ComplexBlackBoxPointer GetPrototype() { return mPrototype; } void PrintBlackBoxes(); /// Prints help on the black box @@ -124,14 +132,18 @@ namespace bbtk /// virtual void Check(bool recursive=true) const; + + + + protected: + /// Default ctor with name is protected + ComplexBlackBoxDescriptor(const std::string& name); private: - /// Default ctor is private (must have name and factory) - ComplexBlackBoxDescriptor() {} /// The factory used - Factory* mFactory; + Factory::WeakPointer mFactory; /// The complex box in which boxes and connections are stored - ComplexBlackBox* mPrototype; + ComplexBlackBoxPointer mPrototype; /// The name of the script file from which it was created std::string mScriptFileName; diff --git a/kernel/src/bbtkConnection.cxx b/kernel/src/bbtkConnection.cxx index 29bab6c..1e84edf 100644 --- a/kernel/src/bbtkConnection.cxx +++ b/kernel/src/bbtkConnection.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkConnection.cxx,v $ Language: C++ - Date: $Date: 2008/04/09 11:16:57 $ - Version: $Revision: 1.6 $ + Date: $Date: 2008/04/18 12:59:15 $ + Version: $Revision: 1.7 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See doc/license.txt or @@ -27,27 +27,41 @@ namespace bbtk { - + Connection::Pointer Connection::New(BlackBox::Pointer from, + const std::string& output, + BlackBox::Pointer to, + const std::string& input , + const Factory::Pointer f ) + { + bbtkDebugMessage("object",1,"##> Connection::Connection(\"" + <bbGetName()<<"\",\""<bbGetName()<<"\",\""<bbGetName()<<"\",\""<bbGetName()<<"\",\""<bbGetName()<<"\",\""<bbGetName()<<"\",\""< Connection::Connection(\"" + <bbGetName()<<"\",\""<bbGetName()<<"\",\""<bbHasOutput(output) ) @@ -99,9 +113,10 @@ namespace bbtk std::string name; name = from->bbGetName() + "." + output + "-" + to->bbGetName() + "." + input; - mAdaptor = mFactory->NewAdaptor(from->bbGetOutputType(output), - to->bbGetInputType(input), - name); + mAdaptor = mFactory.lock() + ->NewAdaptor(from->bbGetOutputType(output), + to->bbGetInputType(input), + name); if (!mAdaptor) { bbtkError("did not find any <" @@ -113,36 +128,60 @@ namespace bbtk } } - // - from->bbConnectOutput(output,this); - to->bbConnectInput(input,this); - - bbtkDebugDecTab("Kernel",7); - } + // Lock this pointer !!! + Pointer p = MakePointer(this,true); + from->bbConnectOutput(output,p); + to->bbConnectInput(input,p); + mFrom = from; + mOriginalFrom = from; + mTo = to; + mOriginalTo = to; + mInput = mOriginalInput = input; + mOutput = mOriginalOutput = output; - //================================================================== - - void Connection::Clear() - { - mFrom = mOriginalFrom = 0; - mTo = mOriginalTo = 0; - mAdaptor = 0; + + bbtkDebugMessage("object",2,"==> Connection::Connection(\"" + <bbGetName()<<"\",\""<bbGetName()<<"\",\""<bbDisconnectOutput(mOutput,this); - if (mTo!=0) mTo->bbDisconnectInput(mInput,this); - if (mAdaptor!=0) mAdaptor->bbDelete(); + bbtkDebugMessage("object",2, + "==> Connection::~Connection() [" + <bbDisconnectOutput(mOutput, + GetThisPointer()); + } + else + { + bbtkInternalError("Connection::~Connection() : invalid initial box pointer"); + } + if (mTo!=0) + { + mTo->bbDisconnectInput(mInput, + GetThisPointer()); + } + else + { + bbtkInternalError("Connection::~Connection() : invalid final box pointer"); + } + mFrom.reset(); + mTo.reset(); - bbtkDebugDecTab("Kernel",7); + bbtkDebugMessage("object",2, + "<== Connection::~Connection() [" + <bbBackwardUpdate(this); + s = mFrom->bbBackwardUpdate(GetThisPointer()); TransferData(); @@ -235,12 +274,13 @@ namespace bbtk else { // 2) Look for an adaptor - bbtk::BlackBox* adaptor = 0; + bbtk::BlackBox::Pointer adaptor; try { - adaptor = mFactory->NewAdaptor(mFrom->bbGetOutput(mOutput).type(), - mTo->bbGetInputType(mInput), - ""); + adaptor = mFactory.lock() + ->NewAdaptor(mFrom->bbGetOutput(mOutput).type(), + mTo->bbGetInputType(mInput), + ""); } catch (...) { @@ -253,7 +293,7 @@ namespace bbtk adaptor->bbExecute(); // LG : Connection Update does not set mTo as modified mTo->bbSetInput(mInput, adaptor->bbGetOutput("Out"),false); - adaptor->bbDelete(); + // adaptor->bbDelete(); } // 3) If no adaptor found but the any content is a pointer // and target type is also a pointer : we try run-time cast @@ -325,10 +365,12 @@ namespace bbtk { std::string res = mFrom->bbGetName()+"."+mOutput+"--" +mTo->bbGetName()+"."+mInput; - if ((mFrom!=mOriginalFrom)||(mTo!=mOriginalTo)) + if ((!mOriginalFrom.expired()) && (!mOriginalTo.expired()) && + ((mFrom!=mOriginalFrom.lock())||(mTo!=mOriginalTo.lock()))) { - res += "("+mOriginalFrom->bbGetName()+"."+mOriginalOutput+"--" - + mOriginalTo->bbGetName()+"."+mOriginalInput+")"; + res += "("+mOriginalFrom.lock()->bbGetName() + +"."+mOriginalOutput+"--" + + mOriginalTo.lock()->bbGetName()+"."+mOriginalInput+")"; } return res; } @@ -350,7 +392,9 @@ namespace bbtk bbtkMessage("Debug",2," - From : "<bbGetFullName()<bbHasOutput(mOutput)) { - bbtkError(mFrom->bbGetFullName()<<" does not have output '" + bbtkError("** Checking Connection "<<(void*)this + <<" ["<bbGetFullName()<<" does not have output '" <bbGetOutputConnectorMap().find(mOutput); if (i== mFrom->bbGetOutputConnectorMap().end()) { - bbtkError(mFrom->bbGetFullName()<<" output '" + bbtkError("** Checking Connection "<<(void*)this + <<" ["<bbGetFullName()<<" output '" <::const_iterator j; + std::vector< Connection::WeakPointer >::const_iterator j; + for (j = i->second->GetConnectionVector().begin(); + j != i->second->GetConnectionVector().end(); + ++j) + { + if ((*j).lock()==GetThisPointer()) break; + } + /* j = find(i->second->GetConnectionVector().begin(), i->second->GetConnectionVector().end(), - this); + GetThisPointer()); + */ if (j==i->second->GetConnectionVector().end()) { - bbtkError("Connection ["<bbGetFullName() <<" does not point to this connection"); @@ -388,14 +444,16 @@ namespace bbtk else { bbtkMessage("Debug",2," - To : "<bbGetName()<bbGetDescriptor() << std::endl; - std::cout << mTo->bbGetDescriptor()->GetTypeName() << std::endl; - mTo->bbGetFullName(); + // std::cout << mTo << std::endl; + // std::cout << mTo->bbGetDescriptor() << std::endl; + // std::cout << mTo->bbGetDescriptor()->GetTypeName() << std::endl; + // mTo->bbGetFullName(); bbtkMessage("Debug",2," - To : "<bbGetFullName()<bbHasInput(mInput)) { - bbtkError(mTo->bbGetFullName()<<" does not have input '" + bbtkError("** Checking Connection "<<(void*)this + <<" ["<bbGetFullName()<<" does not have input '" <bbGetInputConnectorMap().find(mInput); if (i== mTo->bbGetInputConnectorMap().end()) { - bbtkError(mTo->bbGetFullName()<<" input '" + bbtkError("** Checking Connection "<<(void*)this + <<" ["<bbGetFullName()<<" input '" <second->GetConnection()==0) { - bbtkError("Connection "<bbGetFullName() <<" does not point to this connection"); @@ -423,6 +485,47 @@ namespace bbtk } } //================================================================== + //========================================================================== + std::string Connection::GetObjectName() const + { + std::string s("Connection '"); + s += GetFullName(); + s += "'"; + return s; + } + //========================================================================== + + //========================================================================== + std::string Connection::GetObjectInfo() const + { + std::stringstream i; + return i.str(); + } + //========================================================================== + + //========================================================================== +size_t Connection::GetObjectSize() const +{ + size_t s = Superclass::GetObjectSize(); + s += Connection::GetObjectInternalSize(); + return s; + } + //========================================================================== + //========================================================================== +size_t Connection::GetObjectInternalSize() const +{ + size_t s = sizeof(Connection); + return s; + } + //========================================================================== + //========================================================================== + size_t Connection::GetObjectRecursiveSize() const + { + size_t s = Superclass::GetObjectRecursiveSize(); + s += Connection::GetObjectInternalSize(); + return s; + } + //========================================================================== }// namespace bbtk diff --git a/kernel/src/bbtkConnection.h b/kernel/src/bbtkConnection.h index f69695f..f1494f0 100644 --- a/kernel/src/bbtkConnection.h +++ b/kernel/src/bbtkConnection.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkConnection.h,v $ Language: C++ - Date: $Date: 2008/04/09 11:16:57 $ - Version: $Revision: 1.5 $ + Date: $Date: 2008/04/18 12:59:15 $ + Version: $Revision: 1.6 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See doc/license.txt or @@ -29,6 +29,7 @@ #define __bbtkConnection_h__ #include "bbtkSystem.h" +#include "bbtkObject.h" #include @@ -36,6 +37,11 @@ namespace bbtk { class Factory; + BBTK_FORWARD_DECLARE_POINTER(Factory); + class BlackBox; + BBTK_FORWARD_DECLARE_POINTER(BlackBox); + class BlackBoxInputConnector; + class BlackBoxOutputConnector; /// typedef int IOStatus; @@ -46,21 +52,20 @@ namespace bbtk /// const int UPDATING = 2; - class BlackBox; - class BlackBoxInputConnector; - class BlackBoxOutputConnector; - class BBTK_EXPORT Connection + class BBTK_EXPORT Connection : public Object { + BBTK_OBJECT_INTERFACE(Connection); + typedef Object Superclass; public: - /// Ctor - Connection(BlackBox* from, const std::string& output, - BlackBox* to, const std::string& input, - const Factory* f); + + static Pointer New(BlackBoxPointer from, const std::string& output, + BlackBoxPointer to, const std::string& input, + const FactoryPointer f); /// Dtor - ~Connection(); + // ~Connection(); - void Clear(); + // void Delete(); /// Amont direction pipeline processing /// 1) call bbBackwardUpdate(this) on the upstream box @@ -76,27 +81,27 @@ namespace bbtk std::string GetFullName() const; /// Returns the original initial black box of the connection - BlackBox* GetOriginalBlackBoxFrom() const { return mOriginalFrom; } + BlackBoxPointer GetOriginalBlackBoxFrom() const { return mOriginalFrom.lock(); } /// Returns the origianl final black box of the connection - BlackBox* GetOriginalBlackBoxTo() const { return mOriginalTo; } + BlackBoxPointer GetOriginalBlackBoxTo() const { return mOriginalTo.lock(); } /// Returns the original output of the initial black box of the connection const std::string& GetOriginalBlackBoxFromOutput() const { return mOriginalOutput; } /// Returns the original input of the final black box of the connection const std::string& GetOriginalBlackBoxToInput() const { return mOriginalInput; } - + /// Returns the initial black box of the connection - BlackBox* GetBlackBoxFrom() const { return mFrom; } + BlackBoxPointer GetBlackBoxFrom() const { return mFrom; } /// Returns the final black box of the connection - BlackBox* GetBlackBoxTo() const { return mTo; } + BlackBoxPointer GetBlackBoxTo() const { return mTo; } /// Returns the output of the initial black box of the connection const std::string& GetBlackBoxFromOutput() const { return mOutput; } /// Returns the input of the final black box of the connection const std::string& GetBlackBoxToInput() const { return mInput; } /// Sets the initial black box of the connection - void SetBlackBoxFrom(BlackBox* b) { mFrom = b; } + void SetBlackBoxFrom(BlackBoxPointer b) { mFrom = b; } /// Sets the final black box of the connection - void SetBlackBoxTo(BlackBox* b) { mTo = b; } + void SetBlackBoxTo(BlackBoxPointer b) { mTo = b; } /// Sets the output of the initial black box of the connection void SetBlackBoxFromOutput(const std::string& o) { mOutput = o; } /// Sets the input of the final black box of the connection @@ -107,26 +112,26 @@ namespace bbtk protected: /// Black box origin of the connection - BlackBox* mFrom; - BlackBox* mOriginalFrom; + BlackBoxPointer mFrom; + BlackBoxWeakPointer mOriginalFrom; /// Output of mFrom which is connected std::string mOutput; std::string mOriginalOutput; /// Output connector of mFrom which is connected // BlackBoxOutputConnector* mOutputConnector; /// Black box destination of the connection - BlackBox* mTo; - BlackBox* mOriginalTo; + BlackBoxPointer mTo; + BlackBoxWeakPointer mOriginalTo; /// Input of mTo which is connected std::string mInput; std::string mOriginalInput; /// Input connector of mTo which is connected // BlackBoxInputConnector* mInputConnector; /// Adaptor black box if needed - BlackBox* mAdaptor; + BlackBoxPointer mAdaptor; /// The factory used to create adaptors - const Factory* mFactory; + const FactoryWeakPointer mFactory; /// Is the connection input type is any ? bool mFromAny; @@ -145,6 +150,13 @@ namespace bbtk // BlackBox* to, const std::string& input, int ); void TransferData(); + + private: + /// Ctor + Connection(BlackBoxPointer from, const std::string& output, + BlackBoxPointer to, const std::string& input, + const FactoryPointer f); + }; }// namespace bbtk diff --git a/kernel/src/bbtkData.h b/kernel/src/bbtkData.h index 9b93b57..0bc85cc 100644 --- a/kernel/src/bbtkData.h +++ b/kernel/src/bbtkData.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkData.h,v $ Language: C++ - Date: $Date: 2008/04/08 06:59:30 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/04/18 12:59:15 $ + Version: $Revision: 1.3 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See doc/license.txt or @@ -49,7 +49,6 @@ namespace bbtk TypeInfo GetType() const { return mType; } const std::string& GetNature() const { return mNature; } - /// Equality bool operator== ( const DataInfo& k ) const { diff --git a/kernel/src/bbtkExecuter.cxx b/kernel/src/bbtkExecuter.cxx index cbb82eb..67e4788 100644 --- a/kernel/src/bbtkExecuter.cxx +++ b/kernel/src/bbtkExecuter.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkExecuter.cxx,v $ $ Language: C++ - Date: $Date: 2008/04/09 11:16:57 $ - Version: $Revision: 1.17 $ + Date: $Date: 2008/04/18 12:59:15 $ + Version: $Revision: 1.18 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -36,18 +36,31 @@ namespace bbtk { + //======================================================================= + Executer::Pointer Executer::New() + { + bbtkDebugMessage("Kernel",9,"Executer::New()"<SetExecuter(this); + mFactory = Factory::New(); + // The smart pointer on this is not made yet (is made by New) + // -> create it to pass it to the factory + // We have to "lock" the smart pointer because the factory + // only keeps a weak pointer on the executer + // -> this would auto-destroy !! + mFactory->SetExecuter(MakePointer(this,true)); Reset(); bbtkDebugDecTab("Kernel",9); } @@ -56,18 +69,11 @@ namespace bbtk //======================================================================= Executer::~Executer() { - bbtkDebugMessageInc("Kernel",9,"Executer::~Executer()" <UnRegisterBlackBox("workspace"); - mRootCBB->UnReference(); - } - if (mRootPackage) - { - GetFactory()->UnLoadPackage("user"); - } - delete mFactory; - + bbtkDebugMessageInc("Kernel",9,"==> Executer::~Executer()" <Reset(); + mFactory.reset(); bbtkDebugDecTab("Kernel",9); } //======================================================================= @@ -94,45 +100,37 @@ namespace bbtk bbtkDebugMessageInc("Kernel",9,"Executer::Reset()" <CheckPackages(); - - // The 'user' package must be closed before all other - // because box destructors must not be unloaded when bb are deleted! - // Similarly, the 'workspace' CBB must be destroyed before - // all user defined CBB otherwise any instance - // of a user CBB that is in the 'workspace' would try to - // access a user CBB descriptor which has been previously freed - if (mRootCBB) - { - mRootPackage->UnRegisterBlackBox(mRootCBB->GetTypeName()); - mRootCBB->UnReference(); - } - if (mRootPackage) - { - GetFactory()->UnLoadPackage("user"); - } + + mOpenDefinition.clear(); + mOpenPackage.clear(); GetFactory()->Reset(); // Create user package - mRootPackage = new Package("user","internal to bbi", - "User defined black boxes", - "", - BBTK_STRINGIFY_SYMBOL(BBTK_VERSION)); - // Create user workspace - mRootCBB = new ComplexBlackBoxDescriptor("workspace"); //,f); - mRootCBB->Reference(); - mRootCBB->SetFactory(GetFactory()); - mRootCBB->AddToAuthor("bbi (internal)"); - mRootCBB->AddToDescription("User's workspace"); - mOpenDefinition.push_back(CBBDefinition(mRootCBB,"user")); - // Register it into the user package - mRootPackage->RegisterBlackBox(mRootCBB); + Package::Pointer p = + Package::New("user","internal to bbi", + "User defined black boxes", + "", + BBTK_STRINGIFY_SYMBOL(BBTK_VERSION)); // Insert the user package in the factory - GetFactory()->InsertPackage(mRootPackage); + GetFactory()->InsertPackage(p); // And in the list of open packages - mOpenPackage.push_back(mRootPackage); + mOpenPackage.push_back(p); + mRootPackage = p; + // Create user workspace + ComplexBlackBoxDescriptor::Pointer r = + ComplexBlackBoxDescriptor::New("workspace"); + // mRootCBB->Reference(); + r->SetFactory(GetFactory()); + r->AddToAuthor("bbi (internal)"); + r->AddToDescription("User's workspace"); + mOpenDefinition.push_back(CBBDefinition(r,"user")); + // Register it into the user package + p->RegisterBlackBox(r); + mRootCBB = r; - GetFactory()->CheckPackages(); + // Object::PrintObjectListInfo(); + // GetFactory()->CheckPackages(); bbtkDebugDecTab("Kernel",9); } @@ -142,7 +140,7 @@ namespace bbtk /// changes the workspace name void Executer::SetWorkspaceName( const std::string& n ) { - mRootPackage->ChangeBlackBoxName( mRootCBB->GetTypeName(), n ); + GetUserPackage()->ChangeBlackBoxName( GetWorkspace()->GetTypeName(), n ); } //======================================================================= @@ -151,19 +149,19 @@ namespace bbtk { bbtkDebugMessageInc("Kernel",9,"Executer::BeginPackage(\""<GetPackage(name); } catch (Exception e) { - p = new Package(name, + p = Package::New(name, "", "", "", BBTK_STRINGIFY_SYMBOL(BBTK_VERSION)); - GetFactory()->InsertPackage(p); + GetFactory()->InsertPackage(p); } mOpenPackage.push_back(p); } @@ -185,7 +183,8 @@ namespace bbtk ","<SetFactory(GetFactory()); b->SetScriptFileName(scriptfilename); mOpenDefinition.push_back( CBBDefinition( b, pack ) ); @@ -210,7 +209,7 @@ namespace bbtk <GetTypeName()<<"\")" <0) { @@ -220,17 +219,17 @@ namespace bbtk } catch (Exception e) { - p = new Package(pname, - "", - "", - "", - BBTK_STRINGIFY_SYMBOL(BBTK_VERSION)); + p = Package::New(pname, + "", + "", + "", + BBTK_STRINGIFY_SYMBOL(BBTK_VERSION)); GetFactory()->InsertPackage(p); } } else { - p = mOpenPackage.back(); + p = mOpenPackage.back().lock(); } p->RegisterBlackBox(Current()); @@ -281,7 +280,7 @@ namespace bbtk //======================================================================= void Executer::Destroy(const std::string &boxName) { - bbtkError("Executer::Destroy : NOT IMPLEMENTED !"); + Current()->Remove(boxName,true); } //======================================================================= @@ -299,7 +298,7 @@ namespace bbtk void Executer::Execute (const std::string &nodeName) { // if in root - if (Current()==mRootCBB) + if (Current()==GetWorkspace()) { if (!mNoExecMode) { @@ -320,7 +319,7 @@ namespace bbtk const std::string& help) { // If the input is defined in the Root box - if (Current()==mRootCBB) + if (Current()==GetWorkspace()) { // If the dialog mode is set to NoDialog // and the user passed the name in the Inputs map @@ -382,12 +381,12 @@ namespace bbtk const std::string &input, const std::string &value) { - BlackBox* b = Current()->GetPrototype()->bbGetBlackBox(box); + BlackBox::Pointer b = Current()->GetPrototype()->bbGetBlackBox(box); // Looks for the adaptor if ( b->bbGetInputType(input) != typeid(std::string) ) { - BlackBox* a = + BlackBox::Pointer a = GetFactory()->NewAdaptor(typeid(std::string), b->bbGetInputType(input), "tmp"); @@ -401,7 +400,7 @@ namespace bbtk a->bbSetInput("In",v); a->bbExecute(); b->bbSetInput(input,a->bbGetOutput("Out")); - a->bbDelete(); + // a->Delete(); } else { @@ -415,11 +414,11 @@ namespace bbtk std::string Executer::Get(const std::string &box, const std::string &output) { - BlackBox* b = Current()->GetPrototype()->bbGetBlackBox(box); + BlackBox::Pointer b = Current()->GetPrototype()->bbGetBlackBox(box); // Looks for the adaptor if (b->bbGetOutputType(output) != typeid(std::string)) { - BlackBox* a = + BlackBox::Pointer a = GetFactory()->NewAdaptor( b->bbGetOutputType(output), typeid(std::string), @@ -440,7 +439,7 @@ namespace bbtk // << std::endl; //std::string v(value); //b->bbSetInput(input,a->bbGetOutput("Out")); - a->bbDelete(); + // a->bbDelete(); return r; } else @@ -458,21 +457,21 @@ namespace bbtk //======================================================================= void Executer::Author(const std::string &authorName) { - Current()->AddToAuthor(authorName,Current()==mRootCBB); + Current()->AddToAuthor(authorName,Current()==GetWorkspace()); } //======================================================================= //======================================================================= void Executer::Category(const std::string &category) { - Current()->AddToCategory(category,Current()==mRootCBB); + Current()->AddToCategory(category,Current()==GetWorkspace()); } //======================================================================= //======================================================================= void Executer::Description(const std::string &d) { - Current()->AddToDescription(d,Current()==mRootCBB); + Current()->AddToDescription(d,Current()==GetWorkspace()); } //======================================================================= @@ -526,14 +525,14 @@ namespace bbtk relative_link = false; } - Package* p; + Package::Pointer p; try { p = GetFactory()->GetPackage(nameblackbox); } catch (Exception e) { - p = mRootPackage; + p = GetUserPackage(); } // Generating documentation-help of workspace p->SetDocURL(filename_rootHtml); @@ -563,10 +562,10 @@ namespace bbtk bool system_display) { - BlackBox* blackbox=NULL; + BlackBox::Pointer blackbox; if (nameblackbox==".") { - blackbox=Current()->GetPrototype(); + blackbox = Current()->GetPrototype(); } else { @@ -638,7 +637,7 @@ namespace bbtk int detail = atoi(detailStr.c_str()); int level = atoi(levelStr.c_str()); - BlackBox* blackbox=NULL; + BlackBox::Pointer blackbox; if (nameblackbox.compare(".")==0) { blackbox=Current()->GetPrototype(); @@ -682,8 +681,8 @@ namespace bbtk /// void Executer::Print(const std::string &str) { - if (GetNoExecMode() && (Current()==mRootCBB) ) return; - if (Current()!=mRootCBB) return; + if (GetNoExecMode() && (Current()==GetWorkspace()) ) return; + if (Current()!=GetWorkspace()) return; bbtkDebugMessageInc("Interpreter",9,"Interpreter::Print(\""<GetObjectRecursiveSize(); + return s; + } + //========================================================================== }//namespace diff --git a/kernel/src/bbtkExecuter.h b/kernel/src/bbtkExecuter.h index 5f8b8a4..1e59b2c 100644 --- a/kernel/src/bbtkExecuter.h +++ b/kernel/src/bbtkExecuter.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkExecuter.h,v $ $ Language: C++ - Date: $Date: 2008/04/08 06:59:30 $ - Version: $Revision: 1.12 $ + Date: $Date: 2008/04/18 12:59:15 $ + Version: $Revision: 1.13 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -43,19 +43,16 @@ namespace bbtk class /*BBTK_EXPORT*/ Executer : public VirtualExec { - + BBTK_OBJECT_INTERFACE(Executer); + typedef VirtualExec Superclass; public: - - /// Constructor - Executer(); - /// Destructor - ~Executer(); + static Pointer New(); /// Gets the factory used by the executer - Factory* GetFactory() { return mFactory; } + Factory::Pointer GetFactory() { return mFactory; } /// Gets the factory used by the executer (const) - const Factory* GetFactory() const { return mFactory; } + // const Factory::Pointer GetFactory() const { return mFactory; } /// Sets the inputs of the workspace : @@ -183,13 +180,19 @@ namespace bbtk // static const std::string& GetObjectDescription(); // { static std::string s("Executer"); return s; } + + ComplexBlackBoxDescriptor::Pointer GetWorkspace() + { return mRootCBB.lock(); } + Package::Pointer GetUserPackage() + { return mRootPackage.lock(); } + protected: private: /// Gets the current working black box - ComplexBlackBoxDescriptor* Current() - { return mOpenDefinition.back().box; } + ComplexBlackBoxDescriptor::Pointer Current() + { return mOpenDefinition.back().box; } /// Returns true when we are inside a define/endefine block // bool InDefinitionBlock() { return (mOpenDefinition.size()>1); } @@ -198,26 +201,27 @@ namespace bbtk // ATTRIBUTES /// The factory used - Factory* mFactory; + Factory::Pointer mFactory; /// The Root Package /// Contains the root ComplexBlabkBox /// In which ComplexBlackBoxes are put by default /// Its name in bbi is 'user' - Package* mRootPackage; + Package::WeakPointer mRootPackage; /// The root ComplexBlackBox /// in which operations are done when outside a define/endefine block /// Its name in bbi is 'workspace' - ComplexBlackBoxDescriptor* mRootCBB; + ComplexBlackBoxDescriptor::WeakPointer mRootCBB; /// Struct that stores info on user defined complex black boxes struct CBBDefinition { - ComplexBlackBoxDescriptor* box; + ComplexBlackBoxDescriptor::Pointer box; std::string package; - CBBDefinition(ComplexBlackBoxDescriptor* d, const std::string& p ) + CBBDefinition(ComplexBlackBoxDescriptor::Pointer d, + const std::string& p ) : box(d), package(p) {} }; @@ -228,7 +232,7 @@ namespace bbtk /// The stack of current working package /// (is a stack for nested definitions) - std::deque mOpenPackage; + std::deque mOpenPackage; /// The input values of the Root ComplexBlackBox std::map mInputs; diff --git a/kernel/src/bbtkFactory.cxx b/kernel/src/bbtkFactory.cxx index 82bf038..c024617 100644 --- a/kernel/src/bbtkFactory.cxx +++ b/kernel/src/bbtkFactory.cxx @@ -4,8 +4,8 @@ Program: bbtk Module: $RCSfile: bbtkFactory.cxx,v $ Language: C++ -Date: $Date: 2008/04/09 11:16:57 $ -Version: $Revision: 1.32 $ +Date: $Date: 2008/04/18 12:59:15 $ +Version: $Revision: 1.33 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de @@ -40,14 +40,20 @@ PURPOSE. See the above copyright notices for more information. namespace bbtk { - typedef Package* (*PackageAccessor)(); - typedef void (*PackageDeleteFunction)(); + //=================================================================== + /// Default ctor + Factory::Pointer Factory::New() + { + bbtkDebugMessage("Kernel",9,"Factory::New()"<[" <GetName()<<" " + <GetVersion() + <<" " + <GetAuthor() << " Category(s) :" + <GetCategory() + <GetDescription()<AddFactory(GetThisPointer()); + mPackageMap[pkgname] = p; + return true; } + return false; - // Verifies that the Package delete function is present - std::string delfname(pkgname); - delfname += "DeletePackage"; - void *delf = dlsym(handler, delfname.c_str()); - if (!delf) - { - dlclose(handler); - bbtkError("Shared library ["<[" <GetBBTKVersion() != bbtk::GetVersion() ) - { - std::string v(pack.mPackage->GetBBTKVersion()); - UnLoadPackage(pkgname); - bbtkError("Cannot load package ["<AddFactory(this); - mPackageMap[pkgname] = pack; - - std::string separator = - ConfigurationFile::GetInstance().Get_file_separator (); - //BBTK_STRINGIFY_SYMBOL(BBTK_DOC_REL_PATH) - std::string docreldoc = - separator + "bbdoc" + separator + pkgname + separator + "index.html"; - std::string reldoc = - ".." + separator + ".." + docreldoc; - std::string doc = path + separator + ".." + separator - + BBTK_STRINGIFY_SYMBOL(BBTK_DOC_REL_PATH) - + docreldoc; - - pack.mPackage->SetDocURL(doc); - pack.mPackage->SetDocRelativeURL(reldoc); - - //=================================================================== - bbtkMessage("Output",2,pack.mPackage->GetName()<<" " - <GetVersion() - <<" (bbtk " - <GetBBTKVersion()<<") " - <GetAuthor() << " Category(s) :" - <GetCategory() - <GetDescription()<second.mPackage->GetName() + <second->GetName() <<"\")"<second.mPackage->RemoveFactory(this); - - // If no more factory which use it - if (i->second.mPackage->GetFactorySet().empty()) - { - // If it is a dynamically loaded package - if (i->second.mDynamicLibraryHandler) - { - - - // Loads the Package delete function - - std::string delfname(i->second.mPackage->GetName()); - delfname += "DeletePackage"; -#if defined(__GNUC__) - void *delf = dlsym(i->second.mDynamicLibraryHandler, delfname.c_str()); - if (!delf) - { - bbtkError("could not close package \"" - <second.mPackage->GetName() - <<"\" :"<second.mDynamicLibraryHandler, - delfname.c_str()); - if (!delf) - { - bbtkError("could not close package \"" - <second.mPackage->GetName() - <<"\" : "<second.mDynamicLibraryHandler); -#elif defined(_WIN32) - - FreeLibrary(i->second.mDynamicLibraryHandler); -#endif - } - - else - { - // If it is a manually inserted package : delete it normally - delete i->second.mPackage; - } - } - - // in any cases remove the entry in the map + i->second->RemoveFactory(GetThisPointer()); + Package::WeakPointer p = i->second; + // remove the entry in the map mPackageMap.erase(i); + // Release the package if not already destroyed + if (p.lock()) Package::Release(p); + bbtkDebugDecTab("Kernel",7); } @@ -524,7 +364,7 @@ namespace bbtk { bbtkMessage("Help",1, i->first << std::endl); if (details) { - i->second.mPackage->PrintBlackBoxes(false,adaptors); + i->second->PrintBlackBoxes(false,adaptors); } } @@ -544,22 +384,22 @@ namespace bbtk { bbtkMessage("Help",1, "Package "<first<<" "); - if (i->second.mPackage->GetVersion().length()>0) - bbtkMessageCont("Help",1,"v" <second.mPackage->GetVersion()); + if (i->second->GetVersion().length()>0) + bbtkMessageCont("Help",1,"v" <second->GetVersion()); - if (i->second.mPackage->GetAuthor().length()>0) - bbtkMessageCont("Help",1,"- "<second.mPackage->GetAuthor()); + if (i->second->GetAuthor().length()>0) + bbtkMessageCont("Help",1,"- "<second->GetAuthor()); - if (i->second.mPackage->GetCategory().length()>0) - bbtkMessageCont("Help",1,"- "<second.mPackage->GetCategory()); + if (i->second->GetCategory().length()>0) + bbtkMessageCont("Help",1,"- "<second->GetCategory()); bbtkMessageCont("Help",1,std::endl); bbtkIncTab("Help",1); - bbtkMessage("Help",1,i->second.mPackage->GetDescription()<second.mPackage->GetNumberOfBlackBoxes()>0) + bbtkMessage("Help",1,i->second->GetDescription()<second->GetNumberOfBlackBoxes()>0) { bbtkMessage("Help",1, "Black boxes : "<second.mPackage->PrintBlackBoxes(true,adaptors); + i->second->PrintBlackBoxes(true,adaptors); } else { @@ -591,10 +431,10 @@ namespace bbtk PackageMapType::const_iterator i; for (i = mPackageMap.begin(); i!=mPackageMap.end(); ++i ) { - if (i->second.mPackage->ContainsBlackBox(name)) + if (i->second->ContainsBlackBox(name)) { - i->second.mPackage->HelpBlackBox(name,full); - package = i->second.mPackage->GetName(); + i->second->HelpBlackBox(name,full); + package = i->second->GetName(); found = true; } } @@ -611,16 +451,17 @@ namespace bbtk //=================================================================== /// Inserts a package in the factory - void Factory::InsertPackage( Package* p ) + void Factory::InsertPackage( Package::Pointer p ) { bbtkDebugMessageInc("Kernel",9,"Factory::InsertPackage(\""<< p->GetName()<<"\")"<AddFactory(this); - PackageInfoType pack; - pack.mDynamicLibraryHandler = 0; - pack.mPackage = p; - mPackageMap[p->GetName()] = pack; + std::cout << p.use_count() <AddFactory(GetThisPointer()); + mPackageMap[p->GetName()] = p; + + std::cout << p.use_count() <GetName()<<"\")"<second.mPackage == p) break; + if (i->second == p) break; }; if (i!=mPackageMap.end()) @@ -656,17 +497,17 @@ namespace bbtk //=================================================================== /// Creates an instance of a black box of type with name - BlackBox* Factory::NewBlackBox(const std::string& type, + BlackBox::Pointer Factory::NewBlackBox(const std::string& type, const std::string& name) const { bbtkDebugMessageInc("Kernel",7,"Factory::NewBlackBox(\"" <second.mPackage->NewBlackBox(type,name); + b = i->second->NewBlackBox(type,name); if (b) break; } if (!b) @@ -681,7 +522,7 @@ namespace bbtk //=================================================================== /// Creates an instance of a black box of type with name - BlackBox* Factory::NewAdaptor(const DataInfo& typein, + BlackBox::Pointer Factory::NewAdaptor(const DataInfo& typein, const DataInfo& typeout, const std::string& name) const { @@ -691,11 +532,11 @@ namespace bbtk <second.mPackage->NewAdaptor(typein,typeout,name); + b = i->second->NewAdaptor(typein,typeout,name); if (b) break; } if (!b) @@ -712,7 +553,7 @@ namespace bbtk //=================================================================== /// Creates an instance of a black box of type with name - BlackBox* Factory::NewWidgetAdaptor(const DataInfo& typein, + BlackBox::Pointer Factory::NewWidgetAdaptor(const DataInfo& typein, const DataInfo& typeout, const std::string& name) const { @@ -722,11 +563,11 @@ namespace bbtk <second.mPackage->NewWidgetAdaptor(typein, + b = i->second->NewWidgetAdaptor(typein, typeout, name); if (b) break; @@ -756,7 +597,7 @@ namespace bbtk PackageMapType::const_iterator i; for (i = mPackageMap.begin(); i!=mPackageMap.end(); ++i ) { - b = i->second.mPackage->FindAdaptor(typein, + b = i->second->FindAdaptor(typein, typeout, adaptor); if (b) break; @@ -788,7 +629,7 @@ namespace bbtk PackageMapType::const_iterator i; for (i = mPackageMap.begin(); i!=mPackageMap.end(); ++i ) { - b = i->second.mPackage->FindWidgetAdaptor(typein, + b = i->second->FindWidgetAdaptor(typein, typeout, adaptor); if (b) break; @@ -814,7 +655,7 @@ namespace bbtk PackageMapType::const_iterator i; for (i = mPackageMap.begin(); i!=mPackageMap.end(); ++i ) { - b = i->second.mPackage->FindWidgetAdaptor(typein, + b = i->second->FindWidgetAdaptor(typein, typeout, widget); if (b) break; @@ -828,8 +669,8 @@ namespace bbtk for (i = mPackageMap.begin(); i!=mPackageMap.end(); ++i ) { Package::AdaptorMapType::const_iterator j; - for (j=i->second.mPackage->GetAdaptorMap().begin(); - j!=i->second.mPackage->GetAdaptorMap().end(); + for (j=i->second->GetAdaptorMap().begin(); + j!=i->second->GetAdaptorMap().end(); ++j) { if ( ( j->first.mKind == @@ -838,7 +679,7 @@ namespace bbtk (j->first.mTypeOut.GetNature() == typeout.GetNature() ) ) { - widget = j->second->GetTypeName(); + widget = j->second.lock()->GetTypeName(); bbtkMessage("Kernel",5, "===> Found first part : "<first.mTypeIn<<"->" @@ -870,24 +711,25 @@ namespace bbtk //=================================================================== /// Creates an instance of a connection - Connection* Factory::NewConnection(BlackBox* from, - const std::string& output, - BlackBox* to, - const std::string& input) const + Connection::Pointer Factory::NewConnection(BlackBox::Pointer from, + const std::string& output, + BlackBox::Pointer to, + const std::string& input) const { bbtkDebugMessage("Kernel",7,"Factory::NewConnection(\"" <bbGetName()<<"\",\""<bbGetName()<<"\",\""<()); } //=================================================================== //=================================================================== - const Package* Factory::GetPackage(const std::string& name) const + Package::Pointer Factory::GetPackage(const std::string& name) const { bbtkDebugMessageInc("Kernel",9,"Factory::GetPackage(\""<second.mPackage; + return i->second; } else { @@ -908,27 +750,6 @@ namespace bbtk } //=================================================================== - //=================================================================== - Package* Factory::GetPackage(const std::string& name) - { - bbtkDebugMessageInc("Kernel",9,"Factory::GetPackage(\""<second.mPackage; - } - else - { - bbtkDebugDecTab("Kernel",9); - bbtkError("package \""<second.mPackage->CheckBoxes(); + i->second->CheckBoxes(); } bbtkMessage("Debug",1,"****** Checking Factory "<<(void*)this <<" ... OK"<second.mPackage->ContainsBlackBox(name)) + if (i->second->ContainsBlackBox(name)) { std::string separator = ConfigurationFile::GetInstance().Get_file_separator (); @@ -998,11 +819,11 @@ namespace bbtk ff=fopen(filename2.c_str(),"w"); fprintf(ff,"TMP \n"); - //fprintf(ff, "Link\n", i->second.mPackage->GetDocURL().c_str(),name.c_str() ); + //fprintf(ff, "Link\n", i->second->GetDocURL().c_str(),name.c_str() ); fclose(ff); system( command.c_str() ); found = true; @@ -1028,13 +849,14 @@ namespace bbtk std::string title; - typedef std::map > IndexType; + typedef std::map > IndexType; IndexType index; // Builds the index map PackageMapType::const_iterator i; for (i = mPackageMap.begin(); i!=mPackageMap.end(); ++i ) { - Package* pack = i->second.mPackage; + Package::Pointer pack = i->second; if (pack->GetName()=="user") continue; Package::BlackBoxMapType::const_iterator j; for (j = pack->GetBlackBoxMap().begin(); @@ -1090,7 +912,7 @@ namespace bbtk } else { - std::vector v; + std::vector v; v.push_back(j->second); index[*k] = v; } @@ -1169,7 +991,7 @@ namespace bbtk s << "

\n"; - std::vector::iterator di; + std::vector::iterator di; for (di=ii->second.begin();di!=ii->second.end();++di) { std::string pack = (*di)->GetPackage()->GetName(); @@ -1209,6 +1031,50 @@ namespace bbtk bbtkDebugDecTab("Kernel",9); } + //========================================================================== + std::string Factory::GetObjectName() const + { + return std::string("Factory"); + } + //========================================================================== + + //========================================================================== + std::string Factory::GetObjectInfo() const + { + std::stringstream i; + return i.str(); + } + //========================================================================== + + //========================================================================== +size_t Factory::GetObjectSize() const +{ + size_t s = Superclass::GetObjectSize(); + s += Factory::GetObjectInternalSize(); + return s; + } + //========================================================================== + //========================================================================== +size_t Factory::GetObjectInternalSize() const +{ + size_t s = sizeof(Factory); + return s; + } + //========================================================================== + //========================================================================== + size_t Factory::GetObjectRecursiveSize() const + { + size_t s = Superclass::GetObjectRecursiveSize(); + s += Factory::GetObjectInternalSize(); + + PackageMapType::const_iterator i; + for (i = mPackageMap.begin(); i!=mPackageMap.end(); ++i ) + { + s += i->second->GetObjectRecursiveSize(); + } + return s; + } + //========================================================================== } diff --git a/kernel/src/bbtkFactory.h b/kernel/src/bbtkFactory.h index 73b23c4..0d0560a 100644 --- a/kernel/src/bbtkFactory.h +++ b/kernel/src/bbtkFactory.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkFactory.h,v $ Language: C++ - Date: $Date: 2008/04/09 11:16:57 $ - Version: $Revision: 1.13 $ + Date: $Date: 2008/04/18 12:59:15 $ + Version: $Revision: 1.14 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See doc/license.txt or @@ -29,22 +29,21 @@ #ifndef __bbtkFactory_h__ #define __bbtkFactory_h__ -//#include "bbtkBlackBox.h" #include "bbtkPackage.h" -#include "bbtkDynamicLibraryHandling.h" namespace bbtk { class Executer; + BBTK_FORWARD_DECLARE_POINTER(Executer); - class BBTK_EXPORT Factory + class BBTK_EXPORT Factory : public Object { - + BBTK_OBJECT_INTERFACE(Factory); + typedef Object Superclass; public: + static Pointer New(); - Factory(); - ~Factory(); void GetPackagesList(std::vector&); void LoadPackage( const std::string& name ); @@ -54,20 +53,20 @@ namespace bbtk void HelpBlackBox(const std::string& name, std::string& package, bool full=true ) const; void ShowGraphTypes(const std::string& name) const; - void InsertPackage( Package* ); - void RemovePackage( Package* ); + void InsertPackage( Package::Pointer ); + void RemovePackage( Package::Pointer ); + + Package::Pointer GetPackage(const std::string& name) const; - const Package* GetPackage(const std::string& name) const; - Package* GetPackage(const std::string& name); - BlackBox* NewBlackBox(const std::string& type, + BlackBox::Pointer NewBlackBox(const std::string& type, const std::string& name) const; - BlackBox* NewAdaptor(const DataInfo& typein, + BlackBox::Pointer NewAdaptor(const DataInfo& typein, const DataInfo& typeout, const std::string& name) const; - BlackBox* NewWidgetAdaptor(const DataInfo& typein, + BlackBox::Pointer NewWidgetAdaptor(const DataInfo& typein, const DataInfo& typeout, const std::string& name) const; @@ -84,10 +83,10 @@ namespace bbtk std::string& widget, std::string& adaptor) const; - Connection* NewConnection(BlackBox* from, - const std::string& output, - BlackBox* to, - const std::string& input) const; + Connection::Pointer NewConnection(BlackBox::Pointer from, + const std::string& output, + BlackBox::Pointer to, + const std::string& input) const; void WriteDotFilePackagesList(FILE *ff); @@ -106,11 +105,11 @@ namespace bbtk void CreateHtmlIndex(IndexEntryType type, const std::string& filename); /// Sets the executer who created the factory (if any) - void SetExecuter(Executer *e) { mExecuter = e; } + void SetExecuter(ExecuterPointer e) { mExecuter = e; } /// Gets the executer who created the factory (if any) - Executer* GetExecuter() { return mExecuter; } + ExecuterPointer GetExecuter();// { return mExecuter.lock(); } /// Gets the executer who created the factory (if any) - const - const Executer* GetExecuter() const { return mExecuter; } + // const Executer::Pointer GetExecuter() const { return mExecuter.lock(); } private: @@ -120,21 +119,9 @@ namespace bbtk std::string path); public: - /// The structure storing info on a package - class PackageInfoType - { - public : - /// Ctor - PackageInfoType() {} - /// Dtor - ~PackageInfoType() {} - /// The pointer on the package - Package* mPackage; - /// The handler of the dynamic library - DynamicLibraryHandler mDynamicLibraryHandler; - }; + /// The type of map of packages - typedef std::map< std::string, PackageInfoType > PackageMapType; + typedef std::map< std::string, Package::Pointer > PackageMapType; const PackageMapType& GetPackageMap() const { return mPackageMap; } @@ -143,7 +130,7 @@ namespace bbtk PackageMapType mPackageMap; /// The executer which created the factory (if any) - Executer* mExecuter; + ExecuterWeakPointer mExecuter; void CloseAllPackages(); void ClosePackage(PackageMapType::iterator& i); @@ -153,113 +140,6 @@ namespace bbtk - /* - /// SYSTEM METHOD : Global method returning the global factory object pointer - inline Factory*& GlobalFactoryPointer() - { - static Factory* f = 0; - return f; - } - - /// SYSTEM METHOD : Global method returning the global factory object - inline Factory* GetGlobalFactory() - { - if (!GlobalFactoryPointer()) - { - GlobalFactoryPointer() = new Factory; - } - return GlobalFactoryPointer(); - } - - /// SYSTEM METHOD : Deletes the global factory pointer - inline void DeleteGlobalFactory() - { - if (GlobalFactoryPointer()) - { - delete GlobalFactoryPointer(); - } - } - - inline void LoadPackage( const std::string& name ) - { - GetGlobalFactory()->LoadPackage(name); - } - - inline void UnLoadPackage( const std::string& name ) - { - GetGlobalFactory()->UnLoadPackage(name); - } - - inline void PrintPackages(bool details = true, bool adaptors = false) - { - GetGlobalFactory()->PrintPackages(details,adaptors); - } - - inline void HelpPackage(const std::string& name, bool adaptors = false) - { - GetGlobalFactory()->HelpPackage(name,adaptors); - } - - inline void HelpBlackBox(const std::string& name, bool full=true) - { - std::string package; - GetGlobalFactory()->HelpBlackBox(name, package, full); - } - - inline void HelpBlackBox(const std::string& name, std::string& package, - bool full=true - ) - { - GetGlobalFactory()->HelpBlackBox(name, package, full); - } - - - inline void ShowGraphTypes(const std::string& name) - { - GetGlobalFactory()->ShowGraphTypes(name); - } - - inline void InsertPackage( Package* p) - { - GetGlobalFactory()->InsertPackage(p); - } - - inline void RemovePackage( Package* p) - { - GetGlobalFactory()->RemovePackage(p); - } - - inline const Package* GetPackage(const std::string& name) - { - return GetGlobalFactory()->GetPackage(name); - } - - inline BlackBox* NewBlackBox(const std::string& type, - const std::string& name) - { - return GetGlobalFactory()->NewBlackBox(type,name); - } - - inline BlackBox* NewAdaptor(TypeInfo typein, - TypeInfo typeout, - const std::string& name) - { - return GetGlobalFactory()->NewAdaptor(typein,typeout,name); - } - - inline Connection* NewConnection(BlackBox* from, - const std::string& output, - BlackBox* to, - const std::string& input) - { - return GetGlobalFactory()->NewConnection(from,output,to,input); - } - - inline void WriteDotFilePackagesList(FILE *ff) - { - GetGlobalFactory()->WriteDotFilePackagesList(ff); - } - */ }// namespace bbtk diff --git a/kernel/src/bbtkInterpreter.cxx b/kernel/src/bbtkInterpreter.cxx index febbd93..ede613a 100644 --- a/kernel/src/bbtkInterpreter.cxx +++ b/kernel/src/bbtkInterpreter.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkInterpreter.cxx,v $ $ Language: C++ - Date: $Date: 2008/04/09 11:16:57 $ - Version: $Revision: 1.59 $ + Date: $Date: 2008/04/18 12:59:15 $ + Version: $Revision: 1.60 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -39,32 +39,38 @@ namespace bbtk { - //Interpreter* Interpreter::mGlobalInterpreter = NULL; + //======================================================================= + Interpreter::Pointer Interpreter::New(const std::string& cpp_file) + { + bbtkDebugMessage("Kernel",9,"Interpreter::New()"<0 : Prints the 'echo' commands of the user.\n\tLevel>1 : Prints the command being interpreted",1); bbtk::MessageManager::RegisterMessageType("Interpreter","Messages of the interpreter",0); bbtkDebugMessageInc("Interpreter",9,"Interpreter::Interpreter()" <(bbtk::Transcriptor::New(cpp_file)); } else { - mExecuter = new bbtk::Executer(); + mExecuter = boost::static_pointer_cast(bbtk::Executer::New()); } - mExecuter->SetInterpreter(this); + + // Lock this pointer or will auto-destruct !! + mExecuter->SetInterpreter(MakePointer(this,true)); // For the time being, comment out previous line, and // uncomment next line to check Transcriptor @@ -291,6 +297,14 @@ bufferNb =0; info.help = "Shows a graphical view of a bbtk pipeline.\n- BlackBoxName : name of the box to view. Default '.' : current box.\n- BlackBoxNameType : name of the type of box to view, ex : 'workspace')"; mCommandDict[info.keyword] = info; + info.keyword = "object"; + info.argmin = 0; + info.argmax = 1; + info.code = cObject; + info.syntax = "object "; + info.help = "Provides debug info on object "; + mCommandDict[info.keyword] = info; + /* info.keyword = "workspace"; info.argmin = 1; @@ -314,10 +328,9 @@ bufferNb =0; */ Interpreter::~Interpreter() { - bbtkDebugMessageInc("Interpreter",9,"Interpreter::~Interpreter()" < Interpreter::~Interpreter()" < in; - Factory* F = mExecuter->GetFactory(); - if (F==0) + + Factory::Pointer F = mExecuter->GetFactory(); + /* + Package::Pointer user = F->GetPackage("user"); + */ + ComplexBlackBoxDescriptor::Pointer workspace = mExecuter->GetWorkspace(); + + if (workspace==0) { delete s; - bbtkError("Interpreter::CreateGUI : could not access the executer factory"); + bbtkError("Interpreter::CreateGUI : could not access the executer workspace"); } - Package* user = F->GetPackage("user"); - ComplexBlackBoxDescriptor* workspace - = (ComplexBlackBoxDescriptor*)user->GetBlackBoxMap().find("workspace")->second; - - BlackBox* box = workspace->GetPrototype()->bbGetBlackBox(boxname); + + + /* + (ComplexBlackBoxDescriptor::Pointer)(user->GetBlackBoxMap().find("workspace")->second.get()); + */ + + BlackBox::Pointer box = workspace->GetPrototype()->bbGetBlackBox(boxname); // BlackBox::InputConnectorMapType incm = box->bbGetInputConnectorMap(); int nb = 0; BlackBox::InputConnectorMapType::iterator i; @@ -1919,7 +1944,7 @@ void Interpreter::NewGUI(const std::string& boxname, // Sets the label of the widget adaptor to the name of the input (*s) << " set "<first<<".Label "<first<first<<".In \"" + (*s) << " set "<first<<".In \" " <bbGetInputAsString(i->first)<<"\"" << std::endl; // store the input name @@ -1943,7 +1968,7 @@ void Interpreter::NewGUI(const std::string& boxname, // Sets the label of the widget adaptor to the name of the input (*s) << " set "<first<<"Widget.Label "<first<first<<"Widget.In \"" + (*s) << " set "<first<<"Widget.In \" " <bbGetInputAsString(i->first)<<"\""<< std::endl; // store the input name in.push_back(i->first); @@ -1964,7 +1989,7 @@ void Interpreter::NewGUI(const std::string& boxname, // Sets the label of the widget adaptor to the name of the input (*s) << " set "<first<<".Title "<first<first<<".In \"" + (*s) << " set "<first<<".In \" " <bbGetInputAsString(i->first)<<"\""<< std::endl; // store the input name in.push_back(i->first); @@ -2014,6 +2039,53 @@ void Interpreter::NewGUI(const std::string& boxname, } //======================================================================= + + + //========================================================================== + void Interpreter::ObjectInfo(const std::string& name) + { + Object:: PrintObjectInfo(name); + } + //========================================================================== + //========================================================================== + std::string Interpreter::GetObjectName() const + { + return std::string("Interpreter"); + } + //========================================================================== + + //========================================================================== + std::string Interpreter::GetObjectInfo() const + { + std::stringstream i; + return i.str(); + } + //========================================================================== + + //========================================================================== +size_t Interpreter::GetObjectSize() const +{ + size_t s = Superclass::GetObjectSize(); + s += Interpreter::GetObjectInternalSize(); + return s; + } + //========================================================================== + //========================================================================== +size_t Interpreter::GetObjectInternalSize() const +{ + size_t s = sizeof(Interpreter); + return s; + } + //========================================================================== + //========================================================================== + size_t Interpreter::GetObjectRecursiveSize() const + { + size_t s = Superclass::GetObjectRecursiveSize(); + s += Interpreter::GetObjectInternalSize(); + s += mExecuter->GetObjectRecursiveSize(); + return s; + } + //========================================================================== }//namespace diff --git a/kernel/src/bbtkInterpreter.h b/kernel/src/bbtkInterpreter.h index 48bd0ae..b5ca18f 100644 --- a/kernel/src/bbtkInterpreter.h +++ b/kernel/src/bbtkInterpreter.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkInterpreter.h,v $ $ Language: C++ - Date: $Date: 2008/04/09 11:16:57 $ - Version: $Revision: 1.25 $ + Date: $Date: 2008/04/18 12:59:15 $ + Version: $Revision: 1.26 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -39,6 +39,7 @@ namespace bbtk class WxConsole; #endif + //======================================================================= class BBTK_EXPORT InterpreterUser { public: @@ -50,8 +51,11 @@ namespace bbtk }; + //======================================================================= - /// + + + //======================================================================= class BBTK_EXPORT InterpreterError : public Exception { public: @@ -75,67 +79,16 @@ namespace bbtk std::string mScriptFile; int mScriptLine; }; + //======================================================================= - /// - class BBTK_EXPORT Interpreter + //======================================================================= + class BBTK_EXPORT Interpreter : public Object { - - private: - - /// The enumeration of command codes == Command name - typedef enum - { - cNew, - cDelete, - cConnect, - cExec, - cPackage, - cEndPackage, - cDefine, - cEndDefine, - cInput, - cOutput, - cSet, - cConfig, // JPR - cReset, // EED - cAuthor, - cCategory, // JPR - cDescription, - cHelp, - cMessage, - cInclude, - cQuit, - cLoad, - cUnload, - cGraph, - cPrint, - cIndex, - cKind, // LG - cNewGUI, // LG - cWorkspace // LG - } CommandCodeType; - - /// The structure storing the informations on a command - typedef struct - { - std::string keyword; - int argmin, argmax; - CommandCodeType code; - std::string syntax; - std::string help; - } CommandInfoType; - - /// The type of dictionnary of commands - typedef std::map CommandDictType; - + BBTK_OBJECT_INTERFACE(Interpreter); + typedef Object Superclass; public: - /// Constructor - Interpreter(const std::string& cpp_file = ""); - - /// Destructor - ~Interpreter(); - + static Pointer New(const std::string& cpp_file = ""); typedef enum { @@ -191,12 +144,59 @@ namespace bbtk #endif /// Gets the Executer - VirtualExec* GetExecuter() { return mExecuter; } - /// Gets the Executer (const) - const VirtualExec* GetExecuter() const { return mExecuter; } + VirtualExec::Pointer GetExecuter() const { return mExecuter; } protected: + + /// The enumeration of command codes == Command name + typedef enum + { + cNew, + cDelete, + cConnect, + cExec, + cPackage, + cEndPackage, + cDefine, + cEndDefine, + cInput, + cOutput, + cSet, + cConfig, // JPR + cReset, // EED + cAuthor, + cCategory, // JPR + cDescription, + cHelp, + cMessage, + cInclude, + cQuit, + cLoad, + cUnload, + cGraph, + cPrint, + cIndex, + cKind, // LG + cNewGUI, // LG + cWorkspace, // LG + cObject + } CommandCodeType; + + /// The structure storing the informations on a command + typedef struct + { + std::string keyword; + int argmin, argmax; + CommandCodeType code; + std::string syntax; + std::string help; + } CommandInfoType; + + /// The type of dictionnary of commands + typedef std::map CommandDictType; + + /// Interprets a line void InterpretLine( const std::string& line, bool &insideComment ); @@ -255,8 +255,13 @@ namespace bbtk void NewGUI(const std::string& box, const std::string& instanceName); + void ObjectInfo(const std::string& name); + private: + /// Constructor + Interpreter(const std::string& cpp_file = ""); + /// Opens the file fullPathScriptName /// includeScriptName is the name as given to the include command void LoadScript( std::string fullPathScriptName, @@ -267,13 +272,13 @@ namespace bbtk void CatchStdException( const std::exception& e ); void CatchUnknownException(); - private: + //================================================================== // ATTRIBUTES /// The command executer used - bbtk::VirtualExec* mExecuter; + bbtk::VirtualExec::Pointer mExecuter; /// The user of the interpreter (0 if none) bbtk::InterpreterUser* mUser; diff --git a/kernel/src/bbtkMessageManager.cxx b/kernel/src/bbtkMessageManager.cxx index 21b0e53..6812de0 100644 --- a/kernel/src/bbtkMessageManager.cxx +++ b/kernel/src/bbtkMessageManager.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkMessageManager.cxx,v $ Language: C++ - Date: $Date: 2008/03/20 09:51:28 $ - Version: $Revision: 1.4 $ + Date: $Date: 2008/04/18 12:59:15 $ + Version: $Revision: 1.5 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -73,6 +73,14 @@ namespace bbtk mMessageLevel[key] = 0; mMessageHelp[key] = "Graphical user interface related messages"; if (mMaxMessageLength Object::InsertInObjectList(\"" + <GetObjectName()<<"\" ["< w(p); + mgObjectList.insert(w); + } + //======================================================================= + + + //======================================================================= + void Object::RemoveFromObjectList(WeakPointer p) + { + bbtkDebugMessage("object",9,"##> Object::RemoveFromObjectList()" + <use_count() == 0) + { + u++; + } + else + { + Object::Pointer p(i->lock()); + PrintObjectInfo(p); + n++; + m += p->GetObjectSize(); + } + } + std::cout + << "------------------------------------------------------"<1) + { + std::cout<<"* Note : "<use_count() == 0) continue; + Object::Pointer p(i->lock()); + if (p->GetObjectName().find(name) != std::string::npos ) + { + std::cout << n << "/" << mgObjectList.size() << " "; + PrintObjectInfo(p); + } + } + } + //======================================================================= + + //======================================================================= + void Object::PrintObjectInfo(const Object::Pointer& p) + { + std::cout << "* [" << p << "] \t" + << p.use_count()-1 << " r \t" + << p->GetObjectRecursiveSize() << " (" + << p->GetObjectSize() << ") b \t" + << p->GetObjectName() + << std::endl; + std::cout << p->GetObjectInfo(); + } + //======================================================================= + + //======================================================================= + /// Objects deleter + void Object::Deleter::operator() (Object* p) + { + std::string name = p->GetObjectName(); + void* adr = (void*)p; + bbtkDebugMessage("object",1,"##> Object::Deleter : deleting \"" + <Delete(p); + bbtkDebugMessage("object",2,"<## Object::Deleter : \""< +#include +#include + +namespace bbtk +{ + + // The top class of bbtk class hierarchy + class Object + { + public: + typedef boost::shared_ptr Pointer; + typedef boost::weak_ptr WeakPointer; + + Object(); + virtual ~Object(); + + virtual std::string GetObjectName() const; + virtual std::string GetObjectInfo() const; + virtual size_t GetObjectSize() const { return sizeof(Object); } + virtual size_t GetObjectInternalSize() const { return sizeof(Object); } + virtual size_t GetObjectRecursiveSize() const { return sizeof(Object); } + long GetUseCount() { return mThisPointer.use_count(); } + + static void InsertInObjectList(Pointer); + static void RemoveFromObjectList(WeakPointer); + + static void PrintObjectListInfo(); + static void PrintObjectInfo(const std::string& name); + static void PrintObjectInfo(const Pointer& o); + /// Default objects deleter : removes object from list on deletion + struct Deleter + { + Deleter() : mPointer() {} + virtual void operator() (Object* p); + virtual void Delete(Object* p) { delete p; } + WeakPointer mPointer; + }; + + protected: + void LockThis() { mThisPointerLocked = mThisPointer.lock(); } + void UnLockThis() { mThisPointerLocked = Pointer(); } + // Object::Pointer GetThis() const { return mThisPointer.lock(); } + template + boost::shared_ptr GetThisPointer() const + { + return boost::dynamic_pointer_cast(mThisPointer.lock()); + } + template + static boost::shared_ptr MakePointer(U* s, bool lock = false) + { + if (s->mThisPointer.lock()) + { + boost::shared_ptr p = s->GetThisPointer(); + if (!lock) s->mThisPointerLocked.reset(); + return p; + } + boost::shared_ptr p = boost::shared_ptr(s,Object::Deleter()); + static_cast + (p._internal_get_deleter(typeid(Object::Deleter))) + ->mPointer = p; + s->mThisPointer = p; + Object::InsertInObjectList(p); + if (lock) s->LockThis(); + return p; + } + template + static boost::shared_ptr MakePointer(U* s, + const D& del, + bool lock = false) + { + if (s->mThisPointer.lock()) + { + boost::shared_ptr p = s->GetThisPointer(); + if (!lock) s->mThisPointerLocked.reset(); + return p; + } + boost::shared_ptr p = boost::shared_ptr(s,del); + static_cast + (p._internal_get_deleter(typeid(D))) + ->mPointer = p; + s->mThisPointer = p; + Object::InsertInObjectList(p); + if (lock) s->LockThis(); + return p; + } + + + private: + typedef std::set > ObjectListType; + static ObjectListType mgObjectList; + WeakPointer mThisPointer; + Pointer mThisPointerLocked; + + }; + +#define BBTK_OBJECT_DEFINE_SELF(CLASS) public : typedef CLASS Self; + +#define BBTK_FORWARD_DECLARE_POINTER(CLASS) \ + typedef boost::shared_ptr CLASS ## Pointer; \ + typedef boost::weak_ptr CLASS ## WeakPointer; + + +#define BBTK_OBJECT_MINIMAL_INTERFACE \ + public: \ + typedef boost::shared_ptr Pointer; \ + typedef boost::weak_ptr WeakPointer; \ + friend struct Object::Deleter; + //private: + + // does not work : why ? + // boost::get_deleter(pt)->mPointer = pt; + // + +#define BBTK_OBJECT_MINIMAL_INTERFACE_WITH_SELF(CLASS) \ + public : typedef CLASS Self; \ + BBTK_OBJECT_MINIMAL_INTERFACE; + + +#define BBTK_OBJECT_INTERFACE(CLASS) \ + BBTK_OBJECT_MINIMAL_INTERFACE_WITH_SELF(CLASS); \ +public: \ + std::string GetObjectName() const; \ + std::string GetObjectInfo() const ; \ + size_t GetObjectSize() const ; \ + size_t GetObjectInternalSize() const ; \ + size_t GetObjectRecursiveSize() const ; \ +protected: \ + CLASS(); \ + CLASS(const CLASS&); \ + ~CLASS(); + +#define BBTK_ABSTRACT_OBJECT_INTERFACE(CLASS) \ + public : typedef CLASS Self; \ + BBTK_OBJECT_MINIMAL_INTERFACE; \ +protected: \ + CLASS(); \ + CLASS(const CLASS&); \ + virtual ~CLASS(); + + //======================================================================= + // A struct with one static instance + // just to print object list info after main + struct StaticInitTime + { + StaticInitTime(); + ~StaticInitTime(); + + + static bool PrintObjectListInfo; + private: + static Object mObject; + }; + + + /* + template + inline T BruteForceDownCastPointer(class U p) + { + + } + */ + +}// namespace bbtk + +#endif + diff --git a/kernel/src/bbtkPackage.cxx b/kernel/src/bbtkPackage.cxx index b242721..94286b3 100644 --- a/kernel/src/bbtkPackage.cxx +++ b/kernel/src/bbtkPackage.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkPackage.cxx,v $ Language: C++ - Date: $Date: 2008/04/09 11:16:57 $ - Version: $Revision: 1.12 $ + Date: $Date: 2008/04/18 12:59:15 $ + Version: $Revision: 1.13 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See doc/license.txt or @@ -28,6 +28,30 @@ namespace bbtk { + + + + //========================================================================== + /// Creates a new package + Package::Pointer Package::New(const std::string& name, + const std::string& author, + const std::string& description, + const std::string& version, + const std::string& BBTKVersion) + { + bbtkDebugMessage("object",1,"##> Package::New('"< Package::Package('"<second->UnReference(); - } - // Adaptors are also stored in the black box map : hence already deleted + bbtkDebugMessage("object",2,"==> Package::~Package(\""<GetName(); + + Package::BlackBoxMapType::iterator desc = + pack.lock()->GetBlackBoxMap().find(descname); + if (desc == pack.lock()->GetBlackBoxMap().end()) + { + bbtkDebugMessage("package",3, + " Descriptor has already been released" + <second; + desc->second.reset(); + // if it is dead : remove it + if (pdesc.expired()) + { + bbtkDebugMessage("package",2," '"<GetBlackBoxMap().find(descname); + if (desc != pack.lock()->GetBlackBoxMap().end()) + pack.lock()->GetBlackBoxMap().erase(desc); + } + else + { + bbtkDebugMessage("package",3," ... Descriptor still alive (" + <GetBlackBoxMap()[descname] = pdesc.lock(); + } + } + //========================================================================== + + + //========================================================================== + /// Release + void Package::Release(Package::WeakPointer pack) + { + std::string packname = pack.lock()->mName; + bbtkDebugMessage("package",1,"==> Package::Release('"<< + packname<<"')"<mDynamicLibraryHandler ? 1:0; + long ndesc = pack.lock()->GetBlackBoxMap().size(); + long nrefs = pack.use_count(); + + bbtkDebugMessage("package",2," "< No more external ref : checking descriptors" + < descnamelist; + BlackBoxMapType::iterator i; + for (i=pack.lock()->mBlackBoxMap.begin(); + i!= pack.lock()->mBlackBoxMap.end(); + ++i) + descnamelist.push_back(i->first); + + // Iterator over the initial names + std::vector::iterator descname; + for (descname=descnamelist.begin(); + descname!=descnamelist.end(); + ++descname) + { + // Is package still alive ? + if (pack.expired()) + { + bbtkDebugMessage("package",2,"--- Package::Release('"<< + packname + <<"') : package expired during release : bailing out"<mDynamicLibraryHandler ? 1:0; + long ndesc = pack.lock()->GetBlackBoxMap().size(); + long nrefs = pack.use_count(); + + bbtkDebugMessage("package",1," ... Package still alive (" + <mName; + std::string dname = descr.lock()->GetTypeName(); + bbtkDebugMessage("package",3,"==> Package::ReleaseBlackBoxDescriptor('"<< + packname<<"','"<mDynamicLibraryHandler ? 1:0; + long ndesc = pack.lock()->GetBlackBoxMap().size(); + long nrefs = pack.use_count(); + + bbtkDebugMessage("package",3," "<second; + long dyn = pack.lock()->mDynamicLibraryHandler ? 1:0; + long ndesc = pack.lock()->GetBlackBoxMap().size(); + long nrefs = pack.use_count(); + + bbtkDebugMessage("package",3," ... Package still alive (" + < Package::OpenDynamicLibrary(" + < Package::CreateFromDynamicLibrary(" + <mDynamicLibraryHandler = h; + p->mDLDeletePackageFunction = df; + + std::string separator = + ConfigurationFile::GetInstance().Get_file_separator (); + //BBTK_STRINGIFY_SYMBOL(BBTK_DOC_REL_PATH) + std::string docreldoc = + separator + "bbdoc" + separator + pkgname + separator + "index.html"; + std::string reldoc = + ".." + separator + ".." + docreldoc; + std::string doc = path + separator + ".." + separator + + BBTK_STRINGIFY_SYMBOL(BBTK_DOC_REL_PATH) + + docreldoc; + + p->SetDocURL(doc); + p->SetDocRelativeURL(reldoc); + + bbtkDebugMessage("package",1,"<== Package::CreateFromDynamicLibrary(" + <mDynamicLibraryHandler)) + return; + + + std::string packname = pack.lock()->GetName(); + bbtkDebugMessage("package",3,"==> Package::UnLoadDynamicLibrary('" + <GetBlackBoxMap().empty()) + { + + bbtkDebugMessage("package",3," Package not empty ... abort" + < Package::UnLoadReleasedDynamicallyLoadedPackages()"<::iterator i; + for (i=mReleasedDynamicallyLoadedPackages.begin(); + i!=mReleasedDynamicallyLoadedPackages.end(); + ++i) + { + if (!i->expired()) UnLoad(*i); + } + bbtkDebugMessage("package",2,"<== Package::UnLoadReleasedDynamicallyLoadedPackages()"<GetName(); + bbtkDebugMessage("package",2,"==> Package::UnLoad("<mDynamicLibraryHandler; + + // deletes the package + p->mDLDeletePackageFunction(); + + // closes the dl handler +#if defined(__GNUC__) + dlclose(h); +#elif defined(_WIN32) + FreeLibrary(h); +#endif + + bbtkDebugMessage("package",2," ... dynamic library unloaded"< with name - BlackBox* Package::NewBlackBox(const std::string& type, - const std::string& name) const + BlackBox::Pointer Package::NewBlackBox(const std::string& type, + const std::string& name) const { bbtkDebugMessageInc("Kernel",8,"Package<"<::NewBlackBox(\""<second->CreateInstance(name); + BlackBox::Pointer bb =i->second->NewBlackBox(name); bbtkDebugDecTab("Kernel",8); return bb; @@ -121,7 +657,7 @@ namespace bbtk //========================================================================== /// Creates an instance of an adaptor of input type and /// output type with name - BlackBox* Package::NewAdaptor(const DataInfo& typein, + BlackBox::Pointer Package::NewAdaptor(const DataInfo& typein, const DataInfo& typeout, const std::string& name) const { @@ -137,9 +673,9 @@ namespace bbtk if (i == mAdaptorMap.end()) { bbtkDebugDecTab("Kernel",8); - return 0; + return BlackBox::Pointer(); } - BlackBox* bb =i->second->CreateInstance(name); + BlackBox::Pointer bb =i->second.lock()->NewBlackBox(name); bbtkDebugDecTab("Kernel",8); return bb; @@ -149,7 +685,7 @@ namespace bbtk //========================================================================== /// Creates an instance of an adaptor of input type and /// output type with name - BlackBox* Package::NewWidgetAdaptor(const DataInfo& typein, + BlackBox::Pointer Package::NewWidgetAdaptor(const DataInfo& typein, const DataInfo& typeout, const std::string& name) const { @@ -165,9 +701,9 @@ namespace bbtk if (i == mAdaptorMap.end()) { bbtkDebugDecTab("Kernel",8); - return 0; + return BlackBox::Pointer(); } - BlackBox* bb =i->second->CreateInstance(name); + BlackBox::Pointer bb =i->second.lock()->NewBlackBox(name); bbtkDebugDecTab("Kernel",8); return bb; @@ -190,7 +726,9 @@ namespace bbtk <second->GetTypeName(); + adaptor = i->second.lock()->GetTypeName(); bbtkDebugDecTab("Kernel",8); return true; @@ -230,7 +768,7 @@ namespace bbtk bbtkDebugDecTab("Kernel",8); return false; } - adaptor = i->second->GetTypeName(); + adaptor = i->second.lock()->GetTypeName(); bbtkDebugDecTab("Kernel",8); return true; @@ -240,7 +778,7 @@ namespace bbtk //========================================================================== /// Registers a black box descriptor in the package - bool Package::RegisterBlackBox(BlackBoxDescriptor* d) + bool Package::RegisterBlackBox(BlackBoxDescriptor::Pointer d) { bbtkDebugMessageInc("Kernel",8,"Package<"<::RegisterBlackBox(\""<GetTypeName()<<"\")"<GetTypeName()] = d; - d->Reference(); - d->SetPackage(this); + // d->Reference(); + d->SetPackage(GetThisPointer()); // If it is a default adaptor, also register it in the adaptors map - if ( (d->GetKind() == BlackBoxDescriptor::DEFAULT_ADAPTOR) || - (d->GetKind() == BlackBoxDescriptor::DEFAULT_WIDGET_ADAPTOR) ) + if ( d->GetKind() == BlackBoxDescriptor::DEFAULT_ADAPTOR ) { bbtkDebugMessage("Kernel",8,"Package<"<::RegisterBlackBox(\""<GetTypeName()<<"\") : The box is an adaptor, inserting it in adaptors map ..."<GetInputDescriptor("In")->GetTypeInfo(); TypeInfo typeout = d->GetOutputDescriptor("Out")->GetTypeInfo(); DataInfo infoin(typein,d->GetInputDescriptor("In")->GetNature()); DataInfo infoout(typeout,d->GetOutputDescriptor("Out")->GetNature()); - bbtkDebugMessage("Kernel",9,"Adaptor "< : trying to register black box <" <GetTypeName() <<"> as default adaptor but there is already a default adaptor registered (<" - <second->GetTypeName()<<">)"); + <second.lock()->GetTypeName()<<">)"); + } + } + } + // If it is a default adaptor, also register it in the adaptors map + else if ( d->GetKind() == BlackBoxDescriptor::DEFAULT_WIDGET_ADAPTOR) + { + bbtkDebugMessage("Kernel",8,"Package<"<::RegisterBlackBox(\""<GetTypeName()<<"\") : The box is a widget adaptor, inserting it in adaptors map ..."<GetOutputDescriptor("Out")->GetTypeInfo(); + DataInfo infoin(typeid(void),""); + DataInfo infoout(typeout,d->GetOutputDescriptor("Out")->GetNature()); + AdaptorKey key(infoin,infoout,d->GetKind()); + + AdaptorMapType::const_iterator i; + i = mAdaptorMap.find(key); + if (i == mAdaptorMap.end()) + { + mAdaptorMap[key] = d; + } + // If already an adaptor registered : error + else + { + if (i->second.lock()->GetTypeName() != d->GetTypeName()) + { + bbtkError("Package <"< : trying to register black box <" + <GetTypeName() + <<"> as default widget adaptor but there is already a default adaptor registered (<" + <second.lock()->GetTypeName()<<">)"); } } } + bbtkDebugDecTab("Kernel",8); return true; @@ -312,34 +878,6 @@ namespace bbtk } //=================================================================== - //========================================================================== - /// UnRegisters a black box descriptor from the package - void Package::UnRegisterBlackBox(const std::string& name) - { - bbtkDebugMessageInc("Kernel",8,"Package<"<::UnRegisterBlackBox(\""< does not contains the black box <"<"); - } - mBlackBoxMap.erase(i); - - // Is it also in the adaptors map ? - /* - AdaptorMapType::iterator j = mAdaptorMap.find(name); - if (j != mAdaptorMap.end()) - { - mAdaptorMap.erase(j); - } - */ - - i->second->UnReference(); - - bbtkDebugDecTab("Kernel",8); - } - //========================================================================== //========================================================================== /// Changes the name of a black box type @@ -362,23 +900,6 @@ namespace bbtk } //========================================================================== - /* - - //========================================================================== - /// Registers an adaptor descriptor in the package - bool Package::RegisterAdaptor(BlackBoxDescriptor* d) - { - bbtkDebugMessage("Kernel",8,"Package<"<::RegisterAdaptor(\""<GetTypeName()<<"\")"<GetInputDescriptor("In")->GetTypeInfo(); - TypeInfo typeout = d->GetOutputDescriptor("Out")->GetTypeInfo(); - AdaptorKey key(typein,typeout); - - mAdaptorMap[key] = d; - return true; - } - //========================================================================== - */ //========================================================================== @@ -641,7 +1162,7 @@ namespace bbtk s << "\n"; s << "\n"; + << bbtk::GetVersion() << "\n"; s << "
Version : " << GetVersion() << "
bbtk Version : " - << GetBBTKVersion() << "
\n"; } @@ -770,5 +1291,61 @@ namespace bbtk bbtkDebugDecTab("Kernel",9); } //========================================================================== + + //========================================================================== + std::string Package::GetObjectName() const + { + return std::string("Package '")+mName+std::string("'"); + } + //========================================================================== + + //========================================================================== + std::string Package::GetObjectInfo() const + { + std::stringstream i; + i << " - "<second->GetObjectRecursiveSize(); + } + return s; + } + //========================================================================== + + //========================================================================== + std::set + Package::mReleasedDynamicallyLoadedPackages; + //========================================================================== } diff --git a/kernel/src/bbtkPackage.h b/kernel/src/bbtkPackage.h index 4c0b705..089dbee 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/09 11:16:57 $ - Version: $Revision: 1.7 $ + Date: $Date: 2008/04/18 12:59:15 $ + Version: $Revision: 1.8 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See doc/license.txt or @@ -28,19 +28,78 @@ #define __bbtkPackage_h__ #include "bbtkBlackBox.h" +#include "bbtkDynamicLibraryHandling.h" namespace bbtk { - class BBTK_EXPORT Package + class Factory; + BBTK_FORWARD_DECLARE_POINTER(Factory); + + class BBTK_EXPORT Package : public Object { + BBTK_OBJECT_INTERFACE(Package); + typedef Object Superclass; public: - Package(const std::string& name, - const std::string& author, - const std::string& description, - const std::string& version, - const std::string& BBTKVersion); - ~Package(); + /// Creates a new package + static Pointer New(const std::string& name, + const std::string& author, + const std::string& description, + const std::string& version, + const std::string& BBTKVersion); + /// Creates a package from a dynamic library + static Pointer CreateFromDynamicLibrary(const std::string& libname, + const std::string& pkgname, + const std::string& path); + + /// UnLoads the package dynamic library + /// (if any and if the package is released) + /// If doit == false then does not do it but just + /// put the package in the list of ReleasedDynamicallyLoadedPackages. + /// This is because we cannot close the dl from inside a + /// package member method or the program crashes. + /// The actual dl close must be done by an external user + /// calling UnLoadReleasedDynamicallyLoadedPackages + static void UnLoadDynamicLibrary(Package::WeakPointer p, bool doit = true); + + /// UnLoads released packages that were loaded dynamically + /// see UnLoadDynamicLibrary and ReleaseBlackBoxDescriptor + static void UnLoadReleasedDynamicallyLoadedPackages(); + + /// "Releases" the package + /// Signals the package that it can free its descriptors + /// if they are no more used and frees and unloads the package + /// if it is no more used (released) + /// Note : Any non-weak pointer on the package must have been freed + static void Release(Package::WeakPointer p); + /// "Releases" a black box descriptor + /// Signals the package that it can free the given descriptor + /// if it is no more used and frees and put it the the + /// ReleasedDynamicallyLoadedPackages if it is dyn loaded + /// and no more used (released) + /// Note : Any non-weak pointer on the package must have been freed + static void ReleaseBlackBoxDescriptor(Package::WeakPointer p, + BlackBoxDescriptor::WeakPointer d); + + + typedef Package::Pointer (*DLGetPackageFunction)(); + typedef void (*DLDeletePackageFunction)(); + typedef const std::string& (*DLGetPackageBBTKVersionFunction)(); + + /// Opens a dynamic library which contains a bbtk package + /// Returns the handler + /// Load the package management symbols from the lib + /// returns false if a problem occured hence can be used + /// 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 + static DynamicLibraryHandler OpenDynamicLibrary + ( const std::string& dynamic_library_path, + const std::string& package_name, + DLGetPackageFunction&, + DLDeletePackageFunction&); + + /// Returns the name of the package const std::string& GetName() const { return mName; } @@ -56,20 +115,17 @@ namespace bbtk /// Returns the version of the package const std::string& GetVersion() const { return mVersion; } - /// Returns the version of bbtk used to build the package - const std::string& GetBBTKVersion() const { return mBBTKVersion; } - bool ContainsBlackBox(const std::string& boxname) const; - BlackBox* NewBlackBox(const std::string& type, + BlackBox::Pointer NewBlackBox(const std::string& type, const std::string& name) const; - BlackBox* NewAdaptor(const DataInfo& typein, + BlackBox::Pointer NewAdaptor(const DataInfo& typein, const DataInfo& typeout, const std::string& name) const; - BlackBox* NewWidgetAdaptor(const DataInfo& typein, + BlackBox::Pointer NewWidgetAdaptor(const DataInfo& typein, const DataInfo& typeout, const std::string& name) const; bool FindAdaptor(const DataInfo& typein, @@ -79,10 +135,7 @@ namespace bbtk const DataInfo& typeout, std::string& adaptor) const; - bool RegisterBlackBox(BlackBoxDescriptor*); - void UnRegisterBlackBox(const std::string& name); - - // bool RegisterAdaptor(BlackBoxDescriptor*); + bool RegisterBlackBox(BlackBoxDescriptor::Pointer); void PrintBlackBoxes(bool description = false, bool adaptors = false) const; @@ -111,7 +164,8 @@ namespace bbtk void ChangeBlackBoxName( const std::string& oldname, const std::string& newname ); /// The type of map of descriptors - typedef std::map< std::string, BlackBoxDescriptor*> BlackBoxMapType; + typedef std::map< std::string, BlackBoxDescriptor::Pointer> + BlackBoxMapType; const BlackBoxMapType& GetBlackBoxMap() const { return mBlackBoxMap; } BlackBoxMapType& GetBlackBoxMap() { return mBlackBoxMap; } @@ -144,26 +198,47 @@ namespace bbtk }; /// The type of map of adaptor descriptors - typedef std::map< AdaptorKey, BlackBoxDescriptor*> AdaptorMapType; + typedef std::map< AdaptorKey, BlackBoxDescriptor::WeakPointer> AdaptorMapType; const AdaptorMapType& GetAdaptorMap() const { return mAdaptorMap; } - + // Factories management /// Adds the factory to the set of factories which use the package - void AddFactory(Factory* f) { mFactorySet.insert(f); } + void AddFactory(FactoryPointer f) { mFactorySet.insert(f); } /// Removes the factory from the set of factories which use the package - void RemoveFactory(Factory* f) { mFactorySet.erase(f); } + void RemoveFactory(FactoryPointer f) { mFactorySet.erase(f); } + + typedef std::set FactorySet; /// Gets the set of factories which use the package - std::set& GetFactorySet() { return mFactorySet; } + FactorySet& GetFactorySet() { return mFactorySet; } /// Gets the set of factories which use the package (const) - const std::set& GetFactorySet() const { return mFactorySet; } + const FactorySet& GetFactorySet() const { return mFactorySet; } void CheckBoxes() const; private: + /// Default ctor is private : use the static New method + // Package() {} + /// A Package cannot be copy constructed + // Package(const Package&) {} + /// Ctor is private : use the static New method + Package(const std::string& name, + const std::string& author, + const std::string& description, + const std::string& version, + const std::string& BBTKVersion); + /// Does unload a package (no test) + static void UnLoad(Package::WeakPointer p); + + /// The dynamic library handler of the package if it was loaded from a dl + DynamicLibraryHandler mDynamicLibraryHandler; + /// The pointer on the delete function of the package + /// in case it was loaded from a dynamic library + DLDeletePackageFunction mDLDeletePackageFunction; + /// The name of the package std::string mName; @@ -175,8 +250,6 @@ namespace bbtk std::string mDescription; /// The version of the package std::string mVersion; - /// The version of the library bbtk used to build the package - std::string mBBTKVersion; /// URL of the documentation of the Package (absolute path) std::string mDocURL; /// URL of the documentation of the Package @@ -186,18 +259,18 @@ namespace bbtk /// The map of black boxes descriptors BlackBoxMapType mBlackBoxMap; - - public: - - - private: /// The map of adaptors descriptors AdaptorMapType mAdaptorMap; /// The set of factories which contain the package - std::set mFactorySet; - + FactorySet mFactorySet; + + /// The set of released dynamically loaded packages + /// to be unloaded explicitely calling + /// UnLoadReleasedDynamicallyLoadedPackages + static std::set + mReleasedDynamicallyLoadedPackages; }; // EO class Package //==================================================================== @@ -211,13 +284,23 @@ namespace bbtk #endif // defined(_WIN32) //==================================================================== +#define BBTK_GET_PACKAGE_FUNCTION_NAME GetPackage +#define BBTK_DEL_PACKAGE_FUNCTION_NAME DeletePackage +#define BBTK_GET_PACKAGE_BBTK_VERSION_FUNCTION_NAME GetPackageBBTKVersion + + + //==================================================================== #define BBTK_DECLARE_PACKAGE(NAME) \ extern "C" \ { \ - bbtk::Package*& NAME ## GetPackagePointer(); \ - BBTK_PACKAGE_EXPORT void BBTK_CDECL NAME ## DeletePackage(); \ - BBTK_PACKAGE_EXPORT bbtk::Package* BBTK_CDECL NAME ## GetPackage(); \ + bbtk::Package::Pointer& NAME ## GetPackagePointer(); \ + BBTK_PACKAGE_EXPORT \ + void BBTK_CDECL NAME ## DeletePackage (); \ + BBTK_PACKAGE_EXPORT bbtk::Package::Pointer \ + BBTK_CDECL NAME ## GetPackage (); \ + BBTK_PACKAGE_EXPORT const std::string& \ + BBTK_CDECL NAME ## GetPackageBBTKVersion (); \ } //==================================================================== @@ -225,64 +308,54 @@ namespace bbtk #define BBTK_IMPLEMENT_PACKAGE(NAME,AUTHOR,DESCRIPTION,VERSION) \ extern "C" \ { \ - bbtk::Package*& NAME ## GetPackagePointer() \ + bbtk::Package::Pointer& NAME ## GetPackagePointer() \ { \ - static bbtk::Package* u = 0; \ + static bbtk::Package::Pointer u; \ return u; \ } \ - BBTK_PACKAGE_EXPORT void BBTK_CDECL NAME ## DeletePackage() \ + BBTK_PACKAGE_EXPORT \ + void BBTK_CDECL NAME ## DeletePackage () \ { \ - if (NAME ## GetPackagePointer()) \ - delete NAME ## GetPackagePointer(); \ - NAME ## GetPackagePointer() = 0; \ + NAME ## GetPackagePointer().reset(); \ } \ - BBTK_PACKAGE_EXPORT bbtk::Package* BBTK_CDECL NAME ## GetPackage() \ + BBTK_PACKAGE_EXPORT \ + bbtk::Package::Pointer \ + BBTK_CDECL NAME ## GetPackage() \ { \ if (!NAME ## GetPackagePointer()) \ NAME ## GetPackagePointer() = \ - new bbtk::Package(#NAME, \ - AUTHOR, \ - DESCRIPTION, \ - VERSION, \ - BBTK_STRINGIFY_SYMBOL(BBTK_VERSION) \ - ); \ + bbtk::Package::New(#NAME, \ + AUTHOR, \ + DESCRIPTION, \ + VERSION, \ + BBTK_STRINGIFY_SYMBOL(BBTK_VERSION) \ + ); \ return NAME ## GetPackagePointer(); \ } \ + BBTK_PACKAGE_EXPORT const std::string& \ + BBTK_CDECL NAME ## GetPackageBBTKVersion () \ + { return bbtk::GetVersion(); } \ } //==================================================================== //==================================================================== #define BBTK_ADD_BLACK_BOX_TO_PACKAGE(NAME,CLASS) \ - bool bbDummy##NAME##CLASS = NAME ## GetPackage()->RegisterBlackBox(CLASS::bbDescriptor()); + bool bbDummy##NAME##CLASS = NAME ## GetPackage () \ + ->RegisterBlackBox(CLASS ## Descriptor::Instance()); //==================================================================== -//==================================================================== + //==================================================================== #define BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(NAME,CLASS,TEMPLATE_PARAM) \ - bool bbDummy##NAME##CLASS##TEMPLATE_PARAM = NAME ## GetPackage()->RegisterBlackBox(CLASS::bbDescriptor()); + bool bbDummy##NAME##CLASS##TEMPLATE_PARAM = NAME ## GetPackage () \ + ->RegisterBlackBox(CLASS ## Descriptor ::Instance()); + //==================================================================== + //==================================================================== - -//==================================================================== #define BBTK_ADD_TEMPLATE2_BLACK_BOX_TO_PACKAGE(NAME,CLASS,T1,T2) \ - bool bbDummy##NAME##CLASS##T1##T2 = NAME ## GetPackage()->RegisterBlackBox(CLASS::bbDescriptor()); + bool bbDummy##NAME##CLASS##T1##T2 = NAME ## GetPackage () \ + ->RegisterBlackBox(CLASS ## Descriptor ::Instance()); //==================================================================== -//==================================================================== -//#define BBTK_ADD_ADAPTOR_TO_PACKAGE(NAME,CLASS) \ -// bool bbDummy##NAME##CLASS = NAME ## GetPackage()->RegisterBlackBox(CLASS::bbDescriptor()); \ -// bool bbDummyAdaptor##NAME##CLASS = NAME ## GetPackage()->RegisterAdaptor(CLASS::bbDescriptor()); -//==================================================================== - -//==================================================================== -//#define BBTK_ADD_TEMPLATE_ADAPTOR_TO_PACKAGE(NAME,CLASS,TEMPLATE_PARAM) \ -// bool bbDummy##NAME##CLASS##TEMPLATE_PARAM = NAME ## GetPackage()->RegisterBlackBox(CLASS::bbDescriptor()); \ -// bool bbDummyAdaptor##NAME##CLASS##TEMPLATE_PARAM = NAME ## GetPackage()->RegisterAdaptor(CLASS::bbDescriptor()); -//==================================================================== - -//==================================================================== -//#define BBTK_ADD_TEMPLATE2_ADAPTOR_TO_PACKAGE(NAME,CLASS,T1,T2) \ -// bool bbDummy##NAME##CLASS##T1##T2 = NAME ## GetPackage()->RegisterBlackBox(CLASS::bbDescriptor()); \ -// bool bbDummyAdaptor##NAME##CLASS##T1##T2 = NAME ## GetPackage()->RegisterAdaptor(CLASS::bbDescriptor()); - //==================================================================== }// namespace bbtk diff --git a/kernel/src/bbtkTranscriptor.cxx b/kernel/src/bbtkTranscriptor.cxx index cc666b7..41ca87d 100644 --- a/kernel/src/bbtkTranscriptor.cxx +++ b/kernel/src/bbtkTranscriptor.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkTranscriptor.cxx,v $ $ Language: C++ - Date: $Date: 2008/04/08 06:59:30 $ - Version: $Revision: 1.10 $ + Date: $Date: 2008/04/18 12:59:16 $ + Version: $Revision: 1.11 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -36,10 +36,15 @@ namespace bbtk { + Transcriptor::Pointer Transcriptor::New(const std::string& filename) + { + return MakePointer(new Transcriptor(filename)); + } + /** * */ - Transcriptor::Transcriptor(std::string filename) + Transcriptor::Transcriptor(const std::string& filename) : mNoExecMode(false), mDialogMode(NoDialog) @@ -314,6 +319,44 @@ void Transcriptor::ShowRelations(const std::string &nameblackbox, const std::str m_Fp << " e->UnLoadPackage(\"" <& m) { mInputs = m; } @@ -178,6 +175,8 @@ namespace bbtk protected: private: + /// Constructor + Transcriptor(const std::string& filename); /// The input values of the Root ComplexBlackBox std::map mInputs; diff --git a/kernel/src/bbtkVirtualExec.cxx b/kernel/src/bbtkVirtualExec.cxx new file mode 100644 index 0000000..9b83dfc --- /dev/null +++ b/kernel/src/bbtkVirtualExec.cxx @@ -0,0 +1,22 @@ +#include "bbtkVirtualExec.h" +#include "bbtkInterpreter.h" + +namespace bbtk +{ + VirtualExec::VirtualExec() + : mInterpreter() + { + } + + VirtualExec::~VirtualExec() + { + } + + Interpreter::Pointer VirtualExec::GetInterpreter() + { + return mInterpreter.lock(); + } + + +} + diff --git a/kernel/src/bbtkVirtualExec.h b/kernel/src/bbtkVirtualExec.h index e736f9e..cc2d81b 100644 --- a/kernel/src/bbtkVirtualExec.h +++ b/kernel/src/bbtkVirtualExec.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkVirtualExec.h,v $ $ Language: C++ - Date: $Date: 2008/04/08 06:59:30 $ - Version: $Revision: 1.11 $ + Date: $Date: 2008/04/18 12:59:16 $ + Version: $Revision: 1.12 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -28,19 +28,18 @@ #define __bbtkVirtualExec_h__ #include "bbtkSystem.h" -//#include "bbtkComplexBlackBox.h" +#include "bbtkComplexBlackBoxDescriptor.h" #include "bbtkFactory.h" -//#include -//#include namespace bbtk { class Interpreter; + BBTK_FORWARD_DECLARE_POINTER(Interpreter); - class /*BBTK_EXPORT*/ VirtualExec // All methods are pure virtual + class /*BBTK_EXPORT*/ VirtualExec : public Object { - + BBTK_ABSTRACT_OBJECT_INTERFACE(VirtualExec); public: typedef enum { @@ -50,21 +49,18 @@ namespace bbtk } DialogModeType; - VirtualExec() : mInterpreter(0) {} - - virtual ~VirtualExec() {} /// Sets the interpreter who uses it - void SetInterpreter(Interpreter* i) { mInterpreter = i; } + void SetInterpreter(InterpreterPointer i) { mInterpreter = i; } /// Gets the interpreter who uses it - Interpreter* GetInterpreter() { return mInterpreter; } + InterpreterPointer GetInterpreter(); // { return mInterpreter.lock(); } /// Gets the interpreter who uses it (const) - const Interpreter* GetInterpreter() const { return mInterpreter; } + // const Interpreter::Pointer GetInterpreter() const { return mInterpreter; } /// Gets the factory used by the executer - virtual Factory* GetFactory() { return 0; } + virtual Factory::Pointer GetFactory() { return Factory::Pointer(); } /// Gets the factory used by the executer (const) - virtual const Factory* GetFactory() const { return 0; } + // virtual const Factory* GetFactory() const { return 0; } /// Sets the inputs of the workspace : virtual void SetInputs(const std::map& m) = 0; @@ -185,7 +181,9 @@ namespace bbtk /// Prints the string ... MORE : TO EXPLAIN virtual void Print(const std::string & message) = 0; - + ComplexBlackBoxDescriptor::Pointer GetWorkspace() + { return ComplexBlackBoxDescriptor::Pointer(); } + // static const std::string& GetObjectDescription() = 0; // { static std::string s("VirtualExec"); return s; } protected: @@ -193,57 +191,8 @@ namespace bbtk private: /// The interpreter which uses it (0 if none) - Interpreter* mInterpreter; - /* - /// Gets the current working black box - virtual ComplexBlackBoxDescriptor* Current() = 0; - - /// Returns true when we are inside a define/endefine block - // virtual bool InDefinitionBlock() = 0; - - //================================================================== - // ATTRIBUTES - - /// The factory used - // Factory* mFactory; - - /// The Root Package - Package* mPackage; - - /// The root ComplexBlackBox, in which operations are done when outside a define/endefine block - /// Its name in bbi is 'workspace' - ComplexBlackBoxDescriptor* mRoot; - - /// Struct that stores info on user defined complex black boxes - struct CBBDefinition - { - ComplexBlackBoxDescriptor* box; - std::string package; - CBBDefinition(ComplexBlackBoxDescriptor* d, const std::string& p ) - : box(d), package(p) {} - }; - - /// The stack of current working ComplexBlackBox - /// (is a stack for nested definitions) - /// only contains the root when outside a define/endefine block - std::deque mOpenDefinition; - - /// The stack of current working package - /// (is a stack for nested definitions) - std::deque mOpenPackage; - - /// flag which is true when we are inside a Define/EndDefine block - // bool mDefineFlag; - - /// The input values of the Root ComplexBlackBox - std::map mInputs; - - /// no exec mode flag - bool mNoExecMode; + InterpreterWeakPointer mInterpreter; - /// Dialog mode - DialogModeType mDialogMode; - */ }; } #endif diff --git a/kernel/src/bbtkWxBlackBox.cxx b/kernel/src/bbtkWxBlackBox.cxx index 6a452f3..2413e4a 100644 --- a/kernel/src/bbtkWxBlackBox.cxx +++ b/kernel/src/bbtkWxBlackBox.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkWxBlackBox.cxx,v $ Language: C++ - Date: $Date: 2008/04/08 06:59:30 $ - Version: $Revision: 1.11 $ + Date: $Date: 2008/04/18 12:59:16 $ + Version: $Revision: 1.12 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -48,7 +48,7 @@ namespace bbtk //========================================================================= - WxBlackBoxWindow::WxBlackBoxWindow(WxBlackBox* box) + WxBlackBoxWindow::WxBlackBoxWindow(WxBlackBox::Pointer box) : mBox(box), mShown(false) { bbtkDebugMessage("Wx",9,"WxBlackBoxWindow::WxBlackBoxWindow("<< @@ -109,7 +109,7 @@ namespace bbtk //========================================================================= //========================================================================= - WxBlackBoxDialog::WxBlackBoxDialog(WxBlackBox* box, + WxBlackBoxDialog::WxBlackBoxDialog(WxBlackBox::Pointer box, wxWindow *parent, wxString title, wxSize size) @@ -177,7 +177,7 @@ namespace bbtk //========================================================================= //========================================================================= - WxBlackBoxFrame::WxBlackBoxFrame(WxBlackBox* box, + WxBlackBoxFrame::WxBlackBoxFrame(WxBlackBox::Pointer box, wxWindow *parent, wxString title, wxSize size) @@ -324,8 +324,9 @@ namespace bbtk //========================================================================= //========================================================================= - WxBlackBoxWidgetEventHandler::WxBlackBoxWidgetEventHandler( WxBlackBox* box, - wxWindow *widget ) + WxBlackBoxWidgetEventHandler:: + WxBlackBoxWidgetEventHandler( WxBlackBox::Pointer box, + wxWindow *widget ) : mBox(box), mWindow(widget) @@ -422,7 +423,7 @@ namespace bbtk //========================================================================= //========================================================================= //========================================================================= - BBTK_USER_BLACK_BOX_IMPLEMENTATION(WxBlackBox,AtomicBlackBox); + BBTK_BLACK_BOX_IMPLEMENTATION(WxBlackBox,AtomicBlackBox); //========================================================================= //========================================================================= @@ -513,7 +514,7 @@ namespace bbtk "-> Output 'Widget' connected : transfering execution to parent" <second->GetConnectionVector().front() + i->second->GetConnectionVector().front().lock() ->GetBlackBoxTo()->bbExecute(force); } @@ -533,7 +534,7 @@ namespace bbtk //========================================================================= /// Main processing method of the box. - IOStatus WxBlackBox::bbBackwardUpdate( Connection* caller ) + IOStatus WxBlackBox::bbBackwardUpdate( Connection::Pointer caller ) { bbtkDebugMessageInc("Process",1, "=> WxBlackBox::bbBackwardUpdate(" @@ -564,7 +565,7 @@ namespace bbtk "-> Output 'Widget' connected : transfering execution to parent" <second->GetConnectionVector().front() + i->second->GetConnectionVector().front().lock() ->GetBlackBoxTo()->bbExecute(false); done = true; } @@ -609,7 +610,8 @@ namespace bbtk bbtkDebugMessage("Process",3, "-> No widget event handler : creating one" <(), + bbGetOutputWidget()); } else if ( ! bbGetWidgetEventHandler()->IsHandlerOf ( bbGetOutputWidget() ) ) @@ -618,7 +620,8 @@ namespace bbtk "-> Obsolete widget event handler : re-creating one" <(), + bbGetOutputWidget()); } // Sets the name of the wxWindow to the input WinTitle bbGetOutputWidget()->SetName(bbtk::std2wx(bbGetInputWinTitle())); @@ -661,7 +664,7 @@ namespace bbtk bbtkDebugMessage("Process",2, " Input WinDialog set to true : creating a Dialog" <(), bbGetWxParent(), std2wx( bbGetInputWinTitle() + " - bbtk (c) CREATIS LRMN"), wxSize( bbGetInputWinWidth() , bbGetInputWinHeight() ) ); @@ -672,7 +675,7 @@ namespace bbtk bbtkDebugMessage("Process",2, " Input WinDialog set to false : creating a Frame" <(), bbGetWxParent(), std2wx( bbGetInputWinTitle() + " - bbtk (c) CREATIS LRMN"), wxSize( bbGetInputWinWidth() , bbGetInputWinHeight() ) ); @@ -730,8 +733,9 @@ namespace bbtk = bbGetOutputConnectorMap().find("Widget"); if ( i->second->GetConnectionVector().size() != 0 ) { - return ((WxBlackBox*)i->second->GetConnectionVector().front() - ->GetBlackBoxTo())->bbGetContainingWindow(); + return boost::static_pointer_cast + (i->second->GetConnectionVector().front().lock()->GetBlackBoxTo()) + ->bbGetContainingWindow(); } return 0; } diff --git a/kernel/src/bbtkWxBlackBox.h b/kernel/src/bbtkWxBlackBox.h index d259a87..92d711d 100644 --- a/kernel/src/bbtkWxBlackBox.h +++ b/kernel/src/bbtkWxBlackBox.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkWxBlackBox.h,v $ Language: C++ - Date: $Date: 2008/04/08 06:59:30 $ - Version: $Revision: 1.10 $ + Date: $Date: 2008/04/18 12:59:16 $ + Version: $Revision: 1.11 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -61,8 +61,8 @@ namespace bbtk //================================================================== /// Widget black boxes class BBTK_EXPORT WxBlackBox : public bbtk::AtomicBlackBox - { - BBTK_USER_BLACK_BOX_INTERFACE(WxBlackBox,bbtk::AtomicBlackBox); + { + BBTK_BLACK_BOX_INTERFACE(WxBlackBox,bbtk::AtomicBlackBox); // BBTK_DECLARE_INPUT(WinParent,WxParentToChildData*); BBTK_DECLARE_INPUT(WinTitle,std::string); BBTK_DECLARE_INPUT(WinWidth,int); @@ -131,7 +131,7 @@ namespace bbtk //================================================================== /// Main processing method of the box. - virtual IOStatus bbBackwardUpdate( Connection* caller ); + virtual IOStatus bbBackwardUpdate( Connection::Pointer caller ); //================================================================== @@ -237,16 +237,16 @@ namespace bbtk class BBTK_EXPORT WxBlackBoxWindow //: public wxWindow { public: - WxBlackBoxWindow(WxBlackBox* box); + WxBlackBoxWindow(WxBlackBox::Pointer box); virtual ~WxBlackBoxWindow(); virtual void bbShow(); virtual void bbHide(); bool bbIsShown() { return mShown; } - virtual WxBlackBox* bbGetBlackBox() { return mBox; } + virtual WxBlackBox::Pointer bbGetBlackBox() { return mBox; } virtual wxDialog* bbGetDialog() { return 0; } virtual wxFrame* bbGetFrame() { return 0; } private: - WxBlackBox* mBox; + WxBlackBox::Pointer mBox; bool mShown; }; //================================================================== @@ -256,7 +256,7 @@ namespace bbtk class BBTK_EXPORT WxBlackBoxDialog : public wxDialog, public WxBlackBoxWindow { public: - WxBlackBoxDialog(WxBlackBox* box, + WxBlackBoxDialog(WxBlackBox::Pointer box, wxWindow *parent, wxString title, wxSize size); ~WxBlackBoxDialog(); void bbShow(); @@ -270,7 +270,7 @@ namespace bbtk class BBTK_EXPORT WxBlackBoxFrame : public wxFrame, public WxBlackBoxWindow { public: - WxBlackBoxFrame(WxBlackBox* box, + WxBlackBoxFrame(WxBlackBox::Pointer box, wxWindow *parent, wxString title, wxSize size); ~WxBlackBoxFrame(); void bbShow(); @@ -280,33 +280,6 @@ namespace bbtk //================================================================== - /* - //================================================================= - /// Class from which a user defined widget associated to a WxBlackBox - /// should inherit - class BBTK_EXPORT WxBlackBoxWidget - { - public: - /// Ctor with the WxBlackBox which created it - WxBlackBoxWidget( WxBlackBox* box); - /// Dtor - virtual ~WxBlackBoxWidget(); - - /// Returns the WxBlackBox which created it - WxBlackBox* GetBlackBox() { return mBox; } - /// Returns the WxBlackBox which created it (const) - const WxBlackBox* GetBlackBox() const { return mBox; } - - /// Returns the wxWindow associated to the widget - virtual wxWindow* GetWxWindow() { return 0; } - - virtual bool IsDead() { return false; } - - private: - WxBlackBox* mBox; - }; - //================================================================= - */ //================================================================= // Handles the destroy events of a widget associated to a WxBlackBox @@ -315,7 +288,7 @@ namespace bbtk { public: /// Ctor with the box and widget - WxBlackBoxWidgetEventHandler( WxBlackBox* box, wxWindow *widget ); + WxBlackBoxWidgetEventHandler( WxBlackBox::Pointer box, wxWindow *widget ); /// Dtor ~WxBlackBoxWidgetEventHandler(); /// Returns true iff is the handler for that window @@ -327,37 +300,12 @@ namespace bbtk //bool IsDead() { return mDead; } private: - WxBlackBox* mBox; + WxBlackBox::Pointer mBox; wxWindow* mWindow; //bool mDead; }; //================================================================= - /* - //================================================================= - /// A WxBlackBoxWidget which is a wxPanel also - class BBTK_EXPORT WxBlackBoxWidgetPanel : - public wxPanel, - public WxBlackBoxWidget -// public WxBlackBoxWidget, -// public wxPanel - { - public: - /// Ctor with the parent and the WxBlackBox which created it - WxBlackBoxWidgetPanel(WxBlackBox* box, wxWindow *parent) - : - wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL), - WxBlackBoxWidget(box) - {} - - /// Returns the top panel of the widget - wxWindow* GetWxWindow() { return (wxWindow*)(wxPanel*)(this); } - /// Returns the top panel of the widget - wxPanel* GetPanel() { return (wxPanel*)(this); } - - }; - //================================================================= - */ } //namespace bbtk diff --git a/kernel/src/bbtkWxGUIConsole.cxx b/kernel/src/bbtkWxGUIConsole.cxx index c823932..a4d4299 100644 --- a/kernel/src/bbtkWxGUIConsole.cxx +++ b/kernel/src/bbtkWxGUIConsole.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkWxGUIConsole.cxx,v $ Language: C++ - Date: $Date: 2008/03/25 06:22:53 $ - Version: $Revision: 1.5 $ + Date: $Date: 2008/04/18 12:59:16 $ + Version: $Revision: 1.6 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -64,7 +64,7 @@ namespace bbtk // m_mgr = new wxAuiManager(this); m_mgr.SetManagedWindow(this); - mInterpreter = new bbtk::Interpreter(); + mInterpreter = bbtk::Interpreter::New(); mInterpreter->SetUser(this); mInterpreter->SetCommandLine(true); //============== @@ -214,7 +214,7 @@ namespace bbtk std::string filename = mWxGUIHtmlBrowser->GetCurrentPage();//wx2std(temp); size_t s = filename.length(); - Interpreter* I = new Interpreter; + Interpreter::Pointer I = Interpreter::New(); if ((s>3) && (filename[s-1]=='s') && (filename[s-2]=='b') @@ -230,8 +230,7 @@ namespace bbtk { SetStatusText(_T("The current page is not a bbs file : cannot execute it")); } - - delete I; + } //================================================================ @@ -278,9 +277,8 @@ namespace bbtk std::string command("toolsbbtk/appli/CreatePackage"); bbtkMessage("Debug",1,"Executing : '"<InterpretFile(command); - delete I; } //================================================================ @@ -290,9 +288,8 @@ namespace bbtk { std::string command("toolsbbtk/appli/CreateBlackBox"); bbtkMessage("Debug",1,"Executing : '"<InterpretFile(command); - delete I; } //================================================================ diff --git a/kernel/src/bbtkWxGUIConsole.h b/kernel/src/bbtkWxGUIConsole.h index a8c328d..6a4b17d 100644 --- a/kernel/src/bbtkWxGUIConsole.h +++ b/kernel/src/bbtkWxGUIConsole.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkWxGUIConsole.h,v $ Language: C++ - Date: $Date: 2008/03/25 06:22:53 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/04/18 12:59:16 $ + Version: $Revision: 1.3 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -63,9 +63,9 @@ namespace bbtk /// Returns the Interpreter used /// ONLY ONE FOR THE MOMENT BUT IN THE FUTURE CAN BE DIFFERENT /// (DIFFERENT WORKSPACES) - Interpreter* GetInterpreter() { return mInterpreter; } + //Interpreter::Pointer GetInterpreter() { return mInterpreter; } /// Returns the Interpreter used (const) - const Interpreter* GetInterpreter() const { return mInterpreter; } + Interpreter::Pointer GetInterpreter() const { return mInterpreter; } /// Sets the inputs of the workspace : /// the map is passed as is to the Executer @@ -104,7 +104,7 @@ namespace bbtk private: wxAuiManager m_mgr; - Interpreter* mInterpreter; + Interpreter::Pointer mInterpreter; //EED wxNotebook* mwxNotebook; diff --git a/kernel/src/bbtkWxGUIPackageBrowser.cxx b/kernel/src/bbtkWxGUIPackageBrowser.cxx index 515a707..4f7a84d 100644 --- a/kernel/src/bbtkWxGUIPackageBrowser.cxx +++ b/kernel/src/bbtkWxGUIPackageBrowser.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkWxGUIPackageBrowser.cxx,v $ Language: C++ - Date: $Date: 2008/03/31 13:18:04 $ - Version: $Revision: 1.3 $ + Date: $Date: 2008/04/18 12:59:16 $ + Version: $Revision: 1.4 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -47,9 +47,10 @@ namespace bbtk { //================================================================ - WxGUIPackageBrowserBlackBox::WxGUIPackageBrowserBlackBox(wxWindow* parent, - WxGUIPackageBrowser* browser, - BlackBoxDescriptor* descr) : + WxGUIPackageBrowserBlackBox:: + WxGUIPackageBrowserBlackBox(wxWindow* parent, + WxGUIPackageBrowser* browser, + BlackBoxDescriptor::Pointer descr) : wxPanel(parent, -1), mBrowser(browser), mDescriptor(descr) @@ -303,7 +304,7 @@ namespace bbtk WxGUIPackageBrowserUser* user ) : wxPanel(parent, -1), mUser(user), - mInterpreter(0) + mInterpreter() { wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL); @@ -339,26 +340,26 @@ namespace bbtk //================================================================ WxGUIPackageBrowser::~WxGUIPackageBrowser() { - std::cout << "del interpreter" << std::endl; - if (mInterpreter) delete mInterpreter; - std::cout << "ok" << std::endl; + // std::cout << "del interpreter" << std::endl; + // if (mInterpreter) delete mInterpreter; + // std::cout << "ok" << std::endl; } //================================================================ //================================================================ void WxGUIPackageBrowser::IncludeAll() { - if (!mInterpreter) mInterpreter = new bbtk::Interpreter(); + if (!mInterpreter) mInterpreter = bbtk::Interpreter::New(); mInterpreter->SetCommandLine(true); mInterpreter->InterpretLine("include *"); - Factory* F = mInterpreter->GetExecuter()->GetFactory(); + Factory::Pointer F = mInterpreter->GetExecuter()->GetFactory(); BuildFromFactory(F); } //================================================================ //================================================================ - void WxGUIPackageBrowser::BuildFromFactory(Factory* F) + void WxGUIPackageBrowser::BuildFromFactory(Factory::Pointer F) { #ifndef LINUX wxTreeMultiWindowInfo wndinfo(wxTMC_BG_ADJUST_CNT, 8, 0); @@ -370,7 +371,7 @@ namespace bbtk Factory::PackageMapType::const_iterator i; for (i=M.begin();i!=M.end();++i) { - Package* P = i->second.mPackage; + Package::Pointer P = i->second; wxString packname = std2wx(P->GetName()); if (packname==_T("user")) continue; wxTreeMultiItem pack = mTree->AddRoot(packname,packname); diff --git a/kernel/src/bbtkWxGUIPackageBrowser.h b/kernel/src/bbtkWxGUIPackageBrowser.h index 3958d4c..35327bf 100644 --- a/kernel/src/bbtkWxGUIPackageBrowser.h +++ b/kernel/src/bbtkWxGUIPackageBrowser.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkWxGUIPackageBrowser.h,v $ Language: C++ - Date: $Date: 2008/03/28 15:04:10 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/04/18 12:59:16 $ + Version: $Revision: 1.3 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -68,12 +68,12 @@ namespace bbtk public: WxGUIPackageBrowserBlackBox(wxWindow* parent, WxGUIPackageBrowser* browser, - BlackBoxDescriptor* descr); + BlackBoxDescriptor::Pointer descr); ~WxGUIPackageBrowserBlackBox(); private: WxGUIPackageBrowser* mBrowser; - BlackBoxDescriptor* mDescriptor; + BlackBoxDescriptor::Pointer mDescriptor; } ; //================================================================ @@ -88,11 +88,11 @@ namespace bbtk ~WxGUIPackageBrowser(); void IncludeAll(); - void BuildFromFactory(Factory* f); + void BuildFromFactory(Factory::Pointer f); private: WxGUIPackageBrowserUser* mUser; - Interpreter* mInterpreter; + Interpreter::Pointer mInterpreter; wxTreeMultiCtrl* mTree; }; diff --git a/kernel/src/bbtkWxGUIPackageBrowser2.cxx b/kernel/src/bbtkWxGUIPackageBrowser2.cxx index d7349e8..d95d80d 100644 --- a/kernel/src/bbtkWxGUIPackageBrowser2.cxx +++ b/kernel/src/bbtkWxGUIPackageBrowser2.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkWxGUIPackageBrowser2.cxx,v $ Language: C++ -Date: $Date: 2008/04/09 11:16:57 $ -Version: $Revision: 1.4 $ +Date: $Date: 2008/04/18 12:59:16 $ +Version: $Revision: 1.5 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -109,7 +109,7 @@ namespace bbtk #endif } - void WxGUIBlackBoxList::Insert(BlackBoxDescriptor* d) + void WxGUIBlackBoxList::Insert(BlackBoxDescriptor::Pointer d) { if (GetColumnCount()!=3) { @@ -127,8 +127,9 @@ namespace bbtk int nID = this->GetItemCount(); kNewItem.SetId(nID); kNewItem.SetMask(wxLIST_MASK_DATA); - kNewItem.SetData(d); - // BlackBoxDescriptor* d2 = (BlackBoxDescriptor*)kNewItem.GetData(); + // TO DO : STORE SHARED POINTER + // kNewItem.SetData(d.get()); + // BlackBoxDescriptor::Pointer* d2 = (BlackBoxDescriptor::Pointer*)kNewItem.GetData(); // std::cout << "Descr = "<InsertItem(kNewItem); this->SetItem(nID, 0, std2wx(d->GetPackage()->GetName()) ); @@ -312,8 +313,9 @@ namespace bbtk info.m_mask = wxLIST_MASK_DATA; if ( GetItem(info) ) { - BlackBoxDescriptor* d = (BlackBoxDescriptor*)(info.GetData()); - if (d!=0) mUser->WxGUIBlackBoxListUserOnSelected(d); + // TO DO : STORE SHARED + // BlackBoxDescriptor* d = (BlackBoxDescriptor*)(info.GetData()); + // if (d!=0) mUser->WxGUIBlackBoxListUserOnSelected(d); } else { @@ -556,7 +558,7 @@ namespace bbtk WxGUIBlackBoxInfo::WxGUIBlackBoxInfo(wxWindow* parent) : wxPanel(parent, -1), - mDescriptor(0) + mDescriptor() { wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL); @@ -604,7 +606,7 @@ namespace bbtk //================================================================ - void WxGUIBlackBoxInfo::UpdateInfo(BlackBoxDescriptor* descr) + void WxGUIBlackBoxInfo::UpdateInfo(BlackBoxDescriptor::Pointer descr) { // mName->SetLabel(std2wx(descr->GetTypeName())); @@ -758,7 +760,7 @@ namespace bbtk WxGUIPackageBrowser2User* user ) : wxPanel(parent, -1), mUser(user), - mInterpreter(0) + mInterpreter() { m_mgr.SetManagedWindow(this); @@ -882,7 +884,7 @@ namespace bbtk //================================================================ // User callback when a box is selected in the list - void WxGUIPackageBrowser2::WxGUIBlackBoxListUserOnSelected( BlackBoxDescriptor* d) + void WxGUIPackageBrowser2::WxGUIBlackBoxListUserOnSelected( BlackBoxDescriptor::Pointer d) { mBoxInfo->UpdateInfo(d); std::string title = d->GetPackage()->GetName()+"::"+d->GetTypeName(); @@ -895,26 +897,27 @@ namespace bbtk //================================================================ WxGUIPackageBrowser2::~WxGUIPackageBrowser2() { - std::cout << "del interpreter" << std::endl; - if (mInterpreter) delete mInterpreter; - std::cout << "ok" << std::endl; + + // std::cout << "del interpreter" << std::endl; + // if (mInterpreter) delete mInterpreter; + // std::cout << "ok" << std::endl; } //================================================================ //================================================================ void WxGUIPackageBrowser2::IncludeAll() { - if (!mInterpreter) mInterpreter = new bbtk::Interpreter(); + if (!mInterpreter) mInterpreter =bbtk::Interpreter::New(); mInterpreter->SetCommandLine(true); mInterpreter->InterpretLine("include *"); - Factory* F = mInterpreter->GetExecuter()->GetFactory(); + Factory::Pointer F = mInterpreter->GetExecuter()->GetFactory(); BuildFromFactory(F); } //================================================================ //================================================================ - void WxGUIPackageBrowser2::BuildFromFactory(Factory* F) + void WxGUIPackageBrowser2::BuildFromFactory(Factory::Pointer F) { mFactory = F; RebuildList(); @@ -931,7 +934,7 @@ namespace bbtk Factory::PackageMapType::const_iterator i; for (i=M.begin();i!=M.end();++i) { - Package* P = i->second.mPackage; + Package::Pointer P = i->second; if (P->GetName() == "user") continue; Package::BlackBoxMapType::iterator j; @@ -949,7 +952,7 @@ namespace bbtk //================================================================ //================================================================ - bool WxGUIPackageBrowser2::IsVisible(BlackBoxDescriptor* d) + bool WxGUIPackageBrowser2::IsVisible(BlackBoxDescriptor::Pointer d) { // std::cout << " '" << wx2std(mPackageFilter->GetValue())<<"'"<GetPackage()->GetName() << "'"<SetUser(this); mInterpreter->SetCommandLine(true); mInterpreter->SetThrow(true); @@ -304,18 +304,13 @@ namespace bbtk //================================================================ void WxGUIScriptingInterface::OnMenuCreatePackage(wxCommandEvent& WXUNUSED(event)) { -printf("EED WxGUIScriptingInterface::OnMenuCreatePackage 01 \n"); - std::string command("toolsbbtk/appli/CreatePackage"); -printf("EED WxGUIScriptingInterface::OnMenuCreatePackage 02 \n"); + std::string command("toolsbbtk/appli/CreatePackage"); bbtkMessage("Debug",1,"Executing : '"<InterpretFile(command); -printf("EED WxGUIScriptingInterface::OnMenuCreatePackage 05 \n"); - delete I; -printf("EED WxGUIScriptingInterface::OnMenuCreatePackage 06 \n"); + } //================================================================ @@ -325,9 +320,9 @@ printf("EED WxGUIScriptingInterface::OnMenuCreatePackage 06 \n"); { std::string command("toolsbbtk/appli/CreateBlackBox"); bbtkMessage("Debug",1,"Executing : '"<InterpretFile(command); - delete I; } //================================================================ @@ -354,10 +349,8 @@ printf("EED WxGUIScriptingInterface::OnMenuCreatePackage 06 \n"); { std::string doc_path = ConfigurationFile::GetInstance().Get_doc_path(); std::string filepath = doc_path+"/bbdoc/make-index.bbs"; - Interpreter* I = new Interpreter; -//EED std::cout << "bbi: include "<InterpretFile( filepath ); + Interpreter::Pointer I = Interpreter::New(); I->InterpretLine( "exec freeze"); I->InterpretLine( "include *"); @@ -366,7 +359,6 @@ printf("EED WxGUIScriptingInterface::OnMenuCreatePackage 06 \n"); I->InterpretLine( "index "+doc_path+"/bbdoc/index-category.html Categories"); I->InterpretLine( "index "+doc_path+"/bbdoc/index-adaptors.html Adaptors"); - delete I; } //================================================================ diff --git a/kernel/src/bbtkWxGUIScriptingInterface.h b/kernel/src/bbtkWxGUIScriptingInterface.h index e817bcb..a59e7e8 100644 --- a/kernel/src/bbtkWxGUIScriptingInterface.h +++ b/kernel/src/bbtkWxGUIScriptingInterface.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkWxGUIScriptingInterface.h,v $ Language: C++ - Date: $Date: 2008/03/25 15:47:54 $ - Version: $Revision: 1.4 $ + Date: $Date: 2008/04/18 12:59:16 $ + Version: $Revision: 1.5 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -66,9 +66,7 @@ namespace bbtk /// Returns the Interpreter used /// ONLY ONE FOR THE MOMENT BUT IN THE FUTURE CAN BE DIFFERENT /// (DIFFERENT WORKSPACES) - Interpreter* GetInterpreter() { return mInterpreter; } - /// Returns the Interpreter used (const) - const Interpreter* GetInterpreter() const { return mInterpreter; } + Interpreter::Pointer GetInterpreter() const { return mInterpreter; } /// Sets the inputs of the workspace : /// the map is passed as is to the Executer @@ -122,7 +120,7 @@ namespace bbtk bool WxGUIHtmlBrowserUserOnLinkClicked(const std::string& target); private: wxAuiManager m_mgr; - Interpreter* mInterpreter; + Interpreter::Pointer mInterpreter; //EED wxNotebook* mwxNotebook; diff --git a/packages/itk/src/bbitkAnyImageToTypedImage.cxx b/packages/itk/src/bbitkAnyImageToTypedImage.cxx index 75968dd..6dec457 100644 --- a/packages/itk/src/bbitkAnyImageToTypedImage.cxx +++ b/packages/itk/src/bbitkAnyImageToTypedImage.cxx @@ -5,9 +5,9 @@ namespace bbitk { //==================================================================== - BBTK_USER_BLACK_BOX_TEMPLATE_IMPLEMENTATION(AnyImageToTypedImage, + BBTK_BLACK_BOX_TEMPLATE_IMPLEMENTATION(AnyImageToTypedImage, bbtk::AtomicBlackBox); - BBTK_USER_BLACK_BOX_TEMPLATE2_IMPLEMENTATION(AnyImageToConstTypedImage, + BBTK_BLACK_BOX_TEMPLATE2_IMPLEMENTATION(AnyImageToConstTypedImage, bbtk::AtomicBlackBox); //==================================================================== diff --git a/packages/itk/src/bbitkAnyImageToTypedImage.h b/packages/itk/src/bbitkAnyImageToTypedImage.h index 768b57e..61e404f 100644 --- a/packages/itk/src/bbitkAnyImageToTypedImage.h +++ b/packages/itk/src/bbitkAnyImageToTypedImage.h @@ -14,8 +14,9 @@ namespace bbitk template class AnyImageToTypedImage : public bbtk::AtomicBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(AnyImageToTypedImage, - bbtk::AtomicBlackBox); + BBTK_TEMPLATE_BLACK_BOX_INTERFACE(AnyImageToTypedImage, + bbtk::AtomicBlackBox, + itkImageTypePointer); BBTK_DECLARE_INPUT(In,anyImagePointer); BBTK_DECLARE_OUTPUT(Out,itkImageTypePointer); BBTK_PROCESS(DoIt); @@ -25,7 +26,8 @@ namespace bbitk //================================================================= // BlackBox description - BBTK_BEGIN_DESCRIBE_TEMPLATE_BLACK_BOX(AnyImageToTypedImage); + BBTK_BEGIN_DESCRIBE_TEMPLATE_BLACK_BOX(AnyImageToTypedImage, + bbtk::AtomicBlackBox); BBTK_NAME(bbtk::HumanTypeName() + "To" +bbtk::HumanTypeName()); BBTK_AUTHOR("laurent.guigues@creatis.insa-lyon.fr"); @@ -63,8 +65,10 @@ namespace bbitk template class AnyImageToConstTypedImage : public bbtk::AtomicBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(AnyImageToConstTypedImage, - bbtk::AtomicBlackBox); + BBTK_TEMPLATE2_BLACK_BOX_INTERFACE(AnyImageToConstTypedImage, + bbtk::AtomicBlackBox, + itkImageTypePointer, + itkImageTypeConstPointer); BBTK_DECLARE_INPUT(In,anyImagePointer); BBTK_DECLARE_OUTPUT(Out,itkImageTypeConstPointer); BBTK_PROCESS(DoIt); @@ -74,7 +78,8 @@ namespace bbitk //================================================================= // BlackBox description - BBTK_BEGIN_DESCRIBE_TEMPLATE2_BLACK_BOX(AnyImageToConstTypedImage); + BBTK_BEGIN_DESCRIBE_TEMPLATE2_BLACK_BOX(AnyImageToConstTypedImage, + bbtk::AtomicBlackBox); BBTK_NAME(bbtk::HumanTypeName() + "To" + bbtk::HumanTypeName()); BBTK_AUTHOR("laurent.guigues@creatis.insa-lyon.fr"); diff --git a/packages/itk/src/bbitkBinaryThresholdImageFilter.cxx b/packages/itk/src/bbitkBinaryThresholdImageFilter.cxx index be5b117..bfc1d74 100644 --- a/packages/itk/src/bbitkBinaryThresholdImageFilter.cxx +++ b/packages/itk/src/bbitkBinaryThresholdImageFilter.cxx @@ -5,9 +5,9 @@ namespace bbitk { - BBTK_USER_BLACK_BOX_TEMPLATE_IMPLEMENTATION(BinaryThresholdImageFilter, + BBTK_BLACK_BOX_TEMPLATE_IMPLEMENTATION(BinaryThresholdImageFilter, bbtk::AtomicBlackBox); - BBTK_USER_BLACK_BOX_IMPLEMENTATION(BinaryThresholdImageFilterGeneric, + BBTK_BLACK_BOX_IMPLEMENTATION(BinaryThresholdImageFilterGeneric, bbtk::AtomicBlackBox); BBTK_ADD_BLACK_BOX_TO_PACKAGE(itk, BinaryThresholdImageFilterGeneric); diff --git a/packages/itk/src/bbitkBinaryThresholdImageFilter.h b/packages/itk/src/bbitkBinaryThresholdImageFilter.h index d734f86..3e6e75e 100644 --- a/packages/itk/src/bbitkBinaryThresholdImageFilter.h +++ b/packages/itk/src/bbitkBinaryThresholdImageFilter.h @@ -13,8 +13,8 @@ namespace bbitk public bbtk::AtomicBlackBox, public itk::BinaryThresholdImageFilter { - BBTK_USER_BLACK_BOX_INTERFACE(BinaryThresholdImageFilter, - bbtk::AtomicBlackBox); + BBTK_TEMPLATE_BLACK_BOX_INTERFACE(BinaryThresholdImageFilter, + bbtk::AtomicBlackBox,T); typedef itk::BinaryThresholdImageFilter itkParent; BBTK_DECLARE_ITK_INPUT(itkParent,In,const T*); BBTK_DECLARE_ITK_PARAM(itkParent,LowerThreshold,typename T::PixelType); @@ -31,7 +31,8 @@ namespace bbitk }; - BBTK_BEGIN_DESCRIBE_TEMPLATE_BLACK_BOX(BinaryThresholdImageFilter); + BBTK_BEGIN_DESCRIBE_TEMPLATE_BLACK_BOX(BinaryThresholdImageFilter, + bbtk::AtomicBlackBox); BBTK_NAME("BinaryThresholdImageFilter<"+bbtk::TypeName()+">"); BBTK_AUTHOR("laurent.guigues@creatis.insa-lyon.fr"); BBTK_DESCRIPTION("Binarizes an image by thresholding (bbification of itk::BinaryThresholdImageFilter)"); @@ -56,7 +57,7 @@ namespace bbitk : public bbtk::AtomicBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(BinaryThresholdImageFilterGeneric, + BBTK_BLACK_BOX_INTERFACE(BinaryThresholdImageFilterGeneric, bbtk::AtomicBlackBox); BBTK_DECLARE_INPUT(In,anyImagePointer); BBTK_DECLARE_INPUT(LowerThreshold,double); @@ -109,7 +110,7 @@ namespace bbitk <()<<">()"< FilterType; - FilterType* f = FilterType::bbNew("Temp"); + typename FilterType::Pointer f = FilterType::New("Temp"); f->bbSetInputIn( this->bbGetInputIn().get()); f->bbSetInputLowerThreshold ( (typename T::PixelType) this->bbGetInputLowerThreshold() ); @@ -122,7 +123,7 @@ namespace bbitk f->bbExecute(); f->bbGetOutputOut()->Register(); this->bbSetOutputOut( f->bbGetOutputOut() ); - f->bbDelete(); + bbtkDebugDecTab("Core",9); } diff --git a/packages/itk/src/bbitkExtractImageFilter.cxx b/packages/itk/src/bbitkExtractImageFilter.cxx index 1a3f717..1f20b10 100644 --- a/packages/itk/src/bbitkExtractImageFilter.cxx +++ b/packages/itk/src/bbitkExtractImageFilter.cxx @@ -6,9 +6,9 @@ namespace bbitk { - BBTK_USER_BLACK_BOX_TEMPLATE_IMPLEMENTATION(ExtractImageFilter, + BBTK_BLACK_BOX_TEMPLATE_IMPLEMENTATION(ExtractImageFilter, bbtk::AtomicBlackBox); - BBTK_USER_BLACK_BOX_IMPLEMENTATION(ExtractImageFilterGeneric, + BBTK_BLACK_BOX_IMPLEMENTATION(ExtractImageFilterGeneric, bbtk::AtomicBlackBox); BBTK_ADD_BLACK_BOX_TO_PACKAGE(itk,ExtractImageFilterGeneric) diff --git a/packages/itk/src/bbitkExtractImageFilter.h b/packages/itk/src/bbitkExtractImageFilter.h index b6de2d1..12d07bf 100644 --- a/packages/itk/src/bbitkExtractImageFilter.h +++ b/packages/itk/src/bbitkExtractImageFilter.h @@ -15,7 +15,9 @@ namespace bbitk public bbtk::AtomicBlackBox, public itk::ExtractImageFilter { - BBTK_USER_BLACK_BOX_INTERFACE(ExtractImageFilter,bbtk::AtomicBlackBox); + BBTK_TEMPLATE_BLACK_BOX_INTERFACE(ExtractImageFilter, + bbtk::AtomicBlackBox, + T); typedef itk::ExtractImageFilter itkParent; BBTK_DECLARE_ITK_INPUT(itkParent,In,const T*); @@ -27,7 +29,8 @@ namespace bbitk }; - BBTK_BEGIN_DESCRIBE_TEMPLATE_BLACK_BOX(ExtractImageFilter); + BBTK_BEGIN_DESCRIBE_TEMPLATE_BLACK_BOX(ExtractImageFilter, + bbtk::AtomicBlackBox); BBTK_NAME("ExtractImageFilter<"+bbtk::TypeName()+">"); BBTK_AUTHOR("laurent.guigues@creatis.insa-lyon.fr"); BBTK_DESCRIPTION("Decrease the image size by cropping the image to the selected region bounds (bbification of itk::ExtractImageFilter)"); @@ -42,8 +45,8 @@ namespace bbitk class /*BBTK_EXPORT*/ ExtractImageFilterGeneric : public bbtk::AtomicBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(ExtractImageFilterGeneric, - bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_INTERFACE(ExtractImageFilterGeneric, + bbtk::AtomicBlackBox); BBTK_DECLARE_INPUT(In,anyImagePointer); BBTK_DECLARE_INPUT(Region,anyImageRegion); BBTK_DECLARE_OUTPUT(Out,anyImagePointer); @@ -76,13 +79,13 @@ namespace bbitk <()<<">()"< FilterType; - FilterType* f = FilterType::bbNew("Temp"); + typename FilterType::Pointer f = FilterType::New("Temp"); f->bbSetInputIn( this->bbGetInputIn().unsafe_get() ); f->bbSetInputExtractionRegion ( this->bbGetInputRegion().get() ); f->bbExecute(); f->bbGetOutputOut()->Register(); this->bbSetOutputOut( f->bbGetOutputOut() ); - f->bbDelete(); + // f->bbDelete(); bbtkDebugDecTab("Core",9); } diff --git a/packages/itk/src/bbitkImage.cxx b/packages/itk/src/bbitkImage.cxx index 5d4c883..99417f7 100644 --- a/packages/itk/src/bbitkImage.cxx +++ b/packages/itk/src/bbitkImage.cxx @@ -8,8 +8,8 @@ namespace bbstd { //==================================================================== - BBTK_USER_BLACK_BOX_TEMPLATE_IMPLEMENTATION(Relay, - bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_TEMPLATE_IMPLEMENTATION(Relay, + bbtk::AtomicBlackBox); //==================================================================== } using namespace bbstd; diff --git a/packages/itk/src/bbitkImageProperties.cxx b/packages/itk/src/bbitkImageProperties.cxx index d46c01b..223950e 100644 --- a/packages/itk/src/bbitkImageProperties.cxx +++ b/packages/itk/src/bbitkImageProperties.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbitkImageProperties.cxx,v $ Language: C++ - Date: $Date: 2008/02/07 07:58:54 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/04/18 12:59:50 $ + Version: $Revision: 1.3 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -26,7 +26,7 @@ namespace bbitk { - BBTK_USER_BLACK_BOX_IMPLEMENTATION(ImageProperties,bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_IMPLEMENTATION(ImageProperties,bbtk::AtomicBlackBox); BBTK_ADD_BLACK_BOX_TO_PACKAGE(itk,ImageProperties); diff --git a/packages/itk/src/bbitkImageProperties.h b/packages/itk/src/bbitkImageProperties.h index e298799..25053b2 100644 --- a/packages/itk/src/bbitkImageProperties.h +++ b/packages/itk/src/bbitkImageProperties.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbitkImageProperties.h,v $ Language: C++ - Date: $Date: 2008/04/08 06:59:30 $ - Version: $Revision: 1.5 $ + Date: $Date: 2008/04/18 12:59:50 $ + Version: $Revision: 1.6 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -40,8 +40,8 @@ namespace bbitk class ImageProperties : public bbtk::AtomicBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(ImageProperties, - bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_INTERFACE(ImageProperties, + bbtk::AtomicBlackBox); BBTK_DECLARE_INPUT(In,anyImagePointer); BBTK_DECLARE_OUTPUT(TypeName,std::string); diff --git a/packages/itk/src/bbitkImageReader.cxx b/packages/itk/src/bbitkImageReader.cxx index 329c579..b6d9bb1 100644 --- a/packages/itk/src/bbitkImageReader.cxx +++ b/packages/itk/src/bbitkImageReader.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbitkImageReader.cxx,v $ Language: C++ - Date: $Date: 2008/02/07 07:58:54 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/04/18 12:59:50 $ + Version: $Revision: 1.3 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -27,8 +27,8 @@ namespace bbitk { - BBTK_USER_BLACK_BOX_IMPLEMENTATION(ImageReader,bbtk::AtomicBlackBox); - + BBTK_BLACK_BOX_IMPLEMENTATION(ImageReader,bbtk::AtomicBlackBox); + BBTK_ADD_BLACK_BOX_TO_PACKAGE(itk,ImageReader); diff --git a/packages/itk/src/bbitkImageReader.h b/packages/itk/src/bbitkImageReader.h index 4a17152..44a6318 100644 --- a/packages/itk/src/bbitkImageReader.h +++ b/packages/itk/src/bbitkImageReader.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbitkImageReader.h,v $ Language: C++ - Date: $Date: 2008/04/08 06:59:30 $ - Version: $Revision: 1.4 $ + Date: $Date: 2008/04/18 12:59:50 $ + Version: $Revision: 1.5 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -39,8 +39,8 @@ namespace bbitk class ImageReader : public bbtk::AtomicBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(ImageReader, - bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_INTERFACE(ImageReader, + bbtk::AtomicBlackBox); BBTK_DECLARE_INPUT(Filename,std::string); BBTK_DECLARE_OUTPUT(Out,anyImagePointer); diff --git a/packages/itk/src/bbitkImageRegion.cxx b/packages/itk/src/bbitkImageRegion.cxx index b1bcf8c..dffba00 100644 --- a/packages/itk/src/bbitkImageRegion.cxx +++ b/packages/itk/src/bbitkImageRegion.cxx @@ -6,8 +6,8 @@ namespace bbitk { - BBTK_USER_BLACK_BOX_IMPLEMENTATION(ImageRegionCreator, - bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_IMPLEMENTATION(ImageRegionCreator, + bbtk::AtomicBlackBox); BBTK_ADD_BLACK_BOX_TO_PACKAGE(itk,ImageRegionCreator); diff --git a/packages/itk/src/bbitkImageRegion.h b/packages/itk/src/bbitkImageRegion.h index fdcf589..3e07464 100644 --- a/packages/itk/src/bbitkImageRegion.h +++ b/packages/itk/src/bbitkImageRegion.h @@ -46,7 +46,7 @@ namespace bbitk class /*BBTK_EXPORT*/ ImageRegionCreator : public bbtk::AtomicBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(ImageRegionCreator,bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_INTERFACE(ImageRegionCreator,bbtk::AtomicBlackBox); BBTK_DECLARE_INPUT(Index,std::vector); BBTK_DECLARE_INPUT(Size,std::vector); BBTK_DECLARE_OUTPUT(Out,anyImageRegion); diff --git a/packages/itk/src/bbitkImageSeriesReader.cxx b/packages/itk/src/bbitkImageSeriesReader.cxx index 058c288..36432d5 100644 --- a/packages/itk/src/bbitkImageSeriesReader.cxx +++ b/packages/itk/src/bbitkImageSeriesReader.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbitkImageSeriesReader.cxx,v $ Language: C++ - Date: $Date: 2008/02/07 07:58:54 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/04/18 12:59:50 $ + Version: $Revision: 1.3 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -27,8 +27,8 @@ namespace bbitk { - BBTK_USER_BLACK_BOX_IMPLEMENTATION(ImageSeriesReader,bbtk::AtomicBlackBox); - + BBTK_BLACK_BOX_IMPLEMENTATION(ImageSeriesReader,bbtk::AtomicBlackBox); + BBTK_ADD_BLACK_BOX_TO_PACKAGE(itk,ImageSeriesReader); diff --git a/packages/itk/src/bbitkImageSeriesReader.h b/packages/itk/src/bbitkImageSeriesReader.h index 5798b7a..0b4797a 100644 --- a/packages/itk/src/bbitkImageSeriesReader.h +++ b/packages/itk/src/bbitkImageSeriesReader.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbitkImageSeriesReader.h,v $ Language: C++ - Date: $Date: 2008/04/08 06:59:30 $ - Version: $Revision: 1.4 $ + Date: $Date: 2008/04/18 12:59:50 $ + Version: $Revision: 1.5 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -39,8 +39,8 @@ namespace bbitk class ImageSeriesReader : public bbtk::AtomicBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(ImageSeriesReader, - bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_INTERFACE(ImageSeriesReader, + bbtk::AtomicBlackBox); BBTK_DECLARE_INPUT(FileNames,std::vector); BBTK_DECLARE_OUTPUT(Out,anyImagePointer); diff --git a/packages/itk/src/bbitkImageToString.cxx b/packages/itk/src/bbitkImageToString.cxx index 327108e..efa672c 100644 --- a/packages/itk/src/bbitkImageToString.cxx +++ b/packages/itk/src/bbitkImageToString.cxx @@ -10,8 +10,8 @@ namespace bbstd //==================================================================== - BBTK_USER_BLACK_BOX_TEMPLATE_IMPLEMENTATION(ToString, - bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_TEMPLATE_IMPLEMENTATION(ToString, + bbtk::AtomicBlackBox); //==================================================================== //==================================================================== diff --git a/packages/itk/src/bbitkImageWriter.cxx b/packages/itk/src/bbitkImageWriter.cxx index 820add6..540fc70 100644 --- a/packages/itk/src/bbitkImageWriter.cxx +++ b/packages/itk/src/bbitkImageWriter.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbitkImageWriter.cxx,v $ Language: C++ - Date: $Date: 2008/02/07 07:58:55 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/04/18 12:59:50 $ + Version: $Revision: 1.3 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -27,7 +27,7 @@ namespace bbitk { - BBTK_USER_BLACK_BOX_IMPLEMENTATION(ImageWriter,bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_IMPLEMENTATION(ImageWriter,bbtk::AtomicBlackBox); BBTK_ADD_BLACK_BOX_TO_PACKAGE(itk,ImageWriter); diff --git a/packages/itk/src/bbitkImageWriter.h b/packages/itk/src/bbitkImageWriter.h index d4fa74b..d5b025f 100644 --- a/packages/itk/src/bbitkImageWriter.h +++ b/packages/itk/src/bbitkImageWriter.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbitkImageWriter.h,v $ Language: C++ - Date: $Date: 2008/04/08 06:59:31 $ - Version: $Revision: 1.4 $ + Date: $Date: 2008/04/18 12:59:50 $ + Version: $Revision: 1.5 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -39,7 +39,7 @@ namespace bbitk class ImageWriter : public bbtk::AtomicBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(ImageWriter, + BBTK_BLACK_BOX_INTERFACE(ImageWriter, bbtk::AtomicBlackBox); BBTK_DECLARE_INPUT(Filename,std::string); diff --git a/packages/itk/src/bbitkResampleImageFilter.cxx b/packages/itk/src/bbitkResampleImageFilter.cxx index fd98e5e..3e50d8a 100644 --- a/packages/itk/src/bbitkResampleImageFilter.cxx +++ b/packages/itk/src/bbitkResampleImageFilter.cxx @@ -5,7 +5,7 @@ namespace bbitk { - BBTK_USER_BLACK_BOX_IMPLEMENTATION(ResampleImageFilter,bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_IMPLEMENTATION(ResampleImageFilter,bbtk::AtomicBlackBox); BBTK_ADD_BLACK_BOX_TO_PACKAGE(itk,ResampleImageFilter); } diff --git a/packages/itk/src/bbitkResampleImageFilter.h b/packages/itk/src/bbitkResampleImageFilter.h index 8c9ed21..54be167 100644 --- a/packages/itk/src/bbitkResampleImageFilter.h +++ b/packages/itk/src/bbitkResampleImageFilter.h @@ -16,7 +16,7 @@ namespace bbitk : public bbtk::AtomicBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(ResampleImageFilter, + BBTK_BLACK_BOX_INTERFACE(ResampleImageFilter, bbtk::AtomicBlackBox); BBTK_DECLARE_INPUT(In,anyImagePointer); BBTK_DECLARE_INPUT(Spacing,std::vector); diff --git a/packages/itk/src/bbitkTypedImageToAnyImage.cxx b/packages/itk/src/bbitkTypedImageToAnyImage.cxx index 9946c28..f7fbaf7 100644 --- a/packages/itk/src/bbitkTypedImageToAnyImage.cxx +++ b/packages/itk/src/bbitkTypedImageToAnyImage.cxx @@ -5,8 +5,8 @@ namespace bbitk { //==================================================================== - BBTK_USER_BLACK_BOX_TEMPLATE_IMPLEMENTATION(TypedImageToAnyImage, - bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_TEMPLATE_IMPLEMENTATION(TypedImageToAnyImage, + bbtk::AtomicBlackBox); //==================================================================== diff --git a/packages/itk/src/bbitkTypedImageToAnyImage.h b/packages/itk/src/bbitkTypedImageToAnyImage.h index 50efb50..edb8268 100644 --- a/packages/itk/src/bbitkTypedImageToAnyImage.h +++ b/packages/itk/src/bbitkTypedImageToAnyImage.h @@ -15,8 +15,9 @@ namespace bbitk template class TypedImageToAnyImage : public bbtk::AtomicBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(TypedImageToAnyImage, - bbtk::AtomicBlackBox); + BBTK_TEMPLATE_BLACK_BOX_INTERFACE(TypedImageToAnyImage, + bbtk::AtomicBlackBox, + itkImageTypePointer); BBTK_DECLARE_INPUT(In,itkImageTypePointer); BBTK_DECLARE_OUTPUT(Out,anyImagePointer); BBTK_PROCESS(DoIt); @@ -26,7 +27,8 @@ namespace bbitk //================================================================= // BlackBox description - BBTK_BEGIN_DESCRIBE_TEMPLATE_BLACK_BOX(TypedImageToAnyImage); + BBTK_BEGIN_DESCRIBE_TEMPLATE_BLACK_BOX(TypedImageToAnyImage, + bbtk::AtomicBlackBox); BBTK_NAME(bbtk::HumanTypeName() + "To" + bbtk::HumanTypeName()); BBTK_AUTHOR("laurent.guigues at creatis.insa-lyon.fr"); diff --git a/packages/itkvtk/src/bbitkvtkitkImage2vtkImageData.cxx b/packages/itkvtk/src/bbitkvtkitkImage2vtkImageData.cxx index 04b523d..3fe9fe3 100644 --- a/packages/itkvtk/src/bbitkvtkitkImage2vtkImageData.cxx +++ b/packages/itkvtk/src/bbitkvtkitkImage2vtkImageData.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbitkvtkitkImage2vtkImageData.cxx,v $ Language: C++ - Date: $Date: 2008/03/03 11:49:17 $ - Version: $Revision: 1.1 $ + Date: $Date: 2008/04/18 12:59:50 $ + Version: $Revision: 1.2 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -32,7 +32,7 @@ namespace bbitkvtk { - BBTK_USER_BLACK_BOX_IMPLEMENTATION(itkImage2vtkImageData,bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_IMPLEMENTATION(itkImage2vtkImageData,bbtk::AtomicBlackBox); BBTK_ADD_BLACK_BOX_TO_PACKAGE(itkvtk,itkImage2vtkImageData); diff --git a/packages/itkvtk/src/bbitkvtkitkImage2vtkImageData.h b/packages/itkvtk/src/bbitkvtkitkImage2vtkImageData.h index e0a21c3..d2f9564 100644 --- a/packages/itkvtk/src/bbitkvtkitkImage2vtkImageData.h +++ b/packages/itkvtk/src/bbitkvtkitkImage2vtkImageData.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbitkvtkitkImage2vtkImageData.h,v $ Language: C++ - Date: $Date: 2008/04/08 06:59:31 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/04/18 12:59:50 $ + Version: $Revision: 1.3 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -39,8 +39,8 @@ namespace bbitkvtk class itkImage2vtkImageData : public bbtk::AtomicBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(itkImage2vtkImageData, - bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_INTERFACE(itkImage2vtkImageData, + bbtk::AtomicBlackBox); BBTK_DECLARE_INPUT(In,bbitk::anyImagePointer); BBTK_DECLARE_OUTPUT(Out,vtkImageData*); diff --git a/packages/itkvtk/src/bbitkvtkvtkImageData2itkImage.cxx b/packages/itkvtk/src/bbitkvtkvtkImageData2itkImage.cxx index 92d5fed..3afb1e8 100644 --- a/packages/itkvtk/src/bbitkvtkvtkImageData2itkImage.cxx +++ b/packages/itkvtk/src/bbitkvtkvtkImageData2itkImage.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbitkvtkvtkImageData2itkImage.cxx,v $ Language: C++ - Date: $Date: 2008/03/03 11:49:17 $ - Version: $Revision: 1.1 $ + Date: $Date: 2008/04/18 12:59:50 $ + Version: $Revision: 1.2 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -33,7 +33,7 @@ namespace bbitkvtk { - BBTK_USER_BLACK_BOX_IMPLEMENTATION(vtkImageData2itkImage,bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_IMPLEMENTATION(vtkImageData2itkImage,bbtk::AtomicBlackBox); BBTK_ADD_BLACK_BOX_TO_PACKAGE(itkvtk,vtkImageData2itkImage); diff --git a/packages/itkvtk/src/bbitkvtkvtkImageData2itkImage.h b/packages/itkvtk/src/bbitkvtkvtkImageData2itkImage.h index 94fc7ce..d092863 100644 --- a/packages/itkvtk/src/bbitkvtkvtkImageData2itkImage.h +++ b/packages/itkvtk/src/bbitkvtkvtkImageData2itkImage.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbitkvtkvtkImageData2itkImage.h,v $ Language: C++ - Date: $Date: 2008/04/08 06:59:31 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/04/18 12:59:50 $ + Version: $Revision: 1.3 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -39,8 +39,8 @@ namespace bbitkvtk class /*BBTK_EXPORT*/ vtkImageData2itkImage : public bbtk::AtomicBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(vtkImageData2itkImage, - bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_INTERFACE(vtkImageData2itkImage, + bbtk::AtomicBlackBox); BBTK_DECLARE_INPUT(In,vtkImageData*); BBTK_DECLARE_OUTPUT(Out,bbitk::anyImagePointer); diff --git a/packages/std/src/bbstdASCII.cxx b/packages/std/src/bbstdASCII.cxx index 316d473..c24da54 100644 --- a/packages/std/src/bbstdASCII.cxx +++ b/packages/std/src/bbstdASCII.cxx @@ -2,69 +2,69 @@ #include "bbstdPackage.h" namespace bbstd { - - BBTK_ADD_BLACK_BOX_TO_PACKAGE(std,ASCII) - BBTK_USER_BLACK_BOX_IMPLEMENTATION(ASCII,bbtk::AtomicBlackBox); - void ASCII::Process() - { - int asciiValue; - char strTmp[10]; - std::string result(""); - if (bbGetInputIn()!=""){ - - if (bbGetInputtype()==0){ - std::string commandstr(bbGetInputIn()); - bool ok=true; - int pos1=0,pos2; - pos2 = commandstr.find(" ",pos1); - std::string ccommand; - while (ok==true) - { - if (pos2==-1) - { - ok=false; - ccommand=commandstr.substr(pos1,commandstr.length()-pos1 ); - } else { - ccommand=commandstr.substr(pos1,pos2-pos1); - } - asciiValue = atoi( ccommand.c_str() ); - sprintf(strTmp,"%c",asciiValue); - result += strTmp; - - pos1=pos2+1; - pos2 = commandstr.find(" ",pos2+1); - } // while - } // if type 0 - - if (bbGetInputtype()==1){ - int i,size=bbGetInputIn().size(); - for (i=0;i class Cast : public bbtk::AtomicBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(Cast,bbtk::AtomicBlackBox); + BBTK_TEMPLATE2_BLACK_BOX_INTERFACE(Cast,bbtk::AtomicBlackBox,T,U); BBTK_DECLARE_INPUT(In,T); BBTK_DECLARE_OUTPUT(Out,U); BBTK_PROCESS(DoIt); @@ -32,7 +32,7 @@ namespace bbstd //================================================================= // UserBlackBox description - BBTK_BEGIN_DESCRIBE_TEMPLATE2_BLACK_BOX(Cast); + BBTK_BEGIN_DESCRIBE_TEMPLATE2_BLACK_BOX(Cast,bbtk::AtomicBlackBox); BBTK_NAME("Cast"+bbtk::HumanTypeName()+"To"+bbtk::HumanTypeName()); BBTK_AUTHOR("laurent.guigues@creatis.insa-lyon.fr"); BBTK_DESCRIPTION("Static cast from "+bbtk::HumanTypeName()+" (" diff --git a/packages/std/src/bbstdConcatStrings.cxx b/packages/std/src/bbstdConcatStrings.cxx index ec70935..098c95c 100644 --- a/packages/std/src/bbstdConcatStrings.cxx +++ b/packages/std/src/bbstdConcatStrings.cxx @@ -3,37 +3,37 @@ namespace bbstd { - BBTK_ADD_BLACK_BOX_TO_PACKAGE(std,ConcatStrings) - BBTK_USER_BLACK_BOX_IMPLEMENTATION(ConcatStrings,bbtk::AtomicBlackBox); - - void ConcatStrings::bbUserConstructor() - { - bbSetInputIn1(""); - bbSetInputIn2(""); - bbSetInputIn3(""); - bbSetInputIn4(""); - bbSetInputIn5(""); - bbSetInputIn6(""); - bbSetInputIn7(""); - bbSetInputIn8(""); - bbSetInputIn9(""); - bbSetInputIn10(""); - } - - - void ConcatStrings::DoProcess() - { - bbSetOutputOut( bbGetInputIn1() + - bbGetInputIn2() + - bbGetInputIn3() + - bbGetInputIn4() + - bbGetInputIn5() + - bbGetInputIn6() + - bbGetInputIn7() + - bbGetInputIn8() + - bbGetInputIn9() + - bbGetInputIn10() ); - } + BBTK_ADD_BLACK_BOX_TO_PACKAGE(std,ConcatStrings); + BBTK_BLACK_BOX_IMPLEMENTATION(ConcatStrings,bbtk::AtomicBlackBox); + + void ConcatStrings::bbUserConstructor() + { + bbSetInputIn1(""); + bbSetInputIn2(""); + bbSetInputIn3(""); + bbSetInputIn4(""); + bbSetInputIn5(""); + bbSetInputIn6(""); + bbSetInputIn7(""); + bbSetInputIn8(""); + bbSetInputIn9(""); + bbSetInputIn10(""); + } + + + void ConcatStrings::DoProcess() + { + bbSetOutputOut( bbGetInputIn1() + + bbGetInputIn2() + + bbGetInputIn3() + + bbGetInputIn4() + + bbGetInputIn5() + + bbGetInputIn6() + + bbGetInputIn7() + + bbGetInputIn8() + + bbGetInputIn9() + + bbGetInputIn10() ); + } } // EO namespace bbstd diff --git a/packages/std/src/bbstdConcatStrings.h b/packages/std/src/bbstdConcatStrings.h index 38a2758..2c28810 100644 --- a/packages/std/src/bbstdConcatStrings.h +++ b/packages/std/src/bbstdConcatStrings.h @@ -9,7 +9,7 @@ namespace bbstd : public bbtk::AtomicBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(ConcatStrings,bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_INTERFACE(ConcatStrings,bbtk::AtomicBlackBox); BBTK_DECLARE_INPUT(In1, std::string); BBTK_DECLARE_INPUT(In2, std::string); BBTK_DECLARE_INPUT(In3, std::string); diff --git a/packages/std/src/bbstdConfiguration.cxx b/packages/std/src/bbstdConfiguration.cxx index 8981782..e6032a3 100644 --- a/packages/std/src/bbstdConfiguration.cxx +++ b/packages/std/src/bbstdConfiguration.cxx @@ -4,8 +4,8 @@ #include "bbtkConfigurationFile.h" namespace bbstd { - BBTK_ADD_BLACK_BOX_TO_PACKAGE(std,Configuration) - BBTK_USER_BLACK_BOX_IMPLEMENTATION(Configuration,bbtk::AtomicBlackBox); + BBTK_ADD_BLACK_BOX_TO_PACKAGE(std,Configuration); + BBTK_BLACK_BOX_IMPLEMENTATION(Configuration,bbtk::AtomicBlackBox); void Configuration::bbUserConstructor() { diff --git a/packages/std/src/bbstdConfiguration.h b/packages/std/src/bbstdConfiguration.h index c85ff38..9f3aced 100644 --- a/packages/std/src/bbstdConfiguration.h +++ b/packages/std/src/bbstdConfiguration.h @@ -9,7 +9,7 @@ namespace bbstd : public bbtk::AtomicBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(Configuration,bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_INTERFACE(Configuration,bbtk::AtomicBlackBox); BBTK_DECLARE_OUTPUT(BinPath,std::string); BBTK_DECLARE_OUTPUT(DataPath,std::string); BBTK_DECLARE_OUTPUT(DocPath,std::string); diff --git a/packages/std/src/bbstdExecBbiCommand.cxx b/packages/std/src/bbstdExecBbiCommand.cxx index fb85734..c52598d 100755 --- a/packages/std/src/bbstdExecBbiCommand.cxx +++ b/packages/std/src/bbstdExecBbiCommand.cxx @@ -7,7 +7,7 @@ namespace bbstd { BBTK_ADD_BLACK_BOX_TO_PACKAGE(std,ExecBbiCommand); - BBTK_USER_BLACK_BOX_IMPLEMENTATION(ExecBbiCommand,bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_IMPLEMENTATION(ExecBbiCommand,bbtk::AtomicBlackBox); void ExecBbiCommand::bbUserConstructor() { @@ -17,6 +17,7 @@ namespace bbstd void ExecBbiCommand::DoProcess() { + /* // Look for the interpreter bbtk::Interpreter* I = 0; bool delete_inter = false; @@ -67,7 +68,7 @@ namespace bbstd } if (delete_inter) delete I; - + */ /* Grrr not works in windows char * pch; pch = strtok (bbGetInputIn(),";"); diff --git a/packages/std/src/bbstdExecBbiCommand.h b/packages/std/src/bbstdExecBbiCommand.h index 2718848..8bf3f56 100755 --- a/packages/std/src/bbstdExecBbiCommand.h +++ b/packages/std/src/bbstdExecBbiCommand.h @@ -10,25 +10,25 @@ namespace bbstd : public bbtk::AtomicBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(ExecBbiCommand,bbtk::AtomicBlackBox); - BBTK_DECLARE_INPUT(In,std::string); -// BBTK_DECLARE_OUTPUT(Out,std::string); + BBTK_BLACK_BOX_INTERFACE(ExecBbiCommand,bbtk::AtomicBlackBox); + BBTK_DECLARE_INPUT(In,std::string); + // BBTK_DECLARE_OUTPUT(Out,std::string); BBTK_PROCESS(DoProcess); void DoProcess(); - + protected: virtual void bbUserConstructor(); - + }; BBTK_BEGIN_DESCRIBE_BLACK_BOX(ExecBbiCommand,bbtk::AtomicBlackBox); - BBTK_NAME("ExecBbiCommand"); - BBTK_AUTHOR("eduardo.davila@creatis.insa-lyon.fr"); - BBTK_DESCRIPTION("Executes bbi commands"); - BBTK_INPUT(ExecBbiCommand,In,"bbi commands separated by ';' , use '' to indicate strings ex. help 'graph' ",std::string,""); -// BBTK_OUTPUT(ExecBbiCommand,Out,"Concatenated string",std::string); + BBTK_NAME("ExecBbiCommand"); + BBTK_AUTHOR("eduardo.davila@creatis.insa-lyon.fr"); + BBTK_DESCRIPTION("Executes bbi commands"); + BBTK_INPUT(ExecBbiCommand,In,"bbi commands separated by ';' , use '' to indicate strings ex. help 'graph' ",std::string,""); + // BBTK_OUTPUT(ExecBbiCommand,Out,"Concatenated string",std::string); BBTK_END_DESCRIBE_BLACK_BOX(ExecBbiCommand); - + } // EO namespace bbstd #endif // __bbstdExecBbiCommand_h_INCLUDED__ diff --git a/packages/std/src/bbstdExecSystemCommand.cxx b/packages/std/src/bbstdExecSystemCommand.cxx index 0447b2b..5dfdf6b 100755 --- a/packages/std/src/bbstdExecSystemCommand.cxx +++ b/packages/std/src/bbstdExecSystemCommand.cxx @@ -6,7 +6,7 @@ namespace bbstd { BBTK_ADD_BLACK_BOX_TO_PACKAGE(std,ExecSystemCommand); - BBTK_USER_BLACK_BOX_IMPLEMENTATION(ExecSystemCommand,bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_IMPLEMENTATION(ExecSystemCommand,bbtk::AtomicBlackBox); void ExecSystemCommand::bbUserConstructor() { diff --git a/packages/std/src/bbstdExecSystemCommand.h b/packages/std/src/bbstdExecSystemCommand.h index e3b6ba1..9f070b8 100755 --- a/packages/std/src/bbstdExecSystemCommand.h +++ b/packages/std/src/bbstdExecSystemCommand.h @@ -10,9 +10,9 @@ namespace bbstd : public bbtk::AtomicBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(ExecSystemCommand,bbtk::AtomicBlackBox); - BBTK_DECLARE_INPUT(In,std::string); -// BBTK_DECLARE_OUTPUT(Out,std::string); + BBTK_BLACK_BOX_INTERFACE(ExecSystemCommand,bbtk::AtomicBlackBox); + BBTK_DECLARE_INPUT(In,std::string); + // BBTK_DECLARE_OUTPUT(Out,std::string); BBTK_PROCESS(DoProcess); void DoProcess(); @@ -22,13 +22,13 @@ namespace bbstd }; BBTK_BEGIN_DESCRIBE_BLACK_BOX(ExecSystemCommand,bbtk::AtomicBlackBox); - BBTK_NAME("ExecSystemCommand"); - BBTK_AUTHOR("eduardo.davila@creatis.insa-lyon.fr"); - BBTK_DESCRIPTION("Execute bbi commands"); - BBTK_INPUT(ExecSystemCommand,In,"bbi commands separated by ';' , use '' to indicate strings ex. help 'graph' ",std::string,""); -// BBTK_OUTPUT(ExecSystemCommand,Out,"Concatenated string",std::string); + BBTK_NAME("ExecSystemCommand"); + BBTK_AUTHOR("eduardo.davila@creatis.insa-lyon.fr"); + BBTK_DESCRIPTION("Execute bbi commands"); + BBTK_INPUT(ExecSystemCommand,In,"bbi commands separated by ';' , use '' to indicate strings ex. help 'graph' ",std::string,""); + // BBTK_OUTPUT(ExecSystemCommand,Out,"Concatenated string",std::string); BBTK_END_DESCRIBE_BLACK_BOX(ExecSystemCommand); - + } // EO namespace bbstd #endif // __bbstdExecSystemCommand_h_INCLUDED__ diff --git a/packages/std/src/bbstdMagicBox.cxx b/packages/std/src/bbstdMagicBox.cxx index 758467f..f11eb89 100644 --- a/packages/std/src/bbstdMagicBox.cxx +++ b/packages/std/src/bbstdMagicBox.cxx @@ -3,9 +3,9 @@ namespace bbstd { -BBTK_ADD_BLACK_BOX_TO_PACKAGE(std,MagicBox) -BBTK_USER_BLACK_BOX_IMPLEMENTATION(MagicBox,bbtk::AtomicBlackBox); - + BBTK_ADD_BLACK_BOX_TO_PACKAGE(std,MagicBox); + BBTK_BLACK_BOX_IMPLEMENTATION(MagicBox,bbtk::AtomicBlackBox); + } // EO namespace bbstd diff --git a/packages/std/src/bbstdMagicBox.h b/packages/std/src/bbstdMagicBox.h index 561e37b..55f0d7c 100644 --- a/packages/std/src/bbstdMagicBox.h +++ b/packages/std/src/bbstdMagicBox.h @@ -10,9 +10,9 @@ namespace bbstd : public bbtk::AtomicBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(MagicBox,bbtk::AtomicBlackBox); - BBTK_DECLARE_INPUT(In,bbtk::Data); - BBTK_DECLARE_OUTPUT(Out,bbtk::Data); + BBTK_BLACK_BOX_INTERFACE(MagicBox,bbtk::AtomicBlackBox); + BBTK_DECLARE_INPUT(In,bbtk::Data); + BBTK_DECLARE_OUTPUT(Out,bbtk::Data); BBTK_PROCESS(DoProcess); void DoProcess() { bbSetOutputOut( bbGetInputIn() ); } diff --git a/packages/std/src/bbstdMakeFileName.cxx b/packages/std/src/bbstdMakeFileName.cxx index e450d2c..5ab0115 100644 --- a/packages/std/src/bbstdMakeFileName.cxx +++ b/packages/std/src/bbstdMakeFileName.cxx @@ -5,28 +5,28 @@ namespace bbstd { - BBTK_ADD_BLACK_BOX_TO_PACKAGE(std,MakeFileName) - BBTK_USER_BLACK_BOX_IMPLEMENTATION(MakeFileName,bbtk::AtomicBlackBox); - - void MakeFileName::bbUserConstructor() - { - bbSetInputDirectory(""); - bbSetInputFile(""); - bbSetInputExtent(""); - } - - void MakeFileName::DoProcess() - { - std::string fileSep = bbtk::ConfigurationFile::GetInstance().Get_file_separator(); - std::string fullFileName = bbGetInputDirectory(); - if ( fullFileName.c_str()[fullFileName.size()-1] != '/' && fullFileName.c_str()[fullFileName.size()-1] != '\\' ) - fullFileName += fileSep; - fullFileName += bbGetInputFile(); - if ( bbGetInputExtent() != "") - if ( bbGetInputExtent()[0] != '.' ) - fullFileName += "."; - fullFileName += bbGetInputExtent(); - bbSetOutputOut( fullFileName ); - } + BBTK_ADD_BLACK_BOX_TO_PACKAGE(std,MakeFileName); + BBTK_BLACK_BOX_IMPLEMENTATION(MakeFileName,bbtk::AtomicBlackBox); + + void MakeFileName::bbUserConstructor() + { + bbSetInputDirectory(""); + bbSetInputFile(""); + bbSetInputExtent(""); + } + + void MakeFileName::DoProcess() + { + std::string fileSep = bbtk::ConfigurationFile::GetInstance().Get_file_separator(); + std::string fullFileName = bbGetInputDirectory(); + if ( fullFileName.c_str()[fullFileName.size()-1] != '/' && fullFileName.c_str()[fullFileName.size()-1] != '\\' ) + fullFileName += fileSep; + fullFileName += bbGetInputFile(); + if ( bbGetInputExtent() != "") + if ( bbGetInputExtent()[0] != '.' ) + fullFileName += "."; + fullFileName += bbGetInputExtent(); + bbSetOutputOut( fullFileName ); + } } // EO namespace bbstd diff --git a/packages/std/src/bbstdMakeFileName.h b/packages/std/src/bbstdMakeFileName.h index af94462..d9d6eab 100644 --- a/packages/std/src/bbstdMakeFileName.h +++ b/packages/std/src/bbstdMakeFileName.h @@ -9,11 +9,11 @@ namespace bbstd : public bbtk::AtomicBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(MakeFileName,bbtk::AtomicBlackBox); - BBTK_DECLARE_INPUT(Directory,std::string); - BBTK_DECLARE_INPUT(File,std::string); - BBTK_DECLARE_INPUT(Extent,std::string); - BBTK_DECLARE_OUTPUT(Out,std::string); + BBTK_BLACK_BOX_INTERFACE(MakeFileName,bbtk::AtomicBlackBox); + BBTK_DECLARE_INPUT(Directory,std::string); + BBTK_DECLARE_INPUT(File,std::string); + BBTK_DECLARE_INPUT(Extent,std::string); + BBTK_DECLARE_OUTPUT(Out,std::string); BBTK_PROCESS(DoProcess); void DoProcess(); diff --git a/packages/std/src/bbstdRelay.cxx b/packages/std/src/bbstdRelay.cxx index 5708563..af48614 100644 --- a/packages/std/src/bbstdRelay.cxx +++ b/packages/std/src/bbstdRelay.cxx @@ -8,10 +8,10 @@ namespace bbstd { //==================================================================== - BBTK_USER_BLACK_BOX_TEMPLATE_IMPLEMENTATION(Relay, - bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_TEMPLATE_IMPLEMENTATION(Relay, + bbtk::AtomicBlackBox); //==================================================================== - + //==================================================================== // Standard relays using namespace std; diff --git a/packages/std/src/bbstdRelay.h b/packages/std/src/bbstdRelay.h index 8ce2f93..c0ef92d 100644 --- a/packages/std/src/bbstdRelay.h +++ b/packages/std/src/bbstdRelay.h @@ -11,9 +11,9 @@ namespace bbstd : public bbtk::AtomicBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(Relay,bbtk::AtomicBlackBox); - BBTK_DECLARE_INPUT(In,T); - BBTK_DECLARE_OUTPUT(Out,T); + BBTK_TEMPLATE_BLACK_BOX_INTERFACE(Relay,bbtk::AtomicBlackBox,T); + BBTK_DECLARE_INPUT(In,T); + BBTK_DECLARE_OUTPUT(Out,T); BBTK_PROCESS(Process); protected: void Process() { bbSetOutputOut ( bbGetInputIn() ); } @@ -21,7 +21,7 @@ namespace bbstd //======================================================================= //======================================================================= - BBTK_BEGIN_DESCRIBE_TEMPLATE_BLACK_BOX(Relay); + BBTK_BEGIN_DESCRIBE_TEMPLATE_BLACK_BOX(Relay,bbtk::AtomicBlackBox); BBTK_NAME(bbtk::HumanTypeName()+"Relay"); BBTK_AUTHOR("laurent.guigues at creatis.insa-lyon.fr"); BBTK_CATEGORY("misc"); diff --git a/packages/std/src/bbstdStringSelect.cxx b/packages/std/src/bbstdStringSelect.cxx index 6316d0a..0c9bc95 100644 --- a/packages/std/src/bbstdStringSelect.cxx +++ b/packages/std/src/bbstdStringSelect.cxx @@ -4,40 +4,40 @@ namespace bbstd { - BBTK_ADD_BLACK_BOX_TO_PACKAGE(std,StringSelect) - BBTK_USER_BLACK_BOX_IMPLEMENTATION(StringSelect,bbtk::AtomicBlackBox); - - void StringSelect::bbUserConstructor() - { - bbSetInputIn(0); - bbSetInputIn0(""); - bbSetInputIn1(""); - bbSetInputIn2(""); - bbSetInputIn3(""); - bbSetInputIn4(""); - bbSetInputIn5(""); - bbSetInputIn6(""); - bbSetInputIn7(""); - bbSetInputIn8(""); - bbSetInputIn9(""); - } - - - - void StringSelect::DoProcess() - { - if (bbGetInputIn()==0) bbSetOutputOut( bbGetInputIn0() ); - else if (bbGetInputIn()==1) bbSetOutputOut( bbGetInputIn1() ); - else if (bbGetInputIn()==2) bbSetOutputOut( bbGetInputIn2() ); - else if (bbGetInputIn()==3) bbSetOutputOut( bbGetInputIn3() ); - else if (bbGetInputIn()==4) bbSetOutputOut( bbGetInputIn4() ); - else if (bbGetInputIn()==5) bbSetOutputOut( bbGetInputIn5() ); - else if (bbGetInputIn()==6) bbSetOutputOut( bbGetInputIn6() ); - else if (bbGetInputIn()==7) bbSetOutputOut( bbGetInputIn7() ); - else if (bbGetInputIn()==8) bbSetOutputOut( bbGetInputIn8() ); - else if (bbGetInputIn()==9) bbSetOutputOut( bbGetInputIn9() ); - - } + BBTK_ADD_BLACK_BOX_TO_PACKAGE(std,StringSelect) + BBTK_BLACK_BOX_IMPLEMENTATION(StringSelect,bbtk::AtomicBlackBox); + + void StringSelect::bbUserConstructor() + { + bbSetInputIn(0); + bbSetInputIn0(""); + bbSetInputIn1(""); + bbSetInputIn2(""); + bbSetInputIn3(""); + bbSetInputIn4(""); + bbSetInputIn5(""); + bbSetInputIn6(""); + bbSetInputIn7(""); + bbSetInputIn8(""); + bbSetInputIn9(""); + } + + + + void StringSelect::DoProcess() + { + if (bbGetInputIn()==0) bbSetOutputOut( bbGetInputIn0() ); + else if (bbGetInputIn()==1) bbSetOutputOut( bbGetInputIn1() ); + else if (bbGetInputIn()==2) bbSetOutputOut( bbGetInputIn2() ); + else if (bbGetInputIn()==3) bbSetOutputOut( bbGetInputIn3() ); + else if (bbGetInputIn()==4) bbSetOutputOut( bbGetInputIn4() ); + else if (bbGetInputIn()==5) bbSetOutputOut( bbGetInputIn5() ); + else if (bbGetInputIn()==6) bbSetOutputOut( bbGetInputIn6() ); + else if (bbGetInputIn()==7) bbSetOutputOut( bbGetInputIn7() ); + else if (bbGetInputIn()==8) bbSetOutputOut( bbGetInputIn8() ); + else if (bbGetInputIn()==9) bbSetOutputOut( bbGetInputIn9() ); + + } } // EO namespace bbstd diff --git a/packages/std/src/bbstdStringSelect.h b/packages/std/src/bbstdStringSelect.h index 8bafeba..9bdf09f 100644 --- a/packages/std/src/bbstdStringSelect.h +++ b/packages/std/src/bbstdStringSelect.h @@ -10,25 +10,25 @@ namespace bbstd : public bbtk::AtomicBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(StringSelect,bbtk::AtomicBlackBox); - BBTK_DECLARE_INPUT(In,int); - BBTK_DECLARE_INPUT(In0,std::string); - BBTK_DECLARE_INPUT(In1,std::string); - BBTK_DECLARE_INPUT(In2,std::string); - BBTK_DECLARE_INPUT(In3,std::string); - BBTK_DECLARE_INPUT(In4,std::string); - BBTK_DECLARE_INPUT(In5,std::string); - BBTK_DECLARE_INPUT(In6,std::string); - BBTK_DECLARE_INPUT(In7,std::string); - BBTK_DECLARE_INPUT(In8,std::string); - BBTK_DECLARE_INPUT(In9,std::string); - BBTK_DECLARE_OUTPUT(Out,std::string); + BBTK_BLACK_BOX_INTERFACE(StringSelect,bbtk::AtomicBlackBox); + BBTK_DECLARE_INPUT(In,int); + BBTK_DECLARE_INPUT(In0,std::string); + BBTK_DECLARE_INPUT(In1,std::string); + BBTK_DECLARE_INPUT(In2,std::string); + BBTK_DECLARE_INPUT(In3,std::string); + BBTK_DECLARE_INPUT(In4,std::string); + BBTK_DECLARE_INPUT(In5,std::string); + BBTK_DECLARE_INPUT(In6,std::string); + BBTK_DECLARE_INPUT(In7,std::string); + BBTK_DECLARE_INPUT(In8,std::string); + BBTK_DECLARE_INPUT(In9,std::string); + BBTK_DECLARE_OUTPUT(Out,std::string); BBTK_PROCESS(DoProcess); void DoProcess(); - + protected: virtual void bbUserConstructor(); - + }; //======================================================================= diff --git a/packages/std/src/bbstdStringTo.cxx b/packages/std/src/bbstdStringTo.cxx index 9ab6b06..af90ff3 100644 --- a/packages/std/src/bbstdStringTo.cxx +++ b/packages/std/src/bbstdStringTo.cxx @@ -6,8 +6,8 @@ namespace bbstd { //==================================================================== - BBTK_USER_BLACK_BOX_TEMPLATE_IMPLEMENTATION(StringTo, - bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_TEMPLATE_IMPLEMENTATION(StringTo, + bbtk::AtomicBlackBox); //==================================================================== //==================================================================== diff --git a/packages/std/src/bbstdStringTo.h b/packages/std/src/bbstdStringTo.h index 49e672c..61a8d57 100644 --- a/packages/std/src/bbstdStringTo.h +++ b/packages/std/src/bbstdStringTo.h @@ -10,9 +10,9 @@ namespace bbstd template class StringTo : public bbtk::AtomicBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(StringTo,bbtk::AtomicBlackBox); - BBTK_DECLARE_INPUT(In,std::string); - BBTK_DECLARE_OUTPUT(Out,T); + BBTK_TEMPLATE_BLACK_BOX_INTERFACE(StringTo,bbtk::AtomicBlackBox,T); + BBTK_DECLARE_INPUT(In,std::string); + BBTK_DECLARE_OUTPUT(Out,T); BBTK_PROCESS(DoIt); void DoIt(); }; @@ -20,7 +20,7 @@ namespace bbstd //================================================================= // BlackBox description - BBTK_BEGIN_DESCRIBE_TEMPLATE_BLACK_BOX(StringTo); + BBTK_BEGIN_DESCRIBE_TEMPLATE_BLACK_BOX(StringTo,bbtk::AtomicBlackBox); BBTK_NAME("StringTo"+bbtk::HumanTypeName()); BBTK_AUTHOR("laurent.guigues@creatis.insa-lyon.fr"); BBTK_DEFAULT_ADAPTOR(); diff --git a/packages/std/src/bbstdStringToVector.cxx b/packages/std/src/bbstdStringToVector.cxx index 18ed459..0d1f506 100644 --- a/packages/std/src/bbstdStringToVector.cxx +++ b/packages/std/src/bbstdStringToVector.cxx @@ -5,8 +5,8 @@ namespace bbstd { //==================================================================== - BBTK_USER_BLACK_BOX_TEMPLATE_IMPLEMENTATION(StringToVector, - bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_TEMPLATE_IMPLEMENTATION(StringToVector, + bbtk::AtomicBlackBox); //==================================================================== diff --git a/packages/std/src/bbstdStringToVector.h b/packages/std/src/bbstdStringToVector.h index bd5d9f2..31305d3 100644 --- a/packages/std/src/bbstdStringToVector.h +++ b/packages/std/src/bbstdStringToVector.h @@ -10,7 +10,7 @@ namespace bbstd template class StringToVector : public bbtk::AtomicBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(StringToVector,bbtk::AtomicBlackBox); + BBTK_TEMPLATE_BLACK_BOX_INTERFACE(StringToVector,bbtk::AtomicBlackBox,T); BBTK_DECLARE_INPUT(In,std::string); BBTK_DECLARE_OUTPUT(Out,std::vector); BBTK_PROCESS(DoIt); @@ -21,7 +21,7 @@ namespace bbstd //================================================================= // BlackBox description - BBTK_BEGIN_DESCRIBE_TEMPLATE_BLACK_BOX(StringToVector); + BBTK_BEGIN_DESCRIBE_TEMPLATE_BLACK_BOX(StringToVector,bbtk::AtomicBlackBox); BBTK_NAME("StringTo"+bbtk::HumanTypeName >()); BBTK_AUTHOR("laurent.guigues@creatis.insa-lyon.fr"); BBTK_DEFAULT_ADAPTOR(); diff --git a/packages/std/src/bbstdToString.cxx b/packages/std/src/bbstdToString.cxx index 75022c6..4982349 100644 --- a/packages/std/src/bbstdToString.cxx +++ b/packages/std/src/bbstdToString.cxx @@ -7,8 +7,8 @@ namespace bbstd { //==================================================================== - BBTK_USER_BLACK_BOX_TEMPLATE_IMPLEMENTATION(ToString, - bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_TEMPLATE_IMPLEMENTATION(ToString, + bbtk::AtomicBlackBox); //==================================================================== //==================================================================== diff --git a/packages/std/src/bbstdToString.h b/packages/std/src/bbstdToString.h index b69312d..f1be738 100644 --- a/packages/std/src/bbstdToString.h +++ b/packages/std/src/bbstdToString.h @@ -10,9 +10,9 @@ namespace bbstd template class ToString : public bbtk::AtomicBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(ToString,bbtk::AtomicBlackBox); - BBTK_DECLARE_INPUT(In,T); - BBTK_DECLARE_OUTPUT(Out,std::string); + BBTK_TEMPLATE_BLACK_BOX_INTERFACE(ToString,bbtk::AtomicBlackBox,T); + BBTK_DECLARE_INPUT(In,T); + BBTK_DECLARE_OUTPUT(Out,std::string); BBTK_PROCESS(DoIt); void DoIt(); }; @@ -20,7 +20,7 @@ namespace bbstd //================================================================= // BlackBox description - BBTK_BEGIN_DESCRIBE_TEMPLATE_BLACK_BOX(ToString); + BBTK_BEGIN_DESCRIBE_TEMPLATE_BLACK_BOX(ToString,bbtk::AtomicBlackBox); BBTK_NAME(bbtk::HumanTypeName()+"ToString"); BBTK_AUTHOR("laurent.guigues@creatis.insa-lyon.fr"); BBTK_DEFAULT_ADAPTOR(); diff --git a/packages/std/src/bbstdVectorToString.cxx b/packages/std/src/bbstdVectorToString.cxx index cd9d96a..d6c164d 100644 --- a/packages/std/src/bbstdVectorToString.cxx +++ b/packages/std/src/bbstdVectorToString.cxx @@ -5,8 +5,8 @@ namespace bbstd { //==================================================================== - BBTK_USER_BLACK_BOX_TEMPLATE_IMPLEMENTATION(VectorToString, - bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_TEMPLATE_IMPLEMENTATION(VectorToString, + bbtk::AtomicBlackBox); //==================================================================== diff --git a/packages/std/src/bbstdVectorToString.h b/packages/std/src/bbstdVectorToString.h index 96816d7..0a48b6c 100644 --- a/packages/std/src/bbstdVectorToString.h +++ b/packages/std/src/bbstdVectorToString.h @@ -10,10 +10,10 @@ namespace bbstd template class VectorToString : public bbtk::AtomicBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(VectorToString,bbtk::AtomicBlackBox); - BBTK_DECLARE_INPUT(In,std::vector); - BBTK_DECLARE_INPUT(Separator,std::string); - BBTK_DECLARE_OUTPUT(Out,std::string); + BBTK_TEMPLATE_BLACK_BOX_INTERFACE(VectorToString,bbtk::AtomicBlackBox,T); + BBTK_DECLARE_INPUT(In,std::vector); + BBTK_DECLARE_INPUT(Separator,std::string); + BBTK_DECLARE_OUTPUT(Out,std::string); BBTK_PROCESS(DoIt); void DoIt(); virtual void bbUserConstructor(); @@ -22,7 +22,7 @@ namespace bbstd //================================================================= // BlackBox description - BBTK_BEGIN_DESCRIBE_TEMPLATE_BLACK_BOX(VectorToString); + BBTK_BEGIN_DESCRIBE_TEMPLATE_BLACK_BOX(VectorToString,bbtk::AtomicBlackBox); BBTK_NAME(bbtk::HumanTypeName >()+"ToString"); BBTK_AUTHOR("laurent.guigues@creatis.insa-lyon.fr"); BBTK_DEFAULT_ADAPTOR(); diff --git a/packages/vtk/src/bbvtkImageDataToString.cxx b/packages/vtk/src/bbvtkImageDataToString.cxx index 5bcdd96..3935d1a 100644 --- a/packages/vtk/src/bbvtkImageDataToString.cxx +++ b/packages/vtk/src/bbvtkImageDataToString.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbvtkImageDataToString.cxx,v $ Language: C++ - Date: $Date: 2008/02/15 08:46:19 $ - Version: $Revision: 1.1 $ + Date: $Date: 2008/04/18 12:59:52 $ + Version: $Revision: 1.2 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -39,8 +39,8 @@ namespace bbtk namespace bbstd { //==================================================================== - BBTK_USER_BLACK_BOX_TEMPLATE_IMPLEMENTATION(ToString, - bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_TEMPLATE_IMPLEMENTATION(ToString, + bbtk::AtomicBlackBox); //==================================================================== diff --git a/packages/vtk/src/bbvtkImagePlanes.cxx b/packages/vtk/src/bbvtkImagePlanes.cxx index fcb77af..6f46cf3 100644 --- a/packages/vtk/src/bbvtkImagePlanes.cxx +++ b/packages/vtk/src/bbvtkImagePlanes.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbvtkImagePlanes.cxx,v $ Language: C++ - Date: $Date: 2008/04/01 14:26:22 $ - Version: $Revision: 1.1 $ + Date: $Date: 2008/04/18 12:59:52 $ + Version: $Revision: 1.2 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -32,8 +32,8 @@ namespace bbstd { //==================================================================== - BBTK_USER_BLACK_BOX_TEMPLATE2_IMPLEMENTATION(Cast, - bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_TEMPLATE2_IMPLEMENTATION(Cast, + bbtk::AtomicBlackBox); //==================================================================== } @@ -56,7 +56,7 @@ namespace bbvtk BBTK_ADD_BLACK_BOX_TO_PACKAGE(vtk,ImagePlanes) - BBTK_USER_BLACK_BOX_IMPLEMENTATION(ImagePlanes,bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_IMPLEMENTATION(ImagePlanes,bbtk::AtomicBlackBox); diff --git a/packages/vtk/src/bbvtkImagePlanes.h b/packages/vtk/src/bbvtkImagePlanes.h index 863ca66..df25307 100644 --- a/packages/vtk/src/bbvtkImagePlanes.h +++ b/packages/vtk/src/bbvtkImagePlanes.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbvtkImagePlanes.h,v $ Language: C++ - Date: $Date: 2008/04/08 06:59:32 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/04/18 12:59:52 $ + Version: $Revision: 1.3 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -58,7 +58,7 @@ namespace bbvtk class /*BBTK_EXPORT*/ ImagePlanes : public bbtk::AtomicBlackBox { public: - BBTK_USER_BLACK_BOX_INTERFACE(ImagePlanes,bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_INTERFACE(ImagePlanes,bbtk::AtomicBlackBox); // BBTK_DECLARE_INPUT(Contour,int); BBTK_DECLARE_INPUT(In,vtkImageData *); BBTK_DECLARE_OUTPUT(PlaneX,vtkImagePlaneWidget*); diff --git a/packages/vtk/src/bbvtkIsoSurfaceExtractor.cxx b/packages/vtk/src/bbvtkIsoSurfaceExtractor.cxx index 782c00e..3e4e55f 100644 --- a/packages/vtk/src/bbvtkIsoSurfaceExtractor.cxx +++ b/packages/vtk/src/bbvtkIsoSurfaceExtractor.cxx @@ -4,8 +4,8 @@ Program: bbtk Module: $RCSfile: bbvtkIsoSurfaceExtractor.cxx,v $ Language: C++ - Date: $Date: 2008/03/19 13:30:18 $ - Version: $Revision: 1.3 $ + Date: $Date: 2008/04/18 12:59:52 $ + Version: $Revision: 1.4 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -32,7 +32,7 @@ namespace bbvtk { BBTK_ADD_BLACK_BOX_TO_PACKAGE(vtk,IsoSurfaceExtractor) - BBTK_USER_BLACK_BOX_IMPLEMENTATION(IsoSurfaceExtractor,bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_IMPLEMENTATION(IsoSurfaceExtractor,bbtk::AtomicBlackBox); void IsoSurfaceExtractor::bbUserConstructor() { diff --git a/packages/vtk/src/bbvtkIsoSurfaceExtractor.h b/packages/vtk/src/bbvtkIsoSurfaceExtractor.h index 5cebfec..8e34cf2 100644 --- a/packages/vtk/src/bbvtkIsoSurfaceExtractor.h +++ b/packages/vtk/src/bbvtkIsoSurfaceExtractor.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbvtkIsoSurfaceExtractor.h,v $ Language: C++ - Date: $Date: 2008/04/08 06:59:32 $ - Version: $Revision: 1.4 $ + Date: $Date: 2008/04/18 12:59:52 $ + Version: $Revision: 1.5 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -59,7 +59,7 @@ namespace bbvtk vtkActor *vtkactor; - BBTK_USER_BLACK_BOX_INTERFACE(IsoSurfaceExtractor,bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_INTERFACE(IsoSurfaceExtractor,bbtk::AtomicBlackBox); BBTK_DECLARE_INPUT(In,vtkImageData *); // BBTK_DECLARE_INPUT(InVtkObject,vtkObject *); diff --git a/packages/vtk/src/bbvtkMIPCreator.cxx b/packages/vtk/src/bbvtkMIPCreator.cxx index 708d194..be2a7d4 100644 --- a/packages/vtk/src/bbvtkMIPCreator.cxx +++ b/packages/vtk/src/bbvtkMIPCreator.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbvtkMIPCreator.cxx,v $ Language: C++ - Date: $Date: 2008/03/19 13:30:18 $ - Version: $Revision: 1.1 $ + Date: $Date: 2008/04/18 12:59:52 $ + Version: $Revision: 1.2 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -33,7 +33,7 @@ namespace bbvtk BBTK_ADD_BLACK_BOX_TO_PACKAGE(vtk,MIPCreator) - BBTK_USER_BLACK_BOX_IMPLEMENTATION(MIPCreator,bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_IMPLEMENTATION(MIPCreator,bbtk::AtomicBlackBox); diff --git a/packages/vtk/src/bbvtkMIPCreator.h b/packages/vtk/src/bbvtkMIPCreator.h index cf04d79..28f4358 100644 --- a/packages/vtk/src/bbvtkMIPCreator.h +++ b/packages/vtk/src/bbvtkMIPCreator.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbvtkMIPCreator.h,v $ Language: C++ - Date: $Date: 2008/04/08 06:59:32 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/04/18 12:59:52 $ + Version: $Revision: 1.3 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -54,7 +54,7 @@ namespace bbvtk class /*BBTK_EXPORT*/ MIPCreator : public bbtk::AtomicBlackBox { public: - BBTK_USER_BLACK_BOX_INTERFACE(MIPCreator,bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_INTERFACE(MIPCreator,bbtk::AtomicBlackBox); // BBTK_DECLARE_INPUT(Contour,int); BBTK_DECLARE_INPUT(In,vtkImageData *); BBTK_DECLARE_INPUT(Shift,int); diff --git a/packages/vtk/src/bbvtkMarchingCubes.cxx b/packages/vtk/src/bbvtkMarchingCubes.cxx index 98dd19e..49d1f1d 100644 --- a/packages/vtk/src/bbvtkMarchingCubes.cxx +++ b/packages/vtk/src/bbvtkMarchingCubes.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbvtkMarchingCubes.cxx,v $ Language: C++ - Date: $Date: 2008/02/13 08:21:38 $ - Version: $Revision: 1.1 $ + Date: $Date: 2008/04/18 12:59:52 $ + Version: $Revision: 1.2 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -30,7 +30,7 @@ namespace bbvtk { BBTK_ADD_BLACK_BOX_TO_PACKAGE(vtk,MarchingCubes) - BBTK_USER_BLACK_BOX_IMPLEMENTATION(MarchingCubes,bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_IMPLEMENTATION(MarchingCubes,bbtk::AtomicBlackBox); } // EO namespace bbvtk diff --git a/packages/vtk/src/bbvtkMarchingCubes.h b/packages/vtk/src/bbvtkMarchingCubes.h index b281f7e..6ad9555 100644 --- a/packages/vtk/src/bbvtkMarchingCubes.h +++ b/packages/vtk/src/bbvtkMarchingCubes.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbvtkMarchingCubes.h,v $ Language: C++ - Date: $Date: 2008/04/08 06:59:32 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/04/18 12:59:52 $ + Version: $Revision: 1.3 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -49,7 +49,7 @@ namespace bbvtk public bbtk::AtomicBlackBox, public vtkMarchingCubes { - BBTK_USER_BLACK_BOX_INTERFACE(MarchingCubes,bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_INTERFACE(MarchingCubes,bbtk::AtomicBlackBox); BBTK_DECLARE_VTK_INPUT(vtkMarchingCubes,In,vtkImageData *); BBTK_DECLARE_VTK_OUTPUT(vtkMarchingCubes,Out,vtkPolyData *); diff --git a/packages/wx/src/bbwxColourSelector.cxx b/packages/wx/src/bbwxColourSelector.cxx index 341c6e4..9b03e2d 100644 --- a/packages/wx/src/bbwxColourSelector.cxx +++ b/packages/wx/src/bbwxColourSelector.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbwxColourSelector.cxx,v $ Language: C++ - Date: $Date: 2008/03/21 10:09:11 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/04/18 12:59:52 $ + Version: $Revision: 1.3 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -31,7 +31,7 @@ namespace bbwx { BBTK_ADD_BLACK_BOX_TO_PACKAGE(wx,ColourSelector); - BBTK_USER_BLACK_BOX_IMPLEMENTATION(ColourSelector,bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_IMPLEMENTATION(ColourSelector,bbtk::AtomicBlackBox); void ColourSelector::bbUserConstructor() { diff --git a/packages/wx/src/bbwxColourSelector.h b/packages/wx/src/bbwxColourSelector.h index 885951d..84d4318 100644 --- a/packages/wx/src/bbwxColourSelector.h +++ b/packages/wx/src/bbwxColourSelector.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbwxColourSelector.h,v $ Language: C++ - Date: $Date: 2008/04/08 06:59:32 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/04/18 12:59:52 $ + Version: $Revision: 1.3 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -46,7 +46,7 @@ namespace bbwx //================================================================= class /*BBTK_EXPORT*/ ColourSelector : public bbtk::AtomicBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(ColourSelector,bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_INTERFACE(ColourSelector,bbtk::AtomicBlackBox); BBTK_DECLARE_OUTPUT(Out,std::string); BBTK_PROCESS(Process); // BBTK_CREATE_WIDGET(CreateWidget); diff --git a/packages/wx/src/bbwxColourSelectorButton.cxx b/packages/wx/src/bbwxColourSelectorButton.cxx index bfb48b0..0280ac2 100644 --- a/packages/wx/src/bbwxColourSelectorButton.cxx +++ b/packages/wx/src/bbwxColourSelectorButton.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbwxColourSelectorButton.cxx,v $ Language: C++ - Date: $Date: 2008/03/10 06:24:13 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/04/18 12:59:52 $ + Version: $Revision: 1.3 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -101,7 +101,7 @@ void wxColourPickerCtrlWidget::UpdateBox() //-------------------------------------------------------------------------- - BBTK_USER_BLACK_BOX_IMPLEMENTATION(ColourSelectorButton,bbtk::WxBlackBox); + BBTK_BLACK_BOX_IMPLEMENTATION(ColourSelectorButton,bbtk::WxBlackBox); BBTK_ADD_BLACK_BOX_TO_PACKAGE(wx,ColourSelectorButton); void ColourSelectorButton::bbUserConstructor() diff --git a/packages/wx/src/bbwxColourSelectorButton.h b/packages/wx/src/bbwxColourSelectorButton.h index 4d51d1a..22dd101 100644 --- a/packages/wx/src/bbwxColourSelectorButton.h +++ b/packages/wx/src/bbwxColourSelectorButton.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbwxColourSelectorButton.h,v $ Language: C++ - Date: $Date: 2008/04/08 06:59:32 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/04/18 12:59:52 $ + Version: $Revision: 1.3 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -80,7 +80,7 @@ private: // The black box class /*BBTK_EXPORT*/ ColourSelectorButton : public bbtk::WxBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(ColourSelectorButton,bbtk::WxBlackBox); + BBTK_BLACK_BOX_INTERFACE(ColourSelectorButton,bbtk::WxBlackBox); BBTK_DECLARE_INPUT(In,std::string); BBTK_DECLARE_OUTPUT(Out,std::string); BBTK_PROCESS(Process); diff --git a/packages/wx/src/bbwxCommandButton.cxx b/packages/wx/src/bbwxCommandButton.cxx index 2b943b2..e48681d 100644 --- a/packages/wx/src/bbwxCommandButton.cxx +++ b/packages/wx/src/bbwxCommandButton.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbwxCommandButton.cxx,v $ Language: C++ - Date: $Date: 2008/03/26 14:47:37 $ - Version: $Revision: 1.6 $ + Date: $Date: 2008/04/18 12:59:52 $ + Version: $Revision: 1.7 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -68,12 +68,10 @@ namespace bbwx void CommandButtonWidget::OnCommandButton( wxEvent& ) { // Look for the interpreter - bbtk::Interpreter* I = 0; + bbtk::Interpreter::Pointer I; if (mBox->bbGetParent() != 0) { - bbtk::Factory* f = - ((bbtk::ComplexBlackBoxDescriptor*)mBox->bbGetParent() - ->bbGetDescriptor())->GetFactory(); + bbtk::Factory::Pointer f = boost::dynamic_pointer_cast(mBox->bbGetParent()->bbGetDescriptor())->GetFactory(); if ((f != 0)&& (f->GetExecuter())) { @@ -83,7 +81,7 @@ namespace bbwx if (I==0) { // bbtkError("ExecBbiCommand::DoProcess() : could not find interpreter"); - I = new bbtk::Interpreter(); + I = bbtk::Interpreter::New(); } std::string commandstr(mBox->bbGetInputIn()); @@ -145,7 +143,7 @@ namespace bbwx //-------------------------------------------------------------------------- - BBTK_USER_BLACK_BOX_IMPLEMENTATION(CommandButton,bbtk::WxBlackBox); + BBTK_BLACK_BOX_IMPLEMENTATION(CommandButton,bbtk::WxBlackBox); void CommandButton::bbUserConstructor() { diff --git a/packages/wx/src/bbwxCommandButton.h b/packages/wx/src/bbwxCommandButton.h index 9e58b1a..4702c62 100644 --- a/packages/wx/src/bbwxCommandButton.h +++ b/packages/wx/src/bbwxCommandButton.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbwxCommandButton.h,v $ Language: C++ - Date: $Date: 2008/04/08 06:59:32 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/04/18 12:59:52 $ + Version: $Revision: 1.3 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -67,7 +67,7 @@ namespace bbwx class /*BBTK_EXPORT*/ CommandButton : public bbtk::WxBlackBox { friend class CommandButtonWidget; - BBTK_USER_BLACK_BOX_INTERFACE(CommandButton,bbtk::WxBlackBox); + BBTK_BLACK_BOX_INTERFACE(CommandButton,bbtk::WxBlackBox); BBTK_DECLARE_INPUT(In, std::string ); BBTK_DECLARE_INPUT(Label, std::string ); BBTK_DECLARE_INPUT(Colour, std::vector ); diff --git a/packages/wx/src/bbwxDirectorySelector.cxx b/packages/wx/src/bbwxDirectorySelector.cxx index a0b4f5c..4ac2edb 100644 --- a/packages/wx/src/bbwxDirectorySelector.cxx +++ b/packages/wx/src/bbwxDirectorySelector.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbwxDirectorySelector.cxx,v $ Language: C++ - Date: $Date: 2008/03/17 07:04:09 $ - Version: $Revision: 1.3 $ + Date: $Date: 2008/04/18 12:59:52 $ + Version: $Revision: 1.4 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -35,7 +35,7 @@ namespace bbwx BBTK_ADD_BLACK_BOX_TO_PACKAGE(wx,DirectorySelector); - BBTK_USER_BLACK_BOX_IMPLEMENTATION(DirectorySelector,bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_IMPLEMENTATION(DirectorySelector,bbtk::AtomicBlackBox); void DirectorySelector::Process() diff --git a/packages/wx/src/bbwxDirectorySelector.h b/packages/wx/src/bbwxDirectorySelector.h index b4f1753..82bfe63 100644 --- a/packages/wx/src/bbwxDirectorySelector.h +++ b/packages/wx/src/bbwxDirectorySelector.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbwxDirectorySelector.h,v $ Language: C++ - Date: $Date: 2008/04/08 06:59:32 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/04/18 12:59:52 $ + Version: $Revision: 1.3 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -49,7 +49,7 @@ namespace bbwx //================================================================= class /*BBTK_EXPORT*/ DirectorySelector : public bbtk::AtomicBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(DirectorySelector,bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_INTERFACE(DirectorySelector,bbtk::AtomicBlackBox); BBTK_DECLARE_INPUT(Title,std::string); BBTK_DECLARE_INPUT(Message,std::string); BBTK_DECLARE_INPUT(DefaultDir,std::string); diff --git a/packages/wx/src/bbwxFileSelector.cxx b/packages/wx/src/bbwxFileSelector.cxx index 53e3ee3..4a049c5 100644 --- a/packages/wx/src/bbwxFileSelector.cxx +++ b/packages/wx/src/bbwxFileSelector.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbwxFileSelector.cxx,v $ Language: C++ - Date: $Date: 2008/02/15 12:47:18 $ - Version: $Revision: 1.1 $ + Date: $Date: 2008/04/18 12:59:52 $ + Version: $Revision: 1.2 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -36,7 +36,7 @@ namespace bbwx BBTK_ADD_BLACK_BOX_TO_PACKAGE(wx,FileSelector); - BBTK_USER_BLACK_BOX_IMPLEMENTATION(FileSelector,bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_IMPLEMENTATION(FileSelector,bbtk::AtomicBlackBox); void FileSelector::Process() diff --git a/packages/wx/src/bbwxFileSelector.h b/packages/wx/src/bbwxFileSelector.h index 836bf44..051754b 100644 --- a/packages/wx/src/bbwxFileSelector.h +++ b/packages/wx/src/bbwxFileSelector.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbwxFileSelector.h,v $ Language: C++ - Date: $Date: 2008/04/08 06:59:32 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/04/18 12:59:52 $ + Version: $Revision: 1.3 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -49,7 +49,7 @@ namespace bbwx //================================================================= class /*BBTK_EXPORT*/ FileSelector : public bbtk::AtomicBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(FileSelector,bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_INTERFACE(FileSelector,bbtk::AtomicBlackBox); BBTK_DECLARE_INPUT(Title,std::string); BBTK_DECLARE_INPUT(Message,std::string); BBTK_DECLARE_INPUT(DefaultDir,std::string); diff --git a/packages/wx/src/bbwxInputText.cxx b/packages/wx/src/bbwxInputText.cxx index 5b3dd20..13bf006 100644 --- a/packages/wx/src/bbwxInputText.cxx +++ b/packages/wx/src/bbwxInputText.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbwxInputText.cxx,v $ Language: C++ - Date: $Date: 2008/02/15 12:47:18 $ - Version: $Revision: 1.1 $ + Date: $Date: 2008/04/18 12:59:52 $ + Version: $Revision: 1.2 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -106,7 +106,7 @@ namespace bbwx //-------------------------------------------------------------------------- - BBTK_USER_BLACK_BOX_IMPLEMENTATION(InputText,bbtk::WxBlackBox); + BBTK_BLACK_BOX_IMPLEMENTATION(InputText,bbtk::WxBlackBox); diff --git a/packages/wx/src/bbwxInputText.h b/packages/wx/src/bbwxInputText.h index 0db6f4e..18226a7 100644 --- a/packages/wx/src/bbwxInputText.h +++ b/packages/wx/src/bbwxInputText.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbwxInputText.h,v $ Language: C++ - Date: $Date: 2008/04/08 06:59:32 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/04/18 12:59:52 $ + Version: $Revision: 1.3 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -78,7 +78,7 @@ namespace bbwx class /*BBTK_EXPORT*/ InputText : public bbtk::WxBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(InputText,bbtk::WxBlackBox); + BBTK_BLACK_BOX_INTERFACE(InputText,bbtk::WxBlackBox); BBTK_DECLARE_INPUT(In,std::string); BBTK_DECLARE_INPUT(Title,std::string); BBTK_DECLARE_OUTPUT(Out,std::string); diff --git a/packages/wx/src/bbwxLayoutLine.cxx b/packages/wx/src/bbwxLayoutLine.cxx index 6740462..d2289d7 100644 --- a/packages/wx/src/bbwxLayoutLine.cxx +++ b/packages/wx/src/bbwxLayoutLine.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbwxLayoutLine.cxx,v $ Language: C++ - Date: $Date: 2008/03/10 10:01:15 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/04/18 12:59:52 $ + Version: $Revision: 1.3 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -31,7 +31,7 @@ namespace bbwx { BBTK_ADD_BLACK_BOX_TO_PACKAGE(wx, LayoutLine); - BBTK_USER_BLACK_BOX_IMPLEMENTATION(LayoutLine,bbtk::WxBlackBox); + BBTK_BLACK_BOX_IMPLEMENTATION(LayoutLine,bbtk::WxBlackBox); void LayoutLine::bbUserConstructor() { diff --git a/packages/wx/src/bbwxLayoutLine.h b/packages/wx/src/bbwxLayoutLine.h index a9e9909..952941d 100644 --- a/packages/wx/src/bbwxLayoutLine.h +++ b/packages/wx/src/bbwxLayoutLine.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbwxLayoutLine.h,v $ Language: C++ - Date: $Date: 2008/04/08 06:59:32 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/04/18 12:59:53 $ + Version: $Revision: 1.3 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -49,7 +49,7 @@ namespace bbwx class /*BBTK_EXPORT*/ LayoutLine : public bbtk::WxBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(LayoutLine,bbtk::WxBlackBox); + BBTK_BLACK_BOX_INTERFACE(LayoutLine,bbtk::WxBlackBox); BBTK_DECLARE_INPUT(Widget1,wxWindow*); BBTK_DECLARE_INPUT(Widget2,wxWindow*); BBTK_DECLARE_INPUT(Widget3,wxWindow*); diff --git a/packages/wx/src/bbwxLayoutSplit.cxx b/packages/wx/src/bbwxLayoutSplit.cxx index 4575074..1f9e079 100644 --- a/packages/wx/src/bbwxLayoutSplit.cxx +++ b/packages/wx/src/bbwxLayoutSplit.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbwxLayoutSplit.cxx,v $ Language: C++ - Date: $Date: 2008/02/15 12:24:43 $ - Version: $Revision: 1.1 $ + Date: $Date: 2008/04/18 12:59:53 $ + Version: $Revision: 1.2 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -31,7 +31,7 @@ namespace bbwx { BBTK_ADD_BLACK_BOX_TO_PACKAGE(wx,LayoutSplit); - BBTK_USER_BLACK_BOX_IMPLEMENTATION(LayoutSplit,bbtk::WxBlackBox); + BBTK_BLACK_BOX_IMPLEMENTATION(LayoutSplit,bbtk::WxBlackBox); void LayoutSplit::bbUserConstructor() { diff --git a/packages/wx/src/bbwxLayoutSplit.h b/packages/wx/src/bbwxLayoutSplit.h index 32424b3..9e21471 100644 --- a/packages/wx/src/bbwxLayoutSplit.h +++ b/packages/wx/src/bbwxLayoutSplit.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbwxLayoutSplit.h,v $ Language: C++ - Date: $Date: 2008/04/08 06:59:32 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/04/18 12:59:53 $ + Version: $Revision: 1.3 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -46,7 +46,7 @@ namespace bbwx class LayoutSplit : public bbtk::WxBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(LayoutSplit,bbtk::WxBlackBox); + BBTK_BLACK_BOX_INTERFACE(LayoutSplit,bbtk::WxBlackBox); BBTK_DECLARE_INPUT(Widget1,wxWindow*); BBTK_DECLARE_INPUT(Widget2,wxWindow*); BBTK_DECLARE_INPUT(Orientation,std::string); diff --git a/packages/wx/src/bbwxLayoutTab.cxx b/packages/wx/src/bbwxLayoutTab.cxx index b61b23c..d6cd1de 100644 --- a/packages/wx/src/bbwxLayoutTab.cxx +++ b/packages/wx/src/bbwxLayoutTab.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbwxLayoutTab.cxx,v $ Language: C++ - Date: $Date: 2008/02/19 18:31:36 $ - Version: $Revision: 1.1 $ + Date: $Date: 2008/04/18 12:59:53 $ + Version: $Revision: 1.2 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -36,7 +36,7 @@ namespace bbwx BBTK_ADD_BLACK_BOX_TO_PACKAGE(wx , LayoutTab); - BBTK_USER_BLACK_BOX_IMPLEMENTATION(LayoutTab,bbtk::WxBlackBox); + BBTK_BLACK_BOX_IMPLEMENTATION(LayoutTab,bbtk::WxBlackBox); void LayoutTab::bbUserConstructor() { diff --git a/packages/wx/src/bbwxLayoutTab.h b/packages/wx/src/bbwxLayoutTab.h index 6827853..5049b9b 100644 --- a/packages/wx/src/bbwxLayoutTab.h +++ b/packages/wx/src/bbwxLayoutTab.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbwxLayoutTab.h,v $ Language: C++ - Date: $Date: 2008/04/08 06:59:32 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/04/18 12:59:53 $ + Version: $Revision: 1.3 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -49,7 +49,7 @@ namespace bbwx class /*BBTK_EXPORT*/ LayoutTab : public bbtk::WxBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(LayoutTab,bbtk::WxBlackBox); + BBTK_BLACK_BOX_INTERFACE(LayoutTab,bbtk::WxBlackBox); BBTK_DECLARE_INPUT(Widget1,wxWindow*); BBTK_DECLARE_INPUT(Widget2,wxWindow*); BBTK_DECLARE_INPUT(Widget3,wxWindow*); diff --git a/packages/wx/src/bbwxRadioButton.cxx b/packages/wx/src/bbwxRadioButton.cxx index f415c66..4a23029 100644 --- a/packages/wx/src/bbwxRadioButton.cxx +++ b/packages/wx/src/bbwxRadioButton.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbwxRadioButton.cxx,v $ Language: C++ - Date: $Date: 2008/02/14 20:26:54 $ - Version: $Revision: 1.3 $ + Date: $Date: 2008/04/18 12:59:53 $ + Version: $Revision: 1.4 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -139,7 +139,7 @@ namespace bbwx //-------------------------------------------------------------------------- - BBTK_USER_BLACK_BOX_IMPLEMENTATION(RadioButton,bbtk::WxBlackBox); + BBTK_BLACK_BOX_IMPLEMENTATION(RadioButton,bbtk::WxBlackBox); void RadioButton::bbUserConstructor() diff --git a/packages/wx/src/bbwxRadioButton.h b/packages/wx/src/bbwxRadioButton.h index f6764e4..c6c4b7a 100644 --- a/packages/wx/src/bbwxRadioButton.h +++ b/packages/wx/src/bbwxRadioButton.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbwxRadioButton.h,v $ Language: C++ - Date: $Date: 2008/04/08 06:59:32 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/04/18 12:59:53 $ + Version: $Revision: 1.3 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -79,7 +79,7 @@ namespace bbwx class /*BBTK_EXPORT*/ RadioButton : public bbtk::WxBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(RadioButton,bbtk::WxBlackBox); + BBTK_BLACK_BOX_INTERFACE(RadioButton,bbtk::WxBlackBox); BBTK_DECLARE_INPUT(In,int); BBTK_DECLARE_INPUT(In0,std::string); BBTK_DECLARE_INPUT(In1,std::string); diff --git a/packages/wx/src/bbwxSlider.cxx b/packages/wx/src/bbwxSlider.cxx index 192553b..5345a00 100644 --- a/packages/wx/src/bbwxSlider.cxx +++ b/packages/wx/src/bbwxSlider.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbwxSlider.cxx,v $ Language: C++ - Date: $Date: 2008/03/10 12:28:43 $ - Version: $Revision: 1.10 $ + Date: $Date: 2008/04/18 12:59:53 $ + Version: $Revision: 1.11 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -326,7 +326,7 @@ namespace bbwx //-------------------------------------------------------------------------- //-------------------------------------------------------------------------- - BBTK_USER_BLACK_BOX_IMPLEMENTATION(Slider,bbtk::WxBlackBox); + BBTK_BLACK_BOX_IMPLEMENTATION(Slider,bbtk::WxBlackBox); BBTK_ADD_BLACK_BOX_TO_PACKAGE(wx,Slider); //-------------------------------------------------------------------------- diff --git a/packages/wx/src/bbwxSlider.h b/packages/wx/src/bbwxSlider.h index 33c44ba..f061465 100644 --- a/packages/wx/src/bbwxSlider.h +++ b/packages/wx/src/bbwxSlider.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbwxSlider.h,v $ Language: C++ - Date: $Date: 2008/04/08 06:59:32 $ - Version: $Revision: 1.10 $ + Date: $Date: 2008/04/18 12:59:53 $ + Version: $Revision: 1.11 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -111,7 +111,7 @@ namespace bbwx class /*BBTK_EXPORT*/ Slider : public bbtk::WxBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(Slider,bbtk::WxBlackBox); + BBTK_BLACK_BOX_INTERFACE(Slider,bbtk::WxBlackBox); BBTK_DECLARE_INPUT(In,int); BBTK_DECLARE_INPUT(Min,int); BBTK_DECLARE_INPUT(Max,int); diff --git a/packages/wxvtk/src/bbwxvtkViewer2D.cxx b/packages/wxvtk/src/bbwxvtkViewer2D.cxx index 43a20b3..a6ecfa2 100644 --- a/packages/wxvtk/src/bbwxvtkViewer2D.cxx +++ b/packages/wxvtk/src/bbwxvtkViewer2D.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbwxvtkViewer2D.cxx,v $ Language: C++ - Date: $Date: 2008/03/10 12:28:44 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/04/18 12:59:53 $ + Version: $Revision: 1.3 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -162,7 +162,7 @@ namespace bbwxvtk //-------------------------------------------------------------------------- - BBTK_USER_BLACK_BOX_IMPLEMENTATION(Viewer2D,bbtk::WxBlackBox); + BBTK_BLACK_BOX_IMPLEMENTATION(Viewer2D,bbtk::WxBlackBox); void Viewer2D::Process() diff --git a/packages/wxvtk/src/bbwxvtkViewer2D.h b/packages/wxvtk/src/bbwxvtkViewer2D.h index 34d5d55..1f7dc82 100644 --- a/packages/wxvtk/src/bbwxvtkViewer2D.h +++ b/packages/wxvtk/src/bbwxvtkViewer2D.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbwxvtkViewer2D.h,v $ Language: C++ - Date: $Date: 2008/04/08 06:59:33 $ - Version: $Revision: 1.3 $ + Date: $Date: 2008/04/18 12:59:53 $ + Version: $Revision: 1.4 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -74,7 +74,7 @@ namespace bbwxvtk class /*BBTK_EXPORT*/ Viewer2D : public bbtk::WxBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(Viewer2D,bbtk::WxBlackBox); + BBTK_BLACK_BOX_INTERFACE(Viewer2D,bbtk::WxBlackBox); BBTK_DECLARE_INPUT(Slice,int); BBTK_DECLARE_INPUT(Orientation,int); BBTK_DECLARE_INPUT(In,vtkImageData *); diff --git a/packages/wxvtk/src/bbwxvtkViewer3D.cxx b/packages/wxvtk/src/bbwxvtkViewer3D.cxx index 394e353..4f05719 100644 --- a/packages/wxvtk/src/bbwxvtkViewer3D.cxx +++ b/packages/wxvtk/src/bbwxvtkViewer3D.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbwxvtkViewer3D.cxx,v $ Language: C++ - Date: $Date: 2008/04/01 14:26:23 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/04/18 12:59:53 $ + Version: $Revision: 1.3 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -110,7 +110,7 @@ namespace bbwxvtk //-------------------------------------------------------------------------- - BBTK_USER_BLACK_BOX_IMPLEMENTATION(Viewer3D,bbtk::WxBlackBox); + BBTK_BLACK_BOX_IMPLEMENTATION(Viewer3D,bbtk::WxBlackBox); void Viewer3D::bbUserConstructor() { diff --git a/packages/wxvtk/src/bbwxvtkViewer3D.h b/packages/wxvtk/src/bbwxvtkViewer3D.h index 24a0a3c..a9f441f 100644 --- a/packages/wxvtk/src/bbwxvtkViewer3D.h +++ b/packages/wxvtk/src/bbwxvtkViewer3D.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbwxvtkViewer3D.h,v $ Language: C++ - Date: $Date: 2008/04/08 06:59:33 $ - Version: $Revision: 1.4 $ + Date: $Date: 2008/04/18 12:59:53 $ + Version: $Revision: 1.5 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -71,7 +71,7 @@ namespace bbwxvtk class /*BBTK_EXPORT*/ Viewer3D : public bbtk::WxBlackBox { - BBTK_USER_BLACK_BOX_INTERFACE(Viewer3D,bbtk::WxBlackBox); + BBTK_BLACK_BOX_INTERFACE(Viewer3D,bbtk::WxBlackBox); BBTK_DECLARE_INPUT(In1, vtkProp3D *); BBTK_DECLARE_INPUT(In2, vtkProp3D *); BBTK_DECLARE_INPUT(In3, vtkProp3D *); diff --git a/packages/wxvtk/src/bbwxvtkwxVTKRenderWindowInteractorTovtkRenderWindowInteractor.cxx b/packages/wxvtk/src/bbwxvtkwxVTKRenderWindowInteractorTovtkRenderWindowInteractor.cxx index 21c8a90..f60f93c 100644 --- a/packages/wxvtk/src/bbwxvtkwxVTKRenderWindowInteractorTovtkRenderWindowInteractor.cxx +++ b/packages/wxvtk/src/bbwxvtkwxVTKRenderWindowInteractorTovtkRenderWindowInteractor.cxx @@ -8,8 +8,8 @@ namespace bbstd { //==================================================================== - BBTK_USER_BLACK_BOX_TEMPLATE2_IMPLEMENTATION(Cast, - bbtk::AtomicBlackBox); + BBTK_BLACK_BOX_TEMPLATE2_IMPLEMENTATION(Cast, + bbtk::AtomicBlackBox); //==================================================================== -- 2.45.0