Representaciones de memoria

org.eclipse.debug.ui.memoryRenderings

3.1: sustitucion del punto de extensión memoryRenderingTypes que estaba considerado como experimental en la versión 3.0

permite que los plug-ins contribuyan con representaciones arbitrarias de bloques de memoria y enlace bloques de memoria con representaciones. Por ejemplo, una representación puede convertir bytes sin formato de un bloque de memoria en caracteres 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>

Este elemento define un tipo de representación.



<!ELEMENT renderingBindings (enablement*)>

<!ATTLIST renderingBindings

renderingIds CDATA #IMPLIED

primaryId    CDATA #IMPLIED

class        CDATA #IMPLIED

defaultIds   CDATA #IMPLIED>

Enlaza bloques de memoria con las representaciones disponibles.



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

Elemento raíz genérico. El elemento puede utilizarse en un punto de extensión para definir su expresión enablement. Los hijos de una expresión de habilitación se combinan mediante el operador and.



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

Este elemento representa una operación NOT en el resultado de evaluar la correspondiente expresión de subelemento.



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

Este elemento representa una operación AND en el resultado de evaluar todas las expresiones de los correspondientes subelementos.



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

Este elemento representa una operación OR en el resultado de evaluar todas las expresiones de subelementos.



<!ELEMENT instanceof EMPTY>

<!ATTLIST instanceof

value CDATA #REQUIRED>

Este elemento se utiliza para realizar una comprobación instanceof del objeto que tiene el foco. La expresión devuelve EvaluationResult.TRUE si el tipo del objeto es un subtipo del tipo especificado por el atributo value. De lo contrario, se devuelve EvaluationResult.FALSE.



<!ELEMENT test EMPTY>

<!ATTLIST test

property CDATA #REQUIRED

args     CDATA #IMPLIED

value    CDATA #IMPLIED>

Este elemento se utiliza para evaluar el estado de propiedad del objeto que tiene el foco. El conjunto de propiedades que pueden probarse puede ampliarse mediante el punto de extensión de probador de propiedades. La expresión de prueba devuelve EvaluationResult.NOT_LOADED si el probador de propiedades que realiza la prueba no se ha cargado todavía.



<!ELEMENT systemTest EMPTY>

<!ATTLIST systemTest

property CDATA #REQUIRED

value    CDATA #REQUIRED>

Prueba una propiedad del sistema llamando al método System.getProperty y compara el resultado con el valor especificado con el atributo value.



<!ELEMENT equals EMPTY>

<!ATTLIST equals

value CDATA #REQUIRED>

Este elemento se utiliza para realizar una comprobación equals del objeto que tiene el foco. La expresión devuelve EvaluationResult.TRUE si el objeto es igual al valor proporcionado por el atributo value. De lo contrario, se devuelve EvaluationResult.FALSE.



<!ELEMENT count EMPTY>

<!ATTLIST count

value CDATA #REQUIRED>

Este elemento se utiliza para probar el número de elementos de una colección.



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

<!ATTLIST with

variable CDATA #REQUIRED>

Este elemento cambia el objeto en el que hay que inspeccionar todos los elementos hijo para que pase a ser el objeto al que hace referencia la variable dada. Si la variable no se puede resolver, la expresión lanzará una ExpressionException al evaluarla. Los hijos de una expresión with se combinan mediante el operador and.



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

<!ATTLIST resolve

variable CDATA #REQUIRED

args     CDATA #IMPLIED>

Este elemento cambia el objeto en el que hay que inspeccionar todos los elementos hijo para que pase a ser el objeto al que hace referencia la variable dada. Si la variable no se puede resolver, la expresión lanzará una ExpressionException al evaluarla. Los hijos de una expresión with se combinan mediante el operador and.



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

<!ATTLIST adapt

type CDATA #REQUIRED>

Este elemento se utiliza para adaptar el objeto en foco al tipo especificado por el atributo type. La expresión retorna sin cargar si el adaptador o el tipo al que se hace referencia todavía no está cargado. Se lanza una ExpressionException durante la evaluación si el nombre del tipo no existe en absoluto. Los hijos de una expresión adapt se combinan mediante el operador and.



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

<!ATTLIST iterate

operator (or|and) >

Este elemento se usa para reiterar una variable del tipo java.util.Collection. Si el objeto que tiene el foco no es del tipo java.util.Collection, se enviará una ExpressionException al evaluar la expresión.



A continuación se muestra un ejemplo de definición de un nuevo tipo de representación y enlace.

<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>

En el ejemplo anterior, se define un nuevo tipo de representación, Sample Rendering. La clase com.example.SampleRenderingTypeDelegate implementa org.eclipse.debug.ui.memory.IMemoryRenderingTypeDelegate y se utilizará para crear nuevas representaciones de este tipo. La representación se enlaza a instancias de com.exmaple.SampleMemoryBlock.

  • El valor del atributo class en un elemento renderingType debe ser un nombre totalmente calificado de una clase Java que implementa org.eclipse.debug.ui.memory.IMemoryRenderingTypeDelegate.
  • El valor del atributo class en un elemento renderingBindings debe ser un nombre totalmente calificado de una clase Java que implementa org.eclipse.debug.ui.memory.IMemoryRenderingBindingsProvider.
  • La plataforma de depuración proporciona los siguientes tipos de representación:

  • Representación hexadecimal (ID de representación: org.eclipse.debug.ui.rendering.raw_memory)
  • Representación ASCII ID de representación: org.eclipse.debug.ui.rendering.ascii)
  • Representación de entero con signo (ID de representación: org.eclipse.debug.ui.rendering.signedint)
  • Representación de entero sin signo (ID de representación: org.eclipse.debug.ui.rendering.unsignedint)

  • La plataforma de depuración proporciona una vista de memoria para albergar representaciones.