GDBVariableObject.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Fri, 09 Feb 2018 10:16:01 +0000
changeset 112 a8138ced2f5e
parent 111 7ce18f6f18ac
child 122 c939f8a4c3cd
permissions -rw-r--r--
Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable If pretty printing is enabled, GDB seem to ignore `-f` parameter given to `-var-evaluate-expression`. To work around this, temporarily set variable visualizer to `None` (effectively disabling pretty printing), evaluate and then set it back to default.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
110
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
     1
"{ Encoding: utf8 }"
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
     2
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
     3
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
     4
jv:libgdbs - GNU Debugger Interface Library
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
     5
Copyright (C) 2015-now Jan Vrany
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
     6
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
     7
This library is free software; you can redistribute it and/or
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
     8
modify it under the terms of the GNU Lesser General Public
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
     9
License as published by the Free Software Foundation; either
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    10
version 2.1 of the License. 
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    11
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    12
This library is distributed in the hope that it will be useful,
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    13
but WITHOUT ANY WARRANTY; without even the implied warranty of
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    15
Lesser General Public License for more details.
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    16
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    17
You should have received a copy of the GNU Lesser General Public
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    18
License along with this library; if not, write to the Free Software
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    19
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    20
"
74
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
"{ Package: 'jv:libgdbs' }"
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
"{ NameSpace: Smalltalk }"
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
    25
GDBDebuggerObject subclass:#GDBVariableObject
107
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
    26
	instanceVariableNames:'parent name exp path thread frame value type numchild has_more
110
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
    27
		children changed inScope visualizer'
74
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
	classVariableNames:''
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
	poolDictionaries:''
102
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
    30
	category:'GDB-Core'
74
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
!
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    33
!GDBVariableObject class methodsFor:'documentation'!
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    34
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    35
copyright
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    36
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    37
jv:libgdbs - GNU Debugger Interface Library
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    38
Copyright (C) 2015-now Jan Vrany
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    39
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    40
This library is free software; you can redistribute it and/or
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    41
modify it under the terms of the GNU Lesser General Public
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    42
License as published by the Free Software Foundation; either
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    43
version 2.1 of the License. 
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    44
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    45
This library is distributed in the hope that it will be useful,
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    46
but WITHOUT ANY WARRANTY; without even the implied warranty of
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    47
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    48
Lesser General Public License for more details.
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    49
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    50
You should have received a copy of the GNU Lesser General Public
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    51
License along with this library; if not, write to the Free Software
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    52
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    53
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    54
! !
83
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
    55
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
    56
!GDBVariableObject class methodsFor:'instance creation'!
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
    57
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
    58
new
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
    59
    "return an initialized instance"
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
    60
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
    61
    ^ self basicNew initialize.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
    62
! !
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
    63
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
    64
!GDBVariableObject class methodsFor:'accessing - GDB value descriptors'!
74
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
description
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
    ^ (super description)
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
        define:#name as:String;
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
        define:#numchild as:Integer;
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
        define:#value as:String;
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
        define:#type as:String;
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
        define:#'thread-id' as:Integer;
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
        define:#has_more as:Boolean;
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
        define:#dynamic as:Boolean;
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
        define:#displayhint as:String;
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
        yourself
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
    "Created: / 16-09-2014 / 23:59:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
    "Modified: / 27-02-2015 / 17:10:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
! !
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
    82
!GDBVariableObject methodsFor:'accessing'!
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
    83
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
    84
children
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
    85
    self isValid ifFalse:[ ^ #() ].
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
    86
    children isNil ifTrue:[ 
112
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
    87
        (self isValid and:[numchild isNil or:[numchild > 0]]) ifTrue:[
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
    88
            | result |
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
    89
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
    90
            result := debugger send: (GDBMI_var_list_children arguments: (Array with: '--all-values' with: name)).
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
    91
            children := result propertyAt: #children.   
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
    92
            children do:[:each | each setDebugger: debugger; setParent: self ].
112
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
    93
            numchild := children size.
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
    94
        ] ifFalse:[ 
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
    95
            children := #().
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
    96
        ].
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
    97
    ].
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
    98
    ^ children
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
    99
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   100
    "Created: / 27-01-2018 / 22:53:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
112
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   101
    "Modified: / 19-02-2018 / 15:49:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   102
!
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   103
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   104
expression
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   105
    "Return the expression in target language to access the value (asDtring)
107
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   106
     The expression is relative to it's direct parent (if any),
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   107
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   108
     For example, consider
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   109
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   110
         typedef struct _point {
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   111
            int x;
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   112
            int y;
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   113
         } point;
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   114
         ...
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   115
         point p1 = { 10, 20 };
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   116
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   117
     and consider a variable object `o` that represents `y` member of point 
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   118
     `p1`. Then:
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   119
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   120
        o path '/ -> 'p1.y'
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   121
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   122
    while
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   123
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   124
        p expression '/ -> 'y'
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   125
    "
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   126
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   127
    ^ exp
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   128
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   129
    "Created: / 28-01-2018 / 21:36:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
107
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   130
    "Modified (comment): / 05-02-2018 / 21:16:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   131
!
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   132
108
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   133
frame
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   134
    "If a variable object is bound to a specific thread and frame,
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   135
     returns that frame (as `GDBFrame`). Otherwise, return `nil`."
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   136
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   137
    parent notNil ifTrue:[ 
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   138
        self assert: frame isNil.
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   139
        ^ parent frame
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   140
    ].
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   141
    ^ frame.
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   142
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   143
    "Created: / 13-02-2018 / 21:25:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   144
    "Modified: / 15-02-2018 / 09:30:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   145
!
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   146
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   147
id
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   148
    "Returns the GDB ID (name) of the variable object. This is
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   149
    used in commands to identify a variable object instance."
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   150
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   151
    ^ name
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   152
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   153
    "Created: / 28-01-2018 / 21:35:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   154
!
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   155
107
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   156
parent
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   157
    ^ parent
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   158
!
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   159
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   160
path
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   161
    "Return (absolute) expression in target language to access the value 
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   162
     (asDtring).
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   163
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   164
     For example, consider
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   165
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   166
         typedef struct _point {
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   167
            int x;
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   168
            int y;
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   169
         } point;
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   170
         ...
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   171
         point p1 = { 10, 20 };
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   172
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   173
     and consider a variable object `o` that represents `y` member of point 
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   174
     `p1`. Then:
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   175
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   176
        o path '/ -> 'p1.y'
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   177
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   178
    while
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   179
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   180
        p expression '/ -> 'y'
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   181
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   182
    "
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   183
    path isNil ifTrue:[ 
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   184
        | result |
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   185
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   186
        result := debugger send: (GDBMI_var_info_path_expression arguments: (Array with: name)).
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   187
        path := result propertyAt: #'path_expr'.
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   188
    ].
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   189
    ^ path
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   190
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   191
    "Created: / 05-02-2018 / 21:16:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   192
!
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   193
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   194
thread
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   195
    "
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   196
    If a variable object is bound to a specific thread, returns
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   197
    that thread (as GDBThread). Otherwise, `nil` is returned.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   198
    "
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   199
    | threadId |
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   200
    thread isInteger ifTrue:[ 
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   201
        threadId := thread.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   202
        thread := debugger threadForId: threadId.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   203
    ].
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   204
    ^ thread
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   205
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   206
    "Created: / 04-02-2018 / 21:35:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   207
    "Modified: / 12-02-2018 / 18:38:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   208
!
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   209
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   210
type
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   211
    ^ type
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   212
!
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   213
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   214
value
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   215
    changed value. "/ to force update if necessary
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   216
    self isValid ifFalse:[ ^ self class classResources string: '<invalid>' ].
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   217
    self inScope ifFalse:[ ^ self class classResources string: '<out-of-scope>' ].
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   218
    ^ value
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   219
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   220
    "Modified: / 12-02-2018 / 22:00:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
110
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   221
!
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   222
111
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   223
valueFormatted: aGDBOutputFormat
112
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   224
    "Return the value formatted using given format (as String)
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   225
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   226
    Supported formats are:
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   227
        * FormatSignedDecimal
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   228
        * FormatHexadecimal
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   229
        * FormatOctal
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   230
        * FormatPaddedHexadecimal
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   231
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   232
    To get the value in 'natural' format use plain #value 
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   233
    rather than #valueFormatted:
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   234
    "
111
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   235
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   236
    | format result |
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   237
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   238
    aGDBOutputFormat == FormatBinary ifTrue:[ 
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   239
        format := 'binary'
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   240
    ] ifFalse:[aGDBOutputFormat == FormatSignedDecimal ifTrue:[ 
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   241
        format := 'decimal'
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   242
    ] ifFalse:[aGDBOutputFormat == FormatHexadecimal ifTrue:[ 
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   243
        format := 'hexadecimal'
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   244
    ] ifFalse:[aGDBOutputFormat == FormatOctal ifTrue:[ 
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   245
        format := 'octal'
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   246
    ] ifFalse:[aGDBOutputFormat == FormatPaddedHexadecimal ifTrue:[ 
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   247
        format := 'zero-hexadecimal'
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   248
    ] ifFalse:[ 
112
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   249
        GDBError raiseErrorString: 'Unsupported format: ', aGDBOutputFormat displayString  
111
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   250
    ]]]]].
112
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   251
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   252
    "/ If pretty printing in MI is enabled, GDB seems to ignore the -f arguments. To work arround
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   253
    "/ this, reset the visualizer to None, print the value and then set it back to default.
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   254
    "/ Pretty ugly, sigh.
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   255
    ^ [
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   256
        debugger isPrettyPrintingEnabled ifTrue:[ 
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   257
            debugger send: (GDBMI_var_set_visualizer arguments: (Array with: name with: 'None')) andWait: false.
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   258
        ].
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   259
        result := debugger send: (GDBMI_var_evaluate_expression arguments: (Array with: '-f' with: format with: name)).
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   260
        result value
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   261
    ] ensure:[ 
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   262
        debugger isPrettyPrintingEnabled ifTrue:[ 
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   263
            debugger send: (GDBMI_var_set_visualizer arguments: (Array with: name with: 'gdb.default_visualizer')) andWait: false.
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   264
        ].
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   265
    ].
111
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   266
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   267
    "Created: / 05-02-2018 / 23:34:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
112
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   268
    "Modified: / 07-02-2018 / 14:04:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   269
    "Modified (comment): / 07-02-2018 / 16:03:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
111
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   270
!
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   271
110
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   272
visualizer
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   273
    "Return the current visualizer used for the variable object.
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   274
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   275
     See https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI-Variable-Objects.html
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   276
    "
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   277
    debugger isPrettyPrintingEnabled ifFalse:[ 
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   278
        ^ 'None' 
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   279
    ].
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   280
    visualizer isNil ifTrue:[
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   281
        ^ 'gdb.default_visualizer' "/default visualizer        
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   282
    ].
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   283
    ^ visualizer
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   284
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   285
    "Created: / 13-02-2018 / 23:18:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   286
!
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   287
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   288
visualizer: aString
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   289
    "Set a visualizer for the variable object. `aString` is the 
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   290
     visualizer to use. The special value ‘None’ means to disable 
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   291
     any visualizer in use.
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   292
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   293
     If not ‘None’, `aString` must be a Python expression. This expression 
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   294
     must evaluate to a callable object which accepts a single argument.
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   295
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   296
     See https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI-Variable-Objects.html
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   297
    "
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   298
    |result |
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   299
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   300
    self assert: (debugger isPrettyPrintingEnabled or:[ aString = 'None' ]).
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   301
    self visualizer = aString ifTrue:[ 
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   302
        "/ Already set, no need to do anything.    
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   303
        ^ self 
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   304
    ].
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   305
    result := debugger send: (GDBMI_var_set_visualizer arguments: (Array with: name with: aString)) andWait: true.
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   306
    result isDone ifTrue:[ 
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   307
        visualizer := aString.
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   308
        "/ Since we have changed the visualizer, children 
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   309
        "/ may have changed too. Delete them and recreate 
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   310
        "/ them on demand (see #children)
112
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   311
        numchild := nil.
110
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   312
        children notNil ifTrue:[ 
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   313
            children do:[:child | child release ].
112
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   314
            children := nil.  
110
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   315
        ].
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   316
    ].
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   317
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   318
    "Created: / 13-02-2018 / 23:20:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
112
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   319
    "Modified: / 19-02-2018 / 15:44:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   320
! !
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   321
109
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   322
!GDBVariableObject methodsFor:'copying'!
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   323
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   324
duplicate
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   325
    "Create and returns a duplicate of the receiver, representing
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   326
     the same value. Other than thatm the eturned duplicate is completely 
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   327
     independent"
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   328
    ^ debugger evaluate: self path in: self frame
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   329
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   330
    "Created: / 13-02-2018 / 22:17:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   331
! !
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   332
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   333
!GDBVariableObject methodsFor:'displaying'!
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   334
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   335
displayOn: aStream
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   336
    self displayOn: aStream indent: 0
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   337
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   338
    "Created: / 28-01-2018 / 21:40:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   339
!
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   340
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   341
displayOn: aStream indent: anInteger
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   342
    aStream next: anInteger * 4 put: Character space.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   343
    aStream nextPutAll: exp; space; nextPut: $=; space.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   344
    self hasChildren ifTrue:[ 
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   345
        aStream nextPut:${; cr.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   346
        self children do:[:each | 
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   347
            each displayOn: aStream indent: anInteger + 1.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   348
            aStream cr.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   349
        ].
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   350
        aStream next: anInteger * 4 put: Character space; nextPut:$}.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   351
    ] ifFalse: [ 
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   352
        aStream nextPutAll: value
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   353
    ].
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   354
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   355
    "Created: / 28-01-2018 / 21:42:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   356
! !
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   357
102
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   358
!GDBVariableObject methodsFor:'finalization'!
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   359
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   360
executor
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   361
    ^ GDBVariableObjectExecutor new 
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   362
            setDebugger: debugger;
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   363
            setId: name;
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   364
            yourself
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   365
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   366
    "Created: / 28-01-2018 / 23:27:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   367
!
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   368
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   369
finalizationLobby
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   370
    self assert: debugger notNil.
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   371
    ^ debugger finalizationRegistry.
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   372
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   373
    "Created: / 28-01-2018 / 23:21:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   374
! !
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   375
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   376
!GDBVariableObject methodsFor:'initialization & release'!
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   377
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   378
initialize
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   379
    "Invoked when a new instance is created."
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   380
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   381
    super initialize.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   382
    inScope := true.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   383
110
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   384
    "Modified: / 13-02-2018 / 23:51:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   385
!
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   386
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   387
release
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   388
    "Releases the variable object and all its children. Once released, 
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   389
     the variable object is invalid (i.e., `#isValid` would return `false`) 
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   390
     and should not be used anymore."
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   391
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   392
    self release: true
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   393
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   394
    "Created: / 04-02-2018 / 23:21:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   395
    "Modified: / 13-02-2018 / 09:37:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   396
!
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   397
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   398
release: delete
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   399
    "Releases the variable object and all its children. If 
110
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   400
     `delete` is `true`, send `-var-delete`."
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   401
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   402
    self assert: debugger notNil.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   403
    self assert: (delete not or:[ parent isNil ]) description: 'Only top-level objects can be deleted (for now)'.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   404
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   405
    "/ Release all children first, but not not 'delete' them 
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   406
    "/ in GDB (will be done later)
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   407
    children notEmptyOrNil ifTrue:[ 
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   408
        children do: [ :child | child release:false ].
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   409
    ].
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   410
    children := nil.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   411
    changed := [ changed := false. true ]. 
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   412
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   413
    "/ Now 'delete' the variable and all its children
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   414
    "/ in GDB
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   415
    delete ifTrue:[ 
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   416
        self unregisterForFinalization.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   417
        debugger isConnected ifTrue:[
110
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   418
            debugger send: (GDBMI_var_delete arguments: (Array with: name))
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   419
        ].
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   420
    ].
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   421
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   422
    "/ Finally, clear the debugger instvar (it's tested in
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   423
    "/ `#isValid`
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   424
    debugger := nil.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   425
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   426
    "Created: / 13-02-2018 / 09:36:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
110
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   427
    "Modified: / 13-02-2018 / 23:42:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   428
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   429
!
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   430
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   431
setDebugger: aGDBDebugger
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   432
    super setDebugger: aGDBDebugger.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   433
    aGDBDebugger notNil ifTrue:[
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   434
        changed := GDBTransientDataHolder debugger: debugger factory: [ self updateChanged ].
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   435
    ].
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   436
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   437
    "Created: / 01-02-2018 / 09:29:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   438
!
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   439
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   440
setExpression: aString
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   441
    exp := aString
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   442
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   443
    "Created: / 28-01-2018 / 21:39:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   444
!
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   445
108
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   446
setFrame: aGDBBrame
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   447
    frame := aGDBBrame
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   448
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   449
    "Created: / 15-02-2018 / 09:29:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   450
!
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   451
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   452
setFrameId: aString
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   453
    frame := aString
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   454
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   455
    "Created: / 13-02-2018 / 21:24:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   456
!
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   457
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   458
setParent: variableObjectOrNil
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   459
    self assert: (variableObjectOrNil isNil or:[ variableObjectOrNil isKindOf: self class ]).
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   460
    self assert: debugger notNil.
108
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   461
    parent := variableObjectOrNil
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   462
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   463
    "Created: / 27-01-2018 / 22:54:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
108
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   464
    "Modified: / 13-02-2018 / 22:02:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   465
!
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   466
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   467
thread_id: anInteger
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   468
    thread := anInteger
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   469
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   470
    "Created: / 04-02-2018 / 21:25:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   471
! !
100
aab8dd376f29 Fixed SubscriptionCollection >> value:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   472
103
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 102
diff changeset
   473
83
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   474
!GDBVariableObject methodsFor:'printing & storing'!
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   475
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   476
printOn:aStream
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   477
    "append a printed representation if the receiver to the argument, aStream"
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   478
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   479
    super printOn:aStream.
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   480
    aStream nextPutAll:'('.
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   481
    value printOn: aStream.
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   482
    aStream nextPutAll:')'.
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   483
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   484
    "Created: / 13-06-2017 / 17:03:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   485
! !
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   486
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   487
!GDBVariableObject methodsFor:'queries'!
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   488
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   489
hasChanged
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   490
    ^ changed value
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   491
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   492
    "Created: / 30-01-2018 / 00:27:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   493
    "Modified: / 04-02-2018 / 22:16:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   494
!
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   495
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   496
hasChildren
112
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   497
    self isValid ifFalse:[ ^ false ].
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   498
    numchild isNil ifTrue:[
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   499
        children := nil.
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   500
        ^ self children notEmptyOrNil
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   501
    ].
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   502
    ^ numchild > 0
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   503
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   504
    "Created: / 27-01-2018 / 22:47:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
112
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   505
    "Modified: / 15-02-2018 / 13:40:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   506
! !
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   507
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   508
!GDBVariableObject methodsFor:'testing'!
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   509
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   510
inScope
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   511
   changed value. "/ to force update if necessary
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   512
    ^ inScope
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   513
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   514
    "Created: / 12-02-2018 / 21:56:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   515
!
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   516
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   517
isValid
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   518
    changed value. "/ to force update if necessary
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   519
    ^ debugger notNil
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   520
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   521
    "Created: / 04-02-2018 / 21:33:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   522
    "Modified: / 12-02-2018 / 22:28:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   523
! !
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   524
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   525
!GDBVariableObject methodsFor:'updating'!
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   526
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   527
updateChanged
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   528
    "Check for updates and update all changed variables accordingly."
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   529
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   530
    debugger isNil ifTrue:[ 
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   531
        changed := false.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   532
        ^ false.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   533
    ].
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   534
    (self thread notNil and:[ self thread isValid not]) ifTrue:[ 
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   535
        self release.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   536
        ^ true
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   537
    ].
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   538
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   539
    parent notNil ifTrue:[ 
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   540
        parent updateChanged
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   541
    ] ifFalse:[
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   542
        | result changelist |
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   543
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   544
        result := debugger send: (GDBMI_var_update arguments: (Array with: '--all-values' with: name)).
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   545
        changelist := result propertyAt: #changelist.
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   546
        self updateChanged: changelist.        
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   547
    ].
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   548
    ^ false
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   549
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   550
    "Created: / 30-01-2018 / 01:08:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   551
    "Modified: / 12-02-2018 / 23:09:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   552
!
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   553
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   554
updateChanged: changelist
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   555
    | change |
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   556
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   557
    changelist isEmptyOrNil ifTrue:[ ^ self ].
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   558
    change := changelist detect: [ :each | each id = self id ] ifNone:[nil].
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   559
    change notNil ifTrue:[ 
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   560
        value := change value.
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   561
        inScope := change inScope.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   562
        inScope = 'invalid' ifTrue:[ 
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   563
            self release.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   564
            ^ self.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   565
        ].
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   566
        changed value: true.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   567
        changelist remove: change.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   568
        changelist isEmptyOrNil ifTrue:[ ^ self ].
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   569
    ] ifFalse:[ 
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   570
        changed value: false.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   571
    ].
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   572
    children notEmptyOrNil ifTrue:[ 
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   573
        children do: [ :each | each updateChanged: changelist ]
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   574
    ].
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   575
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   576
    "Created: / 30-01-2018 / 01:09:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   577
    "Modified: / 12-02-2018 / 22:29:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   578
! !
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   579
83
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   580
!GDBVariableObject class methodsFor:'documentation'!
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   581
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   582
version_HG
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   583
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   584
    ^ '$Changeset: <not expanded> $'
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   585
! !
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   586