QScriptEngineAgent Class Reference
[QtScript module]
该QScriptEngineAgent类提供了一个接口来报告有关事件QScriptEngine执行。More…
Types
enum Extension { DebuggerInvocationRequest }
Methods
__init__ (self, QScriptEngine engine)
contextPop (self)
contextPush (self)
QScriptEngine engine (self)
exceptionCatch (self, int scriptId, QScriptValue exception)
exceptionThrow (self, int scriptId, QScriptValue exception, bool hasHandler)
QVariant extension (self, Extension extension, QVariant argument = QVariant())
functionEntry (self, int scriptId)
functionExit (self, int scriptId, QScriptValue returnValue)
positionChange (self, int scriptId, int lineNumber, int columnNumber)
scriptLoad (self, int id, QString program, QString fileName, int baseLineNumber)
scriptUnload (self, int id)
bool supportsExtension (self, Extension extension)
Detailed Description
该QScriptEngineAgent类提供了一个接口来报告有关事件QScriptEngine执行。
该QScriptEngineAgent类是用来监视和/或控制的一个执行工具的基础QScriptEngine如调试器和分析器。
为了处理脚本加载和卸载事件,重新实现scriptLoad()和scriptUnload()函数。scriptLoad()被输入到后称为QScriptEngine.evaluate( )已经被解析,执行给定的脚本权利之前。该引擎可为每个脚本一个ID ,它可作为一个参数来scriptLoad();随后,其它事件处理程序可以使用该ID来识别特定的脚本。一个常见的用法scriptLoad( )是保留的脚本文本,文件名和底线号(原输入QScriptEngine.evaluate()),以使其他的事件处理程序可以例如一个行号映射到文本的相应的行。
scriptUnload( )被调用时,QScriptEngine已经不再使用的脚本;的QScriptEngineAgent可能在这一点上安全地丢弃任何与脚本(如脚本文本)相关联的资源。注意,后scriptUnload( )被调用时,QScriptEngine可重复使用相关的脚本ID为新脚本(即作为参数传递给后续调用scriptLoad())。
评价下面的脚本将导致scriptUnload( )被调用的评估完成后立即:
var a = Math.random() + 2;
评价下面的脚本将\ B { }不导致调用scriptUnload( )当评估完成:
function cube(a) {
return a * a * a;
}
var a = cube(3);
该脚本不被卸载,因为它定义了一个函数(cube
)保留在脚本环境评估已完成。如果后续的脚本中删除该cube
功能(例如,通过将其设置为null
) ,scriptUnload( )当函数被垃圾收集会被调用。一般而言,一个脚本不卸载,直到发动机已确定没有其内容被引用。
处理脚本函数调用和返回,重新实现functionEntry()和functionExit()函数。functionEntry( )当一个脚本函数将要执行的调用;functionExit()被调用时,一个脚本函数即将返回,无论是正常还是由于异常。
为了处理单个脚本语句,重新实现positionChange( ) 。positionChange()被调用每次引擎将要执行的脚本的一个新的语句,因此提供的脚本监控的最好水平。
为了处理异常,重新实现exceptionThrow()和exceptionCatch( ) 。exceptionThrow()被调用时,一个脚本异常被抛出,它已被处理之前。exceptionCatch( )被调用时,一个异常处理程序存在,并执行将在处理程序代码将被收回。
Type Documentation
QScriptEngineAgent.Extension
这个枚举指定可能的扩展到QScriptEngineAgent。
Constant | Value | Description |
---|---|---|
QScriptEngineAgent.DebuggerInvocationRequest |
0 |
代理手柄debugger 脚本语句。 |
See also extension( ) 。
Method Documentation
QScriptEngineAgent.__init__ (self, QScriptEngine engine)
该engine的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。
构造一个QScriptEngineAgent对象为给定的engine。
该发动机采用了代理的所有权。
Call QScriptEngine.setAgent( )使本剂中的活性剂。
QScriptEngineAgent.contextPop (self)
在当前脚本上下文将要弹出这个函数被调用。
默认实现不执行任何操作。
See also contextPush()和functionExit( ) 。
QScriptEngineAgent.contextPush (self)
这个函数被调用时,一个新的脚本上下文一直推。
默认实现不执行任何操作。
See also contextPop()和functionEntry( ) 。
QScriptEngine QScriptEngineAgent.engine (self)
返回QScriptEngine此代理相关联。
QScriptEngineAgent.exceptionCatch (self, int scriptId, QScriptValue exception)
这个函数被调用的时候给出exception即将被捕获,在所确定的脚本scriptId。
如果你想处理此事件重新实现这个函数。
默认实现不执行任何操作。
See also exceptionThrow( ) 。
QScriptEngineAgent.exceptionThrow (self, int scriptId, QScriptValue exception, bool hasHandler)
这个函数被调用的时候给出exception发生在发动机,在所确定的脚本scriptId。如果异常是由本地的Qt脚本函数抛出,scriptId是-1。
If hasHandler诚然,有一个catch
or finally
块将处理该异常。如果hasHandler是假的,没有异常处理程序。
如果你想处理此事件重新实现这个函数。例如,一个调试器可以当一个未捕获的异常发生时通知用户(即hasHandler是假的) 。
默认实现不执行任何操作。
See also exceptionCatch( ) 。
QVariant QScriptEngineAgent.extension (self, Extension extension, QVariant argument = QVariant())
这个虚函数可以在重新实现QScriptEngineAgent子类以提供扩展的支持。可选的argument可以作为输入提供给extension;结果必须在一个形式被返回QVariant。您可以致电supportsExtension( )来检查一个扩展是支持的QScriptEngineAgent。默认情况下,没有扩展名的支持,这个函数返回一个无效QVariant。
如果实现DebuggerInvocationRequest扩展, Qt的脚本会调用这个函数时,debugger
语句在脚本中遇到的问题。该argument是QVariantList包含三个项目:第一个项目是scriptId (长) ,第二项是行数(一个int ) ,第三项是列数(一个整数) 。
See also supportsExtension( ) 。
QScriptEngineAgent.functionEntry (self, int scriptId)
这个函数被调用时,一个脚本函数被调用的引擎。如果脚本的功能是不是原生的Qt脚本功能,它驻留在确定脚本scriptId否则,scriptId是-1。
这个函数被调用执行脚本函数的开始之前。你可以得到QScriptContext与函数调用相关QScriptEngine.currentContext( ) 。可传递给函数的参数。
重新实现这个函数来处理此事件。例如,一个调试器的实现可以重新实现这个函数(和functionExit())来跟踪调用堆栈和提供步骤,以上的功能。
默认实现不执行任何操作。
See also functionExit( )positionChange()和QScriptEngine.currentContext( ) 。
QScriptEngineAgent.functionExit (self, int scriptId, QScriptValue returnValue)
当目前执行的脚本函数即将返回该函数被调用。如果脚本的功能是不是原生的Qt脚本功能,它驻留在确定脚本scriptId否则,scriptId是-1。该returnValue是脚本函数将返回值。
只是脚本函数返回之前调用此函数。您仍然可以访问QScriptContext与脚本函数调用相关联QScriptEngine.currentContext( ) 。
如果发动机的hasUncaughtException( )函数返回True ,脚本函数退出,由于异常,否则,脚本函数正常返回。
重新实现这个函数来处理此事件,通常你会那么还需要重新实现functionEntry( ) 。
默认实现不执行任何操作。
See also functionEntry()和QScriptEngine.hasUncaughtException( ) 。
QScriptEngineAgent.positionChange (self, int scriptId, int lineNumber, int columnNumber)
这个函数被调用当发动机即将在确定脚本执行一个新的语句scriptId。该语句开始由指定的行和列lineNumber是不是原生的Qt脚本函数生成此事件。
重新实现这个函数来处理此事件。例如,一个调试器的实现可以重新实现这个功能,提供线,由线步进,和一个分析器实现可以用它来计算被执行每个语句的次数。
默认实现不执行任何操作。
Note: columnNumber未定义
See also scriptLoad()和functionEntry( ) 。
QScriptEngineAgent.scriptLoad (self, int id, QString program, QString fileName, int baseLineNumber)
这个函数被调用时,引擎解析的脚本,并与给定关联的它id。该ID可以用来识别在随后的事件通知这个特定的脚本。
program,fileName和baseLineNumber是原始参数的QScriptEngine.evaluate( )调用触发此事件。
这个函数被调用之前的脚本即将进行评估。
您可以重新实现此功能来记录关于脚本的信息,例如,通过保留脚本文本,你可以得到的文本行对应于一个后续调用一个行号positionChange( ) 。
默认实现不执行任何操作。
See also scriptUnload( ) 。
QScriptEngineAgent.scriptUnload (self, int id)
这个函数被调用时,引擎已经丢弃确定给定的脚本id。
您可以重新实现这个函数来清除任何已与脚本相关的资源。
默认实现不执行任何操作。
See also scriptLoad( ) 。
bool QScriptEngineAgent.supportsExtension (self, Extension extension)
返回True如果QScriptEngineAgent支持给定extension否则,则返回False。默认情况下,没有扩展名的支持。
See also extension( ) 。