aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/generator/keiluv
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/generator/keiluv')
-rw-r--r--src/plugins/generator/keiluv/archs/mcs51/mcs51buildtargetgroup_v5.cpp33
-rw-r--r--src/plugins/generator/keiluv/archs/mcs51/mcs51buildtargetgroup_v5.h23
-rw-r--r--src/plugins/generator/keiluv/archs/mcs51/mcs51commonpropertygroup_v5.cpp8
-rw-r--r--src/plugins/generator/keiluv/archs/mcs51/mcs51commonpropertygroup_v5.h8
-rw-r--r--src/plugins/generator/keiluv/archs/mcs51/mcs51debugoptiongroup_v5.cpp8
-rw-r--r--src/plugins/generator/keiluv/archs/mcs51/mcs51debugoptiongroup_v5.h8
-rw-r--r--src/plugins/generator/keiluv/archs/mcs51/mcs51dlloptiongroup_v5.cpp8
-rw-r--r--src/plugins/generator/keiluv/archs/mcs51/mcs51dlloptiongroup_v5.h8
-rw-r--r--src/plugins/generator/keiluv/archs/mcs51/mcs51targetassemblergroup_v5.cpp8
-rw-r--r--src/plugins/generator/keiluv/archs/mcs51/mcs51targetassemblergroup_v5.h8
-rw-r--r--src/plugins/generator/keiluv/archs/mcs51/mcs51targetcommonoptionsgroup_v5.cpp25
-rw-r--r--src/plugins/generator/keiluv/archs/mcs51/mcs51targetcommonoptionsgroup_v5.h8
-rw-r--r--src/plugins/generator/keiluv/archs/mcs51/mcs51targetcompilergroup_v5.cpp16
-rw-r--r--src/plugins/generator/keiluv/archs/mcs51/mcs51targetcompilergroup_v5.h8
-rw-r--r--src/plugins/generator/keiluv/archs/mcs51/mcs51targetgroup_v5.cpp8
-rw-r--r--src/plugins/generator/keiluv/archs/mcs51/mcs51targetgroup_v5.h8
-rw-r--r--src/plugins/generator/keiluv/archs/mcs51/mcs51targetlinkergroup_v5.cpp6
-rw-r--r--src/plugins/generator/keiluv/archs/mcs51/mcs51targetlinkergroup_v5.h8
-rw-r--r--src/plugins/generator/keiluv/archs/mcs51/mcs51targetmiscgroup_v5.cpp6
-rw-r--r--src/plugins/generator/keiluv/archs/mcs51/mcs51targetmiscgroup_v5.h8
-rw-r--r--src/plugins/generator/keiluv/archs/mcs51/mcs51utilitiesgroup_v5.cpp8
-rw-r--r--src/plugins/generator/keiluv/archs/mcs51/mcs51utilitiesgroup_v5.h8
-rw-r--r--src/plugins/generator/keiluv/ikeiluvnodevisitor.h65
-rw-r--r--src/plugins/generator/keiluv/keiluv.pro13
-rw-r--r--src/plugins/generator/keiluv/keiluv.qbs5
-rw-r--r--src/plugins/generator/keiluv/keiluvfilesgroupspropertygroup.cpp49
-rw-r--r--src/plugins/generator/keiluv/keiluvfilesgroupspropertygroup.h11
-rw-r--r--src/plugins/generator/keiluv/keiluvgenerator.cpp18
-rw-r--r--src/plugins/generator/keiluv/keiluvproject.cpp40
-rw-r--r--src/plugins/generator/keiluv/keiluvproject.h19
-rw-r--r--src/plugins/generator/keiluv/keiluvprojectwriter.cpp61
-rw-r--r--src/plugins/generator/keiluv/keiluvprojectwriter.h21
-rw-r--r--src/plugins/generator/keiluv/keiluvproperty.cpp52
-rw-r--r--src/plugins/generator/keiluv/keiluvproperty.h82
-rw-r--r--src/plugins/generator/keiluv/keiluvpropertygroup.cpp64
-rw-r--r--src/plugins/generator/keiluv/keiluvpropertygroup.h71
-rw-r--r--src/plugins/generator/keiluv/keiluvutils.cpp148
-rw-r--r--src/plugins/generator/keiluv/keiluvutils.h45
-rw-r--r--src/plugins/generator/keiluv/keiluvversioninfo.cpp39
-rw-r--r--src/plugins/generator/keiluv/keiluvversioninfo.h27
-rw-r--r--src/plugins/generator/keiluv/keiluvworkspace.cpp34
-rw-r--r--src/plugins/generator/keiluv/keiluvworkspace.h13
-rw-r--r--src/plugins/generator/keiluv/keiluvworkspacewriter.cpp61
-rw-r--r--src/plugins/generator/keiluv/keiluvworkspacewriter.h21
44 files changed, 251 insertions, 945 deletions
diff --git a/src/plugins/generator/keiluv/archs/mcs51/mcs51buildtargetgroup_v5.cpp b/src/plugins/generator/keiluv/archs/mcs51/mcs51buildtargetgroup_v5.cpp
index e9af55743..ce013fba5 100644
--- a/src/plugins/generator/keiluv/archs/mcs51/mcs51buildtargetgroup_v5.cpp
+++ b/src/plugins/generator/keiluv/archs/mcs51/mcs51buildtargetgroup_v5.cpp
@@ -46,24 +46,24 @@ namespace mcs51 {
namespace v5 {
Mcs51BuildTargetGroup::Mcs51BuildTargetGroup(
- const Project &qbsProject,
- const ProductData &qbsProduct,
- const std::vector<ProductData> &qbsProductDeps)
- : KeiluvPropertyGroup("Target")
+ const qbs::Project &qbsProject,
+ const qbs::ProductData &qbsProduct,
+ const std::vector<qbs::ProductData> &qbsProductDeps)
+ : gen::xml::PropertyGroup("Target")
{
// Append target name item (it is a build configuration name).
- const QString targetName = qbs::KeiluvUtils::buildConfigurationName(
+ const QString targetName = gen::utils::buildConfigurationName(
qbsProject);
appendProperty(QByteArrayLiteral("TargetName"), targetName);
// Append toolset number group item.
- appendChild<KeiluvProperty>(QByteArrayLiteral("ToolsetNumber"),
- QByteArrayLiteral("0x0"));
+ appendChild<gen::xml::Property>(QByteArrayLiteral("ToolsetNumber"),
+ QByteArrayLiteral("0x0"));
// Append toolset name group item.
- appendChild<KeiluvProperty>(QByteArrayLiteral("ToolsetName"),
- QByteArrayLiteral("MCS-51"));
+ appendChild<gen::xml::Property>(QByteArrayLiteral("ToolsetName"),
+ QByteArrayLiteral("MCS-51"));
// Append target option group item.
- const auto targetOptionGroup = appendChild<KeiluvPropertyGroup>(
+ const auto targetOptionGroup = appendChild<gen::xml::PropertyGroup>(
QByteArrayLiteral("TargetOption"));
targetOptionGroup->appendChild<Mcs51TargetCommonOptionsGroup>(
@@ -85,17 +85,18 @@ Mcs51BuildTargetGroup::Mcs51BuildTargetGroup(
}
bool Mcs51BuildTargetGroupFactory::canCreate(
- qbs::KeiluvUtils::Architecture architecture,
+ gen::utils::Architecture arch,
const Version &version) const
{
- return architecture == qbs::KeiluvUtils::Architecture::Mcs51Architecture
+ return arch == gen::utils::Architecture::Mcs51
&& version.majorVersion() == KeiluvConstants::kUVisionVersion;
}
-std::unique_ptr<KeiluvPropertyGroup> Mcs51BuildTargetGroupFactory::create(
- const Project &qbsProject,
- const ProductData &qbsProduct,
- const std::vector<ProductData> &qbsProductDeps) const
+std::unique_ptr<gen::xml::PropertyGroup>
+Mcs51BuildTargetGroupFactory::create(
+ const qbs::Project &qbsProject,
+ const qbs::ProductData &qbsProduct,
+ const std::vector<qbs::ProductData> &qbsProductDeps) const
{
const auto group = new Mcs51BuildTargetGroup(
qbsProject, qbsProduct, qbsProductDeps);
diff --git a/src/plugins/generator/keiluv/archs/mcs51/mcs51buildtargetgroup_v5.h b/src/plugins/generator/keiluv/archs/mcs51/mcs51buildtargetgroup_v5.h
index 3f11c489e..ef0c0ccba 100644
--- a/src/plugins/generator/keiluv/archs/mcs51/mcs51buildtargetgroup_v5.h
+++ b/src/plugins/generator/keiluv/archs/mcs51/mcs51buildtargetgroup_v5.h
@@ -31,34 +31,35 @@
#ifndef QBS_KEILUVMCS51BUILDTARGETGROUP_V5_H
#define QBS_KEILUVMCS51BUILDTARGETGROUP_V5_H
-#include "../../keiluvpropertygroup.h"
+#include <generators/xmlpropertygroup.h>
namespace qbs {
namespace keiluv {
namespace mcs51 {
namespace v5 {
-class Mcs51BuildTargetGroup final : public KeiluvPropertyGroup
+class Mcs51BuildTargetGroup final : public gen::xml::PropertyGroup
{
private:
explicit Mcs51BuildTargetGroup(
- const Project &qbsProject,
- const ProductData &qbsProduct,
- const std::vector<ProductData> &qbsProductDeps);
+ const qbs::Project &qbsProject,
+ const qbs::ProductData &qbsProduct,
+ const std::vector<qbs::ProductData> &qbsProductDeps);
friend class Mcs51BuildTargetGroupFactory;
};
-class Mcs51BuildTargetGroupFactory final : public KeiluvPropertyGroupFactory
+class Mcs51BuildTargetGroupFactory final
+ : public gen::xml::PropertyGroupFactory
{
public:
- bool canCreate(KeiluvUtils::Architecture architecture,
+ bool canCreate(gen::utils::Architecture arch,
const Version &version) const final;
- std::unique_ptr<KeiluvPropertyGroup> create(
- const Project &qbsProject,
- const ProductData &qbsProduct,
- const std::vector<ProductData> &qbsProductDeps) const final;
+ std::unique_ptr<gen::xml::PropertyGroup> create(
+ const qbs::Project &qbsProject,
+ const qbs::ProductData &qbsProduct,
+ const std::vector<qbs::ProductData> &qbsProductDeps) const final;
};
} // namespace v5
diff --git a/src/plugins/generator/keiluv/archs/mcs51/mcs51commonpropertygroup_v5.cpp b/src/plugins/generator/keiluv/archs/mcs51/mcs51commonpropertygroup_v5.cpp
index 32760df23..3d4d33046 100644
--- a/src/plugins/generator/keiluv/archs/mcs51/mcs51commonpropertygroup_v5.cpp
+++ b/src/plugins/generator/keiluv/archs/mcs51/mcs51commonpropertygroup_v5.cpp
@@ -30,17 +30,15 @@
#include "mcs51commonpropertygroup_v5.h"
-#include "../../keiluvutils.h"
-
namespace qbs {
namespace keiluv {
namespace mcs51 {
namespace v5 {
Mcs51CommonPropertyGroup::Mcs51CommonPropertyGroup(
- const Project &qbsProject,
- const ProductData &qbsProduct)
- : KeiluvPropertyGroup("CommonProperty")
+ const qbs::Project &qbsProject,
+ const qbs::ProductData &qbsProduct)
+ : gen::xml::PropertyGroup("CommonProperty")
{
Q_UNUSED(qbsProject)
Q_UNUSED(qbsProduct)
diff --git a/src/plugins/generator/keiluv/archs/mcs51/mcs51commonpropertygroup_v5.h b/src/plugins/generator/keiluv/archs/mcs51/mcs51commonpropertygroup_v5.h
index 185d498d0..66dfc7a3e 100644
--- a/src/plugins/generator/keiluv/archs/mcs51/mcs51commonpropertygroup_v5.h
+++ b/src/plugins/generator/keiluv/archs/mcs51/mcs51commonpropertygroup_v5.h
@@ -31,19 +31,19 @@
#ifndef QBS_KEILUVMCS51COMMONPROPERTYGROUP_V5_H
#define QBS_KEILUVMCS51COMMONPROPERTYGROUP_V5_H
-#include "../../keiluvpropertygroup.h"
+#include <generators/xmlpropertygroup.h>
namespace qbs {
namespace keiluv {
namespace mcs51 {
namespace v5 {
-class Mcs51CommonPropertyGroup final : public KeiluvPropertyGroup
+class Mcs51CommonPropertyGroup final : public gen::xml::PropertyGroup
{
public:
explicit Mcs51CommonPropertyGroup(
- const Project &qbsProject,
- const ProductData &qbsProduct);
+ const qbs::Project &qbsProject,
+ const qbs::ProductData &qbsProduct);
};
} // namespace v5
diff --git a/src/plugins/generator/keiluv/archs/mcs51/mcs51debugoptiongroup_v5.cpp b/src/plugins/generator/keiluv/archs/mcs51/mcs51debugoptiongroup_v5.cpp
index 5f2494f8f..2175cc488 100644
--- a/src/plugins/generator/keiluv/archs/mcs51/mcs51debugoptiongroup_v5.cpp
+++ b/src/plugins/generator/keiluv/archs/mcs51/mcs51debugoptiongroup_v5.cpp
@@ -30,17 +30,15 @@
#include "mcs51debugoptiongroup_v5.h"
-#include "../../keiluvutils.h"
-
namespace qbs {
namespace keiluv {
namespace mcs51 {
namespace v5 {
Mcs51DebugOptionGroup::Mcs51DebugOptionGroup(
- const Project &qbsProject,
- const ProductData &qbsProduct)
- : KeiluvPropertyGroup("DebugOption")
+ const qbs::Project &qbsProject,
+ const qbs::ProductData &qbsProduct)
+ : gen::xml::PropertyGroup("DebugOption")
{
Q_UNUSED(qbsProject)
Q_UNUSED(qbsProduct)
diff --git a/src/plugins/generator/keiluv/archs/mcs51/mcs51debugoptiongroup_v5.h b/src/plugins/generator/keiluv/archs/mcs51/mcs51debugoptiongroup_v5.h
index e19f1edf8..473cf605c 100644
--- a/src/plugins/generator/keiluv/archs/mcs51/mcs51debugoptiongroup_v5.h
+++ b/src/plugins/generator/keiluv/archs/mcs51/mcs51debugoptiongroup_v5.h
@@ -31,19 +31,19 @@
#ifndef QBS_KEILUVMCS51DEBUGOPTIONGROUP_V5_H
#define QBS_KEILUVMCS51DEBUGOPTIONGROUP_V5_H
-#include "../../keiluvpropertygroup.h"
+#include <generators/xmlpropertygroup.h>
namespace qbs {
namespace keiluv {
namespace mcs51 {
namespace v5 {
-class Mcs51DebugOptionGroup final : public KeiluvPropertyGroup
+class Mcs51DebugOptionGroup final : public gen::xml::PropertyGroup
{
public:
explicit Mcs51DebugOptionGroup(
- const Project &qbsProject,
- const ProductData &qbsProduct);
+ const qbs::Project &qbsProject,
+ const qbs::ProductData &qbsProduct);
};
} // namespace v5
diff --git a/src/plugins/generator/keiluv/archs/mcs51/mcs51dlloptiongroup_v5.cpp b/src/plugins/generator/keiluv/archs/mcs51/mcs51dlloptiongroup_v5.cpp
index 26639b9bf..59aec721d 100644
--- a/src/plugins/generator/keiluv/archs/mcs51/mcs51dlloptiongroup_v5.cpp
+++ b/src/plugins/generator/keiluv/archs/mcs51/mcs51dlloptiongroup_v5.cpp
@@ -30,17 +30,15 @@
#include "mcs51dlloptiongroup_v5.h"
-#include "../../keiluvutils.h"
-
namespace qbs {
namespace keiluv {
namespace mcs51 {
namespace v5 {
Mcs51DllOptionGroup::Mcs51DllOptionGroup(
- const Project &qbsProject,
- const ProductData &qbsProduct)
- : KeiluvPropertyGroup("DllOption")
+ const qbs::Project &qbsProject,
+ const qbs::ProductData &qbsProduct)
+ : gen::xml::PropertyGroup("DllOption")
{
Q_UNUSED(qbsProject)
Q_UNUSED(qbsProduct)
diff --git a/src/plugins/generator/keiluv/archs/mcs51/mcs51dlloptiongroup_v5.h b/src/plugins/generator/keiluv/archs/mcs51/mcs51dlloptiongroup_v5.h
index 5144dfd72..e16833acc 100644
--- a/src/plugins/generator/keiluv/archs/mcs51/mcs51dlloptiongroup_v5.h
+++ b/src/plugins/generator/keiluv/archs/mcs51/mcs51dlloptiongroup_v5.h
@@ -31,19 +31,19 @@
#ifndef QBS_KEILUVMCS51DLLOPTIONGROUP_V5_H
#define QBS_KEILUVMCS51DLLOPTIONGROUP_V5_H
-#include "../../keiluvpropertygroup.h"
+#include <generators/xmlpropertygroup.h>
namespace qbs {
namespace keiluv {
namespace mcs51 {
namespace v5 {
-class Mcs51DllOptionGroup final : public KeiluvPropertyGroup
+class Mcs51DllOptionGroup final : public gen::xml::PropertyGroup
{
public:
explicit Mcs51DllOptionGroup(
- const Project &qbsProject,
- const ProductData &qbsProduct);
+ const qbs::Project &qbsProject,
+ const qbs::ProductData &qbsProduct);
};
} // namespace v5
diff --git a/src/plugins/generator/keiluv/archs/mcs51/mcs51targetassemblergroup_v5.cpp b/src/plugins/generator/keiluv/archs/mcs51/mcs51targetassemblergroup_v5.cpp
index 00120a56d..8d7257713 100644
--- a/src/plugins/generator/keiluv/archs/mcs51/mcs51targetassemblergroup_v5.cpp
+++ b/src/plugins/generator/keiluv/archs/mcs51/mcs51targetassemblergroup_v5.cpp
@@ -100,9 +100,9 @@ struct AssemblerPageOptions final
} // namespace
Mcs51TargetAssemblerGroup::Mcs51TargetAssemblerGroup(
- const Project &qbsProject,
- const ProductData &qbsProduct)
- : KeiluvPropertyGroup("Ax51")
+ const qbs::Project &qbsProject,
+ const qbs::ProductData &qbsProduct)
+ : gen::xml::PropertyGroup("Ax51")
{
const AssemblerPageOptions opts(qbsProject, qbsProduct);
@@ -118,7 +118,7 @@ Mcs51TargetAssemblerGroup::Mcs51TargetAssemblerGroup(
// Add other various controls.
// Note: A sub-items order makes sense!
- const auto variousControlsGroup = appendChild<KeiluvPropertyGroup>(
+ const auto variousControlsGroup = appendChild<gen::xml::PropertyGroup>(
QByteArrayLiteral("VariousControls"));
// Add 'Misc Controls' item.
variousControlsGroup->appendMultiLineProperty(
diff --git a/src/plugins/generator/keiluv/archs/mcs51/mcs51targetassemblergroup_v5.h b/src/plugins/generator/keiluv/archs/mcs51/mcs51targetassemblergroup_v5.h
index 8a183c30b..f9a82304d 100644
--- a/src/plugins/generator/keiluv/archs/mcs51/mcs51targetassemblergroup_v5.h
+++ b/src/plugins/generator/keiluv/archs/mcs51/mcs51targetassemblergroup_v5.h
@@ -31,19 +31,19 @@
#ifndef QBS_KEILUVMCS51TARGETASSEMBLERGROUP_V3
#define QBS_KEILUVMCS51TARGETASSEMBLERGROUP_V3
-#include "../../keiluvpropertygroup.h"
+#include <generators/xmlpropertygroup.h>
namespace qbs {
namespace keiluv {
namespace mcs51 {
namespace v5 {
-class Mcs51TargetAssemblerGroup final : public KeiluvPropertyGroup
+class Mcs51TargetAssemblerGroup final : public gen::xml::PropertyGroup
{
public:
explicit Mcs51TargetAssemblerGroup(
- const Project &qbsProject,
- const ProductData &qbsProduct);
+ const qbs::Project &qbsProject,
+ const qbs::ProductData &qbsProduct);
};
} // namespace v5
diff --git a/src/plugins/generator/keiluv/archs/mcs51/mcs51targetcommonoptionsgroup_v5.cpp b/src/plugins/generator/keiluv/archs/mcs51/mcs51targetcommonoptionsgroup_v5.cpp
index 00d15d34b..de1be1ef6 100644
--- a/src/plugins/generator/keiluv/archs/mcs51/mcs51targetcommonoptionsgroup_v5.cpp
+++ b/src/plugins/generator/keiluv/archs/mcs51/mcs51targetcommonoptionsgroup_v5.cpp
@@ -32,6 +32,8 @@
#include "../../keiluvutils.h"
+#include <generators/generatorutils.h>
+
namespace qbs {
namespace keiluv {
namespace mcs51 {
@@ -54,22 +56,23 @@ struct CommonPageOptions final
browseInfo = true;
// Debug information.
- debugInfo = KeiluvUtils::debugInformation(qbsProduct);
+ debugInfo = gen::utils::debugInformation(qbsProduct);
// Output parameters.
- executableName = KeiluvUtils::targetBinary(qbsProduct);
+ executableName = gen::utils::targetBinary(qbsProduct);
// Fix output binary name if it is a library. Because
// the IDE appends an additional suffix (.LIB) to end
// of an output library name.
if (executableName.endsWith(QLatin1String(".lib")))
executableName = qbsProduct.targetName();
-
- const QString baseDirectory = KeiluvUtils::buildRootPath(qbsProject);
- objectDirectory = KeiluvUtils::objectsOutputDirectory(
- baseDirectory, qbsProduct);
- listingDirectory = KeiluvUtils::listingOutputDirectory(
- baseDirectory, qbsProduct);
+ const QString baseDirectory = gen::utils::buildRootPath(qbsProject);
+ objectDirectory = QDir::toNativeSeparators(
+ gen::utils::objectsOutputDirectory(
+ baseDirectory, qbsProduct));
+ listingDirectory = QDir::toNativeSeparators(
+ gen::utils::listingOutputDirectory(
+ baseDirectory, qbsProduct));
// Target type.
targetType = KeiluvUtils::outputBinaryType(qbsProduct);
@@ -87,9 +90,9 @@ struct CommonPageOptions final
} // namespace
Mcs51TargetCommonOptionsGroup::Mcs51TargetCommonOptionsGroup(
- const Project &qbsProject,
- const ProductData &qbsProduct)
- : KeiluvPropertyGroup("TargetCommonOption")
+ const qbs::Project &qbsProject,
+ const qbs::ProductData &qbsProduct)
+ : gen::xml::PropertyGroup("TargetCommonOption")
{
const CommonPageOptions opts(qbsProject, qbsProduct);
diff --git a/src/plugins/generator/keiluv/archs/mcs51/mcs51targetcommonoptionsgroup_v5.h b/src/plugins/generator/keiluv/archs/mcs51/mcs51targetcommonoptionsgroup_v5.h
index 7535b3373..eccd9d42d 100644
--- a/src/plugins/generator/keiluv/archs/mcs51/mcs51targetcommonoptionsgroup_v5.h
+++ b/src/plugins/generator/keiluv/archs/mcs51/mcs51targetcommonoptionsgroup_v5.h
@@ -31,19 +31,19 @@
#ifndef QBS_KEILUVMCS51TARGETCOMMONOPTIONSGROUP_V5_H
#define QBS_KEILUVMCS51TARGETCOMMONOPTIONSGROUP_V5_H
-#include "../../keiluvpropertygroup.h"
+#include <generators/xmlpropertygroup.h>
namespace qbs {
namespace keiluv {
namespace mcs51 {
namespace v5 {
-class Mcs51TargetCommonOptionsGroup final : public KeiluvPropertyGroup
+class Mcs51TargetCommonOptionsGroup final : public gen::xml::PropertyGroup
{
public:
explicit Mcs51TargetCommonOptionsGroup(
- const Project &qbsProject,
- const ProductData &qbsProduct);
+ const qbs::Project &qbsProject,
+ const qbs::ProductData &qbsProduct);
};
} // namespace v5
diff --git a/src/plugins/generator/keiluv/archs/mcs51/mcs51targetcompilergroup_v5.cpp b/src/plugins/generator/keiluv/archs/mcs51/mcs51targetcompilergroup_v5.cpp
index 76a246508..e33c0c211 100644
--- a/src/plugins/generator/keiluv/archs/mcs51/mcs51targetcompilergroup_v5.cpp
+++ b/src/plugins/generator/keiluv/archs/mcs51/mcs51targetcompilergroup_v5.cpp
@@ -88,7 +88,7 @@ struct CompilerPageOptions final
const auto flags = qbs::KeiluvUtils::cppModuleCompilerFlags(qbsProps);
// Warnings.
- const QString level = qbs::KeiluvUtils::cppStringModuleProperty(
+ const QString level = gen::utils::cppStringModuleProperty(
qbsProps, QStringLiteral("warningLevel"));
if (level == QLatin1String("none")) {
warningLevel = WarningLevelNone;
@@ -101,14 +101,14 @@ struct CompilerPageOptions final
flags, QStringLiteral("WARNINGLEVEL"));
bool ok = false;
const auto level = warnValue.toInt(&ok);
- if (ok && qbs::KeiluvUtils::inBounds(
+ if (ok && gen::utils::inBounds(
level, int(WarningLevelNone),int(WarningLevelTwo))) {
warningLevel = static_cast<WarningLevel>(level);
}
}
// Optimizations.
- const QString optimization = qbs::KeiluvUtils::cppStringModuleProperty(
+ const QString optimization = gen::utils::cppStringModuleProperty(
qbsProps, QStringLiteral("optimization"));
if (optimization == QLatin1String("fast")) {
optimizationEmphasis = FavorSpeedOptimizationEmphasis;
@@ -163,7 +163,7 @@ struct CompilerPageOptions final
flags, QStringLiteral("FLOATFUZZY"));
bool ok = false;
const auto bits = bitsValue.toInt(&ok);
- if (ok && qbs::KeiluvUtils::inBounds(
+ if (ok && gen::utils::inBounds(
bits, int(NoFloatFuzzyBits), int(SevenFloatFuzzyBits))) {
floatFuzzyBits = static_cast<FloatFuzzyBits>(bits);
}
@@ -222,9 +222,9 @@ struct CompilerPageOptions final
} // namespace
Mcs51TargetCompilerGroup::Mcs51TargetCompilerGroup(
- const Project &qbsProject,
- const ProductData &qbsProduct)
- : KeiluvPropertyGroup("C51")
+ const qbs::Project &qbsProject,
+ const qbs::ProductData &qbsProduct)
+ : gen::xml::PropertyGroup("C51")
{
const CompilerPageOptions opts(qbsProject, qbsProduct);
@@ -256,7 +256,7 @@ Mcs51TargetCompilerGroup::Mcs51TargetCompilerGroup(
// Add other various controls.
// Note: A sub-items order makes sense!
- const auto variousControlsGroup = appendChild<KeiluvPropertyGroup>(
+ const auto variousControlsGroup = appendChild<gen::xml::PropertyGroup>(
QByteArrayLiteral("VariousControls"));
// Add 'Misc Controls' item.
variousControlsGroup->appendMultiLineProperty(
diff --git a/src/plugins/generator/keiluv/archs/mcs51/mcs51targetcompilergroup_v5.h b/src/plugins/generator/keiluv/archs/mcs51/mcs51targetcompilergroup_v5.h
index 801f79ee6..0f1e52ce4 100644
--- a/src/plugins/generator/keiluv/archs/mcs51/mcs51targetcompilergroup_v5.h
+++ b/src/plugins/generator/keiluv/archs/mcs51/mcs51targetcompilergroup_v5.h
@@ -31,19 +31,19 @@
#ifndef QBS_KEILUVMCS51TARGETCOMPILERGROUP_V5_H
#define QBS_KEILUVMCS51TARGETCOMPILERGROUP_V5_H
-#include "../../keiluvpropertygroup.h"
+#include <generators/xmlpropertygroup.h>
namespace qbs {
namespace keiluv {
namespace mcs51 {
namespace v5 {
-class Mcs51TargetCompilerGroup final : public KeiluvPropertyGroup
+class Mcs51TargetCompilerGroup final : public gen::xml::PropertyGroup
{
public:
explicit Mcs51TargetCompilerGroup(
- const Project &qbsProject,
- const ProductData &qbsProduct);
+ const qbs::Project &qbsProject,
+ const qbs::ProductData &qbsProduct);
};
} // namespace v5
diff --git a/src/plugins/generator/keiluv/archs/mcs51/mcs51targetgroup_v5.cpp b/src/plugins/generator/keiluv/archs/mcs51/mcs51targetgroup_v5.cpp
index ec583aa29..2a05649dd 100644
--- a/src/plugins/generator/keiluv/archs/mcs51/mcs51targetgroup_v5.cpp
+++ b/src/plugins/generator/keiluv/archs/mcs51/mcs51targetgroup_v5.cpp
@@ -34,17 +34,15 @@
#include "mcs51targetlinkergroup_v5.h"
#include "mcs51targetmiscgroup_v5.h"
-#include "../../keiluvutils.h"
-
namespace qbs {
namespace keiluv {
namespace mcs51 {
namespace v5 {
Mcs51TargetGroup::Mcs51TargetGroup(
- const Project &qbsProject,
- const ProductData &qbsProduct)
- : KeiluvPropertyGroup("Target51")
+ const qbs::Project &qbsProject,
+ const qbs::ProductData &qbsProduct)
+ : gen::xml::PropertyGroup("Target51")
{
appendChild<Mcs51TargetMiscGroup>(qbsProject, qbsProduct);
appendChild<Mcs51TargetCompilerGroup>(qbsProject, qbsProduct);
diff --git a/src/plugins/generator/keiluv/archs/mcs51/mcs51targetgroup_v5.h b/src/plugins/generator/keiluv/archs/mcs51/mcs51targetgroup_v5.h
index 989e50991..d256dfcc7 100644
--- a/src/plugins/generator/keiluv/archs/mcs51/mcs51targetgroup_v5.h
+++ b/src/plugins/generator/keiluv/archs/mcs51/mcs51targetgroup_v5.h
@@ -31,19 +31,19 @@
#ifndef QBS_KEILUVMCS51TARGETGROUP_V5_H
#define QBS_KEILUVMCS51TARGETGROUP_V5_H
-#include "../../keiluvpropertygroup.h"
+#include <generators/xmlpropertygroup.h>
namespace qbs {
namespace keiluv {
namespace mcs51 {
namespace v5 {
-class Mcs51TargetGroup final : public KeiluvPropertyGroup
+class Mcs51TargetGroup final : public gen::xml::PropertyGroup
{
public:
explicit Mcs51TargetGroup(
- const Project &qbsProject,
- const ProductData &qbsProduct);
+ const qbs::Project &qbsProject,
+ const qbs::ProductData &qbsProduct);
};
} // namespace v5
diff --git a/src/plugins/generator/keiluv/archs/mcs51/mcs51targetlinkergroup_v5.cpp b/src/plugins/generator/keiluv/archs/mcs51/mcs51targetlinkergroup_v5.cpp
index 6e5f807a5..4d52b627a 100644
--- a/src/plugins/generator/keiluv/archs/mcs51/mcs51targetlinkergroup_v5.cpp
+++ b/src/plugins/generator/keiluv/archs/mcs51/mcs51targetlinkergroup_v5.cpp
@@ -172,9 +172,9 @@ struct LinkerPageOptions final
} // namespace
Mcs51TargetLinkerGroup::Mcs51TargetLinkerGroup(
- const Project &qbsProject,
- const ProductData &qbsProduct)
- : KeiluvPropertyGroup("Lx51")
+ const qbs::Project &qbsProject,
+ const qbs::ProductData &qbsProduct)
+ : gen::xml::PropertyGroup("Lx51")
{
const LinkerPageOptions opts(qbsProject, qbsProduct);
diff --git a/src/plugins/generator/keiluv/archs/mcs51/mcs51targetlinkergroup_v5.h b/src/plugins/generator/keiluv/archs/mcs51/mcs51targetlinkergroup_v5.h
index d9bbcea4b..d701c5e0e 100644
--- a/src/plugins/generator/keiluv/archs/mcs51/mcs51targetlinkergroup_v5.h
+++ b/src/plugins/generator/keiluv/archs/mcs51/mcs51targetlinkergroup_v5.h
@@ -31,19 +31,19 @@
#ifndef QBS_KEILUVMCS51TARGETLINKERGROUP_V5_H
#define QBS_KEILUVMCS51TARGETLINKERGROUP_V5_H
-#include "../../keiluvpropertygroup.h"
+#include <generators/xmlpropertygroup.h>
namespace qbs {
namespace keiluv {
namespace mcs51 {
namespace v5 {
-class Mcs51TargetLinkerGroup final : public KeiluvPropertyGroup
+class Mcs51TargetLinkerGroup final : public gen::xml::PropertyGroup
{
public:
explicit Mcs51TargetLinkerGroup(
- const Project &qbsProject,
- const ProductData &qbsProduct);
+ const qbs::Project &qbsProject,
+ const qbs::ProductData &qbsProduct);
};
} // namespace v5
diff --git a/src/plugins/generator/keiluv/archs/mcs51/mcs51targetmiscgroup_v5.cpp b/src/plugins/generator/keiluv/archs/mcs51/mcs51targetmiscgroup_v5.cpp
index 193330864..5d95d443f 100644
--- a/src/plugins/generator/keiluv/archs/mcs51/mcs51targetmiscgroup_v5.cpp
+++ b/src/plugins/generator/keiluv/archs/mcs51/mcs51targetmiscgroup_v5.cpp
@@ -84,9 +84,9 @@ struct MiscPageOptions final
} // namespace
Mcs51TargetMiscGroup::Mcs51TargetMiscGroup(
- const Project &qbsProject,
- const ProductData &qbsProduct)
- : KeiluvPropertyGroup("Target51Misc")
+ const qbs::Project &qbsProject,
+ const qbs::ProductData &qbsProduct)
+ : gen::xml::PropertyGroup("Target51Misc")
{
const MiscPageOptions opts(qbsProject, qbsProduct);
diff --git a/src/plugins/generator/keiluv/archs/mcs51/mcs51targetmiscgroup_v5.h b/src/plugins/generator/keiluv/archs/mcs51/mcs51targetmiscgroup_v5.h
index e1dfd4a56..f1680d927 100644
--- a/src/plugins/generator/keiluv/archs/mcs51/mcs51targetmiscgroup_v5.h
+++ b/src/plugins/generator/keiluv/archs/mcs51/mcs51targetmiscgroup_v5.h
@@ -31,19 +31,19 @@
#ifndef QBS_KEILUVMCS51TARGETMISCGROUP_V5_H
#define QBS_KEILUVMCS51TARGETMISCGROUP_V5_H
-#include "../../keiluvpropertygroup.h"
+#include <generators/xmlpropertygroup.h>
namespace qbs {
namespace keiluv {
namespace mcs51 {
namespace v5 {
-class Mcs51TargetMiscGroup final : public KeiluvPropertyGroup
+class Mcs51TargetMiscGroup final : public gen::xml::PropertyGroup
{
public:
explicit Mcs51TargetMiscGroup(
- const Project &qbsProject,
- const ProductData &qbsProduct);
+ const qbs::Project &qbsProject,
+ const qbs::ProductData &qbsProduct);
};
} // namespace v5
diff --git a/src/plugins/generator/keiluv/archs/mcs51/mcs51utilitiesgroup_v5.cpp b/src/plugins/generator/keiluv/archs/mcs51/mcs51utilitiesgroup_v5.cpp
index 380876e51..8e8307f72 100644
--- a/src/plugins/generator/keiluv/archs/mcs51/mcs51utilitiesgroup_v5.cpp
+++ b/src/plugins/generator/keiluv/archs/mcs51/mcs51utilitiesgroup_v5.cpp
@@ -30,17 +30,15 @@
#include "mcs51utilitiesgroup_v5.h"
-#include "../../keiluvutils.h"
-
namespace qbs {
namespace keiluv {
namespace mcs51 {
namespace v5 {
Mcs51UtilitiesGroup::Mcs51UtilitiesGroup(
- const Project &qbsProject,
- const ProductData &qbsProduct)
- : KeiluvPropertyGroup("Utilities")
+ const qbs::Project &qbsProject,
+ const qbs::ProductData &qbsProduct)
+ : gen::xml::PropertyGroup("Utilities")
{
Q_UNUSED(qbsProject)
Q_UNUSED(qbsProduct)
diff --git a/src/plugins/generator/keiluv/archs/mcs51/mcs51utilitiesgroup_v5.h b/src/plugins/generator/keiluv/archs/mcs51/mcs51utilitiesgroup_v5.h
index 4345bd981..f95ec67c4 100644
--- a/src/plugins/generator/keiluv/archs/mcs51/mcs51utilitiesgroup_v5.h
+++ b/src/plugins/generator/keiluv/archs/mcs51/mcs51utilitiesgroup_v5.h
@@ -31,19 +31,19 @@
#ifndef QBS_KEILUVMCS51UTILITIESGROUP_V5_H
#define QBS_KEILUVMCS51UTILITIESGROUP_V5_H
-#include "../../keiluvpropertygroup.h"
+#include <generators/xmlpropertygroup.h>
namespace qbs {
namespace keiluv {
namespace mcs51 {
namespace v5 {
-class Mcs51UtilitiesGroup final : public KeiluvPropertyGroup
+class Mcs51UtilitiesGroup final : public gen::xml::PropertyGroup
{
public:
explicit Mcs51UtilitiesGroup(
- const Project &qbsProject,
- const ProductData &qbsProduct);
+ const qbs::Project &qbsProject,
+ const qbs::ProductData &qbsProduct);
};
} // namespace v5
diff --git a/src/plugins/generator/keiluv/ikeiluvnodevisitor.h b/src/plugins/generator/keiluv/ikeiluvnodevisitor.h
deleted file mode 100644
index 8ba14d11f..000000000
--- a/src/plugins/generator/keiluv/ikeiluvnodevisitor.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2019 Denis Shienkov <denis.shienkov@gmail.com>
-** Contact: http://www.qt.io/licensing
-**
-** This file is part of Qbs.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms and
-** conditions see http://www.qt.io/terms-conditions. For further information
-** use the contact form at http://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 or version 3 as published by the Free
-** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-** following information to ensure the GNU Lesser General Public License
-** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, The Qt Company gives you certain additional
-** rights. These rights are described in The Qt Company LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-****************************************************************************/
-
-#ifndef QBS_IKEILUVNODEVISITOR_H
-#define QBS_IKEILUVNODEVISITOR_H
-
-#include <QtCore/qxmlstream.h>
-
-#include <memory>
-
-namespace qbs {
-
-class KeiluvProject;
-class KeiluvProperty;
-class KeiluvPropertyGroup;
-class KeiluvWorkspace;
-
-class IKeiluvNodeVisitor
-{
-public:
- virtual ~IKeiluvNodeVisitor() {}
-
- virtual void visitStart(const KeiluvWorkspace *workspace) { Q_UNUSED(workspace) }
- virtual void visitEnd(const KeiluvWorkspace *workspace) { Q_UNUSED(workspace) }
-
- virtual void visitStart(const KeiluvProject *project) { Q_UNUSED(project) }
- virtual void visitEnd(const KeiluvProject *project) { Q_UNUSED(project) }
-
- virtual void visitStart(const KeiluvProperty *property) = 0;
- virtual void visitEnd(const KeiluvProperty *property) = 0;
-
- virtual void visitStart(const KeiluvPropertyGroup *propertyGroup) = 0;
- virtual void visitEnd(const KeiluvPropertyGroup *propertyGroup) = 0;
-};
-
-} // namespace qbs
-
-#endif // QBS_IKEILUVNODEVISITOR_H
diff --git a/src/plugins/generator/keiluv/keiluv.pro b/src/plugins/generator/keiluv/keiluv.pro
index 99bf44d54..d260adea1 100644
--- a/src/plugins/generator/keiluv/keiluv.pro
+++ b/src/plugins/generator/keiluv/keiluv.pro
@@ -13,29 +13,24 @@ SOURCES += \
# Common files.
HEADERS += \
- $$PWD/ikeiluvnodevisitor.h \
$$PWD/keiluvfilesgroupspropertygroup.h \
$$PWD/keiluvgenerator.h \
$$PWD/keiluvproject.h \
$$PWD/keiluvprojectwriter.h \
- $$PWD/keiluvproperty.h \
- $$PWD/keiluvpropertygroup.h \
$$PWD/keiluvutils.h \
$$PWD/keiluvversioninfo.h \
$$PWD/keiluvworkspace.h \
- $$PWD/keiluvworkspacewriter.h \
+ $$PWD/keiluvworkspacewriter.h
SOURCES += \
$$PWD/keiluvfilesgroupspropertygroup.cpp \
$$PWD/keiluvgenerator.cpp \
$$PWD/keiluvproject.cpp \
$$PWD/keiluvprojectwriter.cpp \
- $$PWD/keiluvproperty.cpp \
- $$PWD/keiluvpropertygroup.cpp \
$$PWD/keiluvutils.cpp \
$$PWD/keiluvversioninfo.cpp \
$$PWD/keiluvworkspace.cpp \
- $$PWD/keiluvworkspacewriter.cpp \
+ $$PWD/keiluvworkspacewriter.cpp
# For MCS51 architecture.
@@ -51,7 +46,7 @@ HEADERS += \
$$PWD/archs/mcs51/mcs51targetlinkergroup_v5.h \
$$PWD/archs/mcs51/mcs51targetmiscgroup_v5.h \
$$PWD/archs/mcs51/mcs51utilitiesgroup_v5.h \
- $$PWD/archs/mcs51/mcs51utils.h \
+ $$PWD/archs/mcs51/mcs51utils.h
SOURCES += \
$$PWD/archs/mcs51/mcs51buildtargetgroup_v5.cpp \
@@ -65,4 +60,4 @@ SOURCES += \
$$PWD/archs/mcs51/mcs51targetlinkergroup_v5.cpp \
$$PWD/archs/mcs51/mcs51targetmiscgroup_v5.cpp \
$$PWD/archs/mcs51/mcs51utilitiesgroup_v5.cpp \
- $$PWD/archs/mcs51/mcs51utils.cpp \
+ $$PWD/archs/mcs51/mcs51utils.cpp
diff --git a/src/plugins/generator/keiluv/keiluv.qbs b/src/plugins/generator/keiluv/keiluv.qbs
index 5734f0538..62e03593c 100644
--- a/src/plugins/generator/keiluv/keiluv.qbs
+++ b/src/plugins/generator/keiluv/keiluv.qbs
@@ -11,7 +11,6 @@ QbsPlugin {
Group {
name: "KEIL UV generator common"
files: [
- "ikeiluvnodevisitor.h",
"keiluvfilesgroupspropertygroup.cpp",
"keiluvfilesgroupspropertygroup.h",
"keiluvgenerator.cpp",
@@ -20,10 +19,6 @@ QbsPlugin {
"keiluvproject.h",
"keiluvprojectwriter.cpp",
"keiluvprojectwriter.h",
- "keiluvproperty.cpp",
- "keiluvproperty.h",
- "keiluvpropertygroup.cpp",
- "keiluvpropertygroup.h",
"keiluvutils.cpp",
"keiluvutils.h",
"keiluvversioninfo.cpp",
diff --git a/src/plugins/generator/keiluv/keiluvfilesgroupspropertygroup.cpp b/src/plugins/generator/keiluv/keiluvfilesgroupspropertygroup.cpp
index 137cabe3d..b9a234d6a 100644
--- a/src/plugins/generator/keiluv/keiluvfilesgroupspropertygroup.cpp
+++ b/src/plugins/generator/keiluv/keiluvfilesgroupspropertygroup.cpp
@@ -29,6 +29,7 @@
****************************************************************************/
#include "keiluvfilesgroupspropertygroup.h"
+#include "keiluvutils.h"
#include <generators/generatordata.h>
@@ -36,26 +37,28 @@
namespace qbs {
-class KeiluvFilePropertyGroup final : public KeiluvPropertyGroup
+class KeiluvFilePropertyGroup final : public gen::xml::PropertyGroup
{
public:
explicit KeiluvFilePropertyGroup(
const QString &fullFilePath,
const QString &baseDirectory)
- : KeiluvPropertyGroup("File")
+ : gen::xml::PropertyGroup("File")
{
const QFileInfo fileInfo(fullFilePath);
const auto fileName = fileInfo.fileName();
const auto fileType = encodeFileType(fileInfo.suffix());
- const auto filePath = KeiluvUtils::relativeFilePath(
- baseDirectory, fileInfo.absoluteFilePath());
-
- appendChild<KeiluvProperty>(QByteArrayLiteral("FileName"),
- fileName);
- appendChild<KeiluvProperty>(QByteArrayLiteral("FileType"),
- fileType);
- appendChild<KeiluvProperty>(QByteArrayLiteral("FilePath"),
- filePath);
+ const auto filePath = QDir::toNativeSeparators(
+ gen::utils::relativeFilePath(
+ baseDirectory,
+ fileInfo.absoluteFilePath()));
+
+ appendChild<gen::xml::Property>(QByteArrayLiteral("FileName"),
+ fileName);
+ appendChild<gen::xml::Property>(QByteArrayLiteral("FileType"),
+ fileType);
+ appendChild<gen::xml::Property>(QByteArrayLiteral("FilePath"),
+ filePath);
}
private:
@@ -92,13 +95,13 @@ private:
}
};
-class KeiluvFilesPropertyGroup final : public KeiluvPropertyGroup
+class KeiluvFilesPropertyGroup final : public gen::xml::PropertyGroup
{
public:
explicit KeiluvFilesPropertyGroup(
const QList<ArtifactData> &sourceArtifacts,
const QString &baseDirectory)
- : KeiluvPropertyGroup("Files")
+ : gen::xml::PropertyGroup("Files")
{
for (const auto &artifact : sourceArtifacts)
appendChild<KeiluvFilePropertyGroup>(artifact.filePath(),
@@ -108,7 +111,7 @@ public:
explicit KeiluvFilesPropertyGroup(
const QStringList &filePaths,
const QString &baseDirectory)
- : KeiluvPropertyGroup("Files")
+ : gen::xml::PropertyGroup("Files")
{
for (const auto &filePath : filePaths)
appendChild<KeiluvFilePropertyGroup>(filePath,
@@ -116,17 +119,17 @@ public:
}
};
-class KeiluvFileGroupPropertyGroup final : public KeiluvPropertyGroup
+class KeiluvFileGroupPropertyGroup final : public gen::xml::PropertyGroup
{
public:
explicit KeiluvFileGroupPropertyGroup(
const QString &groupName,
const QList<ArtifactData> &sourceArtifacts,
const QString &baseDirectory)
- : KeiluvPropertyGroup("Group")
+ : gen::xml::PropertyGroup("Group")
{
- appendChild<KeiluvProperty>(QByteArrayLiteral("GroupName"),
- groupName);
+ appendChild<gen::xml::Property>(QByteArrayLiteral("GroupName"),
+ groupName);
appendChild<KeiluvFilesPropertyGroup>(sourceArtifacts,
baseDirectory);
@@ -136,10 +139,10 @@ public:
const QString &groupName,
const QStringList &filePaths,
const QString &baseDirectory)
- : KeiluvPropertyGroup("Group")
+ : gen::xml::PropertyGroup("Group")
{
- appendChild<KeiluvProperty>(QByteArrayLiteral("GroupName"),
- groupName);
+ appendChild<gen::xml::Property>(QByteArrayLiteral("GroupName"),
+ groupName);
appendChild<KeiluvFilesPropertyGroup>(filePaths,
baseDirectory);
@@ -150,9 +153,9 @@ KeiluvFilesGroupsPropertyGroup::KeiluvFilesGroupsPropertyGroup(
const Project &qbsProject,
const ProductData &qbsProduct,
const std::vector<ProductData> &qbsProductDeps)
- : KeiluvPropertyGroup(QByteArrayLiteral("Groups"))
+ : gen::xml::PropertyGroup(QByteArrayLiteral("Groups"))
{
- const auto baseDirectory = KeiluvUtils::buildRootPath(qbsProject);
+ const auto baseDirectory = gen::utils::buildRootPath(qbsProject);
// Build source items.
const auto groups = qbsProduct.groups();
diff --git a/src/plugins/generator/keiluv/keiluvfilesgroupspropertygroup.h b/src/plugins/generator/keiluv/keiluvfilesgroupspropertygroup.h
index 6ae335875..bde86b89c 100644
--- a/src/plugins/generator/keiluv/keiluvfilesgroupspropertygroup.h
+++ b/src/plugins/generator/keiluv/keiluvfilesgroupspropertygroup.h
@@ -31,19 +31,20 @@
#ifndef QBS_KEILUVFILESGROUPSPROPERTYGROUP_H
#define QBS_KEILUVFILESGROUPSPROPERTYGROUP_H
-#include "keiluvpropertygroup.h"
+#include <generators/xmlpropertygroup.h>
#include <generators/generatordata.h>
namespace qbs {
-class KeiluvFilesGroupsPropertyGroup final : public KeiluvPropertyGroup
+class KeiluvFilesGroupsPropertyGroup final
+ : public gen::xml::PropertyGroup
{
public:
explicit KeiluvFilesGroupsPropertyGroup(
- const Project &qbsProject,
- const ProductData &qbsProduct,
- const std::vector<ProductData> &qbsProductDeps);
+ const qbs::Project &qbsProject,
+ const qbs::ProductData &qbsProduct,
+ const std::vector<qbs::ProductData> &qbsProductDeps);
};
} // namespace qbs
diff --git a/src/plugins/generator/keiluv/keiluvgenerator.cpp b/src/plugins/generator/keiluv/keiluvgenerator.cpp
index 570f7693e..657a98ad4 100644
--- a/src/plugins/generator/keiluv/keiluvgenerator.cpp
+++ b/src/plugins/generator/keiluv/keiluvgenerator.cpp
@@ -133,25 +133,27 @@ void KeiluvGenerator::visitProject(const GeneratableProject &project)
m_workspace = std::make_shared<KeiluvWorkspace>(m_workspaceFilePath);
}
-void KeiluvGenerator::visitProjectData(const GeneratableProject &project,
- const GeneratableProjectData &projectData)
+void KeiluvGenerator::visitProjectData(
+ const GeneratableProject &project,
+ const GeneratableProjectData &projectData)
{
Q_UNUSED(project)
Q_UNUSED(projectData)
}
-void KeiluvGenerator::visitProduct(const GeneratableProject &project,
- const GeneratableProjectData &projectData,
- const GeneratableProductData &productData)
+void KeiluvGenerator::visitProduct(
+ const GeneratableProject &project,
+ const GeneratableProjectData &projectData,
+ const GeneratableProductData &productData)
{
Q_UNUSED(projectData);
const QString projectFilePath = targetFilePath(
productData, project.baseBuildDirectory().absolutePath());
- const auto targetProject = std::make_shared<KeiluvProject>(project, productData,
- m_versionInfo);
+ const auto targetProject = std::make_shared<KeiluvProject>(
+ project, productData, m_versionInfo);
m_projects.insert({projectFilePath, targetProject});
- m_workspace->addProjectPath(projectFilePath);
+ m_workspace->addProject(projectFilePath);
}
} // namespace qbs
diff --git a/src/plugins/generator/keiluv/keiluvproject.cpp b/src/plugins/generator/keiluv/keiluvproject.cpp
index d9e256bdb..bd5e80658 100644
--- a/src/plugins/generator/keiluv/keiluvproject.cpp
+++ b/src/plugins/generator/keiluv/keiluvproject.cpp
@@ -28,7 +28,6 @@
**
****************************************************************************/
-#include "ikeiluvnodevisitor.h"
#include "keiluvproject.h"
#include "keiluvutils.h"
#include "keiluvversioninfo.h"
@@ -51,9 +50,10 @@ static QString keilProjectSchema(const KeiluvVersionInfo &info)
}
}
-KeiluvProject::KeiluvProject(const GeneratableProject &genProject,
- const GeneratableProductData &genProduct,
- const KeiluvVersionInfo &versionInfo)
+KeiluvProject::KeiluvProject(
+ const qbs::GeneratableProject &genProject,
+ const qbs::GeneratableProductData &genProduct,
+ const KeiluvVersionInfo &versionInfo)
{
Q_ASSERT(genProject.projects.size() == genProject.commandLines.size());
Q_ASSERT(genProject.projects.size() == genProduct.data.size());
@@ -64,25 +64,27 @@ KeiluvProject::KeiluvProject(const GeneratableProject &genProject,
// Construct schema version item (depends on a project version).
const auto schema = keilProjectSchema(versionInfo);
- appendChild<KeiluvProperty>(QByteArrayLiteral("SchemaVersion"),
- schema);
+ appendChild<gen::xml::Property>(QByteArrayLiteral("SchemaVersion"),
+ schema);
// Construct targets group.
- const auto targetsGroup = appendChild<KeiluvPropertyGroup>(
+ const auto targetsGroup = appendChild<gen::xml::PropertyGroup>(
QByteArrayLiteral("Targets"));
// Construct all build target items.
const int configsCount = std::max(genProject.projects.size(),
genProduct.data.size());
for (auto configIndex = 0; configIndex < configsCount; ++configIndex) {
- const Project qbsProject = genProject.projects.values().at(configIndex);
- const ProductData qbsProduct = genProduct.data.values().at(configIndex);
- const QString confName = KeiluvUtils::buildConfigurationName(qbsProject);
- const std::vector<ProductData> qbsProductDeps = KeiluvUtils::dependenciesOf
+ const qbs::Project qbsProject = genProject.projects
+ .values().at(configIndex);
+ const qbs::ProductData qbsProduct = genProduct.data
+ .values().at(configIndex);
+ const QString confName = gen::utils::buildConfigurationName(qbsProject);
+ const std::vector<ProductData> qbsProductDeps = gen::utils::dependenciesOf
(qbsProduct, genProject, confName);
- const auto arch = KeiluvUtils::architecture(qbsProject);
- if (arch == KeiluvUtils::Architecture::UnknownArchitecture)
+ const auto arch = gen::utils::architecture(qbsProject);
+ if (arch == gen::utils::Architecture::Unknown)
throw ErrorInfo(Internal::Tr::tr("Target architecture is not set,"
" please use the 'profile' option"));
@@ -96,7 +98,7 @@ KeiluvProject::KeiluvProject(const GeneratableProject &genProject,
if (factoryIt == factoryEnd) {
throw ErrorInfo(Internal::Tr::tr("Incompatible target architecture '%1'"
" for KEIL UV version %2")
- .arg(KeiluvUtils::architectureName(arch))
+ .arg(gen::utils::architectureName(arch))
.arg(versionInfo.marketingVersion()));
}
@@ -106,14 +108,4 @@ KeiluvProject::KeiluvProject(const GeneratableProject &genProject,
}
}
-void KeiluvProject::accept(IKeiluvNodeVisitor *visitor) const
-{
- visitor->visitStart(this);
-
- for (const auto &child : children())
- child->accept(visitor);
-
- visitor->visitEnd(this);
-}
-
} // namespace qbs
diff --git a/src/plugins/generator/keiluv/keiluvproject.h b/src/plugins/generator/keiluv/keiluvproject.h
index fc9893da5..98b2815ed 100644
--- a/src/plugins/generator/keiluv/keiluvproject.h
+++ b/src/plugins/generator/keiluv/keiluvproject.h
@@ -31,27 +31,26 @@
#ifndef QBS_KEILUVPROJECT_H
#define QBS_KEILUVPROJECT_H
-#include "keiluvproperty.h"
-#include "keiluvpropertygroup.h"
-
#include <generators/generatordata.h>
+#include <generators/xmlproject.h>
+#include <generators/xmlpropertygroup.h>
+
#include <memory>
namespace qbs {
class KeiluvVersionInfo;
-class KeiluvProject final : public KeiluvProperty
+class KeiluvProject final : public gen::xml::Project
{
public:
- explicit KeiluvProject(const GeneratableProject &genProject,
- const GeneratableProductData &genProduct,
- const KeiluvVersionInfo &versionInfo);
- void accept(IKeiluvNodeVisitor *visitor) const final;
-
+ explicit KeiluvProject(
+ const qbs::GeneratableProject &genProject,
+ const qbs::GeneratableProductData &genProduct,
+ const KeiluvVersionInfo &versionInfo);
private:
- std::vector<std::unique_ptr<KeiluvPropertyGroupFactory>> m_factories;
+ std::vector<std::unique_ptr<gen::xml::PropertyGroupFactory>> m_factories;
};
} // namespace qbs
diff --git a/src/plugins/generator/keiluv/keiluvprojectwriter.cpp b/src/plugins/generator/keiluv/keiluvprojectwriter.cpp
index 7f63b4714..f2ae8befb 100644
--- a/src/plugins/generator/keiluv/keiluvprojectwriter.cpp
+++ b/src/plugins/generator/keiluv/keiluvprojectwriter.cpp
@@ -28,70 +28,31 @@
**
****************************************************************************/
-#include "keiluvproject.h"
#include "keiluvprojectwriter.h"
-#include "keiluvproperty.h"
-#include "keiluvpropertygroup.h"
-
-#include <ostream>
namespace qbs {
KeiluvProjectWriter::KeiluvProjectWriter(std::ostream *device)
- : m_device(device)
-{
- m_writer.reset(new QXmlStreamWriter(&m_buffer));
- m_writer->setAutoFormatting(true);
-}
-
-bool KeiluvProjectWriter::write(const KeiluvProject *project)
+ : gen::xml::ProjectWriter(device)
{
- m_buffer.clear();
- m_writer->writeStartDocument();
- project->accept(this);
- m_writer->writeEndDocument();
- if (m_writer->hasError())
- return false;
- m_device->write(&*std::begin(m_buffer), m_buffer.size());
- return m_device->good();
}
-void KeiluvProjectWriter::visitStart(const KeiluvProject *project)
+void KeiluvProjectWriter::visitStart(const gen::xml::Project *project)
{
Q_UNUSED(project)
- m_writer->writeStartElement(QStringLiteral("Project"));
- m_writer->writeAttribute(QStringLiteral("xmlns:xsi"),
- QStringLiteral("http://www.w3.org/2001/XMLSchema-instance"));
- m_writer->writeAttribute(QStringLiteral("xsi:noNamespaceSchemaLocation"),
- QStringLiteral("project_proj.xsd"));
+ writer()->writeStartElement(QStringLiteral("Project"));
+ writer()->writeAttribute(
+ QStringLiteral("xmlns:xsi"),
+ QStringLiteral("http://www.w3.org/2001/XMLSchema-instance"));
+ writer()->writeAttribute(
+ QStringLiteral("xsi:noNamespaceSchemaLocation"),
+ QStringLiteral("project_proj.xsd"));
}
-void KeiluvProjectWriter::visitEnd(const KeiluvProject *project)
+void KeiluvProjectWriter::visitEnd(const gen::xml::Project *project)
{
Q_UNUSED(project)
- m_writer->writeEndElement();
-}
-
-void KeiluvProjectWriter::visitStart(const KeiluvProperty *property)
-{
- const QString stringValue = property->value().toString();
- m_writer->writeTextElement(QString::fromUtf8(property->name()), stringValue);
-}
-
-void KeiluvProjectWriter::visitEnd(const KeiluvProperty *property)
-{
- Q_UNUSED(property)
-}
-
-void KeiluvProjectWriter::visitStart(const KeiluvPropertyGroup *propertyGroup)
-{
- m_writer->writeStartElement(QString::fromUtf8(propertyGroup->name()));
-}
-
-void KeiluvProjectWriter::visitEnd(const KeiluvPropertyGroup *propertyGroup)
-{
- Q_UNUSED(propertyGroup)
- m_writer->writeEndElement();
+ writer()->writeEndElement();
}
} // namespace qbs
diff --git a/src/plugins/generator/keiluv/keiluvprojectwriter.h b/src/plugins/generator/keiluv/keiluvprojectwriter.h
index ad807e29e..ad6fd1124 100644
--- a/src/plugins/generator/keiluv/keiluvprojectwriter.h
+++ b/src/plugins/generator/keiluv/keiluvprojectwriter.h
@@ -31,32 +31,19 @@
#ifndef QBS_KEILUVPROJECTWRITER_H
#define QBS_KEILUVPROJECTWRITER_H
-#include "ikeiluvnodevisitor.h"
+#include <generators/xmlprojectwriter.h>
namespace qbs {
-class KeiluvProject;
-
-class KeiluvProjectWriter final : public IKeiluvNodeVisitor
+class KeiluvProjectWriter final : public gen::xml::ProjectWriter
{
Q_DISABLE_COPY(KeiluvProjectWriter)
public:
explicit KeiluvProjectWriter(std::ostream *device);
- bool write(const KeiluvProject *project);
private:
- void visitStart(const KeiluvProject *project) final;
- void visitEnd(const KeiluvProject *project) final;
-
- void visitStart(const KeiluvProperty *property) final;
- void visitEnd(const KeiluvProperty *property) final;
-
- void visitStart(const KeiluvPropertyGroup *propertyGroup) final;
- void visitEnd(const KeiluvPropertyGroup *propertyGroup) final;
-
- std::ostream *m_device = nullptr;
- QByteArray m_buffer;
- std::unique_ptr<QXmlStreamWriter> m_writer;
+ void visitStart(const gen::xml::Project *project) final;
+ void visitEnd(const gen::xml::Project *project) final;
};
} // namespace qbs
diff --git a/src/plugins/generator/keiluv/keiluvproperty.cpp b/src/plugins/generator/keiluv/keiluvproperty.cpp
deleted file mode 100644
index 057ebe1f6..000000000
--- a/src/plugins/generator/keiluv/keiluvproperty.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2019 Denis Shienkov <denis.shienkov@gmail.com>
-** Contact: http://www.qt.io/licensing
-**
-** This file is part of Qbs.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms and
-** conditions see http://www.qt.io/terms-conditions. For further information
-** use the contact form at http://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 or version 3 as published by the Free
-** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-** following information to ensure the GNU Lesser General Public License
-** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, The Qt Company gives you certain additional
-** rights. These rights are described in The Qt Company LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-****************************************************************************/
-
-#include "ikeiluvnodevisitor.h"
-#include "keiluvproperty.h"
-
-namespace qbs {
-
-KeiluvProperty::KeiluvProperty(QByteArray name, QVariant value)
-{
- setName(std::move(name));
- setValue(std::move(value));
-}
-
-void KeiluvProperty::accept(IKeiluvNodeVisitor *visitor) const
-{
- visitor->visitStart(this);
-
- for (const auto &child : children())
- child->accept(visitor);
-
- visitor->visitEnd(this);
-}
-
-} // namespace qbs
diff --git a/src/plugins/generator/keiluv/keiluvproperty.h b/src/plugins/generator/keiluv/keiluvproperty.h
deleted file mode 100644
index a385c1314..000000000
--- a/src/plugins/generator/keiluv/keiluvproperty.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2019 Denis Shienkov <denis.shienkov@gmail.com>
-** Contact: http://www.qt.io/licensing
-**
-** This file is part of Qbs.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms and
-** conditions see http://www.qt.io/terms-conditions. For further information
-** use the contact form at http://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 or version 3 as published by the Free
-** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-** following information to ensure the GNU Lesser General Public License
-** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, The Qt Company gives you certain additional
-** rights. These rights are described in The Qt Company LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-****************************************************************************/
-
-#ifndef QBS_KEILUVPROPERTY_H
-#define QBS_KEILUVPROPERTY_H
-
-#include <QtCore/qvariant.h>
-
-#include <memory>
-
-namespace qbs {
-
-class IKeiluvNodeVisitor;
-
-class KeiluvProperty
-{
- Q_DISABLE_COPY(KeiluvProperty)
-public:
- KeiluvProperty() = default;
- explicit KeiluvProperty(QByteArray name, QVariant value);
- virtual ~KeiluvProperty() = default;
-
- QByteArray name() const { return m_name; }
- void setName(QByteArray name) { m_name = std::move(name); }
-
- QVariant value() const { return m_value; }
- void setValue(QVariant value) { m_value = std::move(value); }
-
- template<class T>
- T *appendChild(std::unique_ptr<T> child) {
- const auto p = child.get();
- m_children.push_back(std::move(child));
- return p;
- }
-
- template<class T, class... Args>
- T *appendChild(Args&&... args) {
- return appendChild(std::make_unique<T>(std::forward<Args>(args)...));
- }
-
- virtual void accept(IKeiluvNodeVisitor *visitor) const;
-
-protected:
- const std::vector<std::unique_ptr<KeiluvProperty>> &children() const
- { return m_children; }
-
-private:
- QByteArray m_name;
- QVariant m_value;
- std::vector<std::unique_ptr<KeiluvProperty>> m_children;
-};
-
-} // namespace qbs
-
-#endif // QBS_KEILUVPROPERTY_H
diff --git a/src/plugins/generator/keiluv/keiluvpropertygroup.cpp b/src/plugins/generator/keiluv/keiluvpropertygroup.cpp
deleted file mode 100644
index 9aeaa576d..000000000
--- a/src/plugins/generator/keiluv/keiluvpropertygroup.cpp
+++ /dev/null
@@ -1,64 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2019 Denis Shienkov <denis.shienkov@gmail.com>
-** Contact: http://www.qt.io/licensing
-**
-** This file is part of Qbs.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms and
-** conditions see http://www.qt.io/terms-conditions. For further information
-** use the contact form at http://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 or version 3 as published by the Free
-** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-** following information to ensure the GNU Lesser General Public License
-** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, The Qt Company gives you certain additional
-** rights. These rights are described in The Qt Company LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-****************************************************************************/
-
-#include "ikeiluvnodevisitor.h"
-#include "keiluvproperty.h"
-#include "keiluvpropertygroup.h"
-
-namespace qbs {
-
-KeiluvPropertyGroup::KeiluvPropertyGroup(QByteArray name)
-{
- setName(std::move(name));
-}
-
-void KeiluvPropertyGroup::appendProperty(QByteArray name, QVariant value)
-{
- appendChild<KeiluvProperty>(std::move(name), std::move(value));
-}
-
-void KeiluvPropertyGroup::appendMultiLineProperty(
- QByteArray key, QStringList values, QChar sep)
-{
- const auto line = values.join(std::move(sep));
- appendProperty(std::move(key), QVariant::fromValue(line));
-}
-
-void KeiluvPropertyGroup::accept(IKeiluvNodeVisitor *visitor) const
-{
- visitor->visitStart(this);
-
- for (const auto &child : children())
- child->accept(visitor);
-
- visitor->visitEnd(this);
-}
-
-} // namespace qbs
diff --git a/src/plugins/generator/keiluv/keiluvpropertygroup.h b/src/plugins/generator/keiluv/keiluvpropertygroup.h
deleted file mode 100644
index bb5d608c4..000000000
--- a/src/plugins/generator/keiluv/keiluvpropertygroup.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2019 Denis Shienkov <denis.shienkov@gmail.com>
-** Contact: http://www.qt.io/licensing
-**
-** This file is part of Qbs.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms and
-** conditions see http://www.qt.io/terms-conditions. For further information
-** use the contact form at http://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 or version 3 as published by the Free
-** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-** following information to ensure the GNU Lesser General Public License
-** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, The Qt Company gives you certain additional
-** rights. These rights are described in The Qt Company LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-****************************************************************************/
-
-#ifndef QBS_KEILUVPROPERTYGROUP_H
-#define QBS_KEILUVPROPERTYGROUP_H
-
-#include "keiluvproperty.h"
-#include "keiluvversioninfo.h"
-
-#include <memory>
-
-namespace qbs {
-
-class ProductData;
-class Project;
-
-class KeiluvPropertyGroup : public KeiluvProperty
-{
-public:
- explicit KeiluvPropertyGroup(QByteArray name);
-
- void appendProperty(QByteArray name, QVariant value);
- void appendMultiLineProperty(QByteArray key, QStringList values,
- QChar sep = QLatin1Char(','));
-
- void accept(IKeiluvNodeVisitor *visitor) const final;
-};
-
-class KeiluvPropertyGroupFactory
-{
-public:
- virtual ~KeiluvPropertyGroupFactory() = default;
- virtual bool canCreate(KeiluvUtils::Architecture architecture,
- const Version &version) const = 0;
-
- virtual std::unique_ptr<KeiluvPropertyGroup> create(
- const Project &qbsProject,
- const ProductData &qbsProduct,
- const std::vector<ProductData> &qbsProductDeps) const = 0;
-};
-
-} // namespace qbs
-
-#endif // QBS_KEILUVPROPERTYGROUP_H
diff --git a/src/plugins/generator/keiluv/keiluvutils.cpp b/src/plugins/generator/keiluv/keiluvutils.cpp
index 51382dc36..8932f0f16 100644
--- a/src/plugins/generator/keiluv/keiluvutils.cpp
+++ b/src/plugins/generator/keiluv/keiluvutils.cpp
@@ -30,6 +30,8 @@
#include "keiluvutils.h"
+#include <generators/generatorutils.h>
+
namespace qbs {
namespace KeiluvUtils {
@@ -43,100 +45,6 @@ OutputBinaryType outputBinaryType(const ProductData &qbsProduct)
return ApplicationOutputType;
}
-QString architectureName(Architecture arch)
-{
- switch (arch) {
- case Architecture::Mcs51Architecture:
- return QStringLiteral("mcs51");
- default:
- return QStringLiteral("unknown");
- }
-}
-
-Architecture architecture(const Project &qbsProject)
-{
- const auto qbsArch = qbsProject.projectConfiguration()
- .value(Internal::StringConstants::qbsModule()).toMap()
- .value(QStringLiteral("architecture")).toString();
-
- if (qbsArch == QLatin1String("mcs51"))
- return Architecture::Mcs51Architecture;
- return Architecture::UnknownArchitecture;
-}
-
-QString buildConfigurationName(const Project &qbsProject)
-{
- return qbsProject.projectConfiguration()
- .value(Internal::StringConstants::qbsModule()).toMap()
- .value(QStringLiteral("configurationName")).toString();
-}
-
-int debugInformation(const ProductData &qbsProduct)
-{
- return qbsProduct.moduleProperties().getModuleProperty(
- Internal::StringConstants::qbsModule(),
- QStringLiteral("debugInformation"))
- .toInt();
-}
-
-QString binaryOutputDirectory(const QString &baseDirectory,
- const ProductData &qbsProduct)
-{
- const auto path = QDir(baseDirectory).relativeFilePath(
- qbsProduct.buildDirectory()) + QLatin1String("/bin");
- return QDir::toNativeSeparators(path);
-}
-
-QString objectsOutputDirectory(const QString &baseDirectory,
- const ProductData &qbsProduct)
-{
- const auto path = QDir(baseDirectory).relativeFilePath(
- qbsProduct.buildDirectory()) + QLatin1String("/obj");
- return QDir::toNativeSeparators(path);
-}
-
-QString listingOutputDirectory(const QString &baseDirectory,
- const ProductData &qbsProduct)
-{
- const auto path = QDir(baseDirectory).relativeFilePath(
- qbsProduct.buildDirectory()) + QLatin1String("/lst");
- return QDir::toNativeSeparators(path);
-}
-
-QString targetBinary(const ProductData &qbsProduct)
-{
- const auto type = qbsProduct.type();
- if (type.contains(QLatin1String("application"))) {
- return QFileInfo(qbsProduct.targetExecutable()).fileName();
- } else if (type.contains(QLatin1String("staticlibrary"))) {
- const auto artifacts = qbsProduct.targetArtifacts();
- for (const auto &artifact : artifacts) {
- if (artifact.fileTags().contains(QLatin1String("staticlibrary")))
- return QFileInfo(artifact.filePath()).fileName();
- }
- }
-
- return {};
-}
-
-std::vector<ProductData> dependenciesOf(const ProductData &qbsProduct,
- const GeneratableProject &genProject,
- const QString configurationName)
-{
- std::vector<ProductData> result;
- const auto depsNames = qbsProduct.dependencies();
- for (const auto &product : qAsConst(genProject.products)) {
- const auto pt = product.type();
- if (!pt.contains(QLatin1String("staticlibrary")))
- continue;
- const auto pn = product.name();
- if (!depsNames.contains(pn))
- continue;
- result.push_back(product.data.value(configurationName));
- }
- return result;
-}
-
QString toolkitRootPath(const ProductData &qbsProduct)
{
QDir dir(qbsProduct.moduleProperties()
@@ -148,47 +56,9 @@ QString toolkitRootPath(const ProductData &qbsProduct)
return QDir::toNativeSeparators(path);
}
-QString buildRootPath(const Project &qbsProject)
-{
- QDir dir(qbsProject.projectData().buildDirectory());
- dir.cdUp();
- const auto path = dir.absolutePath();
- return QDir::toNativeSeparators(path);
-}
-
-QString relativeFilePath(const QString &baseDirectory,
- const QString &fullFilePath)
-{
- const auto path = QDir(baseDirectory).relativeFilePath(fullFilePath);
- return QDir::toNativeSeparators(path);
-}
-
-QString cppStringModuleProperty(const PropertyMap &qbsProps,
- const QString &propertyName)
-{
- return qbsProps.getModuleProperty(Internal::StringConstants::cppModule(),
- propertyName).toString().trimmed();
-}
-
-QStringList cppStringModuleProperties(const PropertyMap &qbsProps,
- const QStringList &propertyNames)
-{
- QStringList properties;
- for (const auto &propertyName : propertyNames) {
- properties << qbsProps.getModuleProperty(
- Internal::StringConstants::cppModule(),
- propertyName).toStringList();
- }
- std::transform(properties.begin(), properties.end(), properties.begin(),
- [](const auto &property) {
- return property.trimmed();
- });
- return properties;
-}
-
QStringList cppModuleCompilerFlags(const PropertyMap &qbsProps)
{
- return cppStringModuleProperties(
+ return gen::utils::cppStringModuleProperties(
qbsProps, {QStringLiteral("driverFlags"), QStringLiteral("cFlags"),
QStringLiteral("cppFlags"), QStringLiteral("cxxFlags"),
QStringLiteral("commonCompilerFlags")});
@@ -196,19 +66,19 @@ QStringList cppModuleCompilerFlags(const PropertyMap &qbsProps)
QStringList cppModuleAssemblerFlags(const PropertyMap &qbsProps)
{
- return cppStringModuleProperties(
+ return gen::utils::cppStringModuleProperties(
qbsProps, {QStringLiteral("assemblerFlags")});
}
QStringList cppModuleLinkerFlags(const PropertyMap &qbsProps)
{
- return cppStringModuleProperties(
+ return gen::utils::cppStringModuleProperties(
qbsProps, {QStringLiteral("driverLinkerFlags")});
}
QStringList includes(const PropertyMap &qbsProps)
{
- auto paths = qbs::KeiluvUtils::cppStringModuleProperties(
+ auto paths = gen::utils::cppStringModuleProperties(
qbsProps, {QStringLiteral("includePaths"),
QStringLiteral("systemIncludePaths")});
// Transform include path separators to native.
@@ -221,13 +91,13 @@ QStringList includes(const PropertyMap &qbsProps)
QStringList defines(const PropertyMap &qbsProps)
{
- return qbs::KeiluvUtils::cppStringModuleProperties(
+ return gen::utils::cppStringModuleProperties(
qbsProps, {QStringLiteral("defines")});
}
QStringList staticLibraries(const PropertyMap &qbsProps)
{
- auto libs = qbs::KeiluvUtils::cppStringModuleProperties(
+ auto libs = gen::utils::cppStringModuleProperties(
qbsProps, {QStringLiteral("staticLibraries")});
// Transform library path separators to native.
std::transform(libs.begin(), libs.end(), libs.begin(),
@@ -243,7 +113,7 @@ QStringList dependencies(const std::vector<ProductData> &qbsProductDeps)
for (const ProductData &qbsProductDep : qbsProductDeps) {
const auto path = qbsProductDep.buildDirectory()
+ QLatin1String("/obj/")
- + qbs::KeiluvUtils::targetBinary(qbsProductDep);
+ + gen::utils::targetBinary(qbsProductDep);
deps.push_back(QDir::toNativeSeparators(path));
}
return deps;
diff --git a/src/plugins/generator/keiluv/keiluvutils.h b/src/plugins/generator/keiluv/keiluvutils.h
index a1de6c543..92209dc53 100644
--- a/src/plugins/generator/keiluv/keiluvutils.h
+++ b/src/plugins/generator/keiluv/keiluvutils.h
@@ -38,60 +38,15 @@
namespace qbs {
namespace KeiluvUtils {
-enum class Architecture {
- Mcs51Architecture,
- UnknownArchitecture
-};
-
enum OutputBinaryType {
ApplicationOutputType,
LibraryOutputType
};
-template <typename T>
-bool inBounds(const T &value, const T &low, const T &high)
-{
- return !(value < low) && !(high < value);
-}
-
OutputBinaryType outputBinaryType(const ProductData &qbsProduct);
-QString architectureName(Architecture arch);
-
-Architecture architecture(const Project &qbsProject);
-
-QString buildConfigurationName(const Project &qbsProject);
-
-int debugInformation(const ProductData &qbsProduct);
-
-QString binaryOutputDirectory(const QString &baseDirectory,
- const ProductData &qbsProduct);
-
-QString objectsOutputDirectory(const QString &baseDirectory,
- const ProductData &qbsProduct);
-
-QString listingOutputDirectory(const QString &baseDirectory,
- const ProductData &qbsProduct);
-
-QString targetBinary(const ProductData &qbsProduct);
-
-std::vector<ProductData> dependenciesOf(const ProductData &qbsProduct,
- const GeneratableProject &genProject,
- const QString configurationName);
-
QString toolkitRootPath(const ProductData &qbsProduct);
-QString buildRootPath(const Project &qbsProject);
-
-QString relativeFilePath(const QString &baseDirectory,
- const QString &fullFilePath);
-
-QString cppStringModuleProperty(const PropertyMap &qbsProps,
- const QString &propertyName);
-
-QStringList cppStringModuleProperties(const PropertyMap &qbsProps,
- const QStringList &propertyNames);
-
QStringList cppModuleCompilerFlags(const PropertyMap &qbsProps);
QStringList cppModuleAssemblerFlags(const PropertyMap &qbsProps);
diff --git a/src/plugins/generator/keiluv/keiluvversioninfo.cpp b/src/plugins/generator/keiluv/keiluvversioninfo.cpp
index 9d9723307..544a07aff 100644
--- a/src/plugins/generator/keiluv/keiluvversioninfo.cpp
+++ b/src/plugins/generator/keiluv/keiluvversioninfo.cpp
@@ -41,17 +41,14 @@
#include "archs/mcs51/mcs51utils.h"
-#include <tools/qbsassert.h>
-
#include <QtCore/qdebug.h>
-#include <QtCore/qglobal.h>
namespace qbs {
KeiluvVersionInfo::KeiluvVersionInfo(
const Version &version,
- const std::set<KeiluvUtils::Architecture> &archs)
- : m_version(version), m_archs(archs)
+ const std::set<gen::utils::Architecture> &archs)
+ : gen::VersionInfo(version, archs)
{
}
@@ -59,47 +56,21 @@ std::set<KeiluvVersionInfo> KeiluvVersionInfo::knownVersions()
{
static const std::set<KeiluvVersionInfo> known = {
{Version(keiluv::mcs51::v5::KeiluvConstants::kUVisionVersion),
- {KeiluvUtils::Architecture::Mcs51Architecture}},
+ {gen::utils::Architecture::Mcs51}},
};
return known;
}
-bool KeiluvVersionInfo::operator<(const KeiluvVersionInfo &other) const
-{
- return m_version < other.m_version;
-}
-
-bool KeiluvVersionInfo::operator==(const KeiluvVersionInfo &other) const
-{
- return m_version == other.m_version
- && m_archs == other.m_archs;
-}
-
-Version KeiluvVersionInfo::version() const
-{
- return m_version;
-}
-
int KeiluvVersionInfo::marketingVersion() const
{
- const auto mv = m_version.majorVersion();
+ const auto mv = gen::VersionInfo::marketingVersion();
for (const KeiluvVersionInfo &known : knownVersions()) {
if (known.version().majorVersion() == mv)
return mv;
}
qWarning() << QStringLiteral("Unrecognized KEIL UV version: ")
- << m_version.toString();
+ << version().toString();
return 0;
}
-bool KeiluvVersionInfo::containsArchitecture(KeiluvUtils::Architecture arch) const
-{
- return m_archs.find(arch) != m_archs.cend();
-}
-
-quint32 qHash(const KeiluvVersionInfo &info)
-{
- return qHash(info.version().toString());
-}
-
} // namespace qbs
diff --git a/src/plugins/generator/keiluv/keiluvversioninfo.h b/src/plugins/generator/keiluv/keiluvversioninfo.h
index 5bec6ac6e..a64513492 100644
--- a/src/plugins/generator/keiluv/keiluvversioninfo.h
+++ b/src/plugins/generator/keiluv/keiluvversioninfo.h
@@ -40,37 +40,22 @@
#ifndef QBS_KEILUVVERSIONINFO_H
#define QBS_KEILUVVERSIONINFO_H
-#include "keiluvutils.h"
-
-#include <tools/version.h>
-
-#include <set>
+#include <generators/generatorutils.h>
+#include <generators/generatorversioninfo.h>
namespace qbs {
-class KeiluvVersionInfo final
+class KeiluvVersionInfo final : public gen::VersionInfo
{
public:
KeiluvVersionInfo(const Version &version,
- const std::set<KeiluvUtils::Architecture> &archs);
-
- static std::set<KeiluvVersionInfo> knownVersions();
+ const std::set<gen::utils::Architecture> &archs);
- bool operator<(const KeiluvVersionInfo &other) const;
- bool operator==(const KeiluvVersionInfo &other) const;
+ int marketingVersion() const final;
- Version version() const;
- int marketingVersion() const;
-
- bool containsArchitecture(KeiluvUtils::Architecture arch) const;
-
-private:
- Version m_version;
- std::set<KeiluvUtils::Architecture> m_archs;
+ static std::set<KeiluvVersionInfo> knownVersions();
};
-quint32 qHash(const KeiluvVersionInfo &info);
-
} // namespace qbs
#endif // QBS_KEILUVVERSIONINFO_H
diff --git a/src/plugins/generator/keiluv/keiluvworkspace.cpp b/src/plugins/generator/keiluv/keiluvworkspace.cpp
index 948929ee0..b4df92001 100644
--- a/src/plugins/generator/keiluv/keiluvworkspace.cpp
+++ b/src/plugins/generator/keiluv/keiluvworkspace.cpp
@@ -37,44 +37,32 @@
**
****************************************************************************/
-#include "ikeiluvnodevisitor.h"
-#include "keiluvproperty.h"
-#include "keiluvpropertygroup.h"
#include "keiluvworkspace.h"
+#include <generators/xmlpropertygroup.h>
+
namespace qbs {
KeiluvWorkspace::KeiluvWorkspace(const QString &workspacePath)
+ : gen::xml::Workspace(workspacePath)
{
- m_baseDirectory = QFileInfo(workspacePath).absoluteDir();
-
// Construct schema version item.
- appendChild<KeiluvProperty>(QByteArrayLiteral("SchemaVersion"),
- QStringLiteral("1.0"));
+ appendChild<gen::xml::Property>(QByteArrayLiteral("SchemaVersion"),
+ QStringLiteral("1.0"));
// Construct workspace name item.
- appendChild<KeiluvProperty>(QByteArrayLiteral("WorkspaceName"),
- QStringLiteral("WorkSpace"));
+ appendChild<gen::xml::Property>(QByteArrayLiteral("WorkspaceName"),
+ QStringLiteral("WorkSpace"));
}
-void KeiluvWorkspace::addProjectPath(const QString &projectFilePath)
+void KeiluvWorkspace::addProject(const QString &projectFilePath)
{
- const QString relativeProjectPath =
- m_baseDirectory.relativeFilePath(projectFilePath);
+ const QString relativeProjectPath = QDir::toNativeSeparators(
+ m_baseDirectory.relativeFilePath(projectFilePath));
- const auto projectGroup = appendChild<KeiluvPropertyGroup>(
+ const auto projectGroup = appendChild<gen::xml::PropertyGroup>(
QByteArrayLiteral("project"));
projectGroup->appendProperty("PathAndName", relativeProjectPath);
}
-void KeiluvWorkspace::accept(IKeiluvNodeVisitor *visitor) const
-{
- visitor->visitStart(this);
-
- for (const auto &child : children())
- child->accept(visitor);
-
- visitor->visitEnd(this);
-}
-
} // namespace qbs
diff --git a/src/plugins/generator/keiluv/keiluvworkspace.h b/src/plugins/generator/keiluv/keiluvworkspace.h
index 09950efd7..2b274c99f 100644
--- a/src/plugins/generator/keiluv/keiluvworkspace.h
+++ b/src/plugins/generator/keiluv/keiluvworkspace.h
@@ -40,22 +40,15 @@
#ifndef QBS_KEILUVWORKSPACE_H
#define QBS_KEILUVWORKSPACE_H
-#include "keiluvproperty.h"
-
-#include <QtCore/qdir.h>
+#include <generators/xmlworkspace.h>
namespace qbs {
-class KeiluvWorkspace final : public KeiluvProperty
+class KeiluvWorkspace final : public gen::xml::Workspace
{
public:
explicit KeiluvWorkspace(const QString &workspacePath);
- void addProjectPath(const QString &projectPath);
-
- void accept(IKeiluvNodeVisitor *visitor) const final;
-
-private:
- QDir m_baseDirectory;
+ void addProject(const QString &projectPath) final;
};
} // namespace qbs
diff --git a/src/plugins/generator/keiluv/keiluvworkspacewriter.cpp b/src/plugins/generator/keiluv/keiluvworkspacewriter.cpp
index e646a1122..9070a2542 100644
--- a/src/plugins/generator/keiluv/keiluvworkspacewriter.cpp
+++ b/src/plugins/generator/keiluv/keiluvworkspacewriter.cpp
@@ -28,70 +28,31 @@
**
****************************************************************************/
-#include "keiluvproperty.h"
-#include "keiluvpropertygroup.h"
-#include "keiluvworkspace.h"
#include "keiluvworkspacewriter.h"
-#include <ostream>
-
namespace qbs {
KeiluvWorkspaceWriter::KeiluvWorkspaceWriter(std::ostream *device)
- : m_device(device)
-{
- m_writer.reset(new QXmlStreamWriter(&m_buffer));
- m_writer->setAutoFormatting(true);
-}
-
-bool KeiluvWorkspaceWriter::write(const KeiluvWorkspace *workspace)
+ : gen::xml::WorkspaceWriter(device)
{
- m_buffer.clear();
- m_writer->writeStartDocument();
- workspace->accept(this);
- m_writer->writeEndDocument();
- if (m_writer->hasError())
- return false;
- m_device->write(&*std::begin(m_buffer), m_buffer.size());
- return m_device->good();
}
-void KeiluvWorkspaceWriter::visitStart(const KeiluvWorkspace *workspace)
+void KeiluvWorkspaceWriter::visitStart(const gen::xml::Workspace *workspace)
{
Q_UNUSED(workspace)
- m_writer->writeStartElement(QStringLiteral("ProjectWorkspace"));
- m_writer->writeAttribute(QStringLiteral("xmlns:xsi"),
- QStringLiteral("http://www.w3.org/2001/XMLSchema-instance"));
- m_writer->writeAttribute(QStringLiteral("xsi:noNamespaceSchemaLocation"),
- QStringLiteral("project_mpw.xsd"));
+ writer()->writeStartElement(QStringLiteral("ProjectWorkspace"));
+ writer()->writeAttribute(
+ QStringLiteral("xmlns:xsi"),
+ QStringLiteral("http://www.w3.org/2001/XMLSchema-instance"));
+ writer()->writeAttribute(
+ QStringLiteral("xsi:noNamespaceSchemaLocation"),
+ QStringLiteral("project_mpw.xsd"));
}
-void KeiluvWorkspaceWriter::visitEnd(const KeiluvWorkspace *workspace)
+void KeiluvWorkspaceWriter::visitEnd(const gen::xml::Workspace *workspace)
{
Q_UNUSED(workspace)
- m_writer->writeEndElement();
-}
-
-void KeiluvWorkspaceWriter::visitStart(const KeiluvProperty *property)
-{
- const QString stringValue = property->value().toString();
- m_writer->writeTextElement(QString::fromLatin1(property->name()), stringValue);
-}
-
-void KeiluvWorkspaceWriter::visitEnd(const KeiluvProperty *property)
-{
- Q_UNUSED(property)
-}
-
-void KeiluvWorkspaceWriter::visitStart(const KeiluvPropertyGroup *propertyGroup)
-{
- m_writer->writeStartElement(QString::fromLatin1(propertyGroup->name()));
-}
-
-void KeiluvWorkspaceWriter::visitEnd(const KeiluvPropertyGroup *propertyGroup)
-{
- Q_UNUSED(propertyGroup)
- m_writer->writeEndElement();
+ writer()->writeEndElement();
}
} // namespace qbs
diff --git a/src/plugins/generator/keiluv/keiluvworkspacewriter.h b/src/plugins/generator/keiluv/keiluvworkspacewriter.h
index 4b4f2dde0..56bcd1ebc 100644
--- a/src/plugins/generator/keiluv/keiluvworkspacewriter.h
+++ b/src/plugins/generator/keiluv/keiluvworkspacewriter.h
@@ -31,32 +31,19 @@
#ifndef QBS_KEILUVWORKSPACEWRITER_H
#define QBS_KEILUVWORKSPACEWRITER_H
-#include "ikeiluvnodevisitor.h"
+#include <generators/xmlworkspacewriter.h>
namespace qbs {
-class KeiluvWorkspace;
-
-class KeiluvWorkspaceWriter final : public IKeiluvNodeVisitor
+class KeiluvWorkspaceWriter final : public gen::xml::WorkspaceWriter
{
Q_DISABLE_COPY(KeiluvWorkspaceWriter)
public:
explicit KeiluvWorkspaceWriter(std::ostream *device);
- bool write(const KeiluvWorkspace *workspace);
private:
- void visitStart(const KeiluvWorkspace *workspace) final;
- void visitEnd(const KeiluvWorkspace *workspace) final;
-
- void visitStart(const KeiluvProperty *property) final;
- void visitEnd(const KeiluvProperty *property) final;
-
- void visitStart(const KeiluvPropertyGroup *propertyGroup) final;
- void visitEnd(const KeiluvPropertyGroup *propertyGroup) final;
-
- std::ostream *m_device = nullptr;
- QByteArray m_buffer;
- std::unique_ptr<QXmlStreamWriter> m_writer;
+ void visitStart(const gen::xml::Workspace *workspace) final;
+ void visitEnd(const gen::xml::Workspace *workspace) final;
};
} // namespace qbs