/*
Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies)
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef qscriptvalue_h
#define qscriptvalue_h
#include "qscriptstring.h"
#include <QtCore/qlist.h>
#include <QtCore/qshareddata.h>
class QScriptEngine;
class QScriptValuePrivate;
class QDateTime;
class QScriptValue;
typedef QList<QScriptValue> QScriptValueList;
typedef double qsreal;
class 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
};
QScriptValue();
QScriptValue(bool value);
QScriptValue(int value);
QScriptValue(uint value);
QScriptValue(qsreal value);
QScriptValue(const QString& value);
QScriptValue(const char* value);
QScriptValue(SpecialValue value);
QScriptValue(const QScriptValue& other);
QScriptValue(QScriptEngine* engine, bool value);
QScriptValue(QScriptEngine* engine, int value);
QScriptValue(QScriptEngine* engine, uint value);
QScriptValue(QScriptEngine* engine, qsreal value);
QScriptValue(QScriptEngine* engine, const QString& value);
QScriptValue(QScriptEngine* engine, const char* value);
QScriptValue(QScriptEngine* engine, SpecialValue value);
~QScriptValue();
QScriptValue& operator=(const QScriptValue& other);
QScriptValue prototype() const;
void setPrototype(const QScriptValue& prototype);
bool equals(const QScriptValue& other) const;
bool strictlyEquals(const QScriptValue& other) const;
bool instanceOf(const QScriptValue& other) const;
QScriptValue property(const QString& name, const ResolveFlags& mode = ResolvePrototype) const;
QScriptValue property(const QScriptString& name, const ResolveFlags& mode = ResolvePrototype) const;
QScriptValue property(quint32 arrayIndex, const ResolveFlags& mode = ResolvePrototype) const;
void setProperty(const QString& name, const QScriptValue& value, const PropertyFlags& flags = KeepExistingFlags);
void setProperty(quint32 arrayIndex, const QScriptValue& value, const PropertyFlags& flags = KeepExistingFlags);
void setProperty(const QScriptString& name, const QScriptValue& value, const PropertyFlags& flags = KeepExistingFlags);
PropertyFlags propertyFlags(const QString& name, const ResolveFlags& mode = ResolvePrototype) const;
PropertyFlags propertyFlags(const QScriptString& name, const ResolveFlags& mode = ResolvePrototype) const;
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 isObject() const;
bool isError() const;
bool isArray() const;
bool isDate() 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;
QScriptValue toObject() const;
QDateTime toDateTime() const;
QScriptValue call(const QScriptValue& thisObject = QScriptValue(),
const QScriptValueList& args = QScriptValueList());
private:
QScriptValue(void*);
QScriptValue(QScriptValuePrivate*);
QExplicitlySharedDataPointer<QScriptValuePrivate> d_ptr;
friend class QScriptValuePrivate;
};
#endif // qscriptvalue_h