1 /* 2 Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies) 3 4 This library is free software; you can redistribute it and/or 5 modify it under the terms of the GNU Library General Public 6 License as published by the Free Software Foundation; either 7 version 2 of the License, or (at your option) any later version. 8 9 This library is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 Library General Public License for more details. 13 14 You should have received a copy of the GNU Library General Public License 15 along with this library; see the file COPYING.LIB. If not, write to 16 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 17 Boston, MA 02110-1301, USA. 18 */ 19 20 #ifndef qscriptvalue_h 21 #define qscriptvalue_h 22 23 #include "qscriptstring.h" 24 #include <QtCore/qlist.h> 25 #include <QtCore/qshareddata.h> 26 27 class QScriptEngine; 28 class QScriptValuePrivate; 29 class QDateTime; 30 31 class QScriptValue; 32 typedef QList<QScriptValue> QScriptValueList; 33 34 typedef double qsreal; 35 36 class QScriptValue { 37 public: 38 enum ResolveFlag { 39 ResolveLocal = 0x00, 40 ResolvePrototype = 0x01, 41 ResolveScope = 0x02, 42 ResolveFull = ResolvePrototype | ResolveScope 43 }; 44 Q_DECLARE_FLAGS(ResolveFlags, ResolveFlag) 45 46 enum PropertyFlag { 47 ReadOnly = 0x00000001, 48 Undeletable = 0x00000002, 49 SkipInEnumeration = 0x00000004, 50 PropertyGetter = 0x00000008, 51 PropertySetter = 0x00000010, 52 QObjectMember = 0x00000020, 53 KeepExistingFlags = 0x00000800, 54 UserRange = 0xff000000 // Users may use these as they see fit. 55 }; 56 Q_DECLARE_FLAGS(PropertyFlags, PropertyFlag) 57 58 enum SpecialValue { 59 NullValue, 60 UndefinedValue 61 }; 62 63 QScriptValue(); 64 QScriptValue(bool value); 65 QScriptValue(int value); 66 QScriptValue(uint value); 67 QScriptValue(qsreal value); 68 QScriptValue(const QString& value); 69 QScriptValue(const char* value); 70 QScriptValue(SpecialValue value); 71 QScriptValue(const QScriptValue& other); 72 73 QScriptValue(QScriptEngine* engine, bool value); 74 QScriptValue(QScriptEngine* engine, int value); 75 QScriptValue(QScriptEngine* engine, uint value); 76 QScriptValue(QScriptEngine* engine, qsreal value); 77 QScriptValue(QScriptEngine* engine, const QString& value); 78 QScriptValue(QScriptEngine* engine, const char* value); 79 QScriptValue(QScriptEngine* engine, SpecialValue value); 80 81 ~QScriptValue(); 82 83 QScriptValue& operator=(const QScriptValue& other); 84 85 QScriptValue prototype() const; 86 void setPrototype(const QScriptValue& prototype); 87 88 bool equals(const QScriptValue& other) const; 89 bool strictlyEquals(const QScriptValue& other) const; 90 bool instanceOf(const QScriptValue& other) const; 91 92 QScriptValue property(const QString& name, const ResolveFlags& mode = ResolvePrototype) const; 93 QScriptValue property(const QScriptString& name, const ResolveFlags& mode = ResolvePrototype) const; 94 QScriptValue property(quint32 arrayIndex, const ResolveFlags& mode = ResolvePrototype) const; 95 96 void setProperty(const QString& name, const QScriptValue& value, const PropertyFlags& flags = KeepExistingFlags); 97 void setProperty(quint32 arrayIndex, const QScriptValue& value, const PropertyFlags& flags = KeepExistingFlags); 98 void setProperty(const QScriptString& name, const QScriptValue& value, const PropertyFlags& flags = KeepExistingFlags); 99 100 PropertyFlags propertyFlags(const QString& name, const ResolveFlags& mode = ResolvePrototype) const; 101 PropertyFlags propertyFlags(const QScriptString& name, const ResolveFlags& mode = ResolvePrototype) const; 102 103 QScriptEngine* engine() const; 104 105 bool isValid() const; 106 bool isBool() const; 107 bool isBoolean() const; 108 bool isNumber() const; 109 bool isFunction() const; 110 bool isNull() const; 111 bool isString() const; 112 bool isUndefined() const; 113 bool isObject() const; 114 bool isError() const; 115 bool isArray() const; 116 bool isDate() const; 117 118 QString toString() const; 119 qsreal toNumber() const; 120 bool toBool() const; 121 bool toBoolean() const; 122 qsreal toInteger() const; 123 qint32 toInt32() const; 124 quint32 toUInt32() const; 125 quint16 toUInt16() const; 126 QScriptValue toObject() const; 127 QDateTime toDateTime() const; 128 129 QScriptValue call(const QScriptValue& thisObject = QScriptValue(), 130 const QScriptValueList& args = QScriptValueList()); 131 private: 132 QScriptValue(void*); 133 QScriptValue(QScriptValuePrivate*); 134 135 QExplicitlySharedDataPointer<QScriptValuePrivate> d_ptr; 136 137 friend class QScriptValuePrivate; 138 }; 139 140 #endif // qscriptvalue_h 141