aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/jsextensions/host.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/corelib/jsextensions/host.cpp')
-rw-r--r--src/lib/corelib/jsextensions/host.cpp138
1 files changed, 48 insertions, 90 deletions
diff --git a/src/lib/corelib/jsextensions/host.cpp b/src/lib/corelib/jsextensions/host.cpp
index ebf302a82..24d40fe6a 100644
--- a/src/lib/corelib/jsextensions/host.cpp
+++ b/src/lib/corelib/jsextensions/host.cpp
@@ -37,6 +37,8 @@
**
****************************************************************************/
+#include "jsextension.h"
+
#include <language/scriptengine.h>
#include <logging/translator.h>
#include <tools/fileinfo.h>
@@ -44,27 +46,28 @@
#include <QtCore/qdir.h>
#include <QtCore/qfileinfo.h>
-#include <QtScript/qscriptable.h>
-#include <QtScript/qscriptengine.h>
-
namespace qbs {
namespace Internal {
-class Host : public QObject, QScriptable
+class Host : public JsExtension<Host>
{
- Q_OBJECT
public:
- static QScriptValue js_ctor(QScriptContext *context, QScriptEngine *engine);
- static QScriptValue js_architecture(QScriptContext *context, QScriptEngine *engine);
- static QScriptValue js_os(QScriptContext *context, QScriptEngine *engine);
- static QScriptValue js_platform(QScriptContext *context, QScriptEngine *engine);
- static QScriptValue js_osVersion(QScriptContext *context, QScriptEngine *engine);
- static QScriptValue js_osBuildVersion(QScriptContext *context, QScriptEngine *engine);
- static QScriptValue js_osVersionParts(QScriptContext *context, QScriptEngine *engine);
- static QScriptValue js_osVersionMajor(QScriptContext *context, QScriptEngine *engine);
- static QScriptValue js_osVersionMinor(QScriptContext *context, QScriptEngine *engine);
- static QScriptValue js_osVersionPatch(QScriptContext *context, QScriptEngine *engine);
- static QScriptValue js_nullDevice(QScriptContext *context, QScriptEngine *engine);
+ static const char *name() { return "Host"; }
+ static void setupStaticMethods(JSContext *ctx, JSValue classObj);
+ static JSValue jsArchitecture(JSContext *ctx, JSValueConst, int, JSValueConst *) {
+ return makeJsString(ctx, HostOsInfo::hostOSArchitecture());
+ }
+ static JSValue jsOs(JSContext *ctx, JSValueConst, int, JSValueConst *);
+ static JSValue jsPlatform(JSContext *ctx, JSValueConst, int, JSValueConst *) {
+ return makeJsString(ctx, HostOsInfo::hostOSIdentifier());
+ }
+ static JSValue jsOsVersion(JSContext *ctx, JSValueConst, int, JSValueConst *);
+ static JSValue jsOsBuildVersion(JSContext *ctx, JSValueConst, int, JSValueConst *);
+ static JSValue jsOsVersionParts(JSContext *ctx, JSValueConst, int, JSValueConst *);
+ static JSValue jsOsVersionMajor(JSContext *ctx, JSValueConst, int, JSValueConst *);
+ static JSValue jsOsVersionMinor(JSContext *ctx, JSValueConst, int, JSValueConst *);
+ static JSValue jsOsVersionPatch(JSContext *ctx, JSValueConst, int, JSValueConst *);
+ static JSValue jsNullDevice(JSContext *ctx, JSValueConst, int, JSValueConst *);
};
static QStringList osList()
@@ -75,119 +78,74 @@ static QStringList osList()
return list;
}
-QScriptValue Host::js_ctor(QScriptContext *context, QScriptEngine *engine)
-{
- Q_UNUSED(engine);
- return context->throwError(Tr::tr("'Host' cannot be instantiated."));
-}
-
-QScriptValue Host::js_architecture(QScriptContext *context, QScriptEngine *engine)
+void Host::setupStaticMethods(JSContext *ctx, JSValue classObj)
{
- Q_UNUSED(context);
- Q_UNUSED(engine);
-
- return HostOsInfo::hostOSArchitecture();
+ setupMethod(ctx, classObj, "architecture", &Host::jsArchitecture, 0);
+ setupMethod(ctx, classObj, "os", &Host::jsOs, 0);
+ setupMethod(ctx, classObj, "platform", &Host::jsPlatform, 0);
+ setupMethod(ctx, classObj, "osVersion", &Host::jsOsVersion, 0);
+ setupMethod(ctx, classObj, "osBuildVersion", &Host::jsOsBuildVersion, 0);
+ setupMethod(ctx, classObj, "osVersionParts", &Host::jsOsVersionParts, 0);
+ setupMethod(ctx, classObj, "osVersionMajor", &Host::jsOsVersionMajor, 0);
+ setupMethod(ctx, classObj, "osVersionMinor", &Host::jsOsVersionMinor, 0);
+ setupMethod(ctx, classObj, "osVersionPatch", &Host::jsOsVersionPatch, 0);
+ setupMethod(ctx, classObj, "nullDevice", &Host::jsNullDevice, 0);
}
-QScriptValue Host::js_os(QScriptContext *context, QScriptEngine *engine)
+JSValue Host::jsOs(JSContext *ctx, JSValue, int, JSValue *)
{
- Q_UNUSED(context);
static QStringList host = osList();
- return engine->toScriptValue(host);
+ return makeJsStringList(ctx, host);
}
-QScriptValue Host::js_platform(QScriptContext *context, QScriptEngine *engine)
+JSValue Host::jsOsVersion(JSContext *ctx, JSValue, int, JSValue *)
{
- Q_UNUSED(context);
- Q_UNUSED(engine);
- return HostOsInfo::hostOSIdentifier();
-}
-
-QScriptValue Host::js_osVersion(QScriptContext *context, QScriptEngine *engine)
-{
- Q_UNUSED(context);
- Q_UNUSED(engine);
static QString osVersion = HostOsInfo::hostOsVersion().toString();
- return osVersion.isNull() ? engine->undefinedValue() : osVersion;
+ return osVersion.isNull() ? JS_UNDEFINED : makeJsString(ctx, osVersion);
}
-QScriptValue Host::js_osBuildVersion(QScriptContext *context, QScriptEngine *engine)
+JSValue Host::jsOsBuildVersion(JSContext *ctx, JSValue, int, JSValue *)
{
- Q_UNUSED(context);
- Q_UNUSED(engine);
static QString osBuildVersion = HostOsInfo::hostOsBuildVersion();
- return osBuildVersion.isNull() ? engine->undefinedValue() : osBuildVersion;
+ return osBuildVersion.isNull() ? JS_UNDEFINED : makeJsString(ctx, osBuildVersion);
}
-QScriptValue Host::js_osVersionParts(QScriptContext *context, QScriptEngine *engine)
+JSValue Host::jsOsVersionParts(JSContext *ctx, JSValue, int, JSValue *)
{
- Q_UNUSED(context);
- Q_UNUSED(engine);
static QStringList osVersionParts = HostOsInfo::hostOsVersion().toString().split(
QStringLiteral("."));
- return qScriptValueFromSequence(engine, osVersionParts);
+ return makeJsStringList(ctx, osVersionParts);
}
-QScriptValue Host::js_osVersionMajor(QScriptContext *context, QScriptEngine *engine)
+JSValue Host::jsOsVersionMajor(JSContext *ctx, JSValue, int, JSValue *)
{
- Q_UNUSED(context);
- Q_UNUSED(engine);
static int osVersionMajor = HostOsInfo::hostOsVersion().majorVersion();
- return osVersionMajor;
+ return JS_NewInt32(ctx, osVersionMajor);
}
-QScriptValue Host::js_osVersionMinor(QScriptContext *context, QScriptEngine *engine)
+JSValue Host::jsOsVersionMinor(JSContext *ctx, JSValue, int, JSValue *)
{
- Q_UNUSED(context);
- Q_UNUSED(engine);
static int osVersionMinor = HostOsInfo::hostOsVersion().minorVersion();
- return osVersionMinor;
+ return JS_NewInt32(ctx, osVersionMinor);
}
-QScriptValue Host::js_osVersionPatch(QScriptContext *context, QScriptEngine *engine)
+JSValue Host::jsOsVersionPatch(JSContext *ctx, JSValue, int, JSValue *)
{
- Q_UNUSED(context);
- Q_UNUSED(engine);
static int osVersionPatch = HostOsInfo::hostOsVersion().patchLevel();
- return osVersionPatch;
+ return JS_NewInt32(ctx, osVersionPatch);
}
-QScriptValue Host::js_nullDevice(QScriptContext *context, QScriptEngine *engine)
+JSValue Host::jsNullDevice(JSContext *ctx, JSValue, int, JSValue *)
{
- Q_UNUSED(context);
- Q_UNUSED(engine);
static QString nullDevice = HostOsInfo::isWindowsHost() ? QStringLiteral("NUL") :
QStringLiteral("/dev/null");
- return nullDevice;
+ return makeJsString(ctx, nullDevice);
}
} // namespace Internal
} // namespace qbs
-void initializeJsExtensionHost(QScriptValue extensionObject)
+void initializeJsExtensionHost(qbs::Internal::ScriptEngine *engine, JSValue extensionObject)
{
- using namespace qbs::Internal;
- QScriptEngine *engine = extensionObject.engine();
- QScriptValue hostObj = engine->newQMetaObject(&Host::staticMetaObject,
- engine->newFunction(&Host::js_ctor));
- hostObj.setProperty(QStringLiteral("architecture"), engine->newFunction(Host::js_architecture));
- hostObj.setProperty(QStringLiteral("os"), engine->newFunction(Host::js_os));
- hostObj.setProperty(QStringLiteral("platform"), engine->newFunction(Host::js_platform));
- hostObj.setProperty(QStringLiteral("osVersion"), engine->newFunction(Host::js_osVersion));
- hostObj.setProperty(QStringLiteral("osBuildVersion"), engine->newFunction(
- Host::js_osBuildVersion));
- hostObj.setProperty(QStringLiteral("osVersionParts"), engine->newFunction(
- Host::js_osVersionParts));
- hostObj.setProperty(QStringLiteral("osVersionMajor"), engine->newFunction(
- Host::js_osVersionMajor));
- hostObj.setProperty(QStringLiteral("osVersionMinor"), engine->newFunction(
- Host::js_osVersionMinor));
- hostObj.setProperty(QStringLiteral("osVersionPatch"), engine->newFunction(
- Host::js_osVersionPatch));
- hostObj.setProperty(QStringLiteral("nullDevice"), engine->newFunction(Host::js_nullDevice));
- extensionObject.setProperty(QStringLiteral("Host"), hostObj);
+ qbs::Internal::Host::registerClass(engine, extensionObject);
}
-
-Q_DECLARE_METATYPE(qbs::Internal::Host *)
-
-#include "host.moc"