内存呈示

org.eclipse.debug.ui.memoryRenderings

3.1 - 替换在 3.0 中认为是实验性的 memoryRenderingTypes 扩展点

允许插件为内存块提供任意的呈示,并将内存块绑定至呈示。例如,呈示可以将内存块的原始字节转换成 ASCII 字符。

<!ELEMENT extension (renderingType* | renderingBindings*)>

<!ATTLIST extension

point CDATA #REQUIRED

id    CDATA #IMPLIED

name  CDATA #IMPLIED>


<!ELEMENT renderingType EMPTY>

<!ATTLIST renderingType

name  CDATA #REQUIRED

id    CDATA #REQUIRED

class CDATA #REQUIRED>

此元素定义呈示类型。



<!ELEMENT renderingBindings (enablement*)>

<!ATTLIST renderingBindings

renderingIds CDATA #IMPLIED

primaryId    CDATA #IMPLIED

class        CDATA #IMPLIED

defaultIds   CDATA #IMPLIED>

将内存块与可用的呈示绑定在一起。



<!ELEMENT enablement (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

通用根元素。可以在扩展点内使用该元素来定义它的支持表达式。将使用 and 运算符来组合 enablement 表达式的子代。



<!ELEMENT not (not | and | or | instanceof | test | systemTest | equals | count | with | resolve | adapt | iterate)>

此元素表示对其子元素表达式求值的结果的 NOT 操作。



<!ELEMENT and (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

此元素表示对其所有子元素表达式求值的结果执行 AND 操作。



<!ELEMENT or (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

此元素表示对其所有子元素表达式求值的结果执行 OR 操作。



<!ELEMENT instanceof EMPTY>

<!ATTLIST instanceof

value CDATA #REQUIRED>

此元素用来对焦点中的对象执行 instanceof 检查。如果对象的类型是由属性值指定的类型的子类型,则表达式返回 EvaluationResult.TRUE。否则,将返回 EvaluationResult.FALSE。



<!ELEMENT test EMPTY>

<!ATTLIST test

property CDATA #REQUIRED

args     CDATA #IMPLIED

value    CDATA #IMPLIED>

此元素用来对焦点中对象的属性状态进行评估。可以使用属性测试程序扩展点来扩展可测试属性的集合。如果尚未装入执行实际测试的属性测试程序,则测试表达式返回 EvaluationResult.NOT_LOADED。



<!ELEMENT systemTest EMPTY>

<!ATTLIST systemTest

property CDATA #REQUIRED

value    CDATA #REQUIRED>

通过调用 System.getProperty 方法来测试系统属性并将结果与通过值属性指定的值进行比较。



<!ELEMENT equals EMPTY>

<!ATTLIST equals

value CDATA #REQUIRED>

此元素用来对焦点中的对象执行等于检查。如果对象等于由属性值提供的值,则表达式返回 EvaluationResult.TRUE。否则,将返回 EvaluationResult.FALSE。



<!ELEMENT count EMPTY>

<!ATTLIST count

value CDATA #REQUIRED>

此元素用来测试集合中的元素数。



<!ELEMENT with (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

<!ATTLIST with

variable CDATA #REQUIRED>

此元素将把要检查以获取其所有子元素的对象更改为由给定变量引用的对象。如果不能解析变量,则表达式将在对变量求值时抛出 ExpressionException。将使用 and 运算符来组合 with 表达式的子代。



<!ELEMENT resolve (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

<!ATTLIST resolve

variable CDATA #REQUIRED

args     CDATA #IMPLIED>

此元素将把要检查以获取其所有子元素的对象更改为由给定变量引用的对象。如果不能解析变量,则表达式将在对变量求值时抛出 ExpressionException。将使用 and 运算符来组合 with 表达式的子代。



<!ELEMENT adapt (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

<!ATTLIST adapt

type CDATA #REQUIRED>

此元素用来使焦点中的对象适用于由属性类型指定的类型。如果尚未装入适配器或引用的类型,则表达式返回 not loaded。如果类型名称根本不存在,则表达式在求值期间将抛出 ExpressionException。将使用 and 运算符来组合 adapt 表达式的子代。



<!ELEMENT iterate (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

<!ATTLIST iterate

operator (or|and) >

此元素用来叠代类型为 java.util.Collection 的变量。如果焦点中对象的类型不是 java.util.Collection,则当对表达式求值时将抛出 ExpressionException。



以下是用于定义新的呈示类型和绑定的示例。

<extension point=

"org.eclipse.debug.ui.memoryRenderings"

>

<renderingType name=

"Sample Rendering"

id=

"com.example.sampleRendering"

class=

"com.example.SampleRenderingTypeDelegate"

>

</renderingType>

<renderingBindings renderingIds=

"com.example.sampleRendering"

>

<enablement>

<instanceof value=

"com.example.SampleMemoryBlock"

/>

</enablement>

</renderingBindings>

</extension>

在以上示例中,定义了一种新的呈示类型“Sample Rendering”。类 com.example.SampleRenderingTypeDelegate 实现 org.eclipse.debug.ui.memory.IMemoryRenderingTypeDelegate 并且将用来创建此类型的新呈示。该呈示将绑定至 com.exmaple.SampleMemoryBlock 的实例。

  • renderingType 元素中 class 属性的值必须是实现 org.eclipse.debug.ui.memory.IMemoryRenderingTypeDelegate 的 Java 类的标准名称。
  • renderingBindings 元素中 class 属性的值必须是实现 org.eclipse.debug.ui.memory.IMemoryRenderingBindingsProvider 的 Java 类的标准名称。
  • 调试平台提供以下呈示类型:

  • 十六进制呈示(呈示标识:org.eclipse.debug.ui.rendering.raw_memory)
  • ASCII 呈示(呈示标识:org.eclipse.debug.ui.rendering.ascii)
  • 有符号整数呈示(呈示标识:org.eclipse.debug.ui.rendering.signedint)
  • 无符号整数呈示(呈示标识:org.eclipse.debug.ui.rendering.unsignedint)

  • 调试平台提供一个内存视图来主管呈示。