]> Creatis software - bbtk.git/blob - kernel/src/bbtkAtomicBlackBoxOutputDescriptor.h
Feature #1774
[bbtk.git] / kernel / src / bbtkAtomicBlackBoxOutputDescriptor.h
1 /*
2  # ---------------------------------------------------------------------
3  #
4  # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
5  #                        pour la SantÈ)
6  # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
7  # Previous Authors : Laurent Guigues, Jean-Pierre Roux
8  # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
9  #
10  #  This software is governed by the CeCILL-B license under French law and
11  #  abiding by the rules of distribution of free software. You can  use,
12  #  modify and/ or redistribute the software under the terms of the CeCILL-B
13  #  license as circulated by CEA, CNRS and INRIA at the following URL
14  #  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
15  #  or in the file LICENSE.txt.
16  #
17  #  As a counterpart to the access to the source code and  rights to copy,
18  #  modify and redistribute granted by the license, users are provided only
19  #  with a limited warranty  and the software's author,  the holder of the
20  #  economic rights,  and the successive licensors  have only  limited
21  #  liability.
22  #
23  #  The fact that you are presently reading this means that you have had
24  #  knowledge of the CeCILL-B license and that you accept its terms.
25  # ------------------------------------------------------------------------ */
26
27
28 /*=========================================================================
29   Program:   bbtk
30   Module:    $RCSfile: bbtkAtomicBlackBoxOutputDescriptor.h,v $
31   Language:  C++
32   Date:      $Date: 2012/11/16 08:49:01 $
33   Version:   $Revision: 1.4 $
34 =========================================================================*/
35
36                                                                         
37
38
39 /**
40  *  \file 
41  *  \brief Class bbtk::AtomicBlackBoxOutputDescriptor : structure containing the description of a AtomicBlackBox output (name, description, type, functor)
42  */
43 /**
44  * \class bbtk::AtomicBlackBoxOutputDescriptor
45  * \brief Structure containing the description of a AtomicBlackBox output (name, description, type, functor)
46  */
47
48 #ifndef __bbtkAtomicBlackBoxOutputDescriptor_h__
49 #define __bbtkAtomicBlackBoxOutputDescriptor_h__
50
51 #include "bbtkBlackBoxOutputDescriptor.h"
52 #include "bbtkAtomicBlackBoxGetSetFunctor.h"
53 #include "bbtkMessageManager.h"
54
55 namespace bbtk
56 {
57
58
59   class BBTK_EXPORT AtomicBlackBoxOutputDescriptor : 
60     public bbtk::BlackBoxOutputDescriptor
61   {
62   public:
63       
64     AtomicBlackBoxOutputDescriptor( TypeInfo creator_type_info,
65                                     const std::string& name,
66                                     const std::string& description,
67                                     const std::string& nature,
68                                     AtomicBlackBoxGetFunctor* getfunctor,
69                                     AtomicBlackBoxSetFunctor* setfunctor,
70                                     bool copy_construct = true);
71     ~AtomicBlackBoxOutputDescriptor();
72     
73     /// Returns the type of the input
74     TypeInfo GetTypeInfo() const { return mGetFunctor->GetTypeInfo(); }
75     /// Returns the name of the type of the input
76     std::string GetTypeName() const { return mGetFunctor->GetTypeName(); }
77    /// Returns the name of the type of the input
78     std::string GetHumanTypeName() const { return mGetFunctor->GetHumanTypeName(); }
79     /// Returns true iff the type is a pointer to class 
80     virtual bool IsPointerType() const { return mGetFunctor->IsPointerType(); }   /// Returns the functor on the Get method
81     AtomicBlackBoxGetFunctor* GetGetFunctor() { return mGetFunctor; }
82     /// Returns the functor on the Set method
83     AtomicBlackBoxSetFunctor* GetSetFunctor() { return mSetFunctor; }
84     
85     
86   private:
87     /// Default ctor is private 
88     AtomicBlackBoxOutputDescriptor() : 
89       BlackBoxOutputDescriptor(typeid(void),"","","") {}
90     /// The functor on the Get method
91     AtomicBlackBoxGetFunctor* mGetFunctor;
92     /// The functor on the Set method
93     AtomicBlackBoxSetFunctor* mSetFunctor;
94   };
95
96   
97 }
98 // namespace bbtk
99 #endif