itom  3.0.0
addInInterface.h
1 /* ********************************************************************
2 itom software
3 URL: http://www.uni-stuttgart.de/ito
4 Copyright (C) 2016, Institut fuer Technische Optik (ITO),
5 Universitaet Stuttgart, Germany
6 
7 This file is part of itom and its software development toolkit (SDK).
8 
9 itom is free software; you can redistribute it and/or modify it
10 under the terms of the GNU Library General Public Licence as published by
11 the Free Software Foundation; either version 2 of the Licence, or (at
12 your option) any later version.
13 
14 In addition, as a special exception, the Institut fuer Technische
15 Optik (ITO) gives you certain additional rights.
16 These rights are described in the ITO LGPL Exception version 1.0,
17 which can be found in the file LGPL_EXCEPTION.txt in this package.
18 
19 itom is distributed in the hope that it will be useful, but
20 WITHOUT ANY WARRANTY; without even the implied warranty of
21 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library
22 General Public Licence for more details.
23 
24 You should have received a copy of the GNU Library General Public License
25 along with itom. If not, see <http://www.gnu.org/licenses/>.
26 *********************************************************************** */
27 
28 #ifndef ADDININTERFACE_H
29 #define ADDININTERFACE_H
30 
31 #include "commonGlobal.h"
32 
33 #include "apiFunctionsInc.h"
34 #include "apiFunctionsGraphInc.h"
35 
36 #include "sharedStructuresQt.h"
37 #include "sharedStructures.h"
38 
39 #include <qlist.h>
40 #include <qmap.h>
41 #include <qpair.h>
42 #include <qset.h>
43 #include <qthread.h>
44 #include <qsharedpointer.h>
45 #include <qmutex.h>
46 #include <qapplication.h>
47 
48 #if QT_VERSION < 0x050000
49 #include <qpluginloader.h>
50 #include <qdockwidget.h>
51 #else
52 #include <QtCore/qpluginloader.h>
53 #include <QtWidgets/qdockwidget.h>
54 #endif
55 
56 //plugins define VISUAL_LEAK_DETECTOR_CMAKE in their CMake configuration file
57 #if defined _DEBUG && defined(_MSC_VER) && defined(VISUAL_LEAK_DETECTOR_CMAKE)
58 #ifndef NOMINAX
59 #define NOMINMAX //instead min, max is defined as macro in winDef.h, included by vld.h
60 #include "vld.h"
61 #undef NOMINMAX
62 #else
63 #include "vld.h"
64 #endif
65 #endif
66 
67 #if !defined(Q_MOC_RUN) || defined(ITOMCOMMONQT_MOC) //only moc this file in itomCommonQtLib but not in other libraries or executables linking against this itomCommonQtLib
68 
69 //write this macro right after Q_INTERFACE(...) in your interface class definition
70 #define PLUGIN_ITOM_API \
71  protected: \
72  void importItomApi(void** apiPtr) \
73  {ito::ITOM_API_FUNCS = apiPtr;} \
74  void importItomApiGraph(void** apiPtr) \
75  { ito::ITOM_API_FUNCS_GRAPH = apiPtr;} \
76  public: \
77  //.
78 
80 
84 #define NEW_PLUGININSTANCE(PluginClass) \
85  PluginClass* newInst = new PluginClass(); \
86  newInst->setBasePlugin(this); \
87  *addInInst = qobject_cast<ito::AddInBase*>(newInst); \
88  m_InstList.append(*addInInst);
89 
91 
96 #define REMOVE_PLUGININSTANCE(PluginClass) \
97  if (*addInInst) \
98  { \
99  delete qobject_cast<PluginClass*>(*addInInst); \
100  m_InstList.removeOne(*addInInst); \
101  }
102 
104 
108 #define REGISTER_FILTERS_AND_WIDGETS \
109  foreach(ito::AddInAlgo::FilterDef *f, newInst->m_filterList) \
110  { \
111  f->m_pBasePlugin = this; \
112  } \
113  foreach(ito::AddInAlgo::AlgoWidgetDef *w, newInst->m_algoWidgetList) \
114  { \
115  w->m_pBasePlugin = this; \
116  }
117 
118 
119 namespace ito
120 {
121  //----------------------------------------------------------------------------------------------------------------------------------
123 
127  enum tPluginType {
128  typeDataIO = 0x1,
129  typeActuator = 0x2,
130  typeAlgo = 0x4,
131  typeGrabber = 0x80,
132  typeADDA = 0x100,
133  typeRawIO = 0x200
134  };
135 
137 
147  //moving flags
148  actuatorUnknown = 0x0001,
150  actuatorMoving = 0x0004,
151  actuatorAtTarget = 0x0008,
152  actuatorTimeout = 0x0010,
153  //switches
154  actuatorEndSwitch = 0x0100,
157  actuatorRefSwitch = 0x0800,
160  //status flags
161  actuatorAvailable = 0x4000,
162  actuatorEnabled = 0x8000,
169  };
170 
175  };
176 
180  };
181 
183  ExecFuncParams() : infoString("") {}
184  QVector<Param> paramsMand;
185  QVector<Param> paramsOpt;
186  QVector<Param> paramsOut;
187  QString infoString;
188  };
189 
190  struct FilterParams {
191  QVector<Param> paramsMand;
192  QVector<Param> paramsOpt;
193  QVector<Param> paramsOut;
194  };
195 
196  class AddInBase;
197  class DataObject;
198  class AddInBasePrivate;
199 
200  //----------------------------------------------------------------------------------------------------------------------------------
224  class ITOMCOMMONQT_EXPORT AddInInterfaceBase : public QObject
225  {
226  Q_OBJECT
227 
228  private:
230  virtual ito::RetVal closeThisInst(ito::AddInBase **addInInst) = 0;
231 
232  protected:
233  int m_type;
234  int m_version;
235  QString m_filename;
238  QString m_author;
239  QString m_description;
241  QString m_license;
242  QString m_aboutThis;
243  QList<ito::AddInBase *> m_InstList;
244  QVector<ito::Param> m_initParamsMand;
245  QVector<ito::Param> m_initParamsOpt;
246  //bool m_enableAutoLoad; //* Varialbe to enable autoload for plugin. Standard value is false. Must be overwritten in AddInConstructor */
250  QPluginLoader *m_loader;
251 
252  virtual void importItomApi(void** apiPtr) = 0; //this methods are implemented in the plugin itsself. Therefore place ITOM_API right after Q_INTERFACE in the header file and replace Q_EXPORT_PLUGIN2 by Q_EXPORT_PLUGIN2_ITOM in the source file.
253  virtual void importItomApiGraph(void** apiPtr) = 0;
255  inline bool hasGuiSupport()
256  {
257  if (qobject_cast<QApplication*>(QCoreApplication::instance()))
258  {
259  return true;
260  }
261  else
262  {
263  return false;
264  }
265  }
266 
267  public:
268  void **m_apiFunctionsBasePtr;
269  void **m_apiFunctionsGraphBasePtr;
270 
271  virtual ~AddInInterfaceBase();
272 
275  m_type(0), m_version(CREATEVERSION(0, 0, 0)), m_filename(""),
276  m_maxItomVer(MAXVERSION), m_minItomVer(MINVERSION),
277  m_author(""), m_description(""), m_detaildescription(""), m_license("LGPL with ITO itom-exception"), m_aboutThis(""),
278  /*m_enableAutoLoad(false),*/ m_autoLoadPolicy(ito::autoLoadNever),
279  m_autoSavePolicy(ito::autoSaveNever), m_callInitInNewThread(true), m_apiFunctionsBasePtr(NULL), m_apiFunctionsGraphBasePtr(NULL), m_loader(NULL)
280  { }
281 
283  inline int getType(void) const { return m_type; }
285  inline int getVersion(void) const { return m_version; }
287  inline int getMinItomVer(void) const { return m_minItomVer; }
289  inline int getMaxItomVer(void) const { return m_maxItomVer; }
290 
292  inline bool getCallInitInNewThread(void) const { return m_callInitInNewThread; }
293 
295  inline tAutoLoadPolicy getAutoLoadPolicy(void) const { return m_autoLoadPolicy; }
296 
298  inline tAutoSavePolicy getAutoSavePolicy(void) const { return m_autoSavePolicy; }
299 
301  const QString getAuthor(void) const { return m_author; }
303  const QString getDescription(void) const { return m_description; }
305  const QString getDetailDescription(void) const { return m_detaildescription; }
307  const QString getLicenseInfo(void) const { return m_license; }
309  const QString getAboutInfo(void) const { return m_aboutThis; }
311  const QString getFilename(void) const { return m_filename; }
312 
313  const ito::RetVal setFilename(const QString &name) { m_filename = name; return ito::retOk; }
315  inline QList<ito::AddInBase *> getInstList(void) { return m_InstList; }
316  inline const QList<ito::AddInBase *> getInstList(void) const { return m_InstList; }
318  ito::RetVal closeInst(ito::AddInBase **addInInst);
320  virtual QVector<ito::Param>* getInitParamsMand(void) { return &m_initParamsMand; }
322  virtual QVector<ito::Param>* getInitParamsOpt(void) { return &m_initParamsOpt; }
324  virtual ito::RetVal getAddInInst(ito::AddInBase **addInInst) = 0;
326  void incRef(ito::AddInBase *addIn);
328  void decRef(ito::AddInBase *addIn);
330  int getRef(ito::AddInBase *addIn);
332  int getInstCount() { return m_InstList.length(); }
334  void setApiFunctions(void **apiFunctions);
335  void setApiFunctionsGraph(void ** apiFunctionsGraph);
336  inline void setLoader(QPluginLoader *loader) { m_loader = loader; }
337  inline QPluginLoader * getLoader(void) { return m_loader; }
338 
339  bool event(QEvent *e);
340  };
341 
342  //----------------------------------------------------------------------------------------------------------------------------------
356  class ITOMCOMMONQT_EXPORT AddInBase : public QObject
357  {
358  Q_OBJECT
359 
360  public:
361 
362  struct AddInRef {
363  AddInRef() : type(-1), ptr(0) {}
364  AddInRef(void *p, int t) : type(t), ptr(p) {}
365  int type;
366  void *ptr;
367  };
368 
370  const Param getParamRec(const QString name, bool *nameCheckOk = NULL) const;
371 
373  AddInInterfaceBase* getBasePlugin(void) const;
374 
376  ito::RetVal MoveToThread(void);
377 
379  /*
380  Use the method setParam in order to change any parameter.
381 
382  \param paramNames [out]. The pointer contains a pointer to the map after the call of this function
383  \return RetVal returns retOk.
384  */
385  inline const ito::RetVal getParamList(QMap<QString, Param> **paramNames) { *paramNames = &m_params; return ito::retOk; }
386 
388  /*
389  \param [out] funcs is the pointer to a map, that points to the internal map of additional functions after the method-call.
390  \return retOk
391  \sa registerExecFunc
392  */
393  inline const ito::RetVal getExecFuncList(QMap<QString, ExecFuncParams> **funcs) { *funcs = &m_execFuncList; return ito::retOk; }
394 
396  int getID() const;
397 
399  inline QString getIdentifier() const { return m_identifier; }
400 
402  virtual int hasConfDialog(void);
403 
405  virtual const ito::RetVal showConfDialog(void);
406 
408  int createdByGUI() const;
409 
411  void setCreatedByGUI(int value);
412 
414  /*
415  The reference counter is zero-based, hence, the value zero means that one reference is pointing to this instance
416  */
417  inline int getRefCount(void) const
418  {
419  return m_refCount;
420  }
421 
423  /*
424  \sa getDockWidget
425  */
426  bool hasDockWidget(void) const;
427 
429  /*
430  \sa hasDockWidget
431  */
432  QDockWidget* getDockWidget(void) const;
433 
434  // doc in source
435  virtual void dockWidgetDefaultStyle(bool &floating, bool &visible, Qt::DockWidgetArea &defaultArea) const;
436 
438  /*
439  Any time-consuming operation of the plugin should regularly set the alive-flag to true
440  by calling setAlive. The state of this flag is returned by this method and afterwards
441  reset to 0. This method is thread-safe.
442 
443  \return current status of alive-flag (1 if "still alive", else 0)
444  \sa setAlive
445  */
446  int isAlive(void)
447  {
448  // QMutexLocker locker(&m_atomicMutex);
449  int wasalive = m_alive;
450  m_alive = 0;
451  return wasalive;
452  }
453 
455  /*
456  This method is thread-safe.
457 
458  \sa isAlive
459  */
460  void setAlive(void)
461  {
462  // QMutexLocker locker(&m_atomicMutex);
463  m_alive = 1;
464  }
465 
467  bool isInitialized(void) const;
468 
470  /*
471  \param [in] initialized is the value to set
472  */
473  void setInitialized(bool initialized);
474 
476  /*
477  This vector contains all plugin-instances, that have been passed to the init
478  method of this plugin. The reference counter of these plugin is incremented at
479  initialization of this plugin and decremented if this plugin will be destroyed.
480 
481  \sa AddInRef, init
482  */
483  QVector<ito::AddInBase::AddInRef *> * getArgAddIns(void) { return &m_hwDecList; }
484 
485  static int getMaximumThreadCount();
486  static RetVal setMaximumThreadCount(int threadCount);
487 
488  protected:
489  // constructor (doc in source)
490  AddInBase();
491 
492  // destructor (doc in source)
493  virtual ~AddInBase();
494 
496  void setIdentifier(const QString &identifier);
497 
498  //doc in source
499  void createDockWidget(QString title, QDockWidget::DockWidgetFeatures features, Qt::DockWidgetAreas allowedAreas = Qt::AllDockWidgetAreas, QWidget *content = NULL);
500 
501  // doc in source
502  ito::RetVal registerExecFunc(const QString funcName, const QVector<ito::Param> &paramsMand, const QVector<ito::Param> &paramsOpt, const QVector<ito::Param> &paramsOut, const QString infoString);
503 
505  void setBasePlugin(AddInInterfaceBase *base);
506 
507  QMap<QString, Param> m_params;
508 
509  QString m_identifier;
510 
512  inline bool hasGuiSupport()
513  {
514  if (qobject_cast<QApplication*>(QCoreApplication::instance()))
515  {
516  return true;
517  }
518  else
519  {
520  return false;
521  }
522  }
523 
524  private:
525  Q_DISABLE_COPY(AddInBase)
526 
527 
528  inline void incRefCount(void);
529 
531  void decRefCount(void);
532 
533 
535  QVector<ito::AddInBase::AddInRef *> m_hwDecList;
536  QMap<QString, ExecFuncParams> m_execFuncList;
538  int m_alive;
539  QMutex m_atomicMutex;
541 
542  friend class AddInInterfaceBase;
543 
544  static int m_instCounter;
545  static int maxThreadCount;
546 
547  signals:
549 
557  void parametersChanged(QMap<QString, ito::Param> params);
558 
559  public slots:
561  virtual ito::RetVal init(QVector<ito::ParamBase> *paramsMand, QVector<ito::ParamBase> *paramsOpt, ItomSharedSemaphore *waitCond = NULL) = 0;
563  virtual ito::RetVal close(ItomSharedSemaphore *waitCond) = 0;
564 
566  virtual ito::RetVal getParam(QSharedPointer<ito::Param> val, ItomSharedSemaphore *waitCond = NULL) = 0;
568  virtual ito::RetVal setParam(QSharedPointer<ito::ParamBase> val, ItomSharedSemaphore *waitCond = NULL) = 0;
569 
571  ito::RetVal setParamVector(const QVector<QSharedPointer<ito::ParamBase> > values, ItomSharedSemaphore *waitCond = NULL);
572 
574  ito::RetVal getParamVector(const QVector<QSharedPointer<ito::Param> > values, ItomSharedSemaphore *waitCond = NULL);
575 
577  virtual ito::RetVal execFunc(const QString funcName, QSharedPointer<QVector<ito::ParamBase> > paramsMand, QSharedPointer<QVector<ito::ParamBase> > paramsOpt, QSharedPointer<QVector<ito::ParamBase> > paramsOut, ItomSharedSemaphore *waitCond = NULL);
578 
580  ito::RetVal moveBackToApplicationThread(ItomSharedSemaphore *waitCond = NULL);
581 
583 
590  void sendParameterRequest(){ emit parametersChanged(m_params); };
591 
592  private slots:
593 
595 
603  virtual void dockWidgetVisibilityChanged(bool /*visible*/) {};
604  };
605 
606  //----------------------------------------------------------------------------------------------------------------------------------
633  class ITOMCOMMONQT_EXPORT AddInDataIO : public AddInBase
634  {
635  Q_OBJECT
636 
637  private:
638  Q_DISABLE_COPY(AddInDataIO)
639 
640  protected:
641  virtual ~AddInDataIO();
642  AddInDataIO();
643 
644  void runStatusChanged(bool deviceStarted);
645 
646  //void timerEvent (QTimerEvent *event) = 0; //implement this event in your plugin, if you are a device, which is accessible by any liveImage!!!
647 
648  QSet<QObject*> m_autoGrabbingListeners;
649  int m_timerID;
653  public:
654  inline int getAutoGrabbing() { return m_autoGrabbingEnabled; }
656  signals:
657 
658  public slots :
660  virtual ito::RetVal startDevice(ItomSharedSemaphore *waitCond);
662  virtual ito::RetVal stopDevice(ItomSharedSemaphore *waitCond);
664  virtual ito::RetVal acquire(const int trigger, ItomSharedSemaphore *waitCond = NULL);
666  virtual ito::RetVal getVal(void* data, ItomSharedSemaphore *waitCond = NULL);
668  virtual ito::RetVal getVal(QSharedPointer<char> data, QSharedPointer<int> length, ItomSharedSemaphore *waitCond = NULL);
670  virtual ito::RetVal copyVal(void *dObj, ItomSharedSemaphore *waitCond);
671 
673  virtual ito::RetVal setVal(const char *data, const int length, ItomSharedSemaphore *waitCond = NULL);
674 
676  ito::RetVal enableAutoGrabbing(ItomSharedSemaphore *waitCond = NULL); //consider this method as final
677 
679  ito::RetVal disableAutoGrabbing(ItomSharedSemaphore *waitCond = NULL); //consider this method as final
680 
682  ito::RetVal setAutoGrabbingInterval(QSharedPointer<int> interval, ItomSharedSemaphore *waitCond = NULL); //consider this method as final
683 
685  ito::RetVal startDeviceAndRegisterListener(QObject* obj, ItomSharedSemaphore *waitCond = NULL); //consider this method as final
686 
688  ito::RetVal stopDeviceAndUnregisterListener(QObject* obj, ItomSharedSemaphore *waitCond = NULL); //consider this method as final
689  };
690 
691  //----------------------------------------------------------------------------------------------------------------------------------
692 
693 
700  class ITOMCOMMONQT_EXPORT AddInActuator : public AddInBase
701  {
702  Q_OBJECT
703 
704  private:
705  Q_DISABLE_COPY(AddInActuator)
706 
707  bool m_interruptFlag;
708  QMutex m_interruptMutex;
710  protected:
711  virtual ~AddInActuator();
712  AddInActuator();
713 
714  QVector<int> m_currentStatus;
715  QVector<double> m_currentPos;
716  QVector<double> m_targetPos;
718  bool isMotorMoving() const
720  {
721  foreach(const int &i, m_currentStatus)
722  {
723  if (i & ito::actuatorMoving)
724  {
725  return true;
726  }
727  }
728  return false;
729  }
730 
731  void sendStatusUpdate(const bool statusOnly = false); /* emits actuatorStatusChanged signal with the vector of currentStatus (and currentPos if statusOnly = false) to notify connected listeners about the current status (and position)*/
732  void sendTargetUpdate(); /* emits targetChanged with the vector of targetPositions to notify connected listeners about the change of the target position(s) */
733 
735 
739  virtual ito::RetVal waitForDone(const int timeoutMS = -1, const QVector<int> axis = QVector<int>() /*if empty -> all axis*/, const int flags = 0 /*for your use*/) = 0;
740 
742 
752  inline void setStatus(int &status, const int newFlags, const int keepMask = 0) { status = (status & keepMask) | newFlags; }
753 
755 
765  inline void setStatus(const QVector<int> &axis, const int newFlags, const int keepMask = 0)
766  {
767  foreach(const int &i, axis)
768  {
769  setStatus(m_currentStatus[i], newFlags, keepMask);
770  }
771  }
772 
774 
783  inline void replaceStatus(int &status, const int existingFlag, const int replaceFlag) { if (status & existingFlag) { status = (status ^ existingFlag) | replaceFlag; } }
784 
786 
796  inline void replaceStatus(const QVector<int> &axis, const int existingFlag, const int replaceFlag)
797  {
798  foreach(const int &i, axis)
799  {
800  replaceStatus(m_currentStatus[i], existingFlag, replaceFlag);
801  }
802  }
803 
805 
812  {
813  QMutexLocker locker(&m_interruptMutex);
814  bool res = m_interruptFlag;
815  m_interruptFlag = false;
816  return res;
817  }
818 
819  public:
821 
829  {
830  QMutexLocker locker(&m_interruptMutex);
831  m_interruptFlag = true;
832  }
833 
834 
835 
836  signals:
838 
847  void actuatorStatusChanged(QVector<int> status, QVector<double> actPosition);
848 
850 
858  void targetChanged(QVector<double> targetPositions);
859 
860  public slots:
862  virtual ito::RetVal calib(const int axis, ItomSharedSemaphore *waitCond = NULL) = 0;
864  virtual ito::RetVal calib(const QVector<int> axis, ItomSharedSemaphore *waitCond = NULL) = 0;
866  virtual ito::RetVal setOrigin(const int axis, ItomSharedSemaphore *waitCond = NULL) = 0;
868  virtual ito::RetVal setOrigin(const QVector<int> axis, ItomSharedSemaphore *waitCond = NULL) = 0;
870  virtual ito::RetVal getStatus(QSharedPointer<QVector<int> > status, ItomSharedSemaphore *waitCond) = 0;
872  virtual ito::RetVal getPos(const int axis, QSharedPointer<double> pos, ItomSharedSemaphore *waitCond) = 0;
874  virtual ito::RetVal getPos(const QVector<int> axis, QSharedPointer<QVector<double> > pos, ItomSharedSemaphore *waitCond) = 0;
876  virtual ito::RetVal setPosAbs(const int axis, const double pos, ItomSharedSemaphore *waitCond = NULL) = 0;
878  virtual ito::RetVal setPosAbs(const QVector<int> axis, QVector<double> pos, ItomSharedSemaphore *waitCond = NULL) = 0;
880  virtual ito::RetVal setPosRel(const int axis, const double pos, ItomSharedSemaphore *waitCond = NULL) = 0;
882  virtual ito::RetVal setPosRel(const QVector<int> axis, QVector<double> pos, ItomSharedSemaphore *waitCond = NULL) = 0;
883 
885  virtual ito::RetVal requestStatusAndPosition(bool sendCurrentPos, bool sendTargetPos); //added 2014-03-04
886  };
887 
888  //----------------------------------------------------------------------------------------------------------------------------------
897  class ITOMCOMMONQT_EXPORT AddInAlgo : public AddInBase
898  {
899  Q_OBJECT
900 
901 #if QT_VERSION < 0x050500
902  //for >= Qt 5.5.0 see Q_ENUM definition below
903  Q_ENUMS(tAlgoCategory)
904  Q_ENUMS(tAlgoInterface)
905 #endif
906 
907  private:
908  Q_DISABLE_COPY(AddInAlgo)
909 
910  public:
911  typedef ito::RetVal(*t_filter)(QVector<ito::ParamBase> *paramsMand, QVector<ito::ParamBase> *paramsOpt, QVector<ito::ParamBase> *paramsOut);
912  typedef QWidget* (*t_algoWidget)(QVector<ito::ParamBase> *paramsMand, QVector<ito::ParamBase> *paramsOpt, ito::RetVal &retValue);
913  typedef ito::RetVal(*t_filterParam)(QVector<ito::Param> *paramsMand, QVector<ito::Param> *paramsOpt, QVector<ito::Param> *paramsOut);
914 
917  {
918  catNone = 0x0000,
919  catDiskIO = 0x0001,
920  catAnalyseDataObject = 0x0002,
921  catPlotDataObject = 0x0004
922  };
923 
926  {
927  iNotSpecified = 0x0000,
928  iReadDataObject = 0x0001,
929  iWriteDataObject = 0x0002,
930  iReadPointCloud = 0x0004,
931  iWritePointCloud = 0x0008,
932  iReadPolygonMesh = 0x0010,
933  iWritePolygonMesh = 0x0020,
934  iPlotSingleObject = 0x0040
935  };
936 
937 #if QT_VERSION >= 0x050500
938  //Q_ENUM exposes a meta object to the enumeration types, such that the key names for the enumeration
939  //values are always accessible.
940  Q_ENUM(tAlgoCategory)
941  Q_ENUM(tAlgoInterface)
942 #endif
943 
945  class FilterDef
946  {
947  public:
950  m_filterFunc(NULL),
951  m_paramFunc(NULL),
952  m_pBasePlugin(NULL),
953  m_category(ito::AddInAlgo::catNone),
954  m_interface(ito::AddInAlgo::iNotSpecified)
955  {}
956 
958  FilterDef(AddInAlgo::t_filter filterFunc, AddInAlgo::t_filterParam filterParamFunc, QString description = QString(), ito::AddInAlgo::tAlgoCategory category = ito::AddInAlgo::catNone, ito::AddInAlgo::tAlgoInterface interf = ito::AddInAlgo::iNotSpecified, QString interfaceMeta = QString()) :
959  m_filterFunc(filterFunc),
960  m_paramFunc(filterParamFunc),
961  m_pBasePlugin(NULL),
962  m_description(description),
963  m_category(category),
964  m_interface(interf),
965  m_interfaceMeta(interfaceMeta)
966  {}
967 
968  virtual ~FilterDef() {}
969 
970  t_filter m_filterFunc;
971  t_filterParam m_paramFunc;
973  QString m_name;
974  QString m_description;
977  QString m_interfaceMeta;
978  private:
979  FilterDef(const FilterDef & /*p*/); //disable copy constructor
980  };
981 
984  {
985  public:
988  m_widgetFunc(NULL),
989  m_paramFunc(NULL),
990  m_pBasePlugin(NULL),
991  m_category(ito::AddInAlgo::catNone),
992  m_interface(ito::AddInAlgo::iNotSpecified)
993  {}
994 
996  AlgoWidgetDef(AddInAlgo::t_algoWidget algoWidgetFunc, AddInAlgo::t_filterParam algoWidgetParamFunc, QString description = QString(), ito::AddInAlgo::tAlgoCategory category = ito::AddInAlgo::catNone, ito::AddInAlgo::tAlgoInterface interf = ito::AddInAlgo::iNotSpecified, QString interfaceMeta = QString()) :
997  m_widgetFunc(algoWidgetFunc),
998  m_paramFunc(algoWidgetParamFunc),
999  m_pBasePlugin(NULL),
1000  m_description(description),
1001  m_category(category),
1002  m_interface(interf),
1003  m_interfaceMeta(interfaceMeta)
1004  {}
1005 
1006  virtual ~AlgoWidgetDef() {}
1007 
1008  t_algoWidget m_widgetFunc;
1009  t_filterParam m_paramFunc;
1011  QString m_name;
1012  QString m_description;
1016 
1017  private:
1018  AlgoWidgetDef(const AlgoWidgetDef & /*p*/); //disable copy constructor
1019  };
1020 
1021  ito::RetVal getFilterList(QHash<QString, FilterDef *> &fList) const;
1022  ito::RetVal getAlgoWidgetList(QHash<QString, AlgoWidgetDef *> &awList) const;
1023  ito::RetVal rejectFilter(const QString &name);
1024  ito::RetVal rejectAlgoWidget(const QString &name);
1025 
1026  protected:
1027  virtual ~AddInAlgo();
1028  AddInAlgo();
1029  QHash<QString, FilterDef *> m_filterList;
1030  QHash<QString, AlgoWidgetDef *> m_algoWidgetList;
1031 
1032  static ito::RetVal prepareParamVectors(QVector<ito::Param> *paramsMand, QVector<ito::Param> *paramsOpt, QVector<ito::Param> *paramsOut)
1033  {
1034  if (!paramsMand)
1035  {
1036  return RetVal(ito::retError, 0, tr("uninitialized vector for mandatory parameters!").toLatin1().data());
1037  }
1038  if (!paramsOpt)
1039  {
1040  return RetVal(ito::retError, 0, tr("uninitialized vector for optional parameters!").toLatin1().data());
1041  }
1042  if (!paramsOut)
1043  {
1044  return RetVal(ito::retError, 0, tr("uninitialized vector for output parameters!").toLatin1().data());
1045  }
1046  paramsMand->clear();
1047  paramsOpt->clear();
1048  paramsOut->clear();
1049  return ito::retOk;
1050  }
1051 
1052  public slots:
1053  virtual ito::RetVal getParam(QSharedPointer<ito::Param> /*val*/, ItomSharedSemaphore * /*waitCond*/ = NULL) { return ito::retOk; }
1054  virtual ito::RetVal setParam(QSharedPointer<ito::ParamBase> /*val*/, ItomSharedSemaphore * /*waitCond*/ = NULL) { return ito::retOk; }
1055  };
1056 
1057  //----------------------------------------------------------------------------------------------------------------------------------
1058 } // namespace ito
1059 
1060 #endif //#if !defined(Q_MOC_RUN) || defined(ITOMCOMMONQT_MOC)
1061 
1062 //###########################################################################################################
1063 // Interface version:
1064 //###########################################################################################################
1065 //
1066 //
1067 // Please change the interface version, if you made any changes to this interface, files located in the common folder or to the dataObject.
1068 //
1069 // To add a new version, do the following steps
1070 //
1071 // 1. append the string behind the variable ito_AddInInterface_CurrentVersion (e.g. ito.AddIn.InterfaceBase/1.1) to the array ito_AddInInterface_OldVersions
1072 // 2. change the version number in the string ito_AddInInterface_CurrentVersion
1073 // 3. if the AddInInterface version number is incremented, the ito.AbstractItomDesignerPlugin number in AbstractItomDesignerPlugin.h must be incremented as well.
1074 //
1075 //
1076 // This helps, that deprecated or "future" plugins, which fit not to the current implementation of the interface will not be loaded
1077 // but a sophisticated error message is shown.
1078 
1079 static const char* ito_AddInInterface_OldVersions[] = {
1080  "ito.AddIn.InterfaceBase/1.0", //version from start of development until 2012-10-11
1081  "ito.AddIn.InterfaceBase/1.1", //version until 2012-10-15 (outdated due to changes in dataObject)
1082  "ito.AddIn.InterfaceBase/1.1.1", //version until 2012-10-21 (outdated due to small changes in addInInterface)
1083  "ito.AddIn.InterfaceBase/1.1.2", //version until 2012-10-30 (outdated due to small changes in addInInterface)
1084  "ito.AddIn.InterfaceBase/1.1.3", //version until 2012-11-09 (outdated due to changes in the checkData()-function in addInGrabber)
1085  "ito.AddIn.InterfaceBase/1.1.4", //version until 2012-11-12 (outdated due to changes in the DataObject)
1086  "ito.AddIn.InterfaceBase/1.1.5", //version until 2012-11-18 (outdated: changes in the API structure)
1087  "ito.AddIn.InterfaceBase/1.1.6", //version until 2012-12-20 (outdated: added paramBase metatype)
1088  "ito.AddIn.InterfaceBase/1.1.7", //version until 2013-01-17 (outdated: last version for itom version 1.0.5)
1089  "ito.AddIn.InterfaceBase/1.1.8", //version until 2013-01-23 (outdated: changes in auto-grabbing of cameras, first interface for itom version 1.0.6)
1090  "ito.AddIn.InterfaceBase/1.1.9", //version until 2013-03-04 (outdated: changes in dataObjectHelper)
1091  "ito.AddIn.InterfaceBase/1.1.10",//version until 2013-03-12 (outdated: Added license and about string to the plugin)
1092  "ito.AddIn.InterfaceBase/1.1.11",//version until 2013-03-22 (outdated: bugfix in ito::ParamBase)
1093  "ito.AddIn.InterfaceBase/1.1.12",//version until 2013-03-25 (outdated: changes in api)
1094  "ito.AddIn.InterfaceBase/1.1.13",//version until 2013-04-08 (outdated: removed transpose flag in dataObject)
1095  "ito.AddIn.InterfaceBase/1.1.14",//version until 2013-04-17 (outdated: uniqueID and identifier inserted/changed)
1096  "ito.AddIn.InterfaceBase/1.1.15",//version until 2013-04-23 (outdated: made some tag-space related methods non-inline (due to linker errors in MSVC))
1097  "ito.AddIn.InterfaceBase/1.1.16",//version until 2013-06-07 (outdated: added qpluginloader to the interface for cleaner unloading of plugins)
1098  "ito.AddIn.InterfaceBase/1.1.17",//version until 2013-06-11 (outdated: apis extended, changes in param-class)
1099  "ito.AddIn.InterfaceBase/1.1.18",//version until 2013-06-18 (outdated: iterator and constIterator introduced for dataObject)
1100  "ito.AddIn.InterfaceBase/1.1.19",//version until 2013-08-15 (outdated: operators +, +=, -, -= introduced for scalar operands)
1101  "ito.AddIn.InterfaceBase/1.1.20",//version until 2013-10-10 (outdated: RGBA-type introduced into dataObjectTypes)
1102  "ito.AddIn.InterfaceBase/1.1.21",//version until 2013-10-15 (outdated: getSize(..) and getTotalSize(..) return int now and -1 if error. Consistency to documented behaviour)
1103  "ito.AddIn.InterfaceBase/1.1.22",//version until 2013-10-27 (outdated: class Rgba32Base in typedefs.h and inherited class Rgba32 in color.h introduced, improved data() method in dataObj)
1104  "ito.AddIn.InterfaceBase/1.1.23",//version until 2013-12-17 (outdated: changed dataObject internal size parameters (back) from size_t to int - hopfully last time)
1105  "ito.AddIn.InterfaceBase/1.1.24",//version until 2014-02-09 (outdated: restructuring to itomCommonLib and itomCommonQtLib for a better binary compatibility)
1106  "ito.AddIn.InterfaceBase/1.2.0", //outdated on 2014-03-14 due to change in AddInDataIO::setVal(const char *data, const int length, ItomSharedSemaphore *waitCond = NULL); (const void *data changed to const char *data) (Qt5 bugfix)
1107  "ito.AddIn.InterfaceBase/1.2.1", //outdated on 2014-10-06 due to changes in APIs, retVal.h and itomWidgets-project. The next version 1.3.0 is the version for the setup 1.3.0.
1108  "ito.AddIn.InterfaceBase/1.3.0", //outdated on 2014-10-27 due to insertion of ito::AutoInterval object and addition of further ito::ParamMeta classes.
1109  "ito.AddIn.InterfaceBase/1.3.1", //outdated on 2015-03-01 due to rework on data object
1110  "ito.AddIn.InterfaceBase/1.4.0", //outdated on 2015-07-03 due to removal of lock mechanism in data object, add of embedded line plots, qt5 incompatiblity changes and some refinements in addInInterface
1111  "ito.AddIn.InterfaceBase/2.0.0", //outdated on 2015-12-04 due to improvements in plot/figure interfaces, removal of deprecated classes helperActuator and helperGrabber and further removal of deprecated items
1112  "ito.AddIn.InterfaceBase/2.1.0", //outdated on 2016-02-01 due to improvements in PluginThreadCtrl, ActuatorThreadCtrl and DataIoThreadCtrl (as replacement for removed classes helperActuator and helperGrabber), new method ito::DataObject::getStep and some smaller rearrangements
1113  "ito.AddIn.InterfaceBase/2.2.0", //outdated on 2016-02-19 due to crash fixes if the main mindow is deleted and implicitely closes dock widgets of plugins, that are currently blocked by any other operation.
1114  "ito.AddIn.InterfaceBase/2.3.0", //outdated on 2016-06-14 due to changes in signal definitions in plots, introduction of complex and complexArray types in ParamBase and further smaller changes.
1115  "ito.AddIn.InterfaceBase/2.4.0", //outdated on 2016-07-12 due to new library itomCommonPlotLib.
1116  "ito.AddIn.InterfaceBase/2.5.0", //outdated on 2017-02-05 due to changes in ParamMeta classes
1117  "ito.AddIn.InterfaceBase/2.6.0", //outdated on 2017-02-05 since the AddInManager has been separated into its own shared library
1118  NULL
1119 };
1120 
1121 //these defines exist since itom 1.3.1
1122 #define CREATE_ADDININTERFACE_VERSION_STR(major,minor,patch) "ito.AddIn.InterfaceBase/"#major"."#minor"."#patch
1123 #define CREATE_ADDININTERFACE_VERSION(major,minor,patch) ((major<<16)|(minor<<8)|(patch))
1124 
1125 #define ITOM_ADDININTERFACE_MAJOR 3
1126 #define ITOM_ADDININTERFACE_MINOR 0
1127 #define ITOM_ADDININTERFACE_PATCH 0
1128 #define ITOM_ADDININTERFACE_VERSION CREATE_ADDININTERFACE_VERSION(ITOM_ADDININTERFACE_MAJOR,ITOM_ADDININTERFACE_MINOR,ITOM_ADDININTERFACE_PATCH)
1129 static const char* ito_AddInInterface_CurrentVersion = CREATE_ADDININTERFACE_VERSION_STR(3, 0, 0); //results in "ito.AddIn.InterfaceBase/x.x.x"; (the numbers 1,3,1 can not be replaced by the macros above. Does not work properly)
1130 
1131 
1132 
1134 Q_DECLARE_INTERFACE(ito::AddInInterfaceBase, ito_AddInInterface_CurrentVersion /*"ito.AddIn.InterfaceBase/1.1"*/)
1135 
1136 #endif
AddInBasePrivate * aibp
pointer to private class of AddInBase defined in AddInInterface.cpp. This container is used to allow ...
Definition: addInInterface.h:540
Definition: addInInterface.h:178
Definition: addInInterface.h:164
QString m_name
name of widget
Definition: addInInterface.h:1011
tAutoLoadPolicy getAutoLoadPolicy(void) const
returns true if the plugin allows his own parameter load to be autoloaded by addin manager ...
Definition: addInInterface.h:295
PyObject * setParam(ito::AddInBase *addInObj, PyObject *args)
Definition: pythonPlugins.cpp:1048
container for publishing widgets provided by any plugin
Definition: addInInterface.h:983
const ito::RetVal getExecFuncList(QMap< QString, ExecFuncParams > **funcs)
returns list of registered additional functions
Definition: addInInterface.h:393
Definition: addInInterface.h:182
bool hasGuiSupport()
check if we have gui support
Definition: addInInterface.h:512
QString m_description
description of filter
Definition: addInInterface.h:974
AddInInterfaceBase()
default constructor
Definition: addInInterface.h:274
Definition: addInInterface.h:155
tPluginType
tPluginType enumeration
Definition: addInInterface.h:127
void setStatus(int &status, const int newFlags, const int keepMask=0)
sets status flags of given status variable
Definition: addInInterface.h:752
base class for all actuator plugin classes
Definition: addInInterface.h:700
dataObject contains a n-dimensional matrix
Definition: dataobj.h:496
Definition: addInInterface.h:151
ito::AddInAlgo::tAlgoInterface m_interface
algorithm interface, filter fits to (default: iNotSpecified)
Definition: addInInterface.h:976
QVector< ito::Param > m_initParamsMand
vector with the mandatory initialisation parameters, please only read this vector within the init-met...
Definition: addInInterface.h:244
Definition: addInInterface.h:149
const ito::RetVal getParamList(QMap< QString, Param > **paramNames)
returns a map with the parameters of this plugin.
Definition: addInInterface.h:385
QString m_description
a brief descrition of the plugin
Definition: addInInterface.h:239
void replaceStatus(const QVector< int > &axis, const int existingFlag, const int replaceFlag)
changes the status flags of the status of the given axes from one existing to a new value ...
Definition: addInInterface.h:796
Definition: typeDefs.h:60
Definition: addInInterface.h:161
Class for managing status values (like errors or warning)
Definition: retVal.h:54
class for parameter handling e.g. to pass paramters to plugins
Definition: param.h:251
Definition: addInInterface.h:130
const QString getAboutInfo(void) const
returns a detailed description of the plugin compile informations
Definition: addInInterface.h:309
base class for all dataIO plugin classes
Definition: addInInterface.h:633
virtual ~AlgoWidgetDef()
destructor
Definition: addInInterface.h:1006
Definition: addInInterface.h:157
int m_timerIntervalMS
Definition: addInInterface.h:650
Base class for all plugins.
Definition: addInInterface.h:356
bool m_autoGrabbingEnabled
Definition: addInInterface.h:651
QString m_name
name of filter
Definition: addInInterface.h:973
tAutoSavePolicy m_autoSavePolicy
Definition: addInInterface.h:248
tAutoLoadPolicy m_autoLoadPolicy
Definition: addInInterface.h:247
PyObject * getParam(ito::AddInBase *addInObj, PyObject *args)
Definition: pythonPlugins.cpp:741
tActuatorStatus
tActuatorStatus enumeration
Definition: addInInterface.h:146
ito::AddInInterfaceBase * m_pBasePlugin
interface (factory) instance of this plugin (will be automatically filled)
Definition: addInInterface.h:972
base class for all "algorithm" plugin classes
Definition: addInInterface.h:897
Definition: addInInterface.h:150
int getMaxItomVer(void) const
returns maximum supported version of main program
Definition: addInInterface.h:289
int getInstCount()
get number instantiated plugins
Definition: addInInterface.h:332
void sendParameterRequest()
immediately emits the signal parametersChanged
Definition: addInInterface.h:590
int m_version
plugin version
Definition: addInInterface.h:234
Definition: typeDefs.h:58
ito::RetVal(* t_filterParam)(QVector< ito::Param > *paramsMand, QVector< ito::Param > *paramsOpt, QVector< ito::Param > *paramsOut)
possible categories for filter or widget-methods
Definition: addInInterface.h:913
QString m_description
description of widget
Definition: addInInterface.h:1012
Definition: addInInterface.h:162
tAutoSavePolicy getAutoSavePolicy(void) const
returns true if the plugin allows his own parameter save to be autoloaded by addin manager ...
Definition: addInInterface.h:298
void replaceStatus(int &status, const int existingFlag, const int replaceFlag)
changes the status bit of the given status value from one existing to a new value.
Definition: addInInterface.h:783
Definition: addInInterface.h:129
Definition: addInInterface.cpp:117
virtual QVector< ito::Param > * getInitParamsMand(void)
returns a vector with the mandatory initialisation parameters
Definition: addInInterface.h:320
QVector< Param > paramsOpt
Definition: addInInterface.h:185
Definition: addInInterface.h:165
tAutoSavePolicy
Definition: addInInterface.h:177
QVector< Param > paramsMand
Definition: addInInterface.h:184
t_filterParam m_paramFunc
function pointer (unbounded, static) for widget&#39;s default parameter method
Definition: addInInterface.h:1009
void setInterrupt()
set interrupt flag (thread-safe)
Definition: addInInterface.h:828
QString m_license
a short license string for the plugin, default value is "LGPL with ITO itom-exception" ...
Definition: addInInterface.h:241
Definition: apiFunctionsGraph.cpp:39
default: no category
Definition: addInInterface.h:918
bool hasGuiSupport()
check if we have gui support
Definition: addInInterface.h:255
int getRefCount(void) const
Returns the reference counter of this instance.
Definition: addInInterface.h:417
t_filter m_filterFunc
function pointer (unbounded, static) for filter-method
Definition: addInInterface.h:970
Definition: addInInterface.h:154
int getVersion(void) const
returns addIn version
Definition: addInInterface.h:285
bool getCallInitInNewThread(void) const
returns whether init-method should be called in new thread (default) or still in main thread ...
Definition: addInInterface.h:292
Definition: addInInterface.h:173
void setStatus(const QVector< int > &axis, const int newFlags, const int keepMask=0)
sets status flags of the status of the given axes
Definition: addInInterface.h:765
ito::AddInAlgo::tAlgoInterface m_interface
algorithm interface, widget fits to (default: iNotSpecified)
Definition: addInInterface.h:1014
FilterDef()
< empty, default constructor
Definition: addInInterface.h:949
QVector< ito::Param > m_initParamsOpt
vector with the optional initialisation parameters, please only read this vector within the init-meth...
Definition: addInInterface.h:245
QString m_interfaceMeta
meta information if required by algorithm interface
Definition: addInInterface.h:1015
Definition: addInInterface.h:159
semaphore which can be used for asychronous thread communication. By using this class it is possible ...
Definition: sharedStructuresQt.h:57
int m_type
plugin type
Definition: addInInterface.h:233
Definition: addInInterface.h:172
Definition: addInInterface.h:362
Definition: addInInterface.h:179
virtual QVector< ito::Param > * getInitParamsOpt(void)
returns a vector with the optional initialisation parameters
Definition: addInInterface.h:322
QVector< ito::AddInBase::AddInRef * > m_hwDecList
list of hardware that was passed to the plugin on initialisation and whose refcounter was incremented...
Definition: addInInterface.h:535
Definition: addInInterface.h:131
QMutex m_refCountMutex
mutex for making the reference counting mechanism thread-safe.
Definition: addInInterface.h:537
int m_minItomVer
maximum supported version of the main program
Definition: addInInterface.h:237
static int maxThreadCount
maximum number of threads algorithms can use e.g. with OpenMP parallelization. This is a number betwe...
Definition: addInInterface.h:545
Definition: addInInterface.h:168
QString m_identifier
unique identifier (serial number, com-port...)
Definition: addInInterface.h:509
Definition: addInInterface.h:128
int m_timerID
Definition: addInInterface.h:649
QString m_author
the plugin author
Definition: addInInterface.h:238
forward declaration to private container class of AddInBase
Definition: addInInterface.h:224
QList< ito::AddInBase * > m_InstList
vector holding a list of the actual instantiated classes of the plugin
Definition: addInInterface.h:243
virtual void dockWidgetVisibilityChanged(bool)
overwrite this slot if you want to get informed when the dock-widget of the plugin becomes (in)visibl...
Definition: addInInterface.h:603
QVector< ito::AddInBase::AddInRef * > * getArgAddIns(void)
returns vector of AddInRef instances.
Definition: addInInterface.h:483
Definition: addInInterface.h:132
QMutex m_atomicMutex
mutex for protecting atomic getter and setter methods (e.g. alive and initialized) ...
Definition: addInInterface.h:539
tAutoLoadPolicy
Definition: addInInterface.h:171
int m_refCount
reference counter, used to avoid early deletes (0 means that one instance is holding one reference...
Definition: addInInterface.h:534
Definition: addInInterface.h:156
default: filter or widget does not fit to any interface
Definition: addInInterface.h:927
const QString getLicenseInfo(void) const
returns a detailed description of the plugin license
Definition: addInInterface.h:307
int getMinItomVer(void) const
returns minimum required version of main program
Definition: addInInterface.h:287
int getAutoGrabbing()
Definition: addInInterface.h:654
QSet< QObject * > m_autoGrabbingListeners
Definition: addInInterface.h:648
Definition: addInInterface.h:174
QList< ito::AddInBase * > getInstList(void)
returns a list of the actual intantiated classes from this plugin
Definition: addInInterface.h:315
void setAlive(void)
sets the alive-flag to 1 ("still alive")
Definition: addInInterface.h:460
tAlgoCategory
Definition: addInInterface.h:916
QMap< QString, ExecFuncParams > m_execFuncList
map with registered additional functions. funcExec-name -> (default mandParams, default optParams...
Definition: addInInterface.h:536
int isAlive(void)
returns the alive-flag of this plugin
Definition: addInInterface.h:446
const QString getAuthor(void) const
returns plugin author
Definition: addInInterface.h:301
const QString getDetailDescription(void) const
returns a detailed description of the plugin
Definition: addInInterface.h:305
int getType(void) const
returns addIn type
Definition: addInInterface.h:283
ito::AddInInterfaceBase * m_pBasePlugin
interface (factory) instance of this plugin (will be automatically filled)
Definition: addInInterface.h:1010
Definition: addInInterface.h:158
Definition: addInInterface.h:166
AlgoWidgetDef()
< empty, default constructor
Definition: addInInterface.h:987
Definition: addInInterface.h:133
ito::AddInAlgo::tAlgoCategory m_category
category, widget belongs to (default: catNone)
Definition: addInInterface.h:1013
QString m_interfaceMeta
meta information if required by algorithm interface
Definition: addInInterface.h:977
QMap< QString, Param > m_params
map of the available parameters
Definition: addInInterface.h:507
t_algoWidget m_widgetFunc
function pointer (unbounded, static) for widget-method
Definition: addInInterface.h:1008
Definition: apiFunctionsGraph.h:38
QString m_filename
plugin (library) filename on the disc
Definition: addInInterface.h:235
ito::AddInAlgo::tAlgoCategory m_category
category, filter belongs to (default: catNone)
Definition: addInInterface.h:975
Definition: addInInterface.h:152
bool isInterrupted()
returns interrupt flag (thread-safe)
Definition: addInInterface.h:811
bool m_callInitInNewThread
Definition: addInInterface.h:249
t_filterParam m_paramFunc
function pointer (unbounded, static) for filter&#39;s default parameter method
Definition: addInInterface.h:971
QVector< Param > paramsOut
Definition: addInInterface.h:186
int m_maxItomVer
minimum required version of the main program
Definition: addInInterface.h:236
const QString getDescription(void) const
returns a brief description of the plugin
Definition: addInInterface.h:303
int m_alive
member to check if thread is still responsive
Definition: addInInterface.h:538
tAlgoInterface
Definition: addInInterface.h:925
Definition: addInInterface.h:148
const QString getFilename(void) const
returns the plugin&#39;s filename
Definition: addInInterface.h:311
Definition: addInInterface.h:167
QString getIdentifier() const
retrieve the unique identifier of this instance
Definition: addInInterface.h:399
Definition: addInInterface.h:190
container for publishing filters provided by any plugin
Definition: addInInterface.h:945
QString m_detaildescription
a detail descrition of the plugin
Definition: addInInterface.h:240