Tellurium Plugin C++ API  1.0.0
 All Classes Files Functions Variables Friends Pages
telPlugin.h
Go to the documentation of this file.
1 
41 #ifndef telPluginH
42 #define telPluginH
43 #include <sstream>
44 #include <string>
45 #include "telCoreExporter.h"
46 #include "telPluginsManagerSettings.h"
47 #include "telProperties.h"
48 
49 namespace rr
50 {
51 class RoadRunner;
52 }
53 
54 namespace tlp
55 {
56  using rr::RoadRunner;
57  using tlp::gEmptyString;
58  using tlp::gNoneString;
59  using std::string;
60  class PluginManager;
61 
65 typedef void (event_cc *PluginEvent)(void* data1, void* data2);
66 
91 // CORE_DECLSPEC
92 class CORE_DECLSPEC Plugin
93 {
94  friend PluginManager;
95  public:
99  Plugin( const string& name = gEmptyString,
100  const string& cat = gNoneString,
101  RoadRunner* aRR = NULL,
102  const string& language = gNoneString,
103  const PluginManager* pm = NULL);
104 
108  virtual ~Plugin();
109 
113  string getName();
114 
118  string getLibraryName();
119 
123  string getAuthor();
124 
128  string getCategory();
129 
133  string getDescription();
134 
138  string getHint();
139 
143  string getVersion();
144 
148  string getCopyright();
149 
153  RoadRunner* getRoadRunnerInstance();
154 
158  virtual string getInfo();
159 
163  virtual string getExtendedInfo();
164 
168  virtual unsigned char* getManualAsPDF() const;
169 
173  virtual unsigned int getPDFManualByteSize();
174 
178  virtual Properties* getProperties(); //Each capability has a set of propertys
179 
183  virtual tlp::StringList getPropertyNames();
184 
188  string getPluginPropertiesAsXML();
189 
193  virtual PropertyBase* getProperty(const string& param);
194 
198  string getPropertyValueAsString(const string& param);
199 
203  void* getPropertyValueHandle(const string& param);
204 
208  void setPropertyByString(const string& nameOf, const char* value);
209 
213  void setPropertyValue(const string& nameOf, const void* value);
218  void terminate();
219 
223  bool isBeingTerminated() const;
224 
226  bool wasTerminated() const;
227 
229  virtual bool isWorking() const;
230 
232  virtual bool assignRoadRunnerInstance(RoadRunner* rr);
233 
237  virtual bool assignOnStartedEvent(PluginEvent pluginStarted, void* userData1 = NULL, void* userData2 = NULL);
238 
242  virtual bool assignOnProgressEvent(PluginEvent pluginsProgress, void* userData1 = NULL, void* userData2 = NULL);
243 
247  virtual bool assignOnFinishedEvent(PluginEvent pluginsFinished, void* userData1 = NULL, void* userData2 = NULL);
248 
252  virtual string getResult();
253 
257  virtual bool resetPlugin();
258 
262  virtual string getStatus();
263 
267  virtual string getImplementationLanguage() = 0;
268 
269 
273  bool hasStartedEvent() const;
274 
278  bool hasProgressEvent() const;
279 
283  bool hasFinishedEvent() const;
284 
288  void WorkStartedEvent(void* data1, void* data2);
289 
293  void WorkProgressEvent(void* data1, void* data2);
294 
298  void WorkFinishedEvent(void* data1, void* data2);
299 
303  pair<void*, void*> getWorkStartedData();
304 
308  pair<void*, void*> getWorkProgressData();
309 
313  pair<void*, void*> getWorkFinishedData();
314 
318  virtual bool execute(bool inAThread = false) = 0;
319 
323  const PluginManager* getPluginManager();
324 
325 
326  protected:
327  string mName;
328 
330  string mLibraryName;
331 
333  string mAuthor;
334 
336  string mCategory;
337 
339  string mDescription;
340 
342  string mHint;
343 
345  string mVersion;
346 
348  string mCopyright;
349 
352 
355 
358 
363  RoadRunner *mRR;
364 
370 
374  void setLibraryName(const string& libName);
375 
379  PluginEvent mWorkStartedEvent;
380 
384  PluginEvent mWorkProgressEvent;
385 
389  PluginEvent mWorkFinishedEvent;
390 
395 
400 
405 
410 
415 
420 
425  Properties mProperties;
426 };
427 
428 }
429 
430 #endif