VDBVariableObject.st
author Jan Vrany <jan.vrany@labware.com>
Tue, 26 Jul 2022 15:01:33 +0100
changeset 265 f2470f0dd9cd
parent 264 23960fcb9dac
permissions -rw-r--r--
Do not show address for (pseudo) instructions with no code While such instructions do not appear in GDB-produced disassembly, they may appear in some manually-generated instruction lists. One example of such (pseudo) instruction is label.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
178
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Encoding: utf8 }"
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
"
264
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
     4
jv:libgdbs - GNU Debugger Interface Library
178
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
Copyright (C) 2015-now Jan Vrany
264
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
     6
Copyright (C) 2022 LabWare
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
     7
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
     8
Permission is hereby granted, free of charge, to any person obtaining a copy
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
     9
of this software and associated documentation files (the 'Software'), to deal
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
    10
in the Software without restriction, including without limitation the rights
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
    11
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
    12
copies of the Software, and to permit persons to whom the Software is
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
    13
furnished to do so, subject to the following conditions:
178
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
264
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
    15
The above copyright notice and this permission notice shall be included in all
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
    16
copies or substantial portions of the Software.
178
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
264
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
    18
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
    19
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
    20
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
    21
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
    22
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
    23
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
    24
SOFTWARE.
178
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
"
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
"{ Package: 'jv:vdb' }"
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
"{ NameSpace: Smalltalk }"
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
GDBVariableObject subclass:#VDBVariableObject
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
	instanceVariableNames:''
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
	classVariableNames:''
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
	poolDictionaries:''
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
	category:'VDB-Core'
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
!
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
!VDBVariableObject class methodsFor:'documentation'!
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
copyright
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
"
264
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
    41
jv:libgdbs - GNU Debugger Interface Library
178
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
Copyright (C) 2015-now Jan Vrany
264
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
    43
Copyright (C) 2022 LabWare
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
    44
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
    45
Permission is hereby granted, free of charge, to any person obtaining a copy
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
    46
of this software and associated documentation files (the 'Software'), to deal
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
    47
in the Software without restriction, including without limitation the rights
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
    48
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
    49
copies of the Software, and to permit persons to whom the Software is
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
    50
furnished to do so, subject to the following conditions:
178
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
264
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
    52
The above copyright notice and this permission notice shall be included in all
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
    53
copies or substantial portions of the Software.
178
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
264
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
    55
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
    56
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
    57
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
    58
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
    59
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
    60
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 184
diff changeset
    61
SOFTWARE.
178
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
"
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
! !
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
!VDBVariableObject class methodsFor:'utilities'!
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
evaluate: expression in: frame using: debugger
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
    "Evaluates passed `expression` (in target language). If
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
     `frame` (as `GDBFrame`) is given, evaluate expression in
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
     context of that `frame`.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
     Returns the result as `VDBVariableObject`."
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
    | result varobj |
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
    frame notNil ifTrue:[
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
        result := debugger send: (VDBMI_vdb_var_create new arguments: (Array with: '--thread' with: frame thread id with: '--frame' with: frame level with: '-' with: '*' with: expression)).
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
    ] ifFalse:[
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
        result := debugger send: (VDBMI_vdb_var_create new arguments: (Array with: '-' with: '*' with: expression)).
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
    ].
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
    varobj := result propertyAt: #result.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
    varobj 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
        setDebugger: debugger; 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
        setExpression: expression;
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
        setFrame: frame;
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
        registerForFinalization. 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
    ^ varobj
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
    "Created: / 06-07-2019 / 01:04:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
! !
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
!VDBVariableObject methodsFor:'accessing'!
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
children
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
    self isValid ifFalse:[ ^ #() ].
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
    children isNil ifTrue:[ 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
        (self isValid and:[has_more or:[ numchild isNil or:[numchild > 0]]]) ifTrue:[
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
            | result |
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
            result := debugger send: (VDBMI_vdb_var_list_children arguments: (Array with: '--all-values' with: name)).
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
            children := (result propertyAt: #result) ? #().
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
            children do:[:each | each setDebugger: debugger; setParent: self ].
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
            numchild := children size.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
        ] ifFalse:[ 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
            children := #().
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
        ].
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
    ].
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
    ^ children
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
    "Created: / 06-07-2019 / 00:39:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
    "Modified: / 08-07-2019 / 15:56:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
!
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
path
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
    "Return (absolute) expression in target language to access the value 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
     (asDtring).
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
     For example, consider
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
         typedef struct _point {
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
            int x;
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
            int y;
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
         } point;
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
         ...
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
         point p1 = { 10, 20 };
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
     and consider a variable object `o` that represents `y` member of point 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
     `p1`. Then:
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
        o path '/ -> 'p1.y'
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
    while
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
        p expression '/ -> 'y'
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
    "
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
    "/ Raise an error early when #path is requested for a child of dynamic
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
    "/ varobj. Thie is not supported by GDB.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
    "/ 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
    "/ Although GDB should report an error [1], dur to a bug it report
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   142
    "/ either wrong (nonsense) value or crashes. A patch has been send
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
    "/ to the upstream [2], but meanwhile, check here as well in case someone
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
    "/ uses this with older / not yet patches version of GDB.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
    "/ 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
    "/ [1]: https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI-Variable-Objects.html
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
    "/ [2]: https://sourceware.org/ml/gdb-patches/2018-06/msg00058.html
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
    "/ 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
    (parent notNil and:[parent isDynamic]) ifTrue:[ 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
        GDBError signal: 'Invalid varobj, #path is not supported for children of a dynamic varobjs'.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
        ^ self
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
    ].
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
    path isNil ifTrue:[ 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
        | result |
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
        result := debugger send: (VDBMI_vdb_var_info_path_expression arguments: (Array with: name)).
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
        path := result propertyAt: #'result'.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
    ].
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   160
    ^ path
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   161
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   162
    "Created: / 06-07-2019 / 00:40:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   163
    "Modified: / 08-07-2019 / 15:56:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
!
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   166
valueFormatted: aGDBOutputFormat
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
    "Return the value formatted using given format (as String)
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   168
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
    Supported formats are:
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   170
        * FormatSignedDecimal
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   171
        * FormatHexadecimal
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   172
        * FormatOctal
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   173
        * FormatPaddedHexadecimal
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
    To get the value in 'natural' format use plain #value 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   176
    rather than #valueFormatted:
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   177
    "
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   178
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   179
    | format result |
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   180
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   181
    aGDBOutputFormat == FormatBinary ifTrue:[ 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   182
        format := 'binary'
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   183
    ] ifFalse:[aGDBOutputFormat == FormatSignedDecimal ifTrue:[ 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   184
        format := 'decimal'
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   185
    ] ifFalse:[aGDBOutputFormat == FormatHexadecimal ifTrue:[ 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   186
        format := 'hexadecimal'
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   187
    ] ifFalse:[aGDBOutputFormat == FormatOctal ifTrue:[ 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   188
        format := 'octal'
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   189
    ] ifFalse:[aGDBOutputFormat == FormatPaddedHexadecimal ifTrue:[ 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   190
        format := 'zero-hexadecimal'
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   191
    ] ifFalse:[ 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   192
        GDBError signal: 'Unsupported format: ', aGDBOutputFormat displayString  
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   193
    ]]]]].
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   194
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   195
    result := debugger send: (self commandVarEvaluateExpression arguments: (Array with: '-f' with: format with: name)).
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   196
    ^ result value
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   197
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   198
    "Created: / 06-07-2019 / 00:40:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   199
!
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   200
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   201
visualizer: aString
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   202
    "Set a visualizer for the variable object. `aString` is the 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   203
     visualizer to use. The special value ‘None’ means to disable 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   204
     any visualizer in use.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   205
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   206
     If not ‘None’, `aString` must be a Python expression. This expression 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   207
     must evaluate to a callable object which accepts a single argument.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   208
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   209
     See https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI-Variable-Objects.html
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   210
    "
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   211
    |result |
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   212
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   213
    self assert: (debugger isPrettyPrintingEnabled or:[ aString = 'None' ]).
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   214
    self visualizer = aString ifTrue:[ 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   215
        "/ Already set, no need to do anything.    
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   216
        ^ self 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   217
    ].
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   218
    result := debugger send: (VDBMI_vdb_var_set_visualizer arguments: (Array with: name with: aString)) andWait: true.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   219
    result isDone ifTrue:[ 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   220
        visualizer := aString.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   221
        "/ Since we have changed the visualizer, children 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   222
        "/ may have changed too. Delete them and recreate 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   223
        "/ them on demand (see #children)
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   224
        numchild := nil.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   225
        children notNil ifTrue:[ 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   226
            children do:[:child | child release ].
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   227
            children := nil.  
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   228
        ].
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   229
    ].
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   230
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   231
    "Created: / 06-07-2019 / 00:41:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   232
! !
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   233
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   234
!VDBVariableObject methodsFor:'copying'!
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   235
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   236
duplicate
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   237
    "Create and returns a duplicate of the receiver, representing
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   238
     the same value. Other than that the returned duplicate is completely 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   239
     independent"
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   240
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   241
    | result varobj |
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   242
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   243
    result := debugger send: (VDBMI_vdb_var_duplicate arguments: (Array with: name)).
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   244
    varobj := result propertyAt: #result.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   245
    varobj 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   246
        setDebugger: debugger; 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   247
        setExpression: self expression;
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   248
        setFrame: self frame;
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   249
        registerForFinalization. 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   250
    ^ varobj
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   251
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   252
    "Created: / 06-07-2019 / 00:45:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   253
    "Modified: / 08-07-2019 / 16:52:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   254
! !
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   255
184
649f53564122 Fix finalization of `VDBVariableObject`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 178
diff changeset
   256
!VDBVariableObject methodsFor:'finalization'!
649f53564122 Fix finalization of `VDBVariableObject`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 178
diff changeset
   257
649f53564122 Fix finalization of `VDBVariableObject`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 178
diff changeset
   258
executor
649f53564122 Fix finalization of `VDBVariableObject`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 178
diff changeset
   259
    ^ VDBVariableObjectExecutor new 
649f53564122 Fix finalization of `VDBVariableObject`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 178
diff changeset
   260
            setDebugger: debugger;
649f53564122 Fix finalization of `VDBVariableObject`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 178
diff changeset
   261
            setId: name;
649f53564122 Fix finalization of `VDBVariableObject`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 178
diff changeset
   262
            yourself
649f53564122 Fix finalization of `VDBVariableObject`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 178
diff changeset
   263
649f53564122 Fix finalization of `VDBVariableObject`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 178
diff changeset
   264
    "Created: / 20-09-2019 / 21:05:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
649f53564122 Fix finalization of `VDBVariableObject`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 178
diff changeset
   265
! !
649f53564122 Fix finalization of `VDBVariableObject`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 178
diff changeset
   266
178
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   267
!VDBVariableObject methodsFor:'updating'!
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   268
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   269
updateChanged
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   270
    "Check for updates and update all changed variables accordingly."
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   271
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   272
    debugger isNil ifTrue:[ 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   273
        changed := false.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   274
        ^ false.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   275
    ].
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   276
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   277
    "/ If the thread is running, we cannot check for updates...
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   278
    (frame notNil and:[frame thread isRunning]) ifTrue:[
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   279
        ^ false
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   280
    ].    
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   281
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   282
    (self thread notNil and:[ self thread isValid not]) ifTrue:[ 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   283
        self release.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   284
        ^ true
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   285
    ].
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   286
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   287
    parent notNil ifTrue:[ 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   288
        parent updateChanged
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   289
    ] ifFalse:[
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   290
        | result changelist |
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   291
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   292
        result := debugger send: (VDBMI_vdb_var_update arguments: (Array with: '--all-values' with: name)).
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   293
        changelist := result propertyAt: #result.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   294
        self updateChanged: changelist.        
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   295
    ].
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   296
    ^ false
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   297
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   298
    "Created: / 06-07-2019 / 00:41:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   299
    "Modified: / 08-07-2019 / 15:56:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   300
! !
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   301
184
649f53564122 Fix finalization of `VDBVariableObject`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 178
diff changeset
   302
!VDBVariableObject class methodsFor:'documentation'!
649f53564122 Fix finalization of `VDBVariableObject`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 178
diff changeset
   303
649f53564122 Fix finalization of `VDBVariableObject`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 178
diff changeset
   304
version_HG
649f53564122 Fix finalization of `VDBVariableObject`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 178
diff changeset
   305
649f53564122 Fix finalization of `VDBVariableObject`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 178
diff changeset
   306
    ^ '$Changeset: <not expanded> $'
649f53564122 Fix finalization of `VDBVariableObject`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 178
diff changeset
   307
! !
649f53564122 Fix finalization of `VDBVariableObject`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 178
diff changeset
   308