Go to the
documentation of this file.
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef QSCRIPTVALUE_H
00025 #define QSCRIPTVALUE_H
00026
00027 #include <QtCore/qstring.h>
00028
00029 #include <QtCore/qlist.h>
00030 #include <QtCore/qsharedpointer.h>
00031
00032 QT_BEGIN_HEADER
00033
00034 QT_BEGIN_NAMESPACE
00035
00036 QT_MODULE(Script)
00037
00038 class QScriptClass;
00039 class QScriptValue;
00040 class QScriptEngine;
00041 class QScriptString;
00042 class QVariant;
00043 class QObject;
00044 struct QMetaObject;
00045 class QDateTime;
00046 #ifndef QT_NO_REGEXP
00047 class QRegExp;
00048 #endif
00049
00050 typedef QList<QScriptValue> QScriptValueList;
00051
00052 typedef double qsreal;
00053
00054 class QScriptValuePrivate;
00055 class QScriptEnginePrivate;
00056 struct QScriptValuePrivatePointerDeleter;
00057 class Q_SCRIPT_EXPORT QScriptValue
00058 {
00059 public:
00060 enum ResolveFlag {
00061 ResolveLocal = 0x00,
00062 ResolvePrototype = 0x01,
00063 ResolveScope = 0x02,
00064 ResolveFull = ResolvePrototype | ResolveScope
00065 };
00066
00067 Q_DECLARE_FLAGS(ResolveFlags, ResolveFlag)
00068
00069 enum PropertyFlag {
00070 ReadOnly = 0x00000001,
00071 Undeletable = 0x00000002,
00072 SkipInEnumeration = 0x00000004,
00073
00074 PropertyGetter = 0x00000008,
00075 PropertySetter = 0x00000010,
00076
00077 QObjectMember = 0x00000020,
00078
00079 KeepExistingFlags = 0x00000800,
00080
00081 UserRange = 0xff000000
00082 };
00083 Q_DECLARE_FLAGS(PropertyFlags, PropertyFlag)
00084
00085 enum SpecialValue {
00086 NullValue,
00087 UndefinedValue
00088 };
00089
00090 public:
00091 QScriptValue();
00092 ~QScriptValue();
00093 QScriptValue(const QScriptValue &other);
00094 QScriptValue(QScriptEngine *engine, SpecialValue val);
00095 QScriptValue(QScriptEngine *engine, bool val);
00096 QScriptValue(QScriptEngine *engine, int val);
00097 QScriptValue(QScriptEngine *engine, uint val);
00098 QScriptValue(QScriptEngine *engine, qsreal val);
00099 QScriptValue(QScriptEngine *engine, const QString &val);
00100 #ifndef QT_NO_CAST_FROM_ASCII
00101 QT_ASCII_CAST_WARN_CONSTRUCTOR QScriptValue(QScriptEngine *engine, const char *val);
00102 #endif
00103
00104 QScriptValue(SpecialValue value);
00105 QScriptValue(bool value);
00106 QScriptValue(int value);
00107 QScriptValue(uint value);
00108 QScriptValue(qsreal value);
00109 QScriptValue(const QString &value);
00110 QScriptValue(const QLatin1String &value);
00111 #ifndef QT_NO_CAST_FROM_ASCII
00112 QT_ASCII_CAST_WARN_CONSTRUCTOR QScriptValue(const char *value);
00113 #endif
00114
00115 QScriptValue &operator=(const QScriptValue &other);
00116
00117 QScriptEngine *engine() const;
00118
00119 bool isValid() const;
00120 bool isBool() const;
00121 bool isBoolean() const;
00122 bool isNumber() const;
00123 bool isFunction() const;
00124 bool isNull() const;
00125 bool isString() const;
00126 bool isUndefined() const;
00127 bool isVariant() const;
00128 bool isQObject() const;
00129 bool isQMetaObject() const;
00130 bool isObject() const;
00131 bool isDate() const;
00132 bool isRegExp() const;
00133 bool isArray() const;
00134 bool isError() const;
00135
00136 QString toString() const;
00137 qsreal toNumber() const;
00138 bool toBool() const;
00139 bool toBoolean() const;
00140 qsreal toInteger() const;
00141 qint32 toInt32() const;
00142 quint32 toUInt32() const;
00143 quint16 toUInt16() const;
00144 QVariant toVariant() const;
00145 QObject *toQObject() const;
00146 const QMetaObject *toQMetaObject() const;
00147 QScriptValue toObject() const;
00148 QDateTime toDateTime() const;
00149 #ifndef QT_NO_REGEXP
00150 QRegExp toRegExp() const;
00151 #endif
00152
00153 bool instanceOf(const QScriptValue &other) const;
00154
00155 bool lessThan(const QScriptValue &other) const;
00156 bool equals(const QScriptValue &other) const;
00157 bool strictlyEquals(const QScriptValue &other) const;
00158
00159 QScriptValue prototype() const;
00160 void setPrototype(const QScriptValue &prototype);
00161
00162 QScriptValue scope() const;
00163 void setScope(const QScriptValue &scope);
00164
00165 QScriptValue property(const QString &name,
00166 const ResolveFlags &mode = ResolvePrototype) const;
00167 void setProperty(const QString &name, const QScriptValue &value,
00168 const PropertyFlags &flags = KeepExistingFlags);
00169
00170 QScriptValue property(quint32 arrayIndex,
00171 const ResolveFlags &mode = ResolvePrototype) const;
00172 void setProperty(quint32 arrayIndex, const QScriptValue &value,
00173 const PropertyFlags &flags = KeepExistingFlags);
00174
00175 QScriptValue property(const QScriptString &name,
00176 const ResolveFlags &mode = ResolvePrototype) const;
00177 void setProperty(const QScriptString &name, const QScriptValue &value,
00178 const PropertyFlags &flags = KeepExistingFlags);
00179
00180 QScriptValue::PropertyFlags propertyFlags(
00181 const QString &name, const ResolveFlags &mode = ResolvePrototype) const;
00182 QScriptValue::PropertyFlags propertyFlags(
00183 const QScriptString &name, const ResolveFlags &mode = ResolvePrototype) const;
00184
00185 QScriptValue call(const QScriptValue &thisObject = QScriptValue(),
00186 const QScriptValueList &args = QScriptValueList());
00187 QScriptValue call(const QScriptValue &thisObject,
00188 const QScriptValue &arguments);
00189 QScriptValue construct(const QScriptValueList &args = QScriptValueList());
00190 QScriptValue construct(const QScriptValue &arguments);
00191
00192 QScriptValue data() const;
00193 void setData(const QScriptValue &data);
00194
00195 QScriptClass *scriptClass() const;
00196 void setScriptClass(QScriptClass *scriptClass);
00197
00198 qint64 objectId() const;
00199
00200 private:
00201
00202 QScriptValue(void *);
00203
00204 QScriptValue(QScriptEngine *, void *);
00205
00206 QScriptValue(QScriptValuePrivate*);
00207
00208 private:
00209 QExplicitlySharedDataPointer<QScriptValuePrivate> d_ptr;
00210
00211 Q_DECLARE_PRIVATE(QScriptValue)
00212
00213 friend class QScriptEnginePrivate;
00214 };
00215
00216 Q_DECLARE_OPERATORS_FOR_FLAGS(QScriptValue::ResolveFlags)
00217 Q_DECLARE_OPERATORS_FOR_FLAGS(QScriptValue::PropertyFlags)
00218
00219 QT_END_NAMESPACE
00220
00221 QT_END_HEADER
00222
00223 #endif