1
/*****************************************************************
2
* Unipro UGENE - Integrated Bioinformatics Suite
3
* Copyright (C) 2008 Unipro, Russia (http://ugene.unipro.ru)
6
* This source code is distributed under the terms of the
7
* GNU General Public License. See the files COPYING and LICENSE
9
*****************************************************************/
11
#include <QtScript/QScriptEngine>
12
#include <QtScript/QScriptContext>
13
#include <QtScript/QScriptValue>
14
#include <QtCore/QStringList>
15
#include <QtCore/QDebug>
16
#include <qmetaobject.h>
18
#include <qlibraryinfo.h>
21
static const char * const qtscript_QLibraryInfo_function_names[] = {
32
static const char * const qtscript_QLibraryInfo_function_signatures[] = {
38
, "LibraryLocation arg__1"
43
static QScriptValue qtscript_QLibraryInfo_throw_ambiguity_error_helper(
44
QScriptContext *context, const char *functionName, const char *signatures)
46
QStringList lines = QString::fromLatin1(signatures).split(QLatin1Char('\n'));
47
QStringList fullSignatures;
48
for (int i = 0; i < lines.size(); ++i)
49
fullSignatures.append(QString::fromLatin1("%0(%1)").arg(functionName).arg(lines.at(i)));
50
return context->throwError(QString::fromLatin1("QFile::%0(): could not find a function match; candidates are:\n%1")
51
.arg(functionName).arg(fullSignatures.join(QLatin1String("\n"))));
54
Q_DECLARE_METATYPE(QLibraryInfo*)
55
Q_DECLARE_METATYPE(QLibraryInfo::LibraryLocation)
57
static QScriptValue qtscript_create_enum_class_helper(
58
QScriptEngine *engine,
59
QScriptEngine::FunctionSignature construct,
60
QScriptEngine::FunctionSignature valueOf,
61
QScriptEngine::FunctionSignature toString)
63
QScriptValue proto = engine->newObject();
64
proto.setProperty(QString::fromLatin1("valueOf"),
65
engine->newFunction(valueOf), QScriptValue::SkipInEnumeration);
66
proto.setProperty(QString::fromLatin1("toString"),
67
engine->newFunction(toString), QScriptValue::SkipInEnumeration);
68
return engine->newFunction(construct, proto, 1);
72
// QLibraryInfo::LibraryLocation
75
static const QLibraryInfo::LibraryLocation qtscript_QLibraryInfo_LibraryLocation_values[] = {
76
QLibraryInfo::PrefixPath
77
, QLibraryInfo::DocumentationPath
78
, QLibraryInfo::HeadersPath
79
, QLibraryInfo::LibrariesPath
80
, QLibraryInfo::BinariesPath
81
, QLibraryInfo::PluginsPath
82
, QLibraryInfo::DataPath
83
, QLibraryInfo::TranslationsPath
84
, QLibraryInfo::SettingsPath
85
, QLibraryInfo::DemosPath
86
, QLibraryInfo::ExamplesPath
89
static const char * const qtscript_QLibraryInfo_LibraryLocation_keys[] = {
103
static QString qtscript_QLibraryInfo_LibraryLocation_toStringHelper(QLibraryInfo::LibraryLocation value)
105
if ((value >= QLibraryInfo::PrefixPath) && (value <= QLibraryInfo::ExamplesPath))
106
return qtscript_QLibraryInfo_LibraryLocation_keys[static_cast<int>(value)];
110
static QScriptValue qtscript_QLibraryInfo_LibraryLocation_toScriptValue(QScriptEngine *engine, const QLibraryInfo::LibraryLocation &value)
112
QScriptValue clazz = engine->globalObject().property(QString::fromLatin1("QLibraryInfo"));
113
return clazz.property(qtscript_QLibraryInfo_LibraryLocation_toStringHelper(value));
116
static void qtscript_QLibraryInfo_LibraryLocation_fromScriptValue(const QScriptValue &value, QLibraryInfo::LibraryLocation &out)
118
out = qvariant_cast<QLibraryInfo::LibraryLocation>(value.toVariant());
121
static QScriptValue qtscript_construct_QLibraryInfo_LibraryLocation(QScriptContext *context, QScriptEngine *engine)
123
int arg = context->argument(0).toInt32();
124
if ((arg >= QLibraryInfo::PrefixPath) && (arg <= QLibraryInfo::ExamplesPath))
125
return qScriptValueFromValue(engine, static_cast<QLibraryInfo::LibraryLocation>(arg));
126
return context->throwError(QString::fromLatin1("LibraryLocation(): invalid enum value (%0)").arg(arg));
129
static QScriptValue qtscript_QLibraryInfo_LibraryLocation_valueOf(QScriptContext *context, QScriptEngine *engine)
131
QLibraryInfo::LibraryLocation value = qscriptvalue_cast<QLibraryInfo::LibraryLocation>(context->thisObject());
132
return QScriptValue(engine, static_cast<int>(value));
135
static QScriptValue qtscript_QLibraryInfo_LibraryLocation_toString(QScriptContext *context, QScriptEngine *engine)
137
QLibraryInfo::LibraryLocation value = qscriptvalue_cast<QLibraryInfo::LibraryLocation>(context->thisObject());
138
return QScriptValue(engine, qtscript_QLibraryInfo_LibraryLocation_toStringHelper(value));
141
static QScriptValue qtscript_create_QLibraryInfo_LibraryLocation_class(QScriptEngine *engine, QScriptValue &clazz)
143
QScriptValue ctor = qtscript_create_enum_class_helper(
144
engine, qtscript_construct_QLibraryInfo_LibraryLocation,
145
qtscript_QLibraryInfo_LibraryLocation_valueOf, qtscript_QLibraryInfo_LibraryLocation_toString);
146
qScriptRegisterMetaType<QLibraryInfo::LibraryLocation>(engine, qtscript_QLibraryInfo_LibraryLocation_toScriptValue,
147
qtscript_QLibraryInfo_LibraryLocation_fromScriptValue, ctor.property(QString::fromLatin1("prototype")));
148
for (int i = 0; i < 11; ++i) {
149
clazz.setProperty(QString::fromLatin1(qtscript_QLibraryInfo_LibraryLocation_keys[i]),
150
engine->newVariant(qVariantFromValue(qtscript_QLibraryInfo_LibraryLocation_values[i])),
151
QScriptValue::ReadOnly | QScriptValue::Undeletable);
160
static QScriptValue qtscript_QLibraryInfo_prototype_call(QScriptContext *context, QScriptEngine *)
162
#if QT_VERSION > 0x040400
163
Q_ASSERT(context->callee().isFunction());
164
uint _id = context->callee().data().toUInt32();
167
if (context->callee().isFunction())
168
_id = context->callee().data().toUInt32();
170
_id = 0xBABE0000 + 0;
172
Q_ASSERT((_id & 0xFFFF0000) == 0xBABE0000);
174
QLibraryInfo* _q_self = qscriptvalue_cast<QLibraryInfo*>(context->thisObject());
176
return context->throwError(QScriptContext::TypeError,
177
QString::fromLatin1("QLibraryInfo.%0(): this object is not a QLibraryInfo")
178
.arg(qtscript_QLibraryInfo_function_names[_id+1]));
183
QString result = QString::fromLatin1("QLibraryInfo");
184
return QScriptValue(context->engine(), result);
190
return qtscript_QLibraryInfo_throw_ambiguity_error_helper(context,
191
qtscript_QLibraryInfo_function_names[_id+5],
192
qtscript_QLibraryInfo_function_signatures[_id+5]);
195
static QScriptValue qtscript_QLibraryInfo_static_call(QScriptContext *context, QScriptEngine *)
197
uint _id = context->callee().data().toUInt32();
198
Q_ASSERT((_id & 0xFFFF0000) == 0xBABE0000);
202
return context->throwError(QScriptContext::TypeError,
203
QString::fromLatin1("QLibraryInfo cannot be constructed"));
207
if (context->argumentCount() == 0) {
208
QString _q_result = QLibraryInfo::buildKey();
209
return QScriptValue(context->engine(), _q_result);
214
if (context->argumentCount() == 0) {
215
QString _q_result = QLibraryInfo::licensedProducts();
216
return QScriptValue(context->engine(), _q_result);
221
if (context->argumentCount() == 0) {
222
QString _q_result = QLibraryInfo::licensee();
223
return QScriptValue(context->engine(), _q_result);
228
if (context->argumentCount() == 1) {
229
QLibraryInfo::LibraryLocation _q_arg0 = qscriptvalue_cast<QLibraryInfo::LibraryLocation>(context->argument(0));
230
QString _q_result = QLibraryInfo::location(_q_arg0);
231
return QScriptValue(context->engine(), _q_result);
238
return qtscript_QLibraryInfo_throw_ambiguity_error_helper(context,
239
qtscript_QLibraryInfo_function_names[_id],
240
qtscript_QLibraryInfo_function_signatures[_id]);
243
QScriptValue qtscript_create_QLibraryInfo_class(QScriptEngine *engine)
245
static const int function_lengths[] = {
255
engine->setDefaultPrototype(qMetaTypeId<QLibraryInfo*>(), QScriptValue());
256
QScriptValue proto = engine->newVariant(qVariantFromValue((QLibraryInfo*)0));
258
engine->setDefaultPrototype(qMetaTypeId<QLibraryInfo*>(), proto);
260
QScriptValue ctor = engine->newFunction(qtscript_QLibraryInfo_static_call, proto, function_lengths[0]);
261
ctor.setData(QScriptValue(engine, uint(0xBABE0000 + 0)));
262
for (int i = 0; i < 4; ++i) {
263
QScriptValue fun = engine->newFunction(qtscript_QLibraryInfo_static_call,
264
function_lengths[i+1]);
265
fun.setData(QScriptValue(engine, uint(0xBABE0000 + i+1)));
266
ctor.setProperty(QString::fromLatin1(qtscript_QLibraryInfo_function_names[i+1]),
267
fun, QScriptValue::SkipInEnumeration);
270
ctor.setProperty(QString::fromLatin1("LibraryLocation"),
271
qtscript_create_QLibraryInfo_LibraryLocation_class(engine, ctor));