/*!
  \since 4.4

  Sets the internal \a data of this QScriptValue object. You can use
  this function to set object-specific data that won't be directly
  accessible to scripts, but may be retrieved in C++ using the data()
  function.
*/
void QScriptValue::setData(const QScriptValue &data)
{
    if (!isObject())
        return;
    QScriptValueImpl self = QScriptValuePrivate::valueOf(*this);
    QScriptValueImpl data_p = QScriptValuePrivate::valueOf(data);
    self.setInternalValue(data_p);
}
Exemple #2
0
/*!
  \internal
  \since 4.5

  Adds the given \a object to the front of this context's scope chain.

  If \a object is not an object, this function does nothing.
*/
void QScriptContext::pushScope(const QScriptValue &object)
{
    Q_D(QScriptContext);
    if (!object.isObject()) {
        return;
    } else if (object.engine() != engine()) {
        qWarning("QScriptContext::pushScope() failed: "
                 "cannot push an object created in "
                 "a different engine");
        return;
    }
    QScriptEnginePrivate *eng_p = QScriptEnginePrivate::get(engine());
    if (!d->m_scopeChain.isValid()) {
        d->m_scopeChain = eng_p->toImpl(object);
    } else {
        QScriptValueImpl withObject;
        eng_p->newObject(&withObject, eng_p->toImpl(object), eng_p->m_class_with);
        withObject.m_object_value->m_scope = d->m_scopeChain;
        withObject.setInternalValue(1); // to differentiate from with-statement objects
        d->m_scopeChain = withObject;
    }
}