Remove "All rights reserved" line from license headers.
[profile/ivi/qtdeclarative.git] / src / declarative / qml / qdeclarativeproperty_p.h
index efebf0c..d7d8827 100644 (file)
@@ -1,8 +1,7 @@
 /****************************************************************************
 **
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
 **
 ** This file is part of the QtDeclarative module of the Qt Toolkit.
 **
@@ -35,6 +34,7 @@
 **
 **
 **
+**
 ** $QT_END_LICENSE$
 **
 ****************************************************************************/
@@ -69,22 +69,25 @@ class QDeclarativeJavaScriptExpression;
 class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativePropertyPrivate : public QDeclarativeRefCount
 {
 public:
-    enum WriteFlag { BypassInterceptor = 0x01, DontRemoveBinding = 0x02, RemoveBindingOnAliasWrite = 0x04 };
+    enum WriteFlag {
+        BypassInterceptor = 0x01,
+        DontRemoveBinding = 0x02,
+        RemoveBindingOnAliasWrite = 0x04
+    };
     Q_DECLARE_FLAGS(WriteFlags, WriteFlag)
 
-    QDeclarativePropertyPrivate()
-        : context(0), engine(0), object(0), isNameCached(false) {}
-
     QDeclarativeContextData *context;
     QDeclarativeEngine *engine;
     QDeclarativeGuard<QObject> object;
 
+    QDeclarativePropertyData core;
+
     bool isNameCached:1;
-    QDeclarativePropertyCache::Data core;
     QString nameCache;
 
-    // Describes the "virtual" value-type sub-property.  
-    QDeclarativePropertyCache::ValueTypeData valueType;
+    QDeclarativePropertyPrivate();
+
+    inline QDeclarativeContextData *effectiveContext() const;
 
     void initProperty(QObject *obj, const QString &name);
     void initDefault(QObject *obj);
@@ -100,28 +103,35 @@ public:
     static const QMetaObject *rawMetaObjectForType(QDeclarativeEnginePrivate *, int);
     static bool writeEnumProperty(const QMetaProperty &prop, int idx, QObject *object, 
                                   const QVariant &value, int flags);
-    static bool write(QObject *, const QDeclarativePropertyCache::Data &, const QVariant &, 
+    static bool writeValueProperty(QObject *, QDeclarativeEngine *,
+                                   const QDeclarativePropertyData &,
+                                   const QVariant &, QDeclarativeContextData *, 
+                                   WriteFlags flags = 0);
+    static bool write(QObject *, const QDeclarativePropertyData &, const QVariant &,
                       QDeclarativeContextData *, WriteFlags flags = 0);
     static void findAliasTarget(QObject *, int, QObject **, int *);
-    static QDeclarativeAbstractBinding *setBinding(QObject *, int coreIndex, int valueTypeIndex /* -1 */,
+    static QDeclarativeAbstractBinding *setBinding(QObject *, int coreIndex,
+                                                   int valueTypeIndex /* -1 */,
                                                    QDeclarativeAbstractBinding *,
                                                    WriteFlags flags = DontRemoveBinding);
-    static QDeclarativeAbstractBinding *setBindingNoEnable(QObject *, int coreIndex, int valueTypeIndex /* -1 */,
+    static QDeclarativeAbstractBinding *setBindingNoEnable(QObject *, int coreIndex,
+                                                           int valueTypeIndex /* -1 */,
                                                            QDeclarativeAbstractBinding *);
-    static QDeclarativeAbstractBinding *binding(QObject *, int coreIndex, int valueTypeIndex /* -1 */);
-
-    static QByteArray saveValueType(const QMetaObject *, int, 
-                                    const QMetaObject *, int);
-    static QByteArray saveProperty(const QMetaObject *, int);
-
-    static QDeclarativeProperty restore(const QByteArray &, QObject *, QDeclarativeContextData *);
-    static QDeclarativeProperty restore(const QDeclarativePropertyCache::Data &,
-                                        const QDeclarativePropertyCache::ValueTypeData &,
-                                        QObject *,
+    static QDeclarativeAbstractBinding *binding(QObject *, int coreIndex,
+                                                int valueTypeIndex /* -1 */);
+
+    static QDeclarativePropertyData saveValueType(const QMetaObject *, int,
+                                                  const QMetaObject *, int,
+                                                  QDeclarativeEngine *);
+    static QDeclarativeProperty restore(QObject *,
+                                        const QDeclarativePropertyData &,
                                         QDeclarativeContextData *);
 
     static bool equal(const QMetaObject *, const QMetaObject *);
     static bool canConvert(const QMetaObject *from, const QMetaObject *to);
+    static inline QDeclarativePropertyPrivate *get(const QDeclarativeProperty &p) {
+        return p.d;
+    }
 
     // "Public" (to QML) methods
     static QDeclarativeAbstractBinding *binding(const QDeclarativeProperty &that);
@@ -136,13 +146,19 @@ public:
                              QDeclarativeJavaScriptExpression *expression, 
                              v8::Handle<v8::Value> result, bool isUndefined,
                              WriteFlags flags);
+    static bool writeBinding(QObject *, const QDeclarativePropertyData &,
+                             QDeclarativeJavaScriptExpression *expression, 
+                             v8::Handle<v8::Value> result, bool isUndefined,
+                             WriteFlags flags);
     static int valueTypeCoreIndex(const QDeclarativeProperty &that);
     static int bindingIndex(const QDeclarativeProperty &that);
+    static int bindingIndex(const QDeclarativePropertyData &that);
     static QMetaMethod findSignalByName(const QMetaObject *mo, const QByteArray &);
     static bool connect(const QObject *sender, int signal_index,
                         const QObject *receiver, int method_index,
                         int type = 0, int *types = 0);
     static const QMetaObject *metaObjectForProperty(const QMetaObject *, int);
+    static void flushSignal(const QObject *sender, int signal_index);
 };
 
 Q_DECLARE_OPERATORS_FOR_FLAGS(QDeclarativePropertyPrivate::WriteFlags)