All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PluggableBuilderExtension.hpp
Go to the documentation of this file.
1 /*
2 
3  This file is part of OpenFLUID software
4  Copyright(c) 2007, INRA - Montpellier SupAgro
5 
6 
7  == GNU General Public License Usage ==
8 
9  OpenFLUID is free software: you can redistribute it and/or modify
10  it under the terms of the GNU General Public License as published by
11  the Free Software Foundation, either version 3 of the License, or
12  (at your option) any later version.
13 
14  OpenFLUID is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  GNU General Public License for more details.
18 
19  You should have received a copy of the GNU General Public License
20  along with OpenFLUID. If not, see <http://www.gnu.org/licenses/>.
21 
22 
23  == Other Usage ==
24 
25  Other Usage means a use of OpenFLUID that is inconsistent with the GPL
26  license, and requires a written agreement between You and INRA.
27  Licensees for Other Usage of OpenFLUID may use this file in accordance
28  with the terms contained in the written agreement between You and INRA.
29 
30 */
31 
32 
33 /**
34  \file PluggableBuilderExtension.hpp
35  \brief Header of ...
36 
37  \author Jean-Christophe FABRE <fabrejc@supagro.inra.fr>
38  */
39 
40 
41 
42 #ifndef __PLUGGABLEBUILDEREXTENSION_HPP__
43 #define __PLUGGABLEBUILDEREXTENSION_HPP__
44 
45 
46 
51 #include <openfluid/dllexport.hpp>
52 
53 
54 /**
55  Macro for declaration of builder extension and signature hooks
56 */
57 #define DECLARE_BUILDEREXT_PLUGIN \
58  extern "C" \
59  { \
60  DLLEXPORT std::string WAREABIVERSION_PROC_DECL(); \
61  DLLEXPORT openfluid::builderext::PluggableBuilderExtension* WAREBODY_PROC_DECL(); \
62  DLLEXPORT openfluid::builderext::BuilderExtensionSignature* WARESIGNATURE_PROC_DECL(); \
63  }
64 
65 
66 
67 
68 // =====================================================================
69 // =====================================================================
70 
71 
72 /**
73  Macro for definition of builder extension class hook
74  @param[in] pluginclassname The name of the class to instantiate
75 */
76 #define DEFINE_BUILDEREXT_CLASS(pluginclassname) \
77  std::string WAREABIVERSION_PROC_DECL() \
78  { \
79  return std::string(openfluid::config::FULL_VERSION); \
80  } \
81  \
82  openfluid::builderext::PluggableBuilderExtension* WAREBODY_PROC_DECL() \
83  { \
84  return new pluginclassname(); \
85  }
86 
87 
88 // =====================================================================
89 // =====================================================================
90 
91 
92 namespace openfluid { namespace builderext {
93 
94 
96 {
97 
98  protected:
99 
101 
103 
104 
105  public:
106 
107  PluggableBuilderExtension() : PluggableWare(openfluid::ware::PluggableWare::OTHER)
108  {
109 
110  }
111 
112 
114  {
115  finalizeWare();
116  }
117 
118 
119  /**
120  Internally called by the framework.
121  */
123  {
124  if (m_Initialized) return;
125 
126  PluggableWare::initializeWare(ID);
127  }
128 
129 
131  { m_Config = Config; }
132 
133 
135  { mp_AdvancedDesc = Desc; }
136 
137 
139  { return OPENFLUID_GetWareID(); }
140 
141 
142  virtual bool initialize() = 0;
143 };
144 
145 
146 // =====================================================================
147 // =====================================================================
148 
149 
150 typedef PluggableBuilderExtension* (*GetPluggableBuilderExtensionBodyProc)();
151 
152 typedef BuilderExtensionSignature* (*GetPluggableBuilderExtensionSignatureProc)();
153 
154 
155 } } // namespaces
156 
157 
158 #endif /* __PLUGGABLEBUILDEREXTENSION_HPP__ */
void setFluidXDescriptor(openfluid::fluidx::AdvancedFluidXDescriptor *Desc)
Definition: PluggableBuilderExtension.hpp:134
virtual void setConfiguration(const openfluid::ware::WareParams_t &Config)
Definition: PluggableBuilderExtension.hpp:130
std::map< WareParamKey_t, WareParamValue_t > WareParams_t
Definition: PluggableWare.hpp:82
PluggableBuilderExtension()
Definition: PluggableBuilderExtension.hpp:107
Definition: BuilderExtensionSignature.hpp:107
openfluid::ware::WareID_t getID() const
Definition: PluggableBuilderExtension.hpp:138
openfluid::ware::WareParams_t m_Config
Definition: PluggableBuilderExtension.hpp:102
Definition: AdvancedFluidXDescriptor.hpp:52
virtual ~PluggableBuilderExtension()
Definition: PluggableBuilderExtension.hpp:113
openfluid::fluidx::AdvancedFluidXDescriptor * mp_AdvancedDesc
Definition: PluggableBuilderExtension.hpp:100
Header of ...
void initializeWare(const openfluid::ware::WareID_t &ID)
Definition: PluggableBuilderExtension.hpp:122
Definition: PluggableBuilderExtension.hpp:95
std::string WareID_t
Definition: WareSignature.hpp:86
Definition: PluggableWare.hpp:89
Header of ...
#define DLLEXPORT
Definition: dllexport.hpp:51