X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=kernel%2Fsrc%2FbbtkComplexBlackBoxDescriptor.h;h=d359b2d9f0c5bba7f656e1c846b43fec9886b424;hb=0bd696babe5e4b50101ee8f454bcb5bdf06b163e;hp=4b76df5cef0d371f21b7806cc7f8433849246262;hpb=6c5d7746e8e4cb0b5d6e164b917008a7137910fb;p=bbtk.git diff --git a/kernel/src/bbtkComplexBlackBoxDescriptor.h b/kernel/src/bbtkComplexBlackBoxDescriptor.h index 4b76df5..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/08 06:59:30 $ - Version: $Revision: 1.3 $ + 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,32 +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); - /// Default dtor - ~ComplexBlackBoxDescriptor(); + 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, @@ -91,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 @@ -121,14 +130,20 @@ namespace bbtk bool relative_link = false ); + /// + 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;