Program: bbtk
Module: $RCSfile: bbtkBlackBoxDescriptor.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.9 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
#ifndef __bbtkBlackBoxDescriptor_h__
#define __bbtkBlackBoxDescriptor_h__
+#include "bbtkObject.h"
#include "bbtkBlackBoxInputDescriptor.h"
#include "bbtkBlackBoxOutputDescriptor.h"
#include <map>
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;
typedef std::map<std::string, InputDescriptor*> InputDescriptorMapType;
/// The type of dictionnary of outputs= map of output descriptors pointers
typedef std::map<std::string, OutputDescriptor*> OutputDescriptorMapType;
- /// The categories of black box
+ /// The kinds of black box
typedef enum
{
- STANDARD,
- ADAPTOR,
- DEFAULT_ADAPTOR
+ STANDARD=0,
+ ADAPTOR=1,
+ DEFAULT_ADAPTOR=2,
+ WIDGET_ADAPTOR=3,
+ DEFAULT_WIDGET_ADAPTOR=4
}
- Category;
+ Kind;
- /// Default ctor
- BlackBoxDescriptor();
- /// Default dtor
- virtual ~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; }
+
+ /// Returns the full name of the **TYPE** of the black box (+package name)
+ std::string GetFullTypeName() const;
+
/// Returns the description of the BlackBox
const std::string& GetDescription() const { return mDescription; }
+
/// Returns the author(s) of the BlackBox
const std::string& GetAuthor() const { return mAuthor; }
- /// Returns the Package to which the box belongs
- Package* GetPackage() { return mPackage; }
- /// Returns the Package to which the box belongs
- const Package* GetPackage() const { return mPackage; }
- /// Returns the category of box
- Category GetCategory() const { return mCategory; }
-
+
+ /// Returns the category(s) of the BlackBox
+ const std::string& GetCategory() const { return mCategory; }
+
+ /// Returns the Package to which the box belongs (const pointer)
+ PackagePointer GetPackage() const { return mPackage; }
+
+ /// Returns the kind of box
+ Kind GetKind() const { return mKind; }
/// Prints help on the black box
virtual void GetHelp(bool full=true) const;
/// Returns a const ref on the map of input descriptors
const InputDescriptorMapType& GetInputDescriptorMap() const
{ return mInput; }
+
/// Returns a const ref on the map of output descriptors
const OutputDescriptorMapType& GetOutputDescriptorMap() const
{ return mOutput; }
+
/// Returns a const pointer on the descriptor of the input of name <name>
- const InputDescriptor* GetInputDescriptor(const std::string & name) const;
+ const InputDescriptor* GetInputDescriptor(const std::string &name) const;
+
/// Returns a const pointer on the descriptor of the output of name <name>
- const OutputDescriptor* GetOutputDescriptor(const std::string & name) const;
+ const OutputDescriptor* GetOutputDescriptor(const std::string &name) const;
/// Sets the name of the **TYPE** of BlackBox
void SetTypeName( const std::string& name ) { mTypeName=name; }
- /// Adds the string to the BlackBox's description
+
+ /// Adds the string to the BlackBox description
void AddToDescription( const std::string&, bool clear = false );
- /// Adds the string to the BlackBox's author list
+
+ /// Adds the string to the BlackBox author list
void AddToAuthor( const std::string&, bool clear = false );
+
+ /// Adds the string to the BlackBox category list
+ void AddToCategory( const std::string&, bool clear = false );
+
/// Sets the Package to which the box belongs
- void SetPackage(Package *package) { mPackage = package; }
- /// Sets the category of box
- void SetCategory(Category category) { mCategory = category; }
+ void SetPackage(PackagePointer package) { mPackage = package; }
+
+ /// Sets the kind of box
+ void SetKind(Kind kind) { mKind = kind; }
/*
virtual void InsertHTMLGraph( std::ofstream& s, int detail, int level,
int detail, int level,
const std::string& output_dir = "",
bool relative_link = false );
+ ///
+ virtual void Check(bool recursive=true) const;
protected:
/// Adds an input descriptor
- void AddInputDescriptor( BlackBoxInputDescriptor* d )
+ void AddInputDescriptor( BlackBoxInputDescriptor *d )
{ mInput[d->GetName()] = d; }
/// Adds an output descriptor
- void AddOutputDescriptor( BlackBoxOutputDescriptor* d )
+ void AddOutputDescriptor( BlackBoxOutputDescriptor *d )
{ mOutput[d->GetName()] = d; }
// private:
std::string mDescription;
/// The author of the black box
std::string mAuthor;
- /// The category of box
- Category mCategory;
+ /// The category of the black box
+ std::string mCategory;
+ /// 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;
-
+
};
// class BlackBoxDescriptor
//==========================================================================