src/script/bridge/qscriptdeclarativeclass_p.h
changeset 30 5dc02b23752f
parent 18 2f34d5167611
child 33 3e2da88830cd
equal deleted inserted replaced
29:b72c6db6890b 30:5dc02b23752f
    45 class PersistentIdentifierPrivate;
    45 class PersistentIdentifierPrivate;
    46 class QScriptContext;
    46 class QScriptContext;
    47 class Q_SCRIPT_EXPORT QScriptDeclarativeClass
    47 class Q_SCRIPT_EXPORT QScriptDeclarativeClass
    48 {
    48 {
    49 public:
    49 public:
       
    50 #define QT_HAVE_QSCRIPTDECLARATIVECLASS_VALUE
       
    51     class Q_SCRIPT_EXPORT Value
       
    52     {
       
    53     public:
       
    54         Value();
       
    55         Value(const Value &);
       
    56 
       
    57         Value(QScriptContext *, int);
       
    58         Value(QScriptContext *, uint);
       
    59         Value(QScriptContext *, bool);
       
    60         Value(QScriptContext *, double);
       
    61         Value(QScriptContext *, float);
       
    62         Value(QScriptContext *, const QString &);
       
    63         Value(QScriptContext *, const QScriptValue &);
       
    64         Value(QScriptEngine *, int);
       
    65         Value(QScriptEngine *, uint);
       
    66         Value(QScriptEngine *, bool);
       
    67         Value(QScriptEngine *, double);
       
    68         Value(QScriptEngine *, float);
       
    69         Value(QScriptEngine *, const QString &);
       
    70         Value(QScriptEngine *, const QScriptValue &);
       
    71         ~Value();
       
    72 
       
    73         QScriptValue toScriptValue(QScriptEngine *) const;
       
    74     private:
       
    75         char dummy[8];
       
    76     };
       
    77 
    50     typedef void* Identifier;
    78     typedef void* Identifier;
    51 
    79 
    52     struct Object { virtual ~Object() {} };
    80     struct Object { virtual ~Object() {} };
    53 
    81 
    54     static QScriptValue newObject(QScriptEngine *, QScriptDeclarativeClass *, Object *);
    82     static QScriptValue newObject(QScriptEngine *, QScriptDeclarativeClass *, Object *);
       
    83     static Value newObjectValue(QScriptEngine *, QScriptDeclarativeClass *, Object *);
    55     static QScriptDeclarativeClass *scriptClass(const QScriptValue &);
    84     static QScriptDeclarativeClass *scriptClass(const QScriptValue &);
    56     static Object *object(const QScriptValue &);
    85     static Object *object(const QScriptValue &);
    57 
    86 
    58     static QScriptValue function(const QScriptValue &, const Identifier &);
    87     static QScriptValue function(const QScriptValue &, const Identifier &);
    59     static QScriptValue property(const QScriptValue &, const Identifier &);
    88     static QScriptValue property(const QScriptValue &, const Identifier &);
       
    89     static Value functionValue(const QScriptValue &, const Identifier &);
       
    90     static Value propertyValue(const QScriptValue &, const Identifier &);
    60 
    91 
    61     static QScriptValue scopeChainValue(QScriptContext *, int index);
    92     static QScriptValue scopeChainValue(QScriptContext *, int index);
    62     static QScriptContext *pushCleanContext(QScriptEngine *);
    93     static QScriptContext *pushCleanContext(QScriptEngine *);
    63 
    94 
    64     class Q_SCRIPT_EXPORT PersistentIdentifier 
    95     class Q_SCRIPT_EXPORT PersistentIdentifier 
    71         PersistentIdentifier(const PersistentIdentifier &other);
   102         PersistentIdentifier(const PersistentIdentifier &other);
    72         PersistentIdentifier &operator=(const PersistentIdentifier &other);
   103         PersistentIdentifier &operator=(const PersistentIdentifier &other);
    73 
   104 
    74     private:
   105     private:
    75         friend class QScriptDeclarativeClass;
   106         friend class QScriptDeclarativeClass;
    76         PersistentIdentifier(bool) : identifier(0), d(0) {}
   107         PersistentIdentifier(QScriptEnginePrivate *e) : identifier(0), engine(e), d(0) {}
       
   108         QScriptEnginePrivate *engine;
    77         void *d;
   109         void *d;
    78     };
   110     };
    79 
   111 
    80     QScriptDeclarativeClass(QScriptEngine *engine);
   112     QScriptDeclarativeClass(QScriptEngine *engine);
    81     virtual ~QScriptDeclarativeClass();
   113     virtual ~QScriptDeclarativeClass();
    82 
   114 
    83     QScriptEngine *engine() const;
   115     QScriptEngine *engine() const;
       
   116 
       
   117     bool supportsCall() const;
       
   118     void setSupportsCall(bool);
    84 
   119 
    85     PersistentIdentifier createPersistentIdentifier(const QString &);
   120     PersistentIdentifier createPersistentIdentifier(const QString &);
    86     PersistentIdentifier createPersistentIdentifier(const Identifier &);
   121     PersistentIdentifier createPersistentIdentifier(const Identifier &);
    87 
   122 
    88     QString toString(const Identifier &);
   123     QString toString(const Identifier &);
    89     quint32 toArrayIndex(const Identifier &, bool *ok);
   124     quint32 toArrayIndex(const Identifier &, bool *ok);
    90 
   125 
    91     virtual QScriptClass::QueryFlags queryProperty(Object *, const Identifier &, 
   126     virtual QScriptClass::QueryFlags queryProperty(Object *, const Identifier &, 
    92                                                    QScriptClass::QueryFlags flags);
   127                                                    QScriptClass::QueryFlags flags);
    93 
   128 
    94     virtual QScriptValue property(Object *, const Identifier &);
   129     virtual Value property(Object *, const Identifier &);
    95     virtual void setProperty(Object *, const Identifier &name, const QScriptValue &);
   130     virtual void setProperty(Object *, const Identifier &name, const QScriptValue &);
    96     virtual QScriptValue::PropertyFlags propertyFlags(Object *, const Identifier &);
   131     virtual QScriptValue::PropertyFlags propertyFlags(Object *, const Identifier &);
       
   132     virtual Value call(Object *, QScriptContext *);
       
   133     virtual bool compare(Object *, Object *);
    97 
   134 
    98     virtual QStringList propertyNames(Object *);
   135     virtual QStringList propertyNames(Object *);
    99 
   136 
   100     virtual bool isQObject() const;
   137     virtual bool isQObject() const;
   101     virtual QObject *toQObject(Object *, bool *ok = 0);
   138     virtual QObject *toQObject(Object *, bool *ok = 0);