itom
Loading...
Searching...
No Matches
addInInterfaceVersion.h
1/* ********************************************************************
2itom software
3URL: http://www.uni-stuttgart.de/ito
4Copyright (C) 2020, Institut für Technische Optik (ITO),
5Universität Stuttgart, Germany
6
7This file is part of itom and its software development toolkit (SDK).
8
9itom is free software; you can redistribute it and/or modify it
10under the terms of the GNU Library General Public Licence as published by
11the Free Software Foundation; either version 2 of the Licence, or (at
12your option) any later version.
13
14In addition, as a special exception, the Institut für Technische
15Optik (ITO) gives you certain additional rights.
16These rights are described in the ITO LGPL Exception version 1.0,
17which can be found in the file LGPL_EXCEPTION.txt in this package.
18
19itom is distributed in the hope that it will be useful, but
20WITHOUT ANY WARRANTY; without even the implied warranty of
21MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library
22General Public Licence for more details.
23
24You should have received a copy of the GNU Library General Public License
25along with itom. If not, see <http://www.gnu.org/licenses/>.
26*********************************************************************** */
27
28#ifndef ADDININTERFACEVERSION_H
29#define ADDININTERFACEVERSION_H
30
31#include "typeDefs.h"
32
33//###########################################################################################################
34// Interface version:
35//###########################################################################################################
36//
37//
38// Please change the interface version, if you made any changes to this interface, files located in the common folder or to the dataObject.
39//
40// To add a new version, do the following steps
41//
42// 1. change ITOM_ADDININTERFACE_MAJOR, ITOM_ADDININTERFACE_Minor and/or ITOM_ADDININTERFACE_Patch
43// 2. append the string behind the variable ito_AddInInterface_CurrentVersion (e.g. ito.AddIn.InterfaceBase/1.1) to the array ito_AddInInterface_OldVersions
44// 3. change the version number in the string ito_AddInInterface_CurrentVersion
45//
46//
47// This helps, that deprecated or "future" plugins, which fit not to the current implementation of the interface will not be loaded
48// but a sophisticated error message is shown.
49//
50// From version 4.0.0 on, the version numbers follow the schematic of semantic versioning (semver.org).
51// In general, any plugin can be loaded whose interface is based on the CREATE_ADDININTERFACE_MAJOR_VERSION_STR (major version number must fit).
52// itom loads such a plugin if its minor version number is lower or equal than the minor version number, defined in the compiled version of the core
53// application of itom. The patch number does not influence the ability to load a plugin library.
54
55static const char* ito_AddInInterface_OldVersions[] = {
56 "ito.AddIn.InterfaceBase/1.0", //version from start of development until 2012-10-11
57 "ito.AddIn.InterfaceBase/1.1", //version until 2012-10-15 (outdated due to changes in dataObject)
58 "ito.AddIn.InterfaceBase/1.1.1", //version until 2012-10-21 (outdated due to small changes in addInInterface)
59 "ito.AddIn.InterfaceBase/1.1.2", //version until 2012-10-30 (outdated due to small changes in addInInterface)
60 "ito.AddIn.InterfaceBase/1.1.3", //version until 2012-11-09 (outdated due to changes in the checkData()-function in addInGrabber)
61 "ito.AddIn.InterfaceBase/1.1.4", //version until 2012-11-12 (outdated due to changes in the DataObject)
62 "ito.AddIn.InterfaceBase/1.1.5", //version until 2012-11-18 (outdated: changes in the API structure)
63 "ito.AddIn.InterfaceBase/1.1.6", //version until 2012-12-20 (outdated: added paramBase metatype)
64 "ito.AddIn.InterfaceBase/1.1.7", //version until 2013-01-17 (outdated: last version for itom version 1.0.5)
65 "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)
66 "ito.AddIn.InterfaceBase/1.1.9", //version until 2013-03-04 (outdated: changes in dataObjectHelper)
67 "ito.AddIn.InterfaceBase/1.1.10",//version until 2013-03-12 (outdated: Added license and about string to the plugin)
68 "ito.AddIn.InterfaceBase/1.1.11",//version until 2013-03-22 (outdated: bugfix in ito::ParamBase)
69 "ito.AddIn.InterfaceBase/1.1.12",//version until 2013-03-25 (outdated: changes in api)
70 "ito.AddIn.InterfaceBase/1.1.13",//version until 2013-04-08 (outdated: removed transpose flag in dataObject)
71 "ito.AddIn.InterfaceBase/1.1.14",//version until 2013-04-17 (outdated: uniqueID and identifier inserted/changed)
72 "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))
73 "ito.AddIn.InterfaceBase/1.1.16",//version until 2013-06-07 (outdated: added qpluginloader to the interface for cleaner unloading of plugins)
74 "ito.AddIn.InterfaceBase/1.1.17",//version until 2013-06-11 (outdated: apis extended, changes in param-class)
75 "ito.AddIn.InterfaceBase/1.1.18",//version until 2013-06-18 (outdated: iterator and constIterator introduced for dataObject)
76 "ito.AddIn.InterfaceBase/1.1.19",//version until 2013-08-15 (outdated: operators +, +=, -, -= introduced for scalar operands)
77 "ito.AddIn.InterfaceBase/1.1.20",//version until 2013-10-10 (outdated: RGBA-type introduced into dataObjectTypes)
78 "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)
79 "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)
80 "ito.AddIn.InterfaceBase/1.1.23",//version until 2013-12-17 (outdated: changed dataObject internal size parameters (back) from size_t to int - hopefully last time)
81 "ito.AddIn.InterfaceBase/1.1.24",//version until 2014-02-09 (outdated: restructuring to itomCommonLib and itomCommonQtLib for a better binary compatibility)
82 "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)
83 "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.
84 "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.
85 "ito.AddIn.InterfaceBase/1.3.1", //outdated on 2015-03-01 due to rework on data object
86 "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 incompatibility changes and some refinements in addInInterface
87 "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
88 "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
89 "ito.AddIn.InterfaceBase/2.2.0", //outdated on 2016-02-19 due to crash fixes if the main mindow is deleted and implicitly closes dock widgets of plugins, that are currently blocked by any other operation.
90 "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.
91 "ito.AddIn.InterfaceBase/2.4.0", //outdated on 2016-07-12 due to new library itomCommonPlotLib.
92 "ito.AddIn.InterfaceBase/2.5.0", //outdated on 2017-02-05 due to changes in ParamMeta classes
93 "ito.AddIn.InterfaceBase/2.6.0", //outdated on 2017-02-05 since the AddInManager has been separated into its own shared library
94 "ito.AddIn.InterfaceBase/3.0.0", //outdated on 2017-12-06 due to change of type (float to double) in ito::AutoInterval
95 "ito.AddIn.InterfaceBase/3.1.0", //outdated on 2018-01-10 due to introduction of xData feature in plots
96 "ito.AddIn.InterfaceBase/3.2.0", //outdated on 2019-03-03 due to cleanup in AddInInterface including Private-classes for all AddIn classes and the ability to return the last reported state and position of axes (even while the axis is currently moving)
97 "ito.AddIn.InterfaceBase/3.3.0", //outdated on 2019-11-19 due to new FilterDefExt class and semver based interface numbering
98 "ito.AddIn.InterfaceBase/4.0.0", //outdated on 2020-01-01 due to removal of Qt4 support and removal of #precompiler checks that differ between Qt4 and Qt5.
99 "ito.AddIn.InterfaceBase/4.0.1", //outdated on 2020-03-31 due to atomic reference counting in ito::ByteArray
100 "ito.AddIn.InterfaceBase/4.0.2", //outdated on 2020-09-15 due to additional property 'popupSlider' of 'ParamEditorWidget'
101 "ito.AddIn.InterfaceBase/4.1.0", //outdated on 2020-12-14 due to new userMutex in AddInBase
102 "ito.AddIn.InterfaceBase/4.2.0", //outdated on 2021-05-19 due to rework of ParamBase, Param, ParamMeta including the new StringList parameter type. Further changes in RetVal interface and bool operator of itom.dataObject.
103 "ito.AddIn.InterfaceBase/5.0.0", //outdated on 2022-05-07 due to bugfix of DObjMeta class (see https://github.com/itom-project/itom/issues/187)
104 NULL
105};
106
107//these defines exist since itom 1.3.1
108#define CREATE_ADDININTERFACE_VERSION_STR(major,minor,patch) "ito.AddIn.InterfaceBase/"#major"."#minor"."#patch
109#define CREATE_ADDININTERFACE_MAJOR_VERSION_STR(major) "ito.AddIn.InterfaceBase/"#major
110
111//please indicate the major, minor and patch version in the following defines.
112//Additionally put all three components of the version in the define ITOM_ADDININTERFACE_VERSION_STR
113//and add the major version number only as argument of the macro in the last line.
114#define ITOM_ADDININTERFACE_MAJOR 6
115#define ITOM_ADDININTERFACE_MINOR 0
116#define ITOM_ADDININTERFACE_PATCH 0
117#define ITOM_ADDININTERFACE_VERSION CREATEVERSION(ITOM_ADDININTERFACE_MAJOR,ITOM_ADDININTERFACE_MINOR,ITOM_ADDININTERFACE_PATCH)
118#define ITOM_ADDININTERFACE_VERSION_STR CREATE_ADDININTERFACE_VERSION_STR(6,0,0)
119static constexpr const char* ito_AddInInterface_CurrentVersion = CREATE_ADDININTERFACE_MAJOR_VERSION_STR(6); //results in "ito.AddIn.InterfaceBase/x"; (the major version number 5 can not be replaced by the macros above. Does not work properly)
120
121#endif