diff --git a/src/libs/ifc/schema.qrc b/src/libs/ifc/schema.qrc
index 5d41d6883..c98ebbe84 100644
--- a/src/libs/ifc/schema.qrc
+++ b/src/libs/ifc/schema.qrc
@@ -65,6 +65,7 @@
schema/standard_measurements/v0.4.2.xsd
schema/standard_measurements/v0.4.3.xsd
schema/standard_measurements/v0.4.4.xsd
+ schema/standard_measurements/v0.5.0.xsd
schema/individual_measurements/v0.2.0.xsd
schema/individual_measurements/v0.3.0.xsd
schema/individual_measurements/v0.3.1.xsd
diff --git a/src/libs/ifc/schema/standard_measurements/v0.5.0.xsd b/src/libs/ifc/schema/standard_measurements/v0.5.0.xsd
new file mode 100644
index 000000000..00a520ec5
--- /dev/null
+++ b/src/libs/ifc/schema/standard_measurements/v0.5.0.xsd
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/libs/ifc/xml/vvstconverter.cpp b/src/libs/ifc/xml/vvstconverter.cpp
index e6bc9c2d9..4de64c117 100644
--- a/src/libs/ifc/xml/vvstconverter.cpp
+++ b/src/libs/ifc/xml/vvstconverter.cpp
@@ -54,8 +54,8 @@
*/
const QString VVSTConverter::MeasurementMinVerStr = QStringLiteral("0.3.0");
-const QString VVSTConverter::MeasurementMaxVerStr = QStringLiteral("0.4.4");
-const QString VVSTConverter::CurrentSchema = QStringLiteral("://schema/standard_measurements/v0.4.4.xsd");
+const QString VVSTConverter::MeasurementMaxVerStr = QStringLiteral("0.5.0");
+const QString VVSTConverter::CurrentSchema = QStringLiteral("://schema/standard_measurements/v0.5.0.xsd");
//VVSTConverter::MeasurementMinVer; // <== DON'T FORGET TO UPDATE TOO!!!!
//VVSTConverter::MeasurementMaxVer; // <== DON'T FORGET TO UPDATE TOO!!!!
@@ -75,25 +75,25 @@ VVSTConverter::VVSTConverter(const QString &fileName)
//---------------------------------------------------------------------------------------------------------------------
QString VVSTConverter::XSDSchema(int ver) const
{
- switch (ver)
+ QHash schemas =
{
- case (0x000300):
- return QStringLiteral("://schema/standard_measurements/v0.3.0.xsd");
- case (0x000400):
- return QStringLiteral("://schema/standard_measurements/v0.4.0.xsd");
- case (0x000401):
- return QStringLiteral("://schema/standard_measurements/v0.4.1.xsd");
- case (0x000402):
- return QStringLiteral("://schema/standard_measurements/v0.4.2.xsd");
- case (0x000403):
- return QStringLiteral("://schema/standard_measurements/v0.4.3.xsd");
- case (0x000404):
- return CurrentSchema;
- default:
- InvalidVersion(ver);
- break;
+ std::make_pair(FORMAT_VERSION(0, 3, 0), QStringLiteral("://schema/standard_measurements/v0.3.0.xsd")),
+ std::make_pair(FORMAT_VERSION(0, 4, 0), QStringLiteral("://schema/standard_measurements/v0.4.0.xsd")),
+ std::make_pair(FORMAT_VERSION(0, 4, 1), QStringLiteral("://schema/standard_measurements/v0.4.1.xsd")),
+ std::make_pair(FORMAT_VERSION(0, 4, 2), QStringLiteral("://schema/standard_measurements/v0.4.2.xsd")),
+ std::make_pair(FORMAT_VERSION(0, 4, 3), QStringLiteral("://schema/standard_measurements/v0.4.3.xsd")),
+ std::make_pair(FORMAT_VERSION(0, 4, 4), QStringLiteral("://schema/standard_measurements/v0.4.4.xsd")),
+ std::make_pair(FORMAT_VERSION(0, 5, 0), CurrentSchema),
+ };
+
+ if (schemas.contains(ver))
+ {
+ return schemas.value(ver);
+ }
+ else
+ {
+ InvalidVersion(ver);
}
- return QString();//unreachable code
}
//---------------------------------------------------------------------------------------------------------------------
@@ -101,27 +101,31 @@ void VVSTConverter::ApplyPatches()
{
switch (m_ver)
{
- case (0x000300):
+ case (FORMAT_VERSION(0, 3, 0)):
ToV0_4_0();
- ValidateXML(XSDSchema(0x000400));
+ ValidateXML(XSDSchema(FORMAT_VERSION(0, 4, 0)));
Q_FALLTHROUGH();
- case (0x000400):
+ case (FORMAT_VERSION(0, 4, 0)):
ToV0_4_1();
- ValidateXML(XSDSchema(0x000401));
+ ValidateXML(XSDSchema(FORMAT_VERSION(0, 4, 1)));
Q_FALLTHROUGH();
- case (0x000401):
+ case (FORMAT_VERSION(0, 4, 1)):
ToV0_4_2();
- ValidateXML(XSDSchema(0x000402));
+ ValidateXML(XSDSchema(FORMAT_VERSION(0, 4, 2)));
Q_FALLTHROUGH();
- case (0x000402):
+ case (FORMAT_VERSION(0, 4, 2)):
ToV0_4_3();
- ValidateXML(XSDSchema(0x000403));
+ ValidateXML(XSDSchema(FORMAT_VERSION(0, 4, 3)));
Q_FALLTHROUGH();
- case (0x000403):
+ case (FORMAT_VERSION(0, 4, 3)):
ToV0_4_4();
- ValidateXML(XSDSchema(0x000404));
+ ValidateXML(XSDSchema(FORMAT_VERSION(0, 4, 4)));
Q_FALLTHROUGH();
- case (0x000404):
+ case (FORMAT_VERSION(0, 4, 4)):
+ ToV0_5_0();
+ ValidateXML(XSDSchema(FORMAT_VERSION(0, 5, 0)));
+ Q_FALLTHROUGH();
+ case (FORMAT_VERSION(0, 5, 0)):
break;
default:
InvalidVersion(m_ver);
@@ -140,7 +144,7 @@ void VVSTConverter::DowngradeToCurrentMaxVersion()
bool VVSTConverter::IsReadOnly() const
{
// Check if attribute read-only was not changed in file format
- Q_STATIC_ASSERT_X(VVSTConverter::MeasurementMaxVer == FORMAT_VERSION(0, 4, 4),
+ Q_STATIC_ASSERT_X(VVSTConverter::MeasurementMaxVer == FORMAT_VERSION(0, 5, 0),
"Check attribute read-only.");
// Possibly in future attribute read-only will change position etc.
@@ -368,3 +372,14 @@ void VVSTConverter::ToV0_4_4()
SetVersion(QStringLiteral("0.4.4"));
Save();
}
+
+//---------------------------------------------------------------------------------------------------------------------
+void VVSTConverter::ToV0_5_0()
+{
+ // TODO. Delete if minimal supported version is 0.5.0
+ Q_STATIC_ASSERT_X(VVSTConverter::MeasurementMinVer < FORMAT_VERSION(0, 5, 0),
+ "Time to refactor the code.");
+
+ SetVersion(QStringLiteral("0.5.0"));
+ Save();
+}
diff --git a/src/libs/ifc/xml/vvstconverter.h b/src/libs/ifc/xml/vvstconverter.h
index e7daed282..907b4d421 100644
--- a/src/libs/ifc/xml/vvstconverter.h
+++ b/src/libs/ifc/xml/vvstconverter.h
@@ -51,10 +51,10 @@ public:
// GCC 4.6 doesn't allow constexpr and const together
#if !defined(__INTEL_COMPILER) && !defined(__clang__) && defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) <= 406
static Q_DECL_CONSTEXPR int MeasurementMinVer = FORMAT_VERSION(0, 3, 0);
- static Q_DECL_CONSTEXPR int MeasurementMaxVer = FORMAT_VERSION(0, 4, 4);
+ static Q_DECL_CONSTEXPR int MeasurementMaxVer = FORMAT_VERSION(0, 5, 0);
#else
static Q_DECL_CONSTEXPR const int MeasurementMinVer = FORMAT_VERSION(0, 3, 0);
- static Q_DECL_CONSTEXPR const int MeasurementMaxVer = FORMAT_VERSION(0, 4, 4);
+ static Q_DECL_CONSTEXPR const int MeasurementMaxVer = FORMAT_VERSION(0, 5, 0);
#endif
protected:
@@ -85,6 +85,7 @@ private:
void ToV0_4_2();
void ToV0_4_3();
void ToV0_4_4();
+ void ToV0_5_0();
};
//---------------------------------------------------------------------------------------------------------------------