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

📄 qscriptcontext.cpp

📁 奇趣公司比较新的qt/emd版本
💻 CPP
字号:
/******************************************************************************** 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.******************************************************************************/#include "qscriptcontext.h"#ifndef QT_NO_SCRIPT#include "qscriptengine_p.h"#include "qscriptvalueimpl_p.h"#include "qscriptcontext_p.h"#include "qscriptmember_p.h"#include "qscriptobject_p.h"/*!  \since 4.3  \class QScriptContext  \brief The QScriptContext class represents a Qt Script function invocation.  \ingroup script  \mainclass  A QScriptContext provides access to the `this' object and arguments  passed to a script function. You typically want to access this  information when you're writing a native (C++) function (see  QScriptEngine::newFunction()) that will be called from script  code. For example, when the script code  \code  foo(20.5, "hello", new Object())  \endcode  is evaluated, a QScriptContext will be created, and the context will  carry the arguments as QScriptValues; in this particular case, the  arguments will be one QScriptValue containing the number 20.5, a second  QScriptValue containing the string \c{"hello"}, and a third QScriptValue  containing a Qt Script object.  Use argumentCount() to get the number of arguments passed to the  function, and argument() to get an argument at a certain index.  Use thisObject() to get the `this' object associated with the function call,  and setThisObject() to set the `this' object.  Use isCalledAsConstructor() to determine if the function was called as a  constructor (e.g. \c{"new foo()"} (as constructor) or just \c{"foo()"}).  Use throwValue() or throwError() to throw an exception.  Use callee() to obtain the QScriptValue that represents the function being  called.  Use parentContext() to get a pointer to the context that precedes  this context in the activation stack.  Use engine() to obtain a pointer to the QScriptEngine that this context  resides in.  Use backtrace() to get a human-readable backtrace associated with this  context. This can be useful for debugging purposes when implementing  native functions.  \sa QScriptEngine::newFunction(), QScriptable*//*!    \enum QScriptContext::ExecutionState    This enum specifies the execution state of the context.    \value NormalState The context is in a normal state.    \value ExceptionState The context is in an exceptional state.*//*!    \enum QScriptContext::Error    This enum specifies types of error.    \value ReferenceError A reference error.    \value SyntaxError A syntax error.    \value TypeError A type error.    \value RangeError A range error.    \value URIError A URI error.    \value UnknownError An unknown error.*//*!  Throws an exception with the given \a value.  Returns the value thrown (the same as the argument).  \sa throwError(), state()*/QScriptValue QScriptContext::throwValue(const QScriptValue &value){    Q_D(QScriptContext);    d->m_result = QScriptValuePrivate::valueOf(value);    d->m_state = QScriptContext::ExceptionState;    return value;}/*!  Throws an \a error with the given \a text.  Returns the created error object.  The \a text will be stored in the \c{message} property of the error  object.  \sa throwValue(), state()*/QScriptValue QScriptContext::throwError(Error error, const QString &text){    Q_D(QScriptContext);    return d->throwError(error, text);}/*!  \overload  Throws an error with the given \a text.  Returns the created error object.  \sa throwValue(), state()*/QScriptValue QScriptContext::throwError(const QString &text){    Q_D(QScriptContext);    return d->throwError(text);}/*!  \internal*/QScriptContext::QScriptContext():    d_ptr(new QScriptContextPrivate()){    d_ptr->q_ptr = this;}/*!  Destroys this QScriptContext.*/QScriptContext::~QScriptContext(){    delete d_ptr;    d_ptr = 0;}/*!  Returns the QScriptEngine that this QScriptContext belongs to.*/QScriptEngine *QScriptContext::engine() const{    Q_D(const QScriptContext);    return d->engine();}/*!  Returns the function argument at the given \a index.  If \a index >= argumentCount(), a QScriptValue of  the primitive type Undefined is returned.  \sa argumentCount()*/QScriptValue QScriptContext::argument(int index) const{    Q_D(const QScriptContext);    if (index < 0)        return QScriptValue();    return d->argument(index);}/*!  Returns the callee. The callee is the function object that this  QScriptContext represents an invocation of.*/QScriptValue QScriptContext::callee() const{    Q_D(const QScriptContext);    return d->m_callee;}/*!  Returns the arguments object of this QScriptContext.  The arguments object has properties \c callee (equal to callee())  and \c length (equal to argumentCount()), and properties \c 0, \c 1,  ..., argumentCount() - 1 that provide access to the argument  values. Initially, property \c P (0 <= \c P < argumentCount()) has  the same value as argument(\c P). In the case when \c P is less  than the number of formal parameters of the function, \c P shares  its value with the corresponding property of the activation object  (activationObject()). This means that changing this property changes  the corresponding property of the activation object and vice versa.  \sa argument(), activationObject()*/QScriptValue QScriptContext::argumentsObject() const{    Q_D(const QScriptContext);    if (!d->m_arguments.isValid() && d->m_activation.isValid()) {        QScriptContextPrivate *dd = const_cast<QScriptContextPrivate*>(d);        QScriptEnginePrivate *eng_p = QScriptEnginePrivate::get(engine());        eng_p->newArguments(&dd->m_arguments, d->m_activation,                            d->argc, d->m_callee);    }    return d->m_arguments;}/*!  Returns true if the function was called as a constructor  (e.g. \c{"new foo()"}); otherwise returns false.  When a function is called as constructor, the thisObject()  contains the newly constructed object to be initialized.*/bool QScriptContext::isCalledAsConstructor() const{    Q_D(const QScriptContext);    return d->m_calledAsConstructor;}/*!  Returns the parent context of this QScriptContext.*/QScriptContext *QScriptContext::parentContext() const{    Q_D(const QScriptContext);    return d->previous;}/*!  Returns the number of arguments passed to the function  in this invocation.  Note that the argument count can be different from the  formal number of arguments (the \c{length} property of  callee()).  \sa argument()*/int QScriptContext::argumentCount() const{    Q_D(const QScriptContext);    return d->argc;}/*!  \internal*/QScriptValue QScriptContext::returnValue() const{    Q_D(const QScriptContext);    return d->m_result;}/*!  \internal*/void QScriptContext::setReturnValue(const QScriptValue &result){    Q_D(QScriptContext);    d->m_result = QScriptValuePrivate::valueOf(result);}/*!  Returns the activation object of this QScriptContext. The activation  object provides access to the local variables associated with this  context.  \sa argument(), argumentsObject()*/QScriptValue QScriptContext::activationObject() const{    Q_D(const QScriptContext);    if (d->previous && !d->m_activation.property(QLatin1String("arguments")).isValid()) {        QScriptContextPrivate *dd = const_cast<QScriptContextPrivate*>(d);        dd->m_activation.setProperty(QLatin1String("arguments"), QScriptValuePrivate::valueOf(argumentsObject()));    }    return d->m_activation;}/*!  Sets the activation object of this QScriptContext to be the given \a  activation.*/void QScriptContext::setActivationObject(const QScriptValue &activation){    Q_D(QScriptContext);    d->m_activation = QScriptValuePrivate::valueOf(activation);}/*!  Returns the `this' object associated with this QScriptContext.*/QScriptValue QScriptContext::thisObject() const{    Q_D(const QScriptContext);    return d->m_thisObject;}/*!  Sets the `this' object associated with this QScriptContext to be  \a thisObject.*/void QScriptContext::setThisObject(const QScriptValue &thisObject){    Q_D(QScriptContext);    d->m_thisObject = QScriptValuePrivate::valueOf(thisObject);}/*!  Returns the execution state of this QScriptContext.*/QScriptContext::ExecutionState QScriptContext::state() const{    Q_D(const QScriptContext);    return d->m_state;}/*!  Returns a human-readable backtrace of this QScriptContext.  Each line is of the form \c{<function-name>(<arguments>)@<file-name>:<line-number>}.  \sa QScriptEngine::uncaughtExceptionBacktrace()*/QStringList QScriptContext::backtrace() const{    Q_D(const QScriptContext);    return d->backtrace();}#endif // QT_NO_SCRIPT

⌨️ 快捷键说明

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