diff options
Diffstat (limited to 'src/script/api/qscriptvalue.h')
-rw-r--r-- | src/script/api/qscriptvalue.h | 236 |
1 files changed, 236 insertions, 0 deletions
diff --git a/src/script/api/qscriptvalue.h b/src/script/api/qscriptvalue.h new file mode 100644 index 0000000..67b9514 --- /dev/null +++ b/src/script/api/qscriptvalue.h @@ -0,0 +1,236 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtScript module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** 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 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSCRIPTVALUE_H +#define QSCRIPTVALUE_H + +#include <QtCore/qstring.h> + +#include <QtCore/qlist.h> +#include <QtCore/qsharedpointer.h> + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +QT_MODULE(Script) + +class QScriptClass; +class QScriptValue; +class QScriptEngine; +class QScriptString; +class QVariant; +class QObject; +struct QMetaObject; +class QDateTime; +#ifndef QT_NO_REGEXP +class QRegExp; +#endif + +typedef QList<QScriptValue> QScriptValueList; + +typedef double qsreal; + +class QScriptValuePrivate; +struct QScriptValuePrivatePointerDeleter; +class Q_SCRIPT_EXPORT QScriptValue +{ +public: + enum ResolveFlag { + ResolveLocal = 0x00, + ResolvePrototype = 0x01, + ResolveScope = 0x02, + ResolveFull = ResolvePrototype | ResolveScope + }; + + Q_DECLARE_FLAGS(ResolveFlags, ResolveFlag) + + enum PropertyFlag { + ReadOnly = 0x00000001, + Undeletable = 0x00000002, + SkipInEnumeration = 0x00000004, + + PropertyGetter = 0x00000008, + PropertySetter = 0x00000010, + + QObjectMember = 0x00000020, + + KeepExistingFlags = 0x00000800, + + UserRange = 0xff000000 // Users may use these as they see fit. + }; + Q_DECLARE_FLAGS(PropertyFlags, PropertyFlag) + + enum SpecialValue { + NullValue, + UndefinedValue + }; + +public: + QScriptValue(); + ~QScriptValue(); + QScriptValue(const QScriptValue &other); + QScriptValue(QScriptEngine *engine, SpecialValue val); + QScriptValue(QScriptEngine *engine, bool val); + QScriptValue(QScriptEngine *engine, int val); + QScriptValue(QScriptEngine *engine, uint val); + QScriptValue(QScriptEngine *engine, qsreal val); + QScriptValue(QScriptEngine *engine, const QString &val); +#ifndef QT_NO_CAST_FROM_ASCII + QT_ASCII_CAST_WARN_CONSTRUCTOR QScriptValue(QScriptEngine *engine, const char *val); +#endif + + QScriptValue(SpecialValue value); + QScriptValue(bool value); + QScriptValue(int value); + QScriptValue(uint value); + QScriptValue(qsreal value); + QScriptValue(const QString &value); + QScriptValue(const QLatin1String &value); +#ifndef QT_NO_CAST_FROM_ASCII + QT_ASCII_CAST_WARN_CONSTRUCTOR QScriptValue(const char *value); +#endif + + QScriptValue &operator=(const QScriptValue &other); + + QScriptEngine *engine() const; + + bool isValid() const; + bool isBool() const; + bool isBoolean() const; + bool isNumber() const; + bool isFunction() const; + bool isNull() const; + bool isString() const; + bool isUndefined() const; + bool isVariant() const; + bool isQObject() const; + bool isQMetaObject() const; + bool isObject() const; + bool isDate() const; + bool isRegExp() const; + bool isArray() const; + bool isError() const; + + QString toString() const; + qsreal toNumber() const; + bool toBool() const; + bool toBoolean() const; + qsreal toInteger() const; + qint32 toInt32() const; + quint32 toUInt32() const; + quint16 toUInt16() const; + QVariant toVariant() const; + QObject *toQObject() const; + const QMetaObject *toQMetaObject() const; + QScriptValue toObject() const; + QDateTime toDateTime() const; +#ifndef QT_NO_REGEXP + QRegExp toRegExp() const; +#endif + + bool instanceOf(const QScriptValue &other) const; + + bool lessThan(const QScriptValue &other) const; + bool equals(const QScriptValue &other) const; + bool strictlyEquals(const QScriptValue &other) const; + + QScriptValue prototype() const; + void setPrototype(const QScriptValue &prototype); + + QScriptValue scope() const; + void setScope(const QScriptValue &scope); + + QScriptValue property(const QString &name, + const ResolveFlags &mode = ResolvePrototype) const; + void setProperty(const QString &name, const QScriptValue &value, + const PropertyFlags &flags = KeepExistingFlags); + + QScriptValue property(quint32 arrayIndex, + const ResolveFlags &mode = ResolvePrototype) const; + void setProperty(quint32 arrayIndex, const QScriptValue &value, + const PropertyFlags &flags = KeepExistingFlags); + + QScriptValue property(const QScriptString &name, + const ResolveFlags &mode = ResolvePrototype) const; + void setProperty(const QScriptString &name, const QScriptValue &value, + const PropertyFlags &flags = KeepExistingFlags); + + QScriptValue::PropertyFlags propertyFlags( + const QString &name, const ResolveFlags &mode = ResolvePrototype) const; + QScriptValue::PropertyFlags propertyFlags( + const QScriptString &name, const ResolveFlags &mode = ResolvePrototype) const; + + QScriptValue call(const QScriptValue &thisObject = QScriptValue(), + const QScriptValueList &args = QScriptValueList()); + QScriptValue call(const QScriptValue &thisObject, + const QScriptValue &arguments); + QScriptValue construct(const QScriptValueList &args = QScriptValueList()); + QScriptValue construct(const QScriptValue &arguments); + + QScriptValue data() const; + void setData(const QScriptValue &data); + + QScriptClass *scriptClass() const; + void setScriptClass(QScriptClass *scriptClass); + + qint64 objectId() const; + +private: + // force compile error, prevent QScriptValue(bool) to be called + inline QScriptValue(void *); + // force compile error, prevent QScriptValue(QScriptEngine*, bool) to be called + inline QScriptValue(QScriptEngine *, void *); + +private: + QExplicitlySharedDataPointer<QScriptValuePrivate> d_ptr; + + Q_DECLARE_PRIVATE(QScriptValue) +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QScriptValue::ResolveFlags) +Q_DECLARE_OPERATORS_FOR_FLAGS(QScriptValue::PropertyFlags) + +QT_END_NAMESPACE + +QT_END_HEADER + +#endif |