forked from qt-creator/qt-creator
Change-Id: I30773e8879086c1f85d331fabf9380e217b32dd7 Reviewed-on: http://codereview.qt.nokia.com/2745 Reviewed-by: Fawzi Mohamed <fawzi.mohamed@nokia.com>
199 lines
5.8 KiB
C++
199 lines
5.8 KiB
C++
/**************************************************************************
|
|
**
|
|
** This file is part of Qt Creator
|
|
**
|
|
** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
|
|
**
|
|
** Contact: Nokia Corporation (info@qt.nokia.com)
|
|
**
|
|
**
|
|
** GNU Lesser General Public License Usage
|
|
**
|
|
** 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.1, included in the file LGPL_EXCEPTION.txt in this package.
|
|
**
|
|
** Other Usage
|
|
**
|
|
** Alternatively, this file may be used in accordance with the terms and
|
|
** conditions contained in a signed written agreement between you and Nokia.
|
|
**
|
|
** If you have questions regarding the use of this file, please contact
|
|
** Nokia at info@qt.nokia.com.
|
|
**
|
|
**************************************************************************/
|
|
|
|
#ifndef QMLJS_VALUEOWNER_H
|
|
#define QMLJS_VALUEOWNER_H
|
|
|
|
#include "qmljs_global.h"
|
|
#include "qmljsinterpreter.h"
|
|
|
|
#include <QtCore/QList>
|
|
|
|
namespace QmlJS {
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// Forward declarations
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
class Value;
|
|
class NullValue;
|
|
class UndefinedValue;
|
|
class NumberValue;
|
|
class IntValue;
|
|
class RealValue;
|
|
class BooleanValue;
|
|
class StringValue;
|
|
class UrlValue;
|
|
class ObjectValue;
|
|
class FunctionValue;
|
|
class Reference;
|
|
class ColorValue;
|
|
class AnchorLineValue;
|
|
class Imports;
|
|
class TypeScope;
|
|
class JSImportScope;
|
|
class Function;
|
|
|
|
class QMLJS_EXPORT ValueOwner
|
|
{
|
|
Q_DISABLE_COPY(ValueOwner)
|
|
|
|
public:
|
|
ValueOwner();
|
|
~ValueOwner();
|
|
|
|
const NullValue *nullValue() const;
|
|
const UndefinedValue *undefinedValue() const;
|
|
const NumberValue *numberValue() const;
|
|
const RealValue *realValue() const;
|
|
const IntValue *intValue() const;
|
|
const BooleanValue *booleanValue() const;
|
|
const StringValue *stringValue() const;
|
|
const UrlValue *urlValue() const;
|
|
const ColorValue *colorValue() const;
|
|
const AnchorLineValue *anchorLineValue() const;
|
|
|
|
ObjectValue *newObject(const ObjectValue *prototype);
|
|
ObjectValue *newObject();
|
|
Function *newFunction();
|
|
const Value *newArray(); // ### remove me
|
|
|
|
// QML objects
|
|
const ObjectValue *qmlKeysObject();
|
|
const ObjectValue *qmlFontObject();
|
|
const ObjectValue *qmlPointObject();
|
|
const ObjectValue *qmlSizeObject();
|
|
const ObjectValue *qmlRectObject();
|
|
const ObjectValue *qmlVector3DObject();
|
|
|
|
const Value *defaultValueForBuiltinType(const QString &typeName) const;
|
|
|
|
// global object
|
|
ObjectValue *globalObject() const;
|
|
const ObjectValue *mathObject() const;
|
|
const ObjectValue *qtObject() const;
|
|
|
|
// prototypes
|
|
ObjectValue *objectPrototype() const;
|
|
ObjectValue *functionPrototype() const;
|
|
ObjectValue *numberPrototype() const;
|
|
ObjectValue *booleanPrototype() const;
|
|
ObjectValue *stringPrototype() const;
|
|
ObjectValue *arrayPrototype() const;
|
|
ObjectValue *datePrototype() const;
|
|
ObjectValue *regexpPrototype() const;
|
|
|
|
// ctors
|
|
const FunctionValue *objectCtor() const;
|
|
const FunctionValue *functionCtor() const;
|
|
const FunctionValue *arrayCtor() const;
|
|
const FunctionValue *stringCtor() const;
|
|
const FunctionValue *booleanCtor() const;
|
|
const FunctionValue *numberCtor() const;
|
|
const FunctionValue *dateCtor() const;
|
|
const FunctionValue *regexpCtor() const;
|
|
|
|
// operators
|
|
const Value *convertToBoolean(const Value *value);
|
|
const Value *convertToNumber(const Value *value);
|
|
const Value *convertToString(const Value *value);
|
|
const Value *convertToObject(const Value *value);
|
|
QString typeId(const Value *value);
|
|
|
|
// typing:
|
|
CppQmlTypes &cppQmlTypes()
|
|
{ return _cppQmlTypes; }
|
|
const CppQmlTypes &cppQmlTypes() const
|
|
{ return _cppQmlTypes; }
|
|
|
|
void registerValue(Value *value); // internal
|
|
|
|
private:
|
|
void initializePrototypes();
|
|
|
|
Function *addFunction(ObjectValue *object, const QString &name, const Value *result, int argumentCount = 0);
|
|
Function *addFunction(ObjectValue *object, const QString &name, int argumentCount = 0);
|
|
|
|
private:
|
|
ObjectValue *_objectPrototype;
|
|
ObjectValue *_functionPrototype;
|
|
ObjectValue *_numberPrototype;
|
|
ObjectValue *_booleanPrototype;
|
|
ObjectValue *_stringPrototype;
|
|
ObjectValue *_arrayPrototype;
|
|
ObjectValue *_datePrototype;
|
|
ObjectValue *_regexpPrototype;
|
|
|
|
Function *_objectCtor;
|
|
Function *_functionCtor;
|
|
Function *_arrayCtor;
|
|
Function *_stringCtor;
|
|
Function *_booleanCtor;
|
|
Function *_numberCtor;
|
|
Function *_dateCtor;
|
|
Function *_regexpCtor;
|
|
|
|
ObjectValue *_globalObject;
|
|
ObjectValue *_mathObject;
|
|
ObjectValue *_qtObject;
|
|
ObjectValue *_qmlKeysObject;
|
|
ObjectValue *_qmlFontObject;
|
|
ObjectValue *_qmlPointObject;
|
|
ObjectValue *_qmlSizeObject;
|
|
ObjectValue *_qmlRectObject;
|
|
ObjectValue *_qmlVector3DObject;
|
|
|
|
NullValue _nullValue;
|
|
UndefinedValue _undefinedValue;
|
|
NumberValue _numberValue;
|
|
RealValue _realValue;
|
|
IntValue _intValue;
|
|
BooleanValue _booleanValue;
|
|
StringValue _stringValue;
|
|
UrlValue _urlValue;
|
|
ColorValue _colorValue;
|
|
AnchorLineValue _anchorLineValue;
|
|
QList<Value *> _registeredValues;
|
|
|
|
ConvertToNumber _convertToNumber;
|
|
ConvertToString _convertToString;
|
|
ConvertToObject _convertToObject;
|
|
TypeId _typeId;
|
|
|
|
CppQmlTypes _cppQmlTypes;
|
|
|
|
QMutex _mutex;
|
|
};
|
|
|
|
} // namespace QmlJS
|
|
|
|
#endif // QMLJS_VALUEOWNER_H
|