| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
| <html> |
| <head> |
| <title>Target Communication Framework Services - Expressions</title> |
| </head> |
| |
| <body lang='EN-US'> |
| |
| <h1>Target Communication Framework Services - Expressions</h1> |
| |
| <ul> |
| <li><a href='#VersionHistory'>Version History</a> |
| <li><a href='#Overview'>Overview</a> |
| <li><a href='#Cmds'>Commands</a> |
| <ul> |
| <li><a href='#CmdGetContext'>Get Context</a> |
| <li><a href='#CmdGetChildren'>Get Children</a> |
| <li><a href='#CmdCreate'>Create</a> |
| <li><a href='#CmdCreateInScope'>Create In Scope</a> |
| <li><a href='#CmdDispose'>Dispose</a> |
| <li><a href='#CmdEvaluate'>Evaluate</a> |
| <li><a href='#CmdAssign'>Assign</a> |
| </ul> |
| <li><a href='#API'>API</a> |
| </ul> |
| |
| <h1>Expressions Service</h1> |
| |
| <h2><a name='VersionHistory'>Version History</a></h2> |
| |
| <table border=1 cellpadding=8> |
| <tr> |
| <th>Version |
| <th>Date |
| <th>Change |
| <tr> |
| <td>1.0 |
| <td>2011-11-11 |
| <td>Initial |
| </table> |
| |
| <h2><a name='Overview'>Overview</a></h2> |
| |
| <p>Expressions service allows TCF client to perform expression evaluation on remote target. |
| The service can be used to retrieve or modify values of variables or any data structures in remote target memory.</p> |
| |
| <p>After expression is created using either <a href='#CmdCreate'>Create</a> or <a href='#CmdCreateInScope'>Create In Scope</a> command, |
| it can be evaluated multiple times, for example, each time the target is suspended. If an expression denotes a storage location, it can be used in |
| <a href='#CmdAssign'>Assign</a> command to change stored value. When expression is not needed anymore, it should be disposed using |
| <a href='#CmdDispose'>Dispose</a> command.</p> |
| |
| <p>Expressions syntax is extended C/C++ syntax. Extensions to regular C/C++ syntax are:</p> |
| <ol> |
| <li>Special characters in identifiers: <b>$"X"</b>, or just <b>"X"</b> if followed by ::, where X is object name that can contain any characters. |
| <li>Symbol IDs in expressions: <b>${X}</b>, where X is symbol ID as returned by the <a href='TCF Service - Symbols.html'>Symbols Service</a>. |
| <li>CPU registers: <b>$X</b>, where X is a register name, e.g. $ax |
| <li>Debug print function: <b>$printf(fmt, ...)</b>, see <a href='TCF Service - Debug Print.html'>Debug Print Service</a>. |
| <li>Debug context ID: <b>$thread</b>, current context ID, same as returned by the <a href='TCF Service - Run Control.html'>Run Control Service</a>. |
| <li>OS loader breakpoint address: <b>$loader_brk</b> |
| <li>OS loader state address: <b>$loader_state</b> |
| </ol> |
| |
| <p>The service uses standard format for error reports, |
| see <a href='TCF Error Report Format.html'>Error Report Format</a>.</p> |
| |
| <h2><a name='Cmds'>Commands</a></h2> |
| |
| <h3><a name='CmdGetContext'>Get Context</a></h3> |
| |
| <pre><b><font face="Courier New" size=2 color=#333399> |
| C • <i><token></i> • Expressions • getContext • <i><string: context ID></i> • |
| </font></b></pre> |
| |
| <p>The command retrieves expression context info for given context ID</p> |
| |
| <p>Reply:</p> |
| |
| <pre><b><font face="Courier New" size=2 color=#333399> |
| R • <i><token></i> • <i><error report></i> • <i><context data></i> • |
| |
| <i><context data></i> |
| ⇒ null |
| ⇒ <i><object></i> |
| </font></b></pre> |
| |
| <p>Context data object should, at least, contain member |
| <b><font face="Courier New" size=2 color=#333399>"ID" : <i><string>.</i></font></b> |
| Context data is expected to be cached by clients.</p> |
| |
| <p>Predefined expression context properties are:</p> |
| <ul> |
| <li><code><b><font face="Courier New" size=2 color=#333399>"ID" : <i><string></i></font></b></code> |
| - ID of the context, same as getContext command argument. |
| |
| <li><code><b><font face="Courier New" size=2 color=#333399>"ParentID" : <i><string></i></font></b></code> |
| - ID of a parent context. |
| |
| <li><code><b><font face="Courier New" size=2 color=#333399>"SymbolID" : <i><string></i></font></b></code> |
| - symbol ID if expression designates a symbol. The symbol ID can be used with <a href='TCF Service - Symbols.html'>Symbols Service</a> to get symbol data. |
| |
| <li><code><b><font face="Courier New" size=2 color=#333399>"Expression" : <i><string></i></font></b></code> |
| - text of the expression. |
| |
| <li><code><b><font face="Courier New" size=2 color=#333399>"CanAssign" : <i><boolean></i></font></b></code> |
| - true if expression designates a storage location, so new value can be assigned (stored) at the location. |
| |
| <li><code><b><font face="Courier New" size=2 color=#333399>"HasFuncCall" : <i><boolean></i></font></b></code> |
| - true if expression cantains a function call, which needs to be executed in the debug context. |
| Evaluation of such expressions resumes and suspends target thread or CPU. |
| |
| <li><code><b><font face="Courier New" size=2 color=#333399>"Class" : <i><number></i></font></b></code> |
| - symbol class of the expression type. See <a href='TCF Service - Symbols.html'>Symbols Service</a> for definition of symbol classes. |
| |
| <li><code><b><font face="Courier New" size=2 color=#333399>"Type" : <i><string></i></font></b></code> |
| - symbol ID of the expression type. |
| |
| <li><code><b><font face="Courier New" size=2 color=#333399>"Size" : <i><number></i></font></b></code> |
| - size (in bytes) of the expression value. |
| </ul> |
| |
| <h3><a name='CmdGetChildren'>Get Children</a></h3> |
| |
| <pre><b><font face="Courier New" size=2 color=#333399> |
| C • <i><token></i> • Expressions • getChildren • <i><string: parent context ID></i> • |
| </font></b></pre> |
| |
| <p>Retrieve children IDs for given parent ID. |
| Meaning of the operation depends on parent kind:</p> |
| <ol> |
| <li>parent is stack frame: children are function arguments and local variables</li> |
| <li>parent is thread: children are top stack frame function arguments and local variables</li> |
| <li>parent is expression with type of a struct, union, or class: children are symbol IDs of fields</li> |
| <li>parent is expression with type of an enumeration: children are symbol IDs of enumerators</li> |
| </ol> |
| <p>Children list does not include IDs of expressions that were created by clients using "create" command.</p> |
| |
| <p>Reply:</p> |
| |
| <pre><b><font face="Courier New" size=2 color=#333399> |
| R • <i><token></i> • <i><error report></i> • <i><array: children IDs></i> • |
| </font></b></pre> |
| |
| <h3><a name='CmdCreate'>Create</a></h3> |
| |
| <pre><b><font face="Courier New" size=2 color=#333399> |
| C • <i><token></i> • Expressions • create • <i><string: parent context ID></i> • <i><string: language></i> • <i><string: expression></i> • |
| </font></b></pre> |
| |
| <p>Create an expression context. The context should be disposed after use.</p> |
| <p>"parent context ID" is a context ID that can be used to resolve symbol names. It can be process, thread or stack frame. |
| <p>"language" - language of expression script, null means default language.</p> |
| <p>"expression" - the expression script.</p> |
| |
| <p>Reply:</p> |
| |
| <pre><b><font face="Courier New" size=2 color=#333399> |
| R • <i><token></i> • <i><error report></i> • <i><string: expression context ID></i> • |
| </font></b></pre> |
| |
| <h3><a name='CmdCreateInScope'>Create In Scope</a></h3> |
| |
| <pre><b><font face="Courier New" size=2 color=#333399> |
| C • <i><token></i> • Expressions • createInScope • <i><object: scope></i> • <i><string: expression></i> • |
| </font></b></pre> |
| |
| <p>Create an expression context in a scope. The context should be disposed after use.</p> |
| <p>"scope" controls symbols resolution and and interpretation of the expression script.</p> |
| <p>Predefined properties of the expression scope are:</p> |
| <ul> |
| <li><code><b><font face="Courier New" size=2 color=#333399>"ContextID" : <i><string></i></font></b></code> |
| - context ID that can be used to resolve symbol names. It can be process, thread or stack frame. |
| <li><code><b><font face="Courier New" size=2 color=#333399>"Address" : <i><string></i></font></b></code> |
| - code instruction address in the parent context. The address identifies compilation unit, function and/or basic block to be used as expression evaluation environment. |
| <li><code><b><font face="Courier New" size=2 color=#333399>"Language" : <i><string></i></font></b></code> |
| - language of expression script. |
| </ul> |
| <p>"expression" - the expression script.</p> |
| |
| <p>Reply:</p> |
| |
| <pre><b><font face="Courier New" size=2 color=#333399> |
| R • <i><token></i> • <i><error report></i> • <i><string: expression context ID></i> • |
| </font></b></pre> |
| |
| <h3><a name='CmdDispose'>Dispose</a></h3> |
| |
| <pre><b><font face="Courier New" size=2 color=#333399> |
| C • <i><token></i> • Expressions • dispose • <i><string: expression ID></i> • |
| </font></b></pre> |
| |
| <p>Dispose an expression context that was created by "create" or "createInScope" commands.</p> |
| |
| <p>Reply:</p> |
| |
| <pre><b><font face="Courier New" size=2 color=#333399> |
| R • <i><token></i> • <i><error report></i> • |
| </font></b></pre> |
| |
| <h3><a name='CmdEvaluate'>Evaluate</a></h3> |
| |
| <pre><b><font face="Courier New" size=2 color=#333399> |
| C • <i><token></i> • Expressions • evaluate • <i><string: expression ID></i> • |
| </font></b></pre> |
| |
| <p>Evaluate value of an expression.</p> |
| |
| <p>Reply:</p> |
| |
| <pre><b><font face="Courier New" size=2 color=#333399> |
| R • <i><token></i> • <i><array of bytes: value></i> • <i><error report></i> • <i><object: value properties></i> • |
| </font></b></pre> |
| |
| <p>Predefined properties of the expression value are:</p> |
| <ul> |
| <li><code><b><font face="Courier New" size=2 color=#333399>"Class" : <i><number></i></font></b></code> |
| - symbol class of the expression value type. See <a href='TCF Service - Symbols.html'>Symbols Service</a> for definition of symbol classes. |
| |
| <li><code><b><font face="Courier New" size=2 color=#333399>"Type" : <i><string></i></font></b></code> |
| - symbol ID of the expression value type. |
| |
| <li><code><b><font face="Courier New" size=2 color=#333399>"Symbol" : <i><string></i></font></b></code> |
| - symbol ID if the expression designates a symbol. |
| |
| <li><code><b><font face="Courier New" size=2 color=#333399>"BitStride" : <i><number></i></font></b></code> |
| - if the value is an array, and if the amount of storage allocated to hold each element of the array is different from |
| the amount of storage that is normally allocated to hold an individual object of the indicated element type, |
| then BitStride is the size (in bits) of each element of the array. |
| |
| <li><code><b><font face="Courier New" size=2 color=#333399>"BinaryScale" : <i><number></i></font></b></code> |
| - if the value is a fixed point binary number, BinaryScale is the exponent of the base two scale factor to be applied to the value. |
| |
| <li><code><b><font face="Courier New" size=2 color=#333399>"DecimalScale" : <i><number></i></font></b></code> |
| - if the value is a fixed point decimal number, DecimalScale is the exponent of the base ten scale factor to be applied to the value. |
| |
| <li><code><b><font face="Courier New" size=2 color=#333399>"ImplicitPointer" : <i><boolean></i></font></b></code> |
| - true if the value is result of implicit pointer dereference. |
| |
| <li><code><b><font face="Courier New" size=2 color=#333399>"Register" : <i><string></i></font></b></code> |
| - register ID if the expression designates a register. |
| |
| <li><code><b><font face="Courier New" size=2 color=#333399>"Address" : <i><number></i></font></b></code> |
| - memory address if the expression designates a location in the parent context memory. |
| |
| <li><code><b><font face="Courier New" size=2 color=#333399>"Pieces" : <i><array></i></font></b></code> |
| - <font color=#FF7000>TBD</font> |
| |
| <li><code><b><font face="Courier New" size=2 color=#333399>"BigEndian" : <i><boolean></i></font></b></code> |
| - true if the value is big endian. |
| |
| </ul> |
| |
| <h3><a name='CmdAssign'>Assign</a></h3> |
| |
| <pre><b><font face="Courier New" size=2 color=#333399> |
| C • <i><token></i> • Expressions • assign • <i><string: expression ID></i> • <i><array of bytes: value></i> • |
| </font></b></pre> |
| |
| <p>Assign a value to memory location determined by an expression.</p> |
| |
| <p>Reply:</p> |
| |
| <pre><b><font face="Courier New" size=2 color=#333399> |
| R • <i><token></i> • <i><error report></i> • |
| </font></b></pre> |
| |
| <h2><a name='API'>API</a></h2> |
| |
| <pre> |
| <font color=#3F5FBF>/** |
| * Expressions service allows TCF client to perform expression evaluation on remote target. |
| * The service can be used to retrieve or modify values of variables or any data structures in remote target memory. |
| * |
| * <font color=#7F9FBF>@noimplement</font> This interface is not intended to be implemented by clients. |
| */</font> |
| <font color=#7F0055>public interface</font> IExpressions <font color=#7F0055>extends</font> IService { |
| |
| <font color=#3F5FBF>/** |
| * This service name, as it appears on the wire - a TCF name of the service. |
| */</font> |
| <font color=#7F0055>static final</font> String NAME = "Expressions"; |
| |
| <font color=#3F5FBF>/** |
| * Expression object represent an expression that can be evaluated by remote target. |
| * It has a unique ID and contains all information necessary to compute a value. |
| * The object data usually includes: |
| * 1. process, thread or stack frame ID that should be used to resolve symbol names; |
| * 2. a script that can compute a value, like "x.y + z" |
| */</font> |
| <font color=#7F0055>interface</font> Expression { |
| <font color=#3F5FBF>/** |
| * Get context ID. |
| * <font color=#7F9FBF>@return</font> context ID. |
| */</font> |
| String getID(); |
| |
| <font color=#3F5FBF>/** |
| * Get parent context ID. |
| * <font color=#7F9FBF>@return</font> parent context ID. |
| */</font> |
| String getParentID(); |
| |
| <font color=#3F5FBF>/** |
| * Get expression script language ID. |
| * <font color=#7F9FBF>@return</font> language ID. |
| */</font> |
| String getLanguage(); |
| |
| <font color=#3F5FBF>/** |
| * Return expression string - the script part of the context. |
| * <font color=#7F9FBF>@return</font> expression script string |
| */</font> |
| String getExpression(); |
| |
| <font color=#3F5FBF>/** |
| * Return symbol ID if the expression represents a symbol (e.g. local variable). |
| * <font color=#7F9FBF>@return</font> symbol ID |
| */</font> |
| String getSymbolID(); |
| |
| <font color=#3F5FBF>/** |
| * Get size of expression value in bits. |
| * Can be 0 if value size is even number of bytes, use getSize() in such case. |
| * <font color=#7F9FBF>@return</font> size in bits. |
| */</font> |
| <font color=#7F0055>int</font> getBits(); |
| |
| <font color=#3F5FBF>/** |
| * Get size in bytes. The size can include extra (unused) bits. |
| * This is "static" or "declared" size - as determined by expression type. |
| * <font color=#7F9FBF>@return</font> size in bytes. |
| */</font> |
| <font color=#7F0055>int</font> getSize(); |
| |
| <font color=#3F5FBF>/** |
| * Get expression type ID. Symbols service can be used to get type properties. |
| * This is "static" or "declared" type ID, actual type of a value can be different - |
| * if expression language supports dynamic typing. |
| * <font color=#7F9FBF>@return</font> type ID. |
| */</font> |
| String getTypeID(); |
| |
| <font color=#3F5FBF>/** |
| * Check if the expression can be assigned a new value. |
| * <font color=#7F9FBF>@return</font> true if can assign. |
| */</font> |
| <font color=#7F0055>boolean</font> canAssign(); |
| |
| <font color=#3F5FBF>/** |
| * Check if the expression contains target function call. |
| * Such expression can resume the target when evaluated. |
| * <font color=#7F9FBF>@return</font> true if has a function call. |
| */</font> |
| <font color=#7F0055>boolean</font> hasFuncCall(); |
| |
| <font color=#3F5FBF>/** |
| * Get complete map of context properties. |
| * <font color=#7F9FBF>@return</font> map of context properties. |
| */</font> |
| Map<String,Object> getProperties(); |
| } |
| |
| <font color=#3F5FBF>/** |
| * Expression context property names. |
| */</font> |
| <font color=#7F0055>static final</font> String |
| PROP_ID = "ID", |
| PROP_PARENT_ID = "ParentID", |
| PROP_SYMBOL_ID = "SymbolID", |
| PROP_LANGUAGE = "Language", |
| PROP_EXPRESSION = "Expression", |
| PROP_BITS = "Bits", |
| PROP_SIZE = "Size", |
| PROP_TYPE = "Type", |
| PROP_CAN_ASSIGN = "CanAssign", |
| PROP_HAS_FUNC_CALL = "HasFuncCall"; |
| |
| <font color=#3F5FBF>/** |
| * Expression scope attributes. |
| * <font color=#7F9FBF>@since</font> 1.2 |
| */</font> |
| <font color=#7F0055>static final</font> String |
| SCOPE_CONTEXT_ID = "ContextID", |
| SCOPE_ADDRESS = "Address", |
| SCOPE_LANGUAGE = "Language"; |
| |
| <font color=#3F5FBF>/** |
| * Value represents result of expression evaluation. |
| * Note that same expression can be evaluated multiple times with different results. |
| * <font color=#7F9FBF>@noimplement</font> This interface is not intended to be implemented by clients. |
| */</font> |
| <font color=#7F0055>interface</font> Value { |
| |
| <font color=#3F5FBF>/** |
| * Get value type class. |
| * @see ISymbols.TypeClass |
| * @return |
| */</font> |
| ISymbols.TypeClass getTypeClass(); |
| |
| <font color=#3F5FBF>/** |
| * Get value type ID. Symbols service can be used to get type properties. |
| * <font color=#7F9FBF>@return</font> type ID. |
| */</font> |
| String getTypeID(); |
| |
| <font color=#3F5FBF>/** |
| * Check endianness of the values. |
| * Big-endian means decreasing numeric significance with increasing byte number. |
| * <font color=#7F9FBF>@return</font> true if big-endian. |
| */</font> |
| <font color=#7F0055>boolean</font> isBigEndian(); |
| |
| <font color=#3F5FBF>/** |
| * Implicit pointer means that the value represents a pointer, |
| * which value is unknown or optimized away, |
| * even though the value it would point to is known. |
| * <font color=#7F9FBF>@return</font> true if the value is implicit pointer. |
| * <font color=#7F9FBF>@since</font> 1.3 |
| */</font> |
| <font color=#7F0055>boolean</font> isImplicitPointer(); |
| |
| <font color=#3F5FBF>/** |
| * Return register ID if the value represents register variable. |
| * <font color=#7F9FBF>@return</font> register ID or null. |
| */</font> |
| String getRegisterID(); |
| |
| <font color=#3F5FBF>/** |
| * Return symbol ID if the value represents a symbol. |
| * <font color=#7F9FBF>@return</font> symbol ID or null. |
| */</font> |
| String getSymbolID(); |
| |
| <font color=#3F5FBF>/** |
| * Return value memory address, if applicable. |
| * <font color=#7F9FBF>@return</font> address or null. |
| */</font> |
| Number getAddress(); |
| |
| <font color=#3F5FBF>/** |
| * Get value as array of bytes. |
| * <font color=#7F9FBF>@return</font> value as array of bytes. |
| */</font> |
| <font color=#7F0055>byte</font>[] getValue(); |
| |
| <font color=#3F5FBF>/** |
| * Get complete map of value properties. |
| * <font color=#7F9FBF>@return</font> map of value properties. |
| */</font> |
| Map<String,Object> getProperties(); |
| } |
| |
| <font color=#3F5FBF>/** |
| * Expression value property names. |
| */</font> |
| <font color=#7F0055>static final</font> String |
| VAL_CLASS = "Class", |
| VAL_TYPE = "Type", |
| VAL_BIG_ENDIAN = "BigEndian", |
| VAL_REGISTER = "Register", |
| VAL_SYMBOL = "Symbol", |
| VAL_ADDRESS = "Address"; |
| <font color=#3F5FBF>/** <font color=#7F9FBF>@since</font> 1.3 */</font> |
| <font color=#7F0055>static final</font> String |
| VAL_BINARY_SCALE = "BinaryScale", |
| VAL_DECIMAL_SCALE = "DecimalScale", |
| VAL_IMPLICIT_POINTER = "ImplicitPointer", |
| VAL_PIECES = "Pieces"; |
| <font color=#3F5FBF>/** <font color=#7F9FBF>@since</font> 1.4 */</font> |
| <font color=#7F0055>static final</font> String |
| VAL_BIT_STRIDE = "BitStride"; |
| |
| <font color=#3F5FBF>/** |
| * Retrieve expression context info for given context ID. |
| * @see Expression |
| * |
| * <font color=#7F9FBF>@param</font> id - context ID. |
| * <font color=#7F9FBF>@param</font> done - call back interface called when operation is completed. |
| * <font color=#7F9FBF>@return</font> - pending command handle. |
| */</font> |
| IToken getContext(String id, DoneGetContext done); |
| |
| <font color=#3F5FBF>/** |
| * Client call back interface for getContext(). |
| */</font> |
| <font color=#7F0055>interface</font> DoneGetContext { |
| <font color=#3F5FBF>/** |
| * Called when context data retrieval is done. |
| * <font color=#7F9FBF>@param</font> token - command handle |
| * <font color=#7F9FBF>@param</font> error - error description if operation failed, null if succeeded. |
| * <font color=#7F9FBF>@param</font> context - context properties. |
| */</font> |
| <font color=#7F0055>void</font> doneGetContext(IToken token, Exception error, Expression context); |
| } |
| |
| <font color=#3F5FBF>/** |
| * Retrieve children IDs for given parent ID. |
| * Meaning of the operation depends on parent kind: |
| * 1. stack frame - function arguments and local variables; |
| * 2. thread - top stack frame function arguments and local variables; |
| * 3. expression with type of a struct, union, or class - fields; |
| * 4. expression with type of an enumeration - enumerators; |
| * |
| * <font color=#7F9FBF>@param</font> parent_context_id - parent context ID. |
| * <font color=#7F9FBF>@param</font> done - call back interface called when operation is completed. |
| * <font color=#7F9FBF>@return</font> - pending command handle. |
| */</font> |
| IToken getChildren(String parent_context_id, DoneGetChildren done); |
| |
| <font color=#3F5FBF>/** |
| * Client call back interface for getChildren(). |
| */</font> |
| <font color=#7F0055>interface</font> DoneGetChildren { |
| <font color=#3F5FBF>/** |
| * Called when context list retrieval is done. |
| * <font color=#7F9FBF>@param</font> token - command handle |
| * <font color=#7F9FBF>@param</font> error - error description if operation failed, null if succeeded. |
| * <font color=#7F9FBF>@param</font> context_ids - array of available context IDs. |
| */</font> |
| <font color=#7F0055>void</font> doneGetChildren(IToken token, Exception error, String[] context_ids); |
| } |
| |
| <font color=#3F5FBF>/** |
| * Create an expression context. |
| * The context should be disposed after use. |
| * <font color=#7F9FBF>@param</font> parent_id - a context ID that can be used to resolve symbol names. |
| * <font color=#7F9FBF>@param</font> language - language of expression script, null means default language |
| * <font color=#7F9FBF>@param</font> expression - expression script |
| * <font color=#7F9FBF>@param</font> done - call back interface called when operation is completed. |
| * <font color=#7F9FBF>@return</font> - pending command handle. |
| */</font> |
| IToken create(String parent_id, String language, String expression, DoneCreate done); |
| |
| <font color=#3F5FBF>/** |
| * Create an expression context using given scope to resolve symbols. |
| * The context should be disposed after use. |
| * <font color=#7F9FBF>@param</font> scope - see SCOPE_* attribute definitions. |
| * <font color=#7F9FBF>@param</font> expression - expression script |
| * <font color=#7F9FBF>@param</font> done - call back interface called when operation is completed. |
| * <font color=#7F9FBF>@return</font> - pending command handle. |
| * <font color=#7F9FBF>@since</font> 1.2 |
| */</font> |
| IToken createInScope(Map<String,Object> scope, String expression, DoneCreate done); |
| |
| <font color=#3F5FBF>/** |
| * Client call back interface for create() and createInScope(). |
| */</font> |
| <font color=#7F0055>interface</font> DoneCreate { |
| <font color=#3F5FBF>/** |
| * Called when context create context command is done. |
| * <font color=#7F9FBF>@param</font> token - command handle |
| * <font color=#7F9FBF>@param</font> error - error description if operation failed, null if succeeded. |
| * <font color=#7F9FBF>@param</font> context - context properties. |
| */</font> |
| <font color=#7F0055>void</font> doneCreate(IToken token, Exception error, Expression context); |
| } |
| |
| <font color=#3F5FBF>/** |
| * Dispose an expression context that was created by create() |
| * <font color=#7F9FBF>@param</font> id - the expression context ID |
| * <font color=#7F9FBF>@param</font> done - call back interface called when operation is completed. |
| * <font color=#7F9FBF>@return</font> - pending command handle. |
| */</font> |
| IToken dispose(String id, DoneDispose done); |
| |
| <font color=#3F5FBF>/** |
| * Client call back interface for dispose(). |
| */</font> |
| <font color=#7F0055>interface</font> DoneDispose { |
| <font color=#3F5FBF>/** |
| * Called when context dispose command is done. |
| * <font color=#7F9FBF>@param</font> token - command handle |
| * <font color=#7F9FBF>@param</font> error - error description if operation failed, null if succeeded. |
| */</font> |
| <font color=#7F0055>void</font> doneDispose(IToken token, Exception error); |
| } |
| |
| <font color=#3F5FBF>/** |
| * Evaluate value of an expression context. |
| * <font color=#7F9FBF>@param</font> id - the expression context ID |
| * <font color=#7F9FBF>@param</font> done - call back interface called when operation is completed. |
| * <font color=#7F9FBF>@return</font> - pending command handle. |
| */</font> |
| IToken evaluate(String id, DoneEvaluate done); |
| |
| <font color=#3F5FBF>/** |
| * Client call back interface for evaluate(). |
| */</font> |
| <font color=#7F0055>interface</font> DoneEvaluate { |
| <font color=#3F5FBF>/** |
| * Called when context dispose command is done. |
| * <font color=#7F9FBF>@param</font> token - command handle |
| * <font color=#7F9FBF>@param</font> error - error description if operation failed, null if succeeded. |
| * <font color=#7F9FBF>@param</font> value - expression evaluation result |
| */</font> |
| <font color=#7F0055>void</font> doneEvaluate(IToken token, Exception error, Value value); |
| } |
| |
| <font color=#3F5FBF>/** |
| * Assign a value to memory location determined by an expression. |
| * <font color=#7F9FBF>@param</font> id - expression ID. |
| * <font color=#7F9FBF>@param</font> value - value as an array of bytes. |
| * <font color=#7F9FBF>@param</font> done - call back interface called when operation is completed. |
| * <font color=#7F9FBF>@return</font> - pending command handle. |
| */</font> |
| IToken assign(String id, <font color=#7F0055>byte</font>[] value, DoneAssign done); |
| |
| <font color=#3F5FBF>/** |
| * Client call back interface for assign(). |
| */</font> |
| <font color=#7F0055>interface</font> DoneAssign { |
| <font color=#3F5FBF>/** |
| * Called when assign command is done. |
| * <font color=#7F9FBF>@param</font> token - command handle |
| * <font color=#7F9FBF>@param</font> error - error description if operation failed, null if succeeded. |
| */</font> |
| <font color=#7F0055>void</font> doneAssign(IToken token, Exception error); |
| } |
| |
| <font color=#3F5FBF>/** |
| * Add expressions service event listener. |
| * <font color=#7F9FBF>@param</font> listener - event listener implementation. |
| */</font> |
| <font color=#7F0055>void</font> addListener(ExpressionsListener listener); |
| |
| <font color=#3F5FBF>/** |
| * Remove expressions service event listener. |
| * <font color=#7F9FBF>@param</font> listener - event listener implementation. |
| */</font> |
| <font color=#7F0055>void</font> removeListener(ExpressionsListener listener); |
| |
| <font color=#3F5FBF>/** |
| * Registers event listener is notified when registers context hierarchy |
| * changes, and when a register is modified by the service commands. |
| */</font> |
| <font color=#7F0055>interface</font> ExpressionsListener { |
| |
| <font color=#3F5FBF>/** |
| * Called when expression value was changed and clients |
| * need to update themselves. Clients, at least, should invalidate |
| * corresponding cached expression data. |
| * Not every change is notified - it is not possible, |
| * only those, which are not caused by normal execution of the debuggee. |
| * At least, changes caused by "assign" command should be notified. |
| * <font color=#7F9FBF>@param</font> id - expression context ID. |
| */</font> |
| <font color=#7F0055>void</font> valueChanged(String id); |
| } |
| } |
| </pre> |
| |
| </body> |
| </html> |