aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/jsextensions/pkgconfigjs.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/corelib/jsextensions/pkgconfigjs.cpp')
-rw-r--r--src/lib/corelib/jsextensions/pkgconfigjs.cpp67
1 files changed, 33 insertions, 34 deletions
diff --git a/src/lib/corelib/jsextensions/pkgconfigjs.cpp b/src/lib/corelib/jsextensions/pkgconfigjs.cpp
index 76cc35084..817a3dfb9 100644
--- a/src/lib/corelib/jsextensions/pkgconfigjs.cpp
+++ b/src/lib/corelib/jsextensions/pkgconfigjs.cpp
@@ -42,9 +42,6 @@
#include <language/scriptengine.h>
#include <tools/version.h>
-#include <QtScript/qscriptengine.h>
-#include <QtScript/qscriptvalue.h>
-
#include <QtCore/QProcessEnvironment>
#include <stdexcept>
@@ -124,7 +121,6 @@ QVariantMap packageToMap(const PcPackage &package)
case Type::AlwaysMatch:
break;
}
- result[QStringLiteral("comparison")] = QVariant::fromValue(qint32(version.comparison));
return result;
};
@@ -186,35 +182,39 @@ std::vector<std::string> stringListToStdVector(const QStringList &list)
} // namespace
-QScriptValue PkgConfigJs::ctor(QScriptContext *context, QScriptEngine *engine)
+void PkgConfigJs::declareEnums(JSContext *ctx, JSValue classObj)
{
- try {
- PkgConfigJs *e = nullptr;
- switch (context->argumentCount()) {
- case 0:
- e = new PkgConfigJs(context, engine);
- break;
- case 1:
- e = new PkgConfigJs(context, engine, context->argument(0).toVariant().toMap());
- break;
-
- default:
- return context->throwError(
- QStringLiteral("TextFile constructor takes at most three parameters."));
- }
+ DECLARE_ENUM(ctx, classObj, LibraryName);
+ DECLARE_ENUM(ctx, classObj, LibraryPath);
+ DECLARE_ENUM(ctx, classObj, StaticLibraryName);
+ DECLARE_ENUM(ctx, classObj, Framework);
+ DECLARE_ENUM(ctx, classObj, FrameworkPath);
+ DECLARE_ENUM(ctx, classObj, LinkerFlag);
+ DECLARE_ENUM(ctx, classObj, IncludePath);
+ DECLARE_ENUM(ctx, classObj, SystemIncludePath);
+ DECLARE_ENUM(ctx, classObj, Define);
+ DECLARE_ENUM(ctx, classObj, CompilerFlag);
+}
- return engine->newQObject(e, QScriptEngine::ScriptOwnership);
+JSValue PkgConfigJs::ctor(JSContext *ctx, JSValue, JSValue, int argc, JSValue *argv, int)
+{
+ try {
+ QVariantMap options;
+ if (argc > 0)
+ options = fromArg<QVariant>(ctx, "PkgConfig constructor", 1, argv[0]).toMap();
+ JSValue obj = createObject(ctx, options);
+ return obj;
} catch (const PcException &e) {
- return context->throwError(QString::fromUtf8(e.what()));
+ return throwError(ctx, QString::fromUtf8(e.what()));
+ } catch (const QString &error) {
+ return throwError(ctx, error);
}
}
-PkgConfigJs::PkgConfigJs(
- QScriptContext *context, QScriptEngine *engine, const QVariantMap &options) :
+PkgConfigJs::PkgConfigJs(JSContext *ctx, const QVariantMap &options) :
m_pkgConfig(std::make_unique<PkgConfig>(
- convertOptions(static_cast<ScriptEngine *>(engine)->environment(), options)))
+ convertOptions(ScriptEngine::engineForContext(ctx)->environment(), options)))
{
- Q_UNUSED(context);
for (const auto &package : m_pkgConfig->packages()) {
m_packages.insert(
QString::fromStdString(package.getBaseFileName()), packageVariantToMap(package));
@@ -241,7 +241,7 @@ PkgConfig::Options PkgConfigJs::convertOptions(const QProcessEnvironment &env, c
[](const QString &str){ return str.toStdString(); });
result.disableUninstalled = map.value(QStringLiteral("disableUninstalled"), true).toBool();
result.staticMode = map.value(QStringLiteral("staticMode"), false).toBool();
- result.mergeDependencies = map.value(QStringLiteral("mergeDependencies"), true).toBool();
+ result.definePrefix = map.value(QStringLiteral("definePrefix"), false).toBool();
result.globalVariables =
variablesFromQVariantMap(map.value(QStringLiteral("globalVariables")).toMap());
result.systemVariables = envToVariablesMap(env);
@@ -249,16 +249,15 @@ PkgConfig::Options PkgConfigJs::convertOptions(const QProcessEnvironment &env, c
return result;
}
+void PkgConfigJs::setupMethods(JSContext *ctx, JSValue obj)
+{
+ setupMethod(ctx, obj, "packages", &PkgConfigJs::jsPackages, 0);
+}
+
} // namespace Internal
} // namespace qbs
-void initializeJsExtensionPkgConfig(QScriptValue extensionObject)
+void initializeJsExtensionPkgConfig(qbs::Internal::ScriptEngine *engine, JSValue extensionObject)
{
- using namespace qbs::Internal;
- QScriptEngine *engine = extensionObject.engine();
- QScriptValue obj = engine->newQMetaObject(
- &PkgConfigJs::staticMetaObject, engine->newFunction(&PkgConfigJs::ctor));
- extensionObject.setProperty(QStringLiteral("PkgConfig"), obj);
+ qbs::Internal::PkgConfigJs::registerClass(engine, extensionObject);
}
-
-Q_DECLARE_METATYPE(qbs::Internal::PkgConfigJs *)