All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
SimulatorSignature.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 /**
35  @file SimulatorSignature.hpp
36 
37  @author Jean-Christophe FABRE <jean-christophe.fabre@supagro.inra.fr>
38 */
39 
40 #ifndef __OPENFLUID_WARE_SIMULATORSIGNATURE_HPP__
41 #define __OPENFLUID_WARE_SIMULATORSIGNATURE_HPP__
42 
43 
44 #include <openfluid/config.hpp>
45 #include <openfluid/dllexport.hpp>
46 #include <openfluid/core/TypeDefs.hpp>
49 
50 
51 
52 namespace openfluid { namespace ware {
53 
54 
55 typedef std::string SimMethod_t;
56 
57 typedef std::string SimProcess_t;
58 
59 typedef std::string SimDomain_t;
60 
61 
62 // =====================================================================
63 // =====================================================================
64 
65 
66 /**
67 Class for storage of the definition of data handled by the simulator.
68 */
70 {
71  public:
72 
73  std::string DataName;
74  std::string Description;
75  std::string DataUnit;
76 
78  DataName(""),Description(""),DataUnit("")
79  { }
80 
81  SignatureDataItem(std::string DName, std::string DDescription, std::string DUnit) :
82  DataName(DName),Description(DDescription),DataUnit(DUnit)
83  { }
84 };
85 
86 
87 // =====================================================================
88 // =====================================================================
89 
90 
91 /**
92 Class for storage of the definition of data handled by the simulator.
93 */
95 {
96  public:
97 
99 
101  SignatureDataItem(), UnitsClass("")
102  { }
103 
105  std::string DDescription, std::string DUnit) :
106  SignatureDataItem(DName,DDescription,DUnit),UnitsClass(UClass)
107  { }
108 };
109 
110 
111 // =====================================================================
112 // =====================================================================
113 
114 
115 /**
116 Class for storage of the definition of typed data handled by the simulator.
117 */
119 {
120 
121  public:
122 
124 
126  SignatureSpatialDataItem(), DataType(openfluid::core::Value::NONE) {}
127 
129  std::string DDescription, std::string DUnit);
130 };
131 
132 
133 // =====================================================================
134 // =====================================================================
135 
136 
137 /**
138  Class for storage of the definition of the data handled by the simulator. This is part of the signature.
139 */
141 {
142  public:
143 
144  // TODO use the same naming style for all members
145 
146  std::vector<SignatureDataItem> UsedParams;
147 
148  std::vector<SignatureDataItem> RequiredParams;
149 
150  std::vector<SignatureTypedSpatialDataItem> ProducedVars;
151 
152  std::vector<SignatureTypedSpatialDataItem> UpdatedVars;
153 
154  std::vector<SignatureTypedSpatialDataItem> RequiredVars;
155 
156  std::vector<SignatureTypedSpatialDataItem> UsedVars;
157 
158  std::vector<SignatureSpatialDataItem> ProducedAttribute;
159 
160  std::vector<SignatureSpatialDataItem> RequiredAttribute;
161 
162  std::vector<SignatureSpatialDataItem> UsedAttribute;
163 
164  std::vector<std::string> RequiredExtraFiles;
165 
166  std::vector<std::string> UsedExtraFiles;
167 
168  std::vector<openfluid::core::UnitsClass_t> UsedEventsOnUnits;
169 
170 
172  {
173  clear();
174  }
175 
176 
177  void clear()
178  {
179  UsedParams.clear();
180  RequiredParams.clear();
181  ProducedVars.clear();
182  UpdatedVars.clear();
183  RequiredVars.clear();
184  UsedVars.clear();
185  ProducedAttribute.clear();
186  RequiredAttribute.clear();
187  UsedAttribute.clear();
188  RequiredExtraFiles.clear();
189  UsedExtraFiles.clear();
190  UsedEventsOnUnits.clear();
191  }
192 
193 };
194 
195 
196 // =====================================================================
197 // =====================================================================
198 
199 
200 /**
201  Class for storage of the definition of spatial units handled by the simulator.
202 */
204 {
205  public:
206 
208  std::string Description;
209 
211  UnitsClass(""),Description("") {}
212 
214  std::string DDescription) :
215  UnitsClass(UClass),Description(DDescription) {}
216 };
217 
218 
219 // =====================================================================
220 // =====================================================================
221 
222 
224 {
225  public:
226 
227  std::string UpdatedUnitsGraph;
228 
229  std::vector<SignatureUnitsClassItem> UpdatedUnitsClass;
230 
231 
233  {
234  clear();
235  }
236 
237 
238  void clear()
239  {
240  UpdatedUnitsGraph.clear();
241  UpdatedUnitsClass.clear();
242  }
243 };
244 
245 
246 // =====================================================================
247 // =====================================================================
248 
249 
251 {
252  public:
253 
254  enum SchedulingType { UNDEFINED, DEFAULT, FIXED, RANGE };
255 
257 
259 
261 
262 
264  {
265  setAsUndefined();
266  }
267 
269  {
270  Type = UNDEFINED;
271  Min = 0;
272  Max = 0;
273  }
274 
276  {
277  Type = DEFAULT;
278  Min = 0;
279  Max = 0;
280  }
281 
283  {
284  Type = FIXED;
285  Min = Val;
286  Max = Val;
287  }
288 
290  {
291  Type = RANGE;
292  Min = MinVal;
293  Max = MaxVal;
294  }
295 
296 };
297 
298 
299 // =====================================================================
300 // =====================================================================
301 
302 
303 /**
304  Class encapsulating the plugin signature,
305  returned from the plugin to the host app for registering
306 */
308 {
309 
310  public:
311 
312 
313  /**
314  Plugin domain (i.e. hydrology, pop, erosion, ...)
315  */
317 
318  /**
319  Plugin simulated process (i.e. surface rainfall-runoff production, ditch infiltration, ...)
320  */
322 
323  /**
324  Plugin involved method (i.e. morel-seytoux, hayami, ...)
325  */
327 
328  /**
329  Handled data
330  */
332 
333  /**
334  Handled units graph
335  */
337 
338  /**
339  Time scheduling
340  */
342 
343 
345  {
346  clear();
347  }
348 
349 
350  void clear()
351  {
353  Domain.clear();
354  Process.clear();
355  Method.clear();
356  HandledData.clear();
357  HandledUnitsGraph.clear();
358  TimeScheduling.setAsUndefined();
359  }
360 
361 };
362 
363 
364 
365 } } // namespaces
366 
367 
368 
369 #endif
void clear()
Definition: WareSignature.hpp:98
std::string UpdatedUnitsGraph
Definition: SimulatorSignature.hpp:227
SignatureHandledData()
Definition: SimulatorSignature.hpp:171
std::vector< SignatureTypedSpatialDataItem > UpdatedVars
Definition: SimulatorSignature.hpp:152
std::vector< SignatureSpatialDataItem > UsedAttribute
Definition: SimulatorSignature.hpp:162
void setAsRange(openfluid::core::Duration_t MinVal, openfluid::core::Duration_t MaxVal)
Definition: SimulatorSignature.hpp:289
Definition: SimulatorSignature.hpp:223
SignatureHandledData HandledData
Definition: SimulatorSignature.hpp:331
std::string UnitsClass_t
Definition: TypeDefs.hpp:71
SignatureUnitsGraph()
Definition: SimulatorSignature.hpp:232
void clear()
Definition: SimulatorSignature.hpp:238
unsigned long long Duration_t
Definition: DateTime.hpp:68
Definition: SimulatorSignature.hpp:250
void setAsDefaultDeltaT()
Definition: SimulatorSignature.hpp:275
std::vector< SignatureDataItem > UsedParams
Definition: SimulatorSignature.hpp:146
std::vector< SignatureTypedSpatialDataItem > ProducedVars
Definition: SimulatorSignature.hpp:150
void clear()
Definition: SimulatorSignature.hpp:350
std::string DataUnit
Definition: SimulatorSignature.hpp:75
std::string SimMethod_t
Definition: SimulatorSignature.hpp:55
Definition: SimulatorSignature.hpp:69
std::string SimDomain_t
Definition: SimulatorSignature.hpp:59
openfluid::core::UnitsClass_t UnitsClass
Definition: SimulatorSignature.hpp:98
std::string Description
Definition: SimulatorSignature.hpp:208
SignatureTimeScheduling()
Definition: SimulatorSignature.hpp:263
SimDomain_t Domain
Definition: SimulatorSignature.hpp:316
Definition: SimulatorSignature.hpp:94
std::vector< SignatureTypedSpatialDataItem > RequiredVars
Definition: SimulatorSignature.hpp:154
void setAsUndefined()
Definition: SimulatorSignature.hpp:268
Definition: SimulatorSignature.hpp:203
std::vector< SignatureUnitsClassItem > UpdatedUnitsClass
Definition: SimulatorSignature.hpp:229
std::vector< SignatureSpatialDataItem > RequiredAttribute
Definition: SimulatorSignature.hpp:160
openfluid::core::Value::Type DataType
Definition: SimulatorSignature.hpp:123
Definition: SimulatorSignature.hpp:254
std::string Description
Definition: SimulatorSignature.hpp:74
openfluid::core::UnitsClass_t UnitsClass
Definition: SimulatorSignature.hpp:207
SignatureTypedSpatialDataItem()
Definition: SimulatorSignature.hpp:125
std::vector< SignatureTypedSpatialDataItem > UsedVars
Definition: SimulatorSignature.hpp:156
SignatureUnitsGraph HandledUnitsGraph
Definition: SimulatorSignature.hpp:336
SimProcess_t Process
Definition: SimulatorSignature.hpp:321
std::vector< SignatureSpatialDataItem > ProducedAttribute
Definition: SimulatorSignature.hpp:158
openfluid::core::Duration_t Min
Definition: SimulatorSignature.hpp:258
SimulatorSignature()
Definition: SimulatorSignature.hpp:344
std::string DataName
Definition: SimulatorSignature.hpp:73
SimMethod_t Method
Definition: SimulatorSignature.hpp:326
SignatureSpatialDataItem(std::string DName, openfluid::core::UnitsClass_t UClass, std::string DDescription, std::string DUnit)
Definition: SimulatorSignature.hpp:104
std::vector< openfluid::core::UnitsClass_t > UsedEventsOnUnits
Definition: SimulatorSignature.hpp:168
std::vector< SignatureDataItem > RequiredParams
Definition: SimulatorSignature.hpp:148
void clear()
Definition: SimulatorSignature.hpp:177
openfluid::core::Duration_t Max
Definition: SimulatorSignature.hpp:260
Definition: SimulatorSignature.hpp:140
Type
Definition: Value.hpp:68
SignatureSpatialDataItem()
Definition: SimulatorSignature.hpp:100
SignatureDataItem()
Definition: SimulatorSignature.hpp:77
Definition: WareSignature.hpp:51
std::vector< std::string > RequiredExtraFiles
Definition: SimulatorSignature.hpp:164
Definition: SimulatorSignature.hpp:118
SignatureUnitsClassItem(openfluid::core::UnitsClass_t UClass, std::string DDescription)
Definition: SimulatorSignature.hpp:213
SignatureTimeScheduling TimeScheduling
Definition: SimulatorSignature.hpp:341
std::string SimProcess_t
Definition: SimulatorSignature.hpp:57
#define OPENFLUID_API
Definition: dllexport.hpp:87
SignatureUnitsClassItem()
Definition: SimulatorSignature.hpp:210
Definition: SimulatorSignature.hpp:307
SignatureDataItem(std::string DName, std::string DDescription, std::string DUnit)
Definition: SimulatorSignature.hpp:81
void setAsFixed(openfluid::core::Duration_t Val)
Definition: SimulatorSignature.hpp:282
SchedulingType Type
Definition: SimulatorSignature.hpp:256
std::vector< std::string > UsedExtraFiles
Definition: SimulatorSignature.hpp:166
SchedulingType
Definition: SimulatorSignature.hpp:254