forked from qt-creator/qt-creator
QmlJS: Rename Interpreter::Engine -> ValueOwner
Also move to a separate file. Change-Id: I05910e8cf04a533b5d09a1c16e612e3b99b1d606 Reviewed-on: http://codereview.qt.nokia.com/1039 Reviewed-by: Fawzi Mohamed <fawzi.mohamed@nokia.com>
This commit is contained in:
200
src/libs/qmljs/qmljsvalueowner.h
Normal file
200
src/libs/qmljs/qmljsvalueowner.h
Normal file
@@ -0,0 +1,200 @@
|
||||
/**************************************************************************
|
||||
**
|
||||
** 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 {
|
||||
namespace Interpreter {
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// 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();
|
||||
|
||||
void addFunction(ObjectValue *object, const QString &name, const Value *result, int argumentCount);
|
||||
void addFunction(ObjectValue *object, const QString &name, int argumentCount);
|
||||
|
||||
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 Interpreter
|
||||
} // namespace QmlJS
|
||||
|
||||
#endif // QMLJS_VALUEOWNER_H
|
||||
Reference in New Issue
Block a user