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

📄 qscriptcontext_p.h

📁 奇趣公司比较新的qt/emd版本
💻 H
字号:
/******************************************************************************** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved.**** This file is part of the QtScript module of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://trolltech.com/products/qt/licenses/licensing/opensource/**** If you are unsure which license is appropriate for your use, please** review the following information:** http://trolltech.com/products/qt/licenses/licensing/licensingoverview** or contact the sales department at sales@trolltech.com.**** In addition, as a special exception, Trolltech gives you certain** additional rights. These rights are described in the Trolltech GPL** Exception version 1.0, which can be found at** http://www.trolltech.com/products/qt/gplexception/ and in the file** GPL_EXCEPTION.txt in this package.**** In addition, as a special exception, Trolltech, as the sole copyright** holder for Qt Designer, grants users of the Qt/Eclipse Integration** plug-in the right for the Qt/Eclipse Integration to link to** functionality provided by Qt Designer and its related libraries.**** Trolltech reserves all rights not expressly granted herein.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#ifndef QSCRIPTCONTEXT_P_H#define QSCRIPTCONTEXT_P_H#include "qscriptcontextfwd_p.h"#ifndef QT_NO_SCRIPT#include "qscriptenginefwd_p.h"#include "qscriptnameid_p.h"#include <QtCore/qnumeric.h>////  W A R N I N G//  -------------//// This file is not part of the Qt API.  It exists purely as an// implementation detail.  This header file may change from version to// version without notice, or even be removed.//// We mean it.//inline QScriptContextPrivate::QScriptContextPrivate(){}inline QScriptContextPrivate *QScriptContextPrivate::get(QScriptContext *q){    if (q)        return q->d_func();    return 0;}inline const QScriptContextPrivate *QScriptContextPrivate::get(const QScriptContext *q){    if (q)        return q->d_func();    return 0;}inline QScriptContext *QScriptContextPrivate::create(){    return new QScriptContext;}inline QScriptEngine *QScriptContextPrivate::engine() const{    return m_activation.engine();}inline QScriptEnginePrivate *QScriptContextPrivate::enginePrivate() const{    return QScriptEnginePrivate::get(engine());}inline QScriptContext *QScriptContextPrivate::parentContext() const{    return previous;}inline void QScriptContextPrivate::init(QScriptContext *parent){    m_state = QScriptContext::NormalState;    previous = parent;    args = 0;    argc = 0;    m_code = 0;    iPtr = firstInstruction = lastInstruction = 0;    stackPtr = tempStack = (parent != 0) ? parent->d_func()->stackPtr : 0;    m_activation.invalidate();    m_thisObject.invalidate();    m_result.invalidate();    m_scopeChain.invalidate();    m_callee.invalidate();    m_arguments.invalidate();    currentLine = 0;    currentColumn = 0;    errorLineNumber = 0;    m_calledAsConstructor = false;}inline QScriptValueImpl QScriptContextPrivate::argument(int index) const{    if (index >= argc)        return QScriptEnginePrivate::get(engine())->undefinedValue();    Q_ASSERT(args != 0);    return args[index];}inline int QScriptContextPrivate::argumentCount() const{    return argc;}inline void QScriptContextPrivate::throwException(){    m_state = QScriptContext::ExceptionState;}inline bool QScriptContextPrivate::hasUncaughtException() const{    return m_state == QScriptContext::ExceptionState;}inline void QScriptContextPrivate::recover(){    m_state = QScriptContext::NormalState;    errorLineNumber = 0;}inline bool QScriptContextPrivate::isNumerical(const QScriptValueImpl &v) const{    switch (v.type()) {    case QScript::BooleanType:    case QScript::IntegerType:    case QScript::NumberType:        return true;    default:        return false;    }}inline bool QScriptContextPrivate::eq_cmp(const QScriptValueImpl &lhs, const QScriptValueImpl &rhs){    if (lhs.type() == rhs.type()) {        switch (lhs.type()) {        case QScript::UndefinedType:        case QScript::NullType:            return true;        case QScript::NumberType:            return lhs.m_number_value == rhs.m_number_value;        case QScript::IntegerType:            return lhs.m_int_value == rhs.m_int_value;        case QScript::BooleanType:            return lhs.m_bool_value == rhs.m_bool_value;        case QScript::StringType:            if (lhs.m_string_value->unique && rhs.m_string_value->unique)                return lhs.m_string_value == rhs.m_string_value;            return lhs.m_string_value->s == rhs.m_string_value->s;        case QScript::VariantType:            return lhs.m_object_value == rhs.m_object_value || lhs.toVariant() == rhs.toVariant();        default:            if (lhs.isObject())                return lhs.m_object_value == rhs.m_object_value;            break;        }    }    return eq_cmp_helper(lhs, rhs);}inline bool QScriptContextPrivate::strict_eq_cmp(const QScriptValueImpl &lhs, const QScriptValueImpl &rhs){    if (lhs.type() != rhs.type())        return false;    switch (lhs.type()) {    case QScript::UndefinedType:    case QScript::NullType:        return true;    case QScript::NumberType:        if (qIsNaN(lhs.m_number_value) || qIsNaN(rhs.m_number_value))            return false;        return lhs.m_number_value == rhs.m_number_value;    case QScript::IntegerType:        return lhs.m_int_value == rhs.m_int_value;    case QScript::BooleanType:        return lhs.m_bool_value == rhs.m_bool_value;    case QScript::StringType:        if (lhs.m_string_value->unique && rhs.m_string_value->unique)            return lhs.m_string_value == rhs.m_string_value;        return lhs.m_string_value->s == rhs.m_string_value->s;    case QScript::VariantType:        return lhs.m_object_value == rhs.m_object_value || lhs.toVariant() == rhs.toVariant();    default:        if (lhs.isObject())            return lhs.m_object_value == rhs.m_object_value;        break;    }    return false;}inline QScriptValueImpl QScriptContextPrivate::throwTypeError(const QString &text){    return throwError(QScriptContext::TypeError, text);}inline QScriptValueImpl QScriptContextPrivate::throwSyntaxError(const QString &text){    return throwError(QScriptContext::SyntaxError, text);}inline QScriptValueImpl QScriptContextPrivate::thisObject() const{    return m_thisObject;}inline void QScriptContextPrivate::setThisObject(const QScriptValueImpl &object){    m_thisObject = object;}inline QScriptValueImpl QScriptContextPrivate::callee() const{    return m_callee;}inline bool QScriptContextPrivate::isCalledAsConstructor() const{    return m_calledAsConstructor;}inline QScriptValueImpl QScriptContextPrivate::returnValue() const{    return m_result;}inline void QScriptContextPrivate::setReturnValue(const QScriptValueImpl &value){    m_result = value;}inline QScriptValueImpl QScriptContextPrivate::activationObject() const{    return m_activation;}inline void QScriptContextPrivate::setActivationObject(const QScriptValueImpl &activation){    m_activation = activation;}inline const QScriptInstruction *QScriptContextPrivate::instructionPointer(){    return iPtr;}inline void QScriptContextPrivate::setInstructionPointer(const QScriptInstruction *instructionPointer){    iPtr = instructionPointer;}inline const QScriptValueImpl *QScriptContextPrivate::baseStackPointer() const{    return tempStack;}inline const QScriptValueImpl *QScriptContextPrivate::currentStackPointer() const{    return stackPtr;}inline QScriptContext::ExecutionState QScriptContextPrivate::state() const{    return m_state;}#endif // QT_NO_SCRIPT#endif

⌨️ 快捷键说明

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