⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qscriptengine_p.h

📁 奇趣公司比较新的qt/emd版本
💻 H
📖 第 1 页 / 共 2 页
字号:
{    return objectAllocator();}inline QScriptContext *QScriptEnginePrivate::currentContext() const{    return m_context;}inline QScriptContext *QScriptEnginePrivate::pushContext(){    QScriptContext *context = m_frameRepository.get();    QScriptContextPrivate::get(context)->init(m_context);    m_context = context;    return m_context;}inline void QScriptEnginePrivate::popContext(){    Q_ASSERT(m_context != 0);    QScriptContext *context = m_context;    m_context = context->parentContext();    if (m_context) {        // propagate the state        QScriptContextPrivate *p1 = QScriptContextPrivate::get(m_context);        QScriptContextPrivate *p2 = QScriptContextPrivate::get(context);        p1->m_result = p2->m_result;        p1->m_state = p2->m_state;        // only update errorLineNumber if there actually was an exception        if (p2->state() == QScriptContext::ExceptionState)            p1->errorLineNumber = p2->errorLineNumber;    }    m_frameRepository.release(context);}inline void QScriptEnginePrivate::maybeGC(){    if (objectAllocator.blocked())        return;    bool do_string_gc = ((m_stringRepository.size() - m_oldStringRepositorySize) > 256);    do_string_gc |= ((m_tempStringRepository.size() - m_oldTempStringRepositorySize) > 1024);    if (! do_string_gc && ! objectAllocator.poll())        return;    maybeGC_helper(do_string_gc);}inline void QScriptEnginePrivate::adjustBytesAllocated(int bytes){    objectAllocator.adjustBytesAllocated(bytes);}inline bool QScriptEnginePrivate::blockGC(bool block){    return objectAllocator.blockGC(block);}inline void QScriptEnginePrivate::markString(QScriptNameIdImpl *id, int /*generation*/){    id->used = true;}inline QScriptValueImpl QScriptEnginePrivate::createFunction(QScriptFunction *fun){    QScriptValueImpl v;    newFunction(&v, fun);    return v;}inline QScriptValueImpl QScriptEnginePrivate::newArray(const QScript::Array &value){    QScriptValueImpl v;    newArray(&v, value);    return v;}inline QScriptValueImpl QScriptEnginePrivate::newArray(uint length){    QScriptValueImpl v;    QScript::Array a;    a.resize(length);    newArray(&v, a);    return v;}inline QScriptClassInfo *QScriptEnginePrivate::registerClass(const QString &pname, QScript::Type type){    if (type == -1)        type = QScript::Type(QScript::ObjectBased | ++m_class_prev_id);    QScriptClassInfo *oc = new QScriptClassInfo();    m_allocated_classes.append(oc);    oc->m_engine = q_func();    oc->m_type = type;    oc->m_name = pname;    oc->m_data = 0;    m_classes[type] = oc;    return oc;}inline QScriptClassInfo *QScriptEnginePrivate::registerClass(const QString &name){    return registerClass(name, QScript::Type(-1));}inline QScriptValueImpl QScriptEnginePrivate::createFunction(QScriptInternalFunctionSignature fun,                                       int length, QScriptClassInfo *classInfo){    return createFunction(new QScript::C2Function(fun, length, classInfo));}inline void QScriptEnginePrivate::newFunction(QScriptValueImpl *o, QScriptFunction *function){    QScriptValueImpl proto;    if (functionConstructor)        proto = functionConstructor->publicPrototype;    else {        // creating the Function prototype object        Q_ASSERT(objectConstructor);        proto = objectConstructor->publicPrototype;    }    newObject(o, proto, m_class_function);    o->setObjectData(QExplicitlySharedDataPointer<QScriptObjectData>(function));}inline void QScriptEnginePrivate::newConstructor(QScriptValueImpl *ctor,                                          QScriptFunction *function,                                          QScriptValueImpl &proto){    newFunction(ctor, function);    ctor->setProperty(QLatin1String("prototype"), proto,                      QScriptValue::Undeletable                      | QScriptValue::ReadOnly                      | QScriptValue::SkipInEnumeration);    proto.setProperty(QLatin1String("constructor"), *ctor,                      QScriptValue::Undeletable                      | QScriptValue::SkipInEnumeration);}inline void QScriptEnginePrivate::newArguments(QScriptValueImpl *object,                                             const QScriptValueImpl &activation,                                             uint length,                                             const QScriptValueImpl &callee){    QScript::ArgumentsObjectData *data = new QScript::ArgumentsObjectData();    data->activation = activation;    data->length = length;    data->callee = callee;    newObject(object, m_class_arguments);    object->setObjectData(QExplicitlySharedDataPointer<QScriptObjectData>(data));}inline QScriptFunction *QScriptEnginePrivate::convertToNativeFunction(const QScriptValueImpl &object){    if (object.isFunction())        return static_cast<QScriptFunction*> (object.objectData().data());    return 0;}inline QScriptValueImpl QScriptEnginePrivate::toObject(const QScriptValueImpl &value){    if (value.isObject() || !value.isValid())        return value;    return toObject_helper(value);}inline QScriptValueImpl QScriptEnginePrivate::toPrimitive(const QScriptValueImpl &object,                                                          QScriptValueImpl::TypeHint hint){    Q_ASSERT(object.isValid());    if (! object.isObject())        return object;    return toPrimitive_helper(object, hint);}inline QDateTime QScriptEnginePrivate::toDateTime(const QScriptValueImpl &value) const{    return dateConstructor->toDateTime(value);}inline void QScriptEnginePrivate::newArray(QScriptValueImpl *object, const QScript::Array &value){    arrayConstructor->newArray(object, value);}inline void QScriptEnginePrivate::newObject(QScriptValueImpl *o, const QScriptValueImpl &proto,                      QScriptClassInfo *oc){    Q_ASSERT(o != 0);    QScriptObject *od = allocObject();    od->reset();    if (proto.isValid())        od->m_prototype = proto;    else {        Q_ASSERT(objectConstructor);        od->m_prototype = objectConstructor->publicPrototype;    }    o->m_class = (oc ? oc : m_class_object);    o->m_object_value = od;}inline void QScriptEnginePrivate::newObject(QScriptValueImpl *o, QScriptClassInfo *oc){    newObject(o, objectConstructor->publicPrototype, oc);}inline QScriptValueImpl QScriptEnginePrivate::newObject(){    QScriptValueImpl v;    newObject(&v);    return v;}inline QScriptValueImpl QScriptEnginePrivate::newVariant(const QVariant &value){    Q_ASSERT(variantConstructor != 0);    QScriptValueImpl v;    variantConstructor->newVariant(&v, value);    QScriptValueImpl proto = defaultPrototype(value.userType());    if (proto.isValid())        v.setPrototype(proto);    return v;}#ifndef QT_NO_QOBJECTinline QScriptValueImpl QScriptEnginePrivate::newQObject(QObject *object,                                                         QScriptEngine::ValueOwnership ownership,                                                         const QScriptEngine::QObjectWrapOptions &options){    if (!object)        return nullValue();    Q_ASSERT(qobjectConstructor != 0);    QScriptValueImpl v;    qobjectConstructor->newQObject(&v, object, ownership, options);    // see if we have a default prototype    QByteArray typeString = object->metaObject()->className();    typeString.append('*');    int typeId = QMetaType::type(typeString);    if (typeId != 0) {        QScriptValueImpl proto = defaultPrototype(typeId);        if (proto.isValid())            v.setPrototype(proto);    }    return v;}#ifndef Q_SCRIPT_NO_QMETAOBJECT_CACHEinline QScriptMetaObject *QScriptEnginePrivate::cachedMetaObject(const QMetaObject *meta){    QScriptMetaObject *value = m_cachedMetaObjects.value(meta);    if (!value) {        value = new QScriptMetaObject;        m_cachedMetaObjects.insert(meta, value);    }    return value;}#endif#endif // !QT_NO_QOBJECTinline QScriptNameIdImpl *QScriptEnginePrivate::nameId(const QString &str, bool persistent){    QScriptNameIdImpl *entry = toStringEntry(str);    if (! entry)        entry = insertStringEntry(str);    Q_ASSERT(entry->unique);    if (persistent)        entry->persistent = true;    return entry;}inline QScriptNameIdImpl *QScriptEnginePrivate::intern(const QChar *u, int s){    QString tmp(u, s);    return nameId(tmp, /*persistent=*/ true);}inline QScriptValueImpl QScriptEnginePrivate::valueFromVariant(const QVariant &v){    QScriptValueImpl result = create(v.userType(), v.data());    if (!result.isValid())        result = newVariant(v);    return result;}inline QScriptValueImpl QScriptEnginePrivate::undefinedValue(){    QScriptValueImpl v;    newUndefined(&v);    return v;}inline QScriptValueImpl QScriptEnginePrivate::nullValue(){    QScriptValueImpl v;    newNull(&v);    return v;}inline QScriptValueImpl QScriptEnginePrivate::defaultPrototype(int metaTypeId) const{    QScriptCustomTypeInfo info = m_customTypes.value(metaTypeId);    return info.prototype;}inline void QScriptEnginePrivate::setDefaultPrototype(int metaTypeId, const QScriptValueImpl &prototype){    QScriptCustomTypeInfo info = m_customTypes.value(metaTypeId);    info.prototype = prototype;    m_customTypes.insert(metaTypeId, info);}inline uint _q_scriptHash(const QString &key){    const QChar *p = key.unicode();    int n = qMin(key.size(), 128);    uint h = key.size();    uint g;    while (n--) {        h = (h << 4) + (*p++).unicode();        if ((g = (h & 0xf0000000)) != 0)            h ^= g >> 23;        h &= ~g;    }    return h;}inline QScriptNameIdImpl *QScriptEnginePrivate::toStringEntry(const QString &s){    uint h = _q_scriptHash(s) % m_string_hash_size;    for (QScriptNameIdImpl *entry = m_string_hash_base[h]; entry && entry->h == h; entry = entry->next) {        if (entry->s == s)            return entry;    }    return 0;}inline bool QScriptEnginePrivate::lessThan(const QScriptValueImpl &lhs, const QScriptValueImpl &rhs) const{    return QScriptContextPrivate::get(currentContext())->lt_cmp(lhs, rhs);}inline bool QScriptEnginePrivate::equals(const QScriptValueImpl &lhs, const QScriptValueImpl &rhs) const{    return QScriptContextPrivate::get(currentContext())->eq_cmp(lhs, rhs);}inline bool QScriptEnginePrivate::strictlyEquals(const QScriptValueImpl &lhs, const QScriptValueImpl &rhs) const{    return QScriptContextPrivate::strict_eq_cmp(lhs, rhs);}inline void QScriptEnginePrivate::unregisterValue(QScriptValuePrivate *p){    QScriptValueImpl &v = p->value;    Q_ASSERT(v.isValid());    if (v.isString()) {        QScriptNameIdImpl *id = v.stringValue();        m_stringHandles.remove(id);    } else if (v.isObject()) {        QScriptObject *instance = v.objectValue();        m_objectHandles.remove(instance);    } else {        int i = m_otherHandles.indexOf(p);        Q_ASSERT(i != -1);        m_otherHandles.remove(i);    }    m_handleRepository.release(p);}inline QScriptValueImpl QScriptEnginePrivate::globalObject() const{    return m_globalObject;}inline bool QScriptEnginePrivate::hasUncaughtException() const{    return (currentContext()->state() == QScriptContext::ExceptionState);}inline QScriptValueImpl QScriptEnginePrivate::uncaughtException() const{    if (!hasUncaughtException())        return QScriptValueImpl();    return QScriptContextPrivate::get(currentContext())->returnValue();}inline void QScriptEnginePrivate::maybeProcessEvents(){    if (m_processEventsInterval > 0 && ++m_processEventIncr > 512) {        m_processEventIncr = 0;        processEvents();    }}#endif // QT_NO_SCRIPT#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -